Apache Commons Pool2를 이용한 중량급 객체 풀링 구현

시스템 개발 시 생성 비용이 큰 '중량급 객체'를 빈번하게 만들고 파괴하는 과정은 성능 저하의 주요 원인이 됩니다. 객체 풀링(Object Pooling) 기법은 초기화 단계에서 일정 수의 객체를 미리 생성해 두고, 필요할 때마다 풀에서 객체를 빌려(Borrow) 사용한 뒤 다시 반납(Return)하는 방식을 취합니다. 이를 통해 객체 생성 오버헤드를 줄이고 시스템 리소스를 효율적으 ...

7월 31일 03:11에 게시됨

JVM 심층 분석: 아키텍처, 메모리 및 가비지 컬렉션

1. JVM 아키텍처 개요 자바 가상 머신(JVM)은 자바 애플리케이션의 핵심 실행 환경입니다. 운영체제 위에서 동작하며 하드웨어와 직접 상호작용하지 않습니다. JVM은 클래스 로더, 런타임 데이터 영역, 실행 엔진 등 여러 서브시스템으로 구성되어 자바 바이트코드를 실행합니다. 1.1. 클래스 로더 (ClassLoader) 클래스 로더는 .class 파일을 JVM 메모리 영역으로 로드하 ...

7월 30일 20:15에 게시됨

Java에서 랜덤 숫자 생성하기

랜덤 숫자를 생성하는 것은 프로그래밍에서 매우 일반적인 작업입니다. Java에서는 다양한 방법으로 램덤 숫자를 생성할 수 있습니다. 아래는 세 가지 주요 방법에 대한 설명과 코드 예제입니다. 1. Math.random() 활용 Math.random() 메서드는 0.0 이상 1.0 미만의 double 값을 반환합니다. 이를 통해 특정 범위 내의 정수형 랜덤 숫자를 쉽게 얻을 수 있습니다. publ ...

7월 30일 19:30에 게시됨

Java에서 정규표현식 활용하기

정규표현식 소개 정규표현식(Regular Expression, 줄여서 Regex)는 문자열 내에서 특정한 패턴을 탐지하거나 조작하는 데 사용되는 강력한 도구입니다. Java에서는 java.util.regex 패키지를 통해 정규표현식 기능을 제공합니다. 이 패키지는 복잡한 텍스트 처리 작업을 간소화할 수 있게 해주며, 입력 검증, 데이터 추출, 문자열 치환 등 다양한 시나리오에 유용하게 쓰입 ...

7월 30일 04:18에 게시됨

Java 객체 생존 판별 및 가비지 컬렉션 원리

객체 생존 여부 판단 기준 참조 카운터 방식의 한계 참조 카운터는 객체마다 카운터를 할당하여 참조 발생 시 증가, 참조 해제 시 감소시키는 방법입니다. 카운터가 0이면 가비지 컬렉션 대상으로 간주되지만, 순환 참조 상황에서는 실제로 사용되지 않음을 실험으로 확인할 수 있습니다. public class GCValidation { private static final int SIZE_1MB = 1024 * 1 ...

7월 30일 00:47에 게시됨

MyBatis 기반 CRUD 구현 및 핵심 속성 활용 가이드

1. MyBatis를 이용한 CRUD 기초 구현 MyBatis를 사용하여 데이터베이스의 기본적인 생성(Create), 조회(Read), 수정(Update), 삭제(Delete) 기능을 구현하는 방법은 인터페이스 정의, XML 매퍼 작성, 그리고 이를 실행하는 서비스 로직으로 구성됩니다. MemberMapper 인터페이스 정의 public interface MemberMapper { void addMember(Member member); ...

7월 29일 20:08에 게시됨

Spring Boot 애플리케이션을 Linux에서 백그라운드로 실행하는 방법

Spring Boot 애플리케이션을 실행하는 일반적인 방법은 다음과 같습니다. 메인 메서드를 직접 실행 mvn spring-boot:run 명령 사용 mvn package로 JAR 파일 생성 후 java -jar 명령으로 실행 개발 시에는 앞의 두 가지 방법을 주로 사용하지만, 배포 시에는 세 번째 방법인 JAR 파일을 실행하는 방식을 선호합니다. 하지만 java -jar 명령만으로는 애플리케이션이 ...

7월 29일 08:52에 게시됨

Dubbo 서비스 구축 및 연동 가이드

1. 서비스 제공자(Provider) 설정 먼저 서비스 제공자 역할을 할 웹 애플리케이션을 생성합니다. 프로젝트 구조는 다음과 같이 구성합니다. 1.1 POM 설정 pom.xml 파일에 필요한 Maven 의존성을 추가합니다. <dependencies> <!-- Spring Context --> <dependency> <groupId>org.springframework</group ...

7월 29일 07:11에 게시됨

JSP 웹사이트 개발: 페이지네이션 구현

이번 문서에서는 JSP를 사용한 웹사이트 개발에서 자주 사용되는 페이지네이션 기능을 구현하는 방법에 대해 설명합니다. 특히 데이터가 많은 경우 유용한 '바이두 스타일'의 페이지네이션을 예제로 다룹니다. 데이터 개수 조회 메소드: public int getTotalCount() { int count = 0; Connection conn = null; PreparedStatement pstmt = null; ResultSet ...

7월 29일 06:57에 게시됨

정적 배열을 활용한 큐(Queue) 데이터 구조 구현 가이드

FIFO(First In First Out) 순서를 보장하는 큐 (Queue) 는 소프트웨어 시스템에서 빈번하게 사용되는 추상 자료형입니다. 동적으로 크기가 조절되는 링크드 리스트 대신, 고정된 용량의 정적 배열을 활용하면 메모리 오버헤드를 줄이고 접근 속도를 향상시킬 수 있습니다. 본 문서에서는 Java 환경에서 배열 기반의 큐를 구축하고, 네 가지 핵심 연산을 수행하는 로직을 ...

7월 28일 21:12에 게시됨