최신 글
기술과 일상을 함께 기록합니다.
전체 기록
297NIO
Java NIO의 Channel과 ByteBuffer의 position·limit·capacity를 설명하고 다이렉트 버퍼와 Selector의 선택 기준을 살펴본다.
[JAVA NIO] WatchService(와치서비스)
Java WatchService로 디렉터리 생성·수정·삭제 이벤트를 감시하고 키 재등록, 중복·누락 이벤트 및 파일 기록 완료 시점을 다룬다.
Git 명령어
작업 디렉터리·스테이징·커밋·원격 저장소의 차이를 실습하고, 브랜치 병합과 변경 복구 명령을 구분한다.
규칙 2. 생성자 인자가 많을 때는 Builder 패턴 적용을 고려하라
선택 인자가 많은 Java 객체를 Builder로 구성하고 필수값 검증, 중간 상태 차단, 빌더 재사용 시 주의점을 예제로 살펴본다.
규칙 1. 생성자대신 정적 팩터리 메서드를 사용할 수 없는지 생각해 보라
Java 정적 팩터리 메서드의 이름·반환 타입·객체 재사용 이점을 생성자와 비교하고 선택 시 고려할 제약을 예제로 설명한다.
리눅스에서 could not initialize class javax.imageio.ImageIO 에러가 발생할 경우
Linux에서 Java ImageIO 초기화가 실패할 때 최초 예외를 확인하고, 네이티브 라이브러리와 headless 설정을 점검한다.
리눅스에서 java.lang.NoClassDefFoundError: sun/awt/X11GraphicsEnvironment 에러가 발생할 경우
Linux 서버의 Java X11GraphicsEnvironment 오류를 진단하고, headless 모드의 적용 조건과 Tomcat 실행 옵션을 확인한다.
[DB설계]1. PK 컬럼 순서, 대충하지 말자
복합 기본 키의 컬럼 순서가 인덱스 조회 범위에 미치는 영향을 비교하고, 조회 조건과 변경 비용을 함께 검토한다.
[병렬처리]2. 스레드의 안전성
공유 가변 상태가 스레드 안전성에 미치는 영향을 살펴보고 동기화·캡슐화·불변 객체로 클래스의 정확성을 지키는 방법을 정리한다.
String 보다는 StringBuilder, StringBuffer를 사용해야하는 이유.
문자열 누적 상황에서 String과 StringBuilder의 생성 비용을 비교하고 StringBuffer의 동기화가 필요한 범위를 예제로 설명한다.
Mybatis란? 그리고 설정하는 방법...
MyBatis의 SqlSessionFactory와 XML 매퍼를 설정해 한 건을 조회하고, 트랜잭션 경계와 안전한 SQL 매개변수를 확인한다.
[링크]셧다운 후크를 사용한 어플리케이션의 안전한 종료 처리
JVM 셧다운 훅으로 Executor 작업을 제한된 시간에 정리하는 방법과 훅이 실행되지 않는 종료 상황, 훅 사이 순서 제약을 살펴본다.