스터디 노트
-
Java Optional의 메소드 사용 설명서(Optional 잘 활용하기)스터디 노트 2023. 10. 16. 15:50
원본 강의 영상 : https://youtu.be/RsUTolCVm_E?si=JRr_Xu73RmoaybFP 📌 Optional이란? Java의 Optional 함수는 JDK 8에서 추가가 되었습니다. Optional은 쉽게 말해 있거나 없는 값을 표현할 수 있는 클래스입니다. 즉, null을 대체할 수 있는 타입입니다. null(💩)은 언제나 위기를 야기하기에 잘 다루어야 합니다 📌 Optional 만들기 Optional을 생성할 수 있는 방법은 of(), ofNullable(), empty()를 통해 생성할 수 있습니다. // of() : null이 아닌 값으로 생성됨 Optional opt = Optional.of("value"); // 만약 of()에 null을 넘기게 되면 NullPointerEx..
-
[Java] IntStream 메소드 사용해보기스터디 노트 2023. 10. 16. 11:30
알고리즘 문제를 풀던 중 IntStream에 대해 활용하게된 내용이 있어서 공유를 합니다. 우선 IntStream.concat() 메소드는 2개의 IntStream을 합쳐주는 역할을 합니다. "요소가 첫 번째 스트림의 모든 요소 다음에 두 번째 스트림의 모든 요소인 게으르게 연결된 스트림을 만듭니다. 입력 스트림이 모두 정렬되면 결과 스트림이 정렬되고 입력 스트림 중 하나가 병렬인 경우 병렬로 정렬됩니다. 결과 스트림이 닫히면 두 입력 스트림에 대한 닫기 핸들러가 호출됩니다." 두 스트림을 병합한 후 하나의 스트림으로 반환해주는 역할을 하는 메소드로 이런 식으로 사용할 수 있습니다. 하나의 기본 스트림을 두고 하나의 변형 스트림을 구성해야 한다면 다음과 같이 구성할 수 있겠죠. // n이 10일 때 n이..
-
자바 JDK 9 부터 JDK17까지의 주요 코딩 특징스터디 노트 2023. 10. 12. 20:57
아래 자료들은 최범균님의 영상을 보고 제작하였습니다. 원본 강의 영상 : https://youtu.be/7SlDdzVk6GE?si=adWuAndOQHY-40Pk JDK 9 📌 JDK8에서 인터페이스에 default 메서드와 static 메서드를 선언할 수 있게 되었는데, 9에서는 private 메서드도 추가할 수 있게 되었음. public interface Client { void exchange(); default void get() { logging2("before"); exchange(); logging("call get"); } private void logging(String msg) { System.out.println(msg); } private void logging2(String msg)..
-
[Java] 객체 필드 Validation 손쉽게 구현하기 (feat. Bean Validation & @NotNull)스터디 노트 2023. 10. 12. 14:04
가끔 Domain을 구성하다 보면 자연스레 필수적으로 받아야만 하는 데이터들이 있다. 예를 들어 보면 Account라는 계좌 정보를 나타내는 Domain이 있다고 해보겠다. @Getter @AllArgsConstructor public class Account { private String accountId; private String username; private String phoneNumber; } 당연히 있어야 하는 계좌번호를 간단하게 accountId라고 나타내고 사용자 명을 username, 그리고 핸드폰 번호를 받는 구조로 구성이 되어있다. 너무나도 당연하게 위 필드들은 모두 Null을 허용하지 않을 생각이다. 비즈니스 관점에서 이 Account라는 도메인의 인스턴스를 활용할 때, 각 필드..
-
자바 21 특징 - SequencedCollection스터디 노트 2023. 10. 10. 22:35
원본 URL : https://youtu.be/EUDnGF6mHjE?si=6HzI6_scGlrD9F3o 자바 21 이전의 코드 List에서 첫 번째, 마지막 원소를 구하려면 아래와 같이 구해야 한다. List list = new ArrayList(); String first = list.get(0); String last = list.get(list.size() - 1); 자바 21에서는 SequencedCollection이 추가되었음. 이를 통해 첫 번째, 마지막 번째 원소에 접근하여 작업할 수 있는 기능이 추가되었음. 그리고 역순으로 조회하기 기능이 추가되었음. public interface SequencedCollection extends Collection { void addFirst(E e); ..
-
자바 21 특징 - 가상 쓰레드스터디 노트 2023. 10. 9. 22:34
아래 내용은 다음 영상(https://youtu.be/srpOD6WIasM?si=VUpKeXTwB7-_OFUo)을 요약 정리한 내용입니다. 자바 19에 프리뷰로 추가가 되었으며 자바 21에 정식으로 포함. 가상 쓰레드의 구현 목적 - 요청당 쓰레드 구조의 서버 애플리케이션의 하드웨어 최적 사용 - 최소 변경으로 기존 코드에 가상 쓰레드 적용 // 가상 쓰레드 코드 예 // 01. Thread virtual = Thread.ofVirtual() .name("virtual") .start(() -> { callMethod(); }); virtual.join(); // 02. try (ExecutorService executor = Executors.newVirtualThreadPerTaskExecutor()..
-
자바스크립트 코드 프로처럼 쓰는 팁스터디 노트 2023. 10. 8. 22:47
원본 영상 : https://youtu.be/BUAhpB3FmS4?si=24vbNlld56sNsVoO 01. 삼항 연산자(Terary Operator) // Ternary Operator // Bad Code function getResult(score) { let result; if (score > 5) { result = '👍' } else if (score 5 ? '👍' : '👎'; } if~else 문을 사용하기 전에 삼항연산자의 사용 가능성을 먼저 확인해보자. 02. Nullish Coalescing Operator // Nullish Coalescing Operator // 🙅♂️ Bad Code function printMessage(text) { let message = text; if ..