서버&백엔드/🔥 JAVA

서버&백엔드/🔥 JAVA

Java 병렬 스트림(Parallel Stream) 사용 시 예상되는 문제와 해결 방법

🚀 Java 병렬 스트림(Parallel Stream) 사용 시 예상되는 문제와 해결 방법Java에서는 Stream.parallel()을 사용하면 멀티스레드를 활용하여 데이터 처리를 병렬로 수행할 수 있습니다.하지만 병렬 스트림을 사용할 때 몇 가지 문제가 발생할 수 있으며, 적절한 해결 방법을 적용해야 합니다.✅ 1. 공유된 상태(Shared State)로 인한 동기화 문제📌 문제점병렬 스트림은 여러 스레드에서 동시에 실행되므로, 공유 변수(Shared State)를 변경할 경우 데이터 충돌 및 경쟁 조건(Race Condition)이 발생할 수 있음.❌ 잘못된 예제import java.util.stream.IntStream;public class ParallelStreamSharedState { ..

서버&백엔드/🔥 JAVA

JAVA | var 이란?

varJava에서 var는 지역 변수 타입 추론(local variable type inference)을 제공하는 키워드로, Java 10부터 도입되었습니다. 이는 변수 선언 시 명시적으로 타입을 지정하지 않고, 컴파일러가 초기화 값의 타입을 보고 자동으로 타입을 추론하도록 합니다.사용 예시와 추론 방식1. 컴파일러가 초기화 값으로 타입을 추론var name = "John"; // String 타입으로 추론var age = 30; // int 타입으로 추론2. 복잡한 객체 타입var list = new ArrayList(); // ArrayList 타입으로 추론3. 메서드 호출 결과로 타입 추론var request = 상품등록요청_생성(); // 메서드 반환 타입에 따라 추론상품등록요청_생성()..

서버&백엔드/🔥 JAVA

JAVA | TDD API 테스트 & 리팩토링

API  테스트1. 의존성 추가build.gradle에 들어가 assured 의존성을 추가합니다.dependencies { 기존 디펜던시 implementation 'io.rest-assured:rest-assured:5.4.0'} 2.ApiTest 생성package com.example.productorderservice;import io.restassured.RestAssured;import org.junit.jupiter.api.BeforeEach;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.boot.test.web.server.LocalServerPort;@SpringBootT..

서버&백엔드/🔥 JAVA

Java | TDD시 사용되는 Assert

AssertAssert는 테스트 중 특정 조건이 참인지 확인하는 데 사용됩니다. 조건이 만족되지 않으면 예외를 발생시켜 테스트를 실패로 처리합니다. Java에서는 다양한 Assert 클래스를 사용하여 테스트 조건을 확인할 수 있습니다.1. 주요 Assert 클래스1) JUnit의 Assertions (JUnit 5 기준)JUnit의 Assertions 클래스는 단위 테스트에서 가장 널리 사용됩니다.주요 메서드:assertEquals(expected, actual): 기대값과 실제값이 같은지 확인.assertNotEquals(unexpected, actual): 값이 같지 않은지 확인.assertTrue(condition): 조건이 참인지 확인.assertFalse(condition): 조건이 거짓인지 확..

서버&백엔드/🔥 JAVA

JAVA | enum사용법

1. 기본 사용법enum은 여러 상수 값을 정의하는 데 사용됩니다.public enum Day { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY}사용 예제public class EnumExample { public static void main(String[] args) { Day today = Day.MONDAY; System.out.println("Today is: " + today); // Enum을 switch 문에서 사용 switch (today) { case MONDAY -> System.out.println("It'..

서버&백엔드/🔥 JAVA

의존성 역전 원칙 (DIP)

의존 역전 원칙(DIP: Dependency Inversion Principle)의존 역전 원칙(DIP)는 객체가 특정 클래스(Class)를 참조하여 사용하는 상황이 발생했을 때, 그 클래스를 직접 참조하는 대신 상위 요소(추상 클래스 또는 인터페이스)를 통해 참조하라는 원칙입니다.DIP의 핵심 개념객체 간에 정보를 주고받는 과정에서는 의존 관계가 형성됩니다. 이때 DIP 원칙은 구체 클래스(Concrete Class)가 아니라 추상 클래스(Abstract Class)나 인터페이스(Interface)를 통해 의존하라고 요구합니다.즉, 고수준 모듈(비즈니스 로직)이 저수준 모듈(구현체)에 의존하지 않고, 둘 다 추상화된 상위 요소에 의존하도록 설계해야 합니다.DIP의 정의를 한 문장으로 요약"상위 인터페이..

이재원
'서버&백엔드/🔥 JAVA' 카테고리의 글 목록 (2 Page)