Mapstruct를 통해 객체 매핑 작업을 할 때 필드명은 같지만 타입이 다를 때 타입변환이 자동으로 되는데String -> int 필드로 변환할 때는 주의해야한다.@NoArgsConstructor@AllArgsConstructor@Data@SuperBuilderpublic class WishListDto { private Integer index; private String title; private String category; private String address; private String roadAddress; private String homePageLink; private String imageLink; private boolean isVisit..
Java 객체 매핑 라이브러리 중 하나인 Mapstruct를 사용해서 매핑할 때@Builder로 선언된 객체를 매핑할 때는 Mapper 구현체에서 builder()를 사용하여 객체를 생성하게 된다.@NoArgsConstructor@AllArgsConstructor@Data@Builderpublic class WishListDto { private Integer index; private String title; private String category; private String address; private String roadAddress; private String homePageLink; private String imageLink;..
spy() spy() 메서드를 사용하면 실제 객체의 일부 기능을 유지하면서 일부만 Mock으로 대체할 수 있습니다. 이는 실제 객체의 일부 메서드 동작을 유지하면서, 특정 메서드 호출에 대한 Mock 동작을 정의할 때 유용합니다. List list = new LinkedList(); List spy = spy(list); //optionally, you can stub out some methods: when(spy.size()).thenReturn(100); //using the spy calls *real* methods spy.add("one"); spy.add("two"); //prints "one" - the first element of a list System.out.println(spy.g..
자바 가비지 컬렉터(Garbage Collector) 자바 가상 머신(JVM)에서 메모리 관리를 담당하는 주요 구성 요소 중 하나입니다. 가비지 컬렉터는 더 이상 사용되지 않는 객체들을 식별하고 메모리에서 해제하여 자동으로 관리합니다. 이를 통해 개발자가 명시적으로 메모리를 할당하거나 해제할 필요 없이 프로그램이 메모리를 효율적으로 사용할 수 있습니다. Unused Object 식별: 가비지 컬렉터는 더 이상 사용되지 않는 객체들을 식별합니다. 이는 객체가 더 이상 참조되지 않을 때 발생합니다. 메모리 해제: 가비지 컬렉터는 사용되지 않는 객체들을 메모리에서 해제하여 다시 사용할 수 있는 공간을 만듭니다. 이는 메모리 누수를 방지하고 시스템의 성능을 향상시킵니다. 메모리 최적화: 일부 가비지 컬렉터는 메..
Microbenchmark 마이크로벤치마킹은 컴퓨터 시스템의 성능을 측정하고 비교하기 위해 작고 간단한 테스트를 사용하는 것을 의미합니다. 이는 주로 소프트웨어 라이브러리, 함수 또는 알고리즘의 성능을 평가하거나, 하드웨어 구성 요소의 성능을 테스트하는 데 사용됩니다. 마이크로벤치마킹은 특정 작업의 성능을 목표로 하며, 작업이 작고 빠르기 때문에 여러 번 반복하여 평균 실행 시간을 측정합니다. 빠른 실행: 마이크로벤치마킹 테스트는 작고 간단하기 때문에 빠르게 실행할 수 있습니다. 이는 결과를 빠르게 얻을 수 있고, 변경된 코드나 하드웨어 구성 요소의 성능 변화를 신속하게 측정할 수 있게 해줍니다. 세밀한 분석: 마이크로벤치마킹은 작은 단위의 작업을 실행하므로 세밀한 성능 분석이 가능합니다. 이는 코드나 ..
JVM JVM(Java Virtual Machine)은 자바 프로그램을 실행하기 위한 가상 머신(VM)입니다. JVM은 자바 프로그램을 컴파일된 바이트 코드 형태로 실행하고, 이를 하드웨어와 운영 체제에 맞게 해석하여 실행합니다. 이를 통해 자바 프로그램은 특정 플랫폼에 종속되지 않고 다양한 환경에서 실행될 수 있습니다. 바이트 코드 실행: JVM은 자바 컴파일러에 의해 생성된 바이트 코드를 실행합니다. 이 바이트 코드는 자바 소스 코드를 컴파일한 결과물로, 플랫폼 중립적이며 특정 운영 체제나 하드웨어에 종속되지 않습니다. 메모리 관리: JVM은 자바 프로그램이 사용하는 메모리를 관리합니다. 이는 객체의 생성 및 소멸, 가비지 컬렉션 등을 포함합니다. JVM은 힙(heap) 영역과 스택(stack) 영역..
Java에서 List.of와 Arrays.asList는 리스트를 생성하는 방법이지만 두 메서드의 차이점이 있다. 불변성 List.of: 생성된 리스트는 불변(immutable)하며, 요소를 추가, 제거 또는 변경할 수 없다. add, remove, set 등의 메서드를 사용할 수 없다. Arrays.asList: 생성된 리스트는 크기는 변경할 수 있지만, 요소를 추가하거나 제거하는 등의 변경 작업은 안된다. set은 가능하고, 변경은 원본 배열에 반영된다. List listOf = List.of("A", "B", "C"); try { listOf.add("D"); // UnsupportedOperationException 발생 } catch (UnsupportedOperationException e) {..
CPU 바운드 작업 CPU 바운드 작업은 주로 계산이 많이 필요한 작업으로, CPU의 처리 능력이 주요 병목 지점이 되는 상황입니다. 이러한 작업들은 주로 CPU 연산이 많이 필요하며, I/O 작업이 상대적으로 적은 경우입니다. CPU 바운드 작업에서는 CPU의 성능이 주요 제약 요소가 되므로, 다중 코어를 활용하여 병렬처리를 하는 것이 성능 향상에 도움이 될 수 있습니다. 계산적인 작업: 수학적 계산이 많이 필요한 작업은 CPU 바운드 작업에 해당합니다. 예를 들어, 대규모 행렬의 곱셈, 복잡한 수학적 함수의 계산 등이 여기에 속합니다. 이미지/비디오 처리: 이미지나 비디오 처리 작업 중에서 CPU를 많이 사용하는 작업은 CPU 바운드 작업에 해당할 수 있습니다. 예를 들어, 이미지 필터링, 변환, 비..