최신 글
기술과 일상을 함께 기록합니다.
NIO TCP blocking channel 소켓서버 & 클라이언트
블로킹 SocketChannel로 TCP 에코 서버·클라이언트를 만들고 길이 프레임, 부분 읽기·쓰기, 메시지 크기 검증을 구현한다.
비동기 파일채널
AsynchronousFileChannel의 Future와 CompletionHandler로 파일 읽기·쓰기 완료를 처리하고 부분 I/O와 채널 종료 시점을 살펴본다.
NIO
Java NIO의 Channel과 ByteBuffer의 position·limit·capacity를 설명하고 다이렉트 버퍼와 Selector의 선택 기준을 살펴본다.
[JAVA NIO] WatchService(와치서비스)
Java WatchService로 디렉터리 생성·수정·삭제 이벤트를 감시하고 키 재등록, 중복·누락 이벤트 및 파일 기록 완료 시점을 다룬다.
규칙 2. 생성자 인자가 많을 때는 Builder 패턴 적용을 고려하라
선택 인자가 많은 Java 객체를 Builder로 구성하고 필수값 검증, 중간 상태 차단, 빌더 재사용 시 주의점을 예제로 살펴본다.
규칙 1. 생성자대신 정적 팩터리 메서드를 사용할 수 없는지 생각해 보라
Java 정적 팩터리 메서드의 이름·반환 타입·객체 재사용 이점을 생성자와 비교하고 선택 시 고려할 제약을 예제로 설명한다.
[병렬처리]2. 스레드의 안전성
공유 가변 상태가 스레드 안전성에 미치는 영향을 살펴보고 동기화·캡슐화·불변 객체로 클래스의 정확성을 지키는 방법을 정리한다.
String 보다는 StringBuilder, StringBuffer를 사용해야하는 이유.
문자열 누적 상황에서 String과 StringBuilder의 생성 비용을 비교하고 StringBuffer의 동기화가 필요한 범위를 예제로 설명한다.
[링크]셧다운 후크를 사용한 어플리케이션의 안전한 종료 처리
JVM 셧다운 훅으로 Executor 작업을 제한된 시간에 정리하는 방법과 훅이 실행되지 않는 종료 상황, 훅 사이 순서 제약을 살펴본다.
Java static 키워드
Java static 필드·메서드가 인스턴스와 달리 공유되는 방식, 정적 중첩 클래스와 초기화 시점 및 공유 상태의 주의점을 설명한다.
java final 키워드
Java final이 클래스 상속, 메서드 재정의, 변수 재할당에 각각 미치는 영향을 예제로 구분하고 참조 불변성과의 차이를 짚는다.
스레드
Java 스레드의 동시성과 병렬성, 공유 상태의 경쟁 조건, synchronized로 임계 영역을 보호하는 방법을 정리한다.