Future와 CompletableFuture의 차이점
Future는 비동기 처리 결과를 얻기 위해 주기적으로 상태를 확인해야 하며, 이로 인해 CPU 사용률이 증가할 수 있습니다.
ExecutorService executorService = Executors.newFixedThreadPool(10);
Future<String> asyncResult = executorService.submit(() -> {
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStac ...
7월 17일 23:58에 게시됨
ServletContextListener 인터페이스 완벽 가이드
서론
ServletContextListener는 웹 애플리케이션의 생명주기를 관리하는 중요한 리스너 인터페이스입니다. 이 인터페이스를 사용하면 서블릿 컨테이너가 시작되거나 종료될 때 특정 코드를 실행할 수 있습니다. 본 글에서는 ServletContextListener의 구조와 활용 방법, 그리고 실제 사용 사례를詳細히 다루겠습니다.
ServletContextListener란?
ServletContextListener ...
7월 17일 23:25에 게시됨
AI 활용 Java GUI 개발 실전 가이드
AI로 Java GUI 프로그램을 효율적으로 개발하는 방법
Java GUI 프로그래밍은 다양한 클래스 라이브러리와 설계 개념을 필요로 해서 독학으로 실용적인 수준까지 도달하려면 상당한 시간이 소요된다. 최근 LLM 기반 AI 기술의 발전으로, AI의 도움을 받아 신속하게 Java GUI 애플리케이션을 구축하는 것이 현실화되었다. 이 글에서는 AI 도구를 활용해 Java GUI 개발 역량 ...
7월 17일 18:59에 게시됨
Spring Boot 기반 Java에서 Excel 데이터 입출력 처리 방법
Excel 입출력의 주요 활용 사례
1. 데이터 입력 자동화
수작업 데이터 입력을 줄이고, 대량의 정보를 빠르게 시스템에 반영할 수 있습니다.
2. 결과 데이터 추출
분석 결과나 통계 정보를 엑셀 파일로 내보내어 보고서 작성 또는 외부 공유에 사용할 수 있습니다.
3. 시스템 간 데이터 연계
서로 다른 플랫폼이나 데이터베이스를 가진 시스템 사이에서 데이터 이관이나 ...
7월 17일 16:20에 게시됨
지정된 class 파일을 로드하는 커스텀 ClassLoader 구현
자바에서 특정 경로에 있는 컴파일된 .class 파일을 동적으로 로드해야 하는 경우, 기본 제공되는 클래스 로더 대신 사용자 정의 ClassLoader를 작성할 수 있다. 이를 위해 ClassLoader 클래스를 상속하고 findClass 메서드를 오버라이드하면 된다.
먼저, 별도의 패키지에 존재하는 테스트용 클래스를 하나 준비한다. 아래는 cn.lijie 패키지 내에 위치한 BugNew 클래스 ...
7월 17일 03:42에 게시됨
Eclipse에서 CheckStyle 플러그인 설정 및 활용 가이드
CheckStyle 개요 및 필요성
CheckStyle는 Java 소스 코드의 정적 분석 도구로, 개발자가 코딩 표준을 준수하고 코드 품질을 향상시키는 데 도움을 줍니다. 유연한 구성 옵션을 통해 명명 규칙, 코드 서식, 모듈 구조 등 다양한 수준의 검사를 수행합니다.
CheckStyle 플러그인 설치 방법
Eclipse Marketplace를 통한 설치
Eclipse IDE에서 Help > Eclipse Marketplace ...
7월 17일 01:34에 게시됨
Spring Boot 기반 Elasticsearch 과거 인덱스 정리 자동화 프로그램 개발
배경 및 목적
Elasticsearch는 대량의 로그나 이벤트 데이터를 실시간으로 검색할 수 있는 강력한 도구이지만, 시간이 지남에 따라 저장 용량이 급격히 증가하는 문제가 발생합니다. 특히 일자별로 인덱스를 생성하는 경우, 오래된 인덱스가 누적되어 클러스터 성능 저하 및 디스크 부족 현상이 나타날 수 있습니다. 기존에는 cron 기반 스크립트로 특정 날짜의 인덱스를 ...
7월 17일 01:03에 게시됨
필터 체인 디자인 패턴 구현
필터 체인 패턴은 요청을 처리하기 전후에 다양한 필터를 순차적으로 적용하여 처리 흐름을 제어하는 디자인 패턴이다. 이 패턴은 여러 개의 필터를 연결하고, 지정된 순서대로 실행되도록 구성한다.
기본적인 구성 요소는 다음과 같다:
FilterChain 인터페이스: 모든 필터가 구현해야 하는 공통 인터페이스
MainFilterProcessor: 필터들을 관리하고 순차적으로 호출 ...
7월 16일 19:48에 게시됨
알고리즘 문제 해결: 문자열 뒤집기 및 문자 교체
문자열 뒤집기
해결 접근법:
양쪽 끝에서 시작하는 이중 포인터를 사용하여 문자 순서를 교환하다가 좌우 포인터가 만날 때까지 반복합니다;
이 문제에는 또한 XOR 연산자를 활용한 요소 교환 방식도 있습니다.
public void reverseString(char[] s) {
// 이중 포인터 방식으로 문자 순서 교환
int left = 0;
int right = s.length - 1;
while(left < ...
7월 16일 19:45에 게시됨
Alpine Linux를 기반으로 JDK용 Docker 이미지 작성
Alpine Linux 소개
Alpine Linux는 경량 Linux 배포판으로, 일반적인 Linux 배포판과 달리 musl C 라이브러리와 BusyBox를 사용하여 시스템 크기와 실행 시의 자원 사용량을 줄입니다.
Alpine 기반 기본 이미지 만들기
최신 버전의 이미지 파일을 다운로드하세요: https://mirrors.aliyun.com/alpine/v3.19/releases/x86_64/alpine-minirootfs-3.19.1-x86_64.tar.gz
공식 ...
7월 16일 17:32에 게시됨