Backend/Java

    Optional 파헤치기!

    Optional 파헤치기!

    자비스 앤 빌런즈 인터뷰 프로세스를 진행하면서 면접관님께서 “Optional.of로 왜 데이터를 저장할 때 감쌌는지” 여쭤보셨다. 나는 내가 작성한 로직 의도대로 말씀드렸지만, 실제 메서드 내부의 동작이나 어떤 파라미터가 들어오고 어떤 경우에 이를 쓰는지, 어떤 예외가 발생할 수 있는지 등등 여러가지 꼬리 질문이 들어왔고 제대로 답변 드리지 못했다. 특히, Optional을 주로 써오면서 .of().orElseThrow() 이런 방식으로 코딩을 가끔 했었는데 그동안은 예외가 발생하지 않았던 것이지 null이 들어오는 경우 반드시 NPE가 발생하는 것에 대해 면접을 통해 알게 되었다. 이를 계기로 기본적인 Optional 사용법에 대해 파악하고 앞으로는 Optional을 사용할 때 적절한 경우와 조심해서 ..

    Stream API 무작정 연습하기!

    Stream API 무작정 연습하기!

    Java 8 부터 람다 표현식, Stream API, 함수형 인터페이스를 지원하기 시작했다. Stream API는 데이터를 추상화하고, 가공하여 데이터를 처리할 수 있게 하는 메서드들을 정의해놓은 Java에서 지원하는 API이다. 스트림 API의 특징 기존 데이터로 부터 생성된 스트림 데이터는 별도의 데이터로 생성되기 때문에 기존 데이터는 변경되지 않는다. List stringList = List.of("zayson", "maeng", "joon"); Stream stringStream = stringList.stream().sorted(); // 기존 데이터로부터 생성한 스트림 stringStream.forEach(System.out::println); // 기존 데이터가 변경되지 않는다. for (S..

    ArrayList, LinkedList

    ArrayList, LinkedList

    ArrayList ArrayList는 배열을 이용한 리스트이다. 따라서 배열의 특징과 비슷하다. 인덱스를 가지고 데이터를 접근한다. 인덱스를 통한 Random Access가 가능하므로 특정 데이터를 검색하는데 LinkedList보다 속도가 빠르다. 데이터의 삽입 혹은 삭제 시 인덱스의 위치를 맞춰줘야 하므로 LinkedList에 비해 속도가 느리다. 배열은 사이즈를 고정적으로 할당하지만, ArrayList는 값을 동적으로 삽입하는 것이 가능하다. LinkedList LinkedList는 각 노드별 앞의 노드와 뒤의 노드를 참조하는 참조값을 가지고 있다. 각 노드별 앞, 뒤 노드를 참조하고 있기 때문에 새로운 노드를 삽입하거나 노드를 삭제하는 경우 위치에 관계없이 ArrayList보다 빠른 연산이 가능하다..

    [백기선님과 함께하는 Live-Study] 10주차) 멀티쓰레드 프로그래밍

    [백기선님과 함께하는 Live-Study] 10주차) 멀티쓰레드 프로그래밍

    ✔️ 목표 자바의 멀티쓰레드 프로그래밍에 대해 학습하세요. ✔️ 학습할 것 (필수) Thread 클래스와 Runnable 인터페이스 쓰레드의 상태 쓰레드의 우선순위 Main 쓰레드 동기화 데드락 💡 Thread 클래스와 Runnable 인터페이스 Thread 란? 메모리를 할당받아 프로그램(프로세스)을 실행하는 단위로서 하나의 프로세스에 여러개의 쓰레드로 구성될 수 있다. 하나의 프로세스를 구성하는 여러 쓰레드는 스택 영역을 제외한 메모리 영역을 서로 공유한다. 스택 메모리는 메소드 호출 시 전달되는 매개변수, 되돌아갈 주소값 및 메소드 내에서 선언하는 변수 등을 저장하기 위해 사용되는 메모리 공간이기 때문에 쓰레드가 스택 메모리 영역을 독립적으로 가진다는 것은 독립적으로 메소드 호출이 가능하고 독립적인..

    [백기선님과 함께하는 Live Study] 9주차) 예외 처리

    [백기선님과 함께하는 Live Study] 9주차) 예외 처리

    ✔️ 목표 자바의 예외 처리에 대해 학습하세요. ✔️ 학습할 것 (필수) 자바에서 예외 처리 방법 (try, catch, throw, throws, finally) 자바가 제공하는 예외 계층 구조 Exception과 Error의 차이는? RuntimeException과 RE가 아닌 것의 차이는? 커스텀한 예외 만드는 방법 💡 자바에서 예외 처리 방법 (try, catch, throw, throws, finally) 예외를 처리하는 가장 기본적인 구조는 try-catch-finally 구조를 가진다. ✏️ try 코드가 실행되는 부분으로, 예외를 잡아내기 위한 부분이다. 예외가 발생한다면, catch 블록으로 예외가 발생하지 않는다면 catch 블록을 실행하지 않고 finally 블록으로 이동해 코드를 실..