java로 개발을 하다보면 비동기로 성능을 높여야 하는 경우가 생깁니다. 저 또한 이런 경우가 많았는데요, 이럴 때 Java에서 제공하는 CompletableFuture를 이용하면 쉽게 해결할 수 있습니다. CompletableFuture에 관하여 검색을 해보니, 박우빈님이 작성하신 CompletableFuture 톺아보기 가 가장 정리가 잘 되어 있어서 한번 따라해보고, 해당 글을 기반으로 저 또한 정리를 해두고자 합니다! CompletableFuture란?CompletableFuture는 Java에서 비동기 프로그래밍을 지원하는 강력한 클래스입니다. Java 8부터 도입되었으며, 사용하기에 따라서 Async-Blocking, Async-Non-Blocking 하게 사용할 수 있습니다.Completa..
Util클래스 또는 상수형 클래스는 객체생성을 막자어플리케이션 개발을 진행하다보면 자주 쓰이는 성격이 비슷한 메소드들을 묶어 Util성 클래스로 만들거나, 상수값들을 모아놓은 클래스를 만들 일이 있습니다.이러한 클래스들은 static 메소드와 static 변수들을 제공해주기 때문에, 객체생성은 의미가 없습니다.따라서 기본생성자를 private로 지정하여 객체생성을 막는것이 바람직합니다.public final class StringUtils { public static String utilmethod(String str) { // util 로직... return result; } // 객체생성 금지! private StringUtils() { };}Lom..
Iterator 패턴책 JAVA 언어로 배우는 디자인 패턴 입문 3판 을 읽고 정리한 내용입니다. IntroJava 언어에서 배열의 모든 요소를 표시하려면 다음과 같이 for문을 사용합니다.int[] arr = {1, 2, 3, 4, 5};for(int i=0; i) { System.out.println(arr[i]);}// 결과// 1// 2// 3// 4// 5여기서 변수 i는 0부터 시작하여 하나씩 증가시키면, 현재 주목하는 요소는 '다음', '그 다음'으로 차례차례 진행됩니다. 배열의 길이-1 까지 i가 증가하기 때문에 위의 for 문에서는 모든 배열을 탐색하게 됩니다.여기서 i의 역할을 추상화하여 일반화한 것을 디자인 패턴에서는 Iterator 패턴이라고 합니다.Iterator 패턴은 무언..
Garbage Collection(GC) 이란?프로그램을 개발 하다 보면 더이상 쓰이지 않는(참조되지 않는) 메모리인 Garbage가 발생하게 됩니다.C언어에서는 free()라는 함수를 통하여 개발자가 직접 메모리를 해제해주어야 하지만, Java나 Kotlin 에서는 Garbage Collector가 알아서 불필요한 메모리를 정리해주기 때문에 개발자의 실수로 memory leak이 발생하는 일을 막아줍니다.그런데 GC는 어떻게 알아서 똑똑하게 불필요한 메모리를 판단하여 정리하고, 또 언제 정리를 할까요?이를 알기 위해선 먼저 Java의 컴파일 과정과, JVM 메모리구조, GC의 여러가지 방식들에 대하여 살펴볼 필요가 있습니다.Java 컴파일 과정 자바 프로그램을 실행하면, JVM은 OS로부터 메모리를 할..
LOMBOK 라이브러리 사용시 File→settings에 가서 Annotation Processor검색 Enable annotation processing 에 체크하기 Community 버전 사용시 File→settings->BuildTools->gradle 열기 Build and run using, Run tests using 부분이 Gradle로 되어 있다면 IntelliJ IDEA로 바꾸기 스프링부트 프로젝트 3.x 버전 사용시 유의사항 스프링부트 프로젝트 3.x버전을 사용할 경우 자바17버전과 호환되기 때문에 자바 다른버전을 쓰면 에러가 발생합니다. 따라서 스프링부트 프로젝트 3.x버전 사용시에는 자바17버전을 써야합니다.