최신 글
기술과 일상을 함께 기록합니다.
[Java] Generic(제네릭)
Java 제네릭 클래스와 메서드, 상한·와일드카드의 읽기·쓰기 제약을 예제로 살펴보고 타입 소거 뒤의 런타임 경계를 설명한다.
백분율 변환
Java에서 부분값을 전체값의 백분율로 계산하고 0으로 나누기, 소수점 반올림, 로캘별 표시를 분리해 처리하는 방법을 설명한다.
바이트 단위 변환
바이트를 사람이 읽기 쉬운 이진 단위로 바꾸고, KB와 KiB의 차이 및 0·음수 입력을 처리한다.
[Java] Lambda Expressions(람다식)
함수형 인터페이스를 람다식으로 구현하는 방법과 표현식·블록 본문의 반환 규칙, 익명 클래스와 this 동작의 차이를 살펴본다.
[병렬프로그래밍] 6. 작업실행
웹 서버 요청 처리 방식을 단일 스레드, 요청별 스레드, Executor 풀로 비교하고 작업 취소·완료와 자원 한계를 살펴본다.
volatile 키워드
volatile의 가시성·순서 보장과 복합 연산의 원자성이 다른 문제인 이유를 예제로 살펴본다.
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 정적 팩터리 메서드의 이름·반환 타입·객체 재사용 이점을 생성자와 비교하고 선택 시 고려할 제약을 예제로 설명한다.