Java JNI를 사용하여 Windows 레지스트리 조작

Java 네이티브 인터페이스(JNI)를 활용하여 Windows 레지스트리에 접근하고 값을 읽고 쓰는 방법을 설명합니다. 이 예제는 64비트 Windows 환경에서 테스트되었으며, Java와 C 코드를 연동하여 네이티브 API를 호출하는 과정을 다룹니다. 프로젝트 구성 이 프로젝트는 다음과 같은 주요 파일로 구성됩니다: Win32RegKey.java: 레지스트리 키 조작의 핵심 로직을 담고 ...

6월 30일 01:18에 게시됨

Spring Boot와 JWT를 활용한 보안 인증 구현

참고: Auth0 Java JWT JWT를 사용하여 사용자 정의 매개변수와 타임스탬프로 토큰을 생성하고, 이를 통해 사용자 정보를 검증합니다. Auth0의 JWT 라이브러리는 자동으로 시간 만료 여부를 확인하며, 만료된 경우 TokenExpiredException 예외를 발생시킵니다. 1. 의존성 추가 <dependency> <groupId>com.auth0</groupId> <artifactId>java- ...

6월 29일 22:10에 게시됨

jqGrid 인라인 편집 및 데이터 저장 기능 구현

jqGrid 테이블의 인라인 편집, 저장 및 취소 기능 구현 HTML 구조 <div class="panel-body"> <div id="gridPager"></div> </div> JavaScript 코드 $("#gridTable").jqGrid({ colModel: [ //jqGrid 각 열의 구성 정보. 이름, 인덱스, 너비, 정렬 방식 등... {name: 'id', index: 'id', width: ...

6월 29일 19:05에 게시됨

SpringMVC 실행流程 상세 분석

서론 SpringMVC는 현재 가장 널리 사용되는 웹 MVC(모델-뷰-컨트롤러) 프레임워크 중 하나입니다. Model(모델 계층): 데이터베이스에서 데이터를 가져오거나 저장하는 역할을 담당합니다. View(뷰 계층): 모델 계층의 데이터를 기반으로 사용자에게 보여질 웹 페이지를 생성합니다. Controller(컨트롤러): 뷰로부터 입력을 읽고, 사용자 입력을 모델에게 전달하거나 데이 ...

6월 29일 17:44에 게시됨

자바로 구현하는 결제 엔진 핵심 설계

결제 도메인 모델링전자상거래 시스템의 핵심인 결제 모듈을 자바로 구현해본다. 실무에서 자주 마주치는 다양한 결제 수단 통합, 잔액 검증, 예외 상황 처리 등을 객체지향 설계 원칙에 따라 구성한다.거래 기록 엔티티결제의 대상이 되는 거래 정보를 담는 클래스다. 불변성을 위해 필드는 final로 선언하고, 빌더 패턴을 적용해 유연한 객체 생성을 지원한다.public fin ...

6월 29일 04:25에 게시됨

대규모 데이터 엑셀 다운로드 시 서버 부하 방지를 위한 큐 기반 처리 최적화

최근 서비스 내 수십만 건 이상의 데이터를 일괄 다운로드하는 기능에 대한 요구가 증가하고 있으며, 특히 여러 사용자가 동시에 엑셀 추출을 요청할 경우 서버 리소스 과부하로 인한 장애 위험이 존재합니다. 이는 DB 조회 I/O와 파일 스트림 생성이라는 두 가지 무거운 작업이 병행되기 때문입니다. 이를 해결하기 위해 동시 처리량을 제어하고, 요청을 순차적으로 ...

6월 28일 23:10에 게시됨

Java Integer.valueOf()의 동작 원리와 Integer Cache 이해하기

자바 개발 중 정수형 객체를 비교할 때 상식적으로 이해하기 어려운 결과가 발생할 때가 있습니다. 다음의 코드 예제를 살펴보겠습니다. Integer a1 = Integer.valueOf("127"); Integer a2 = Integer.valueOf("127"); System.out.println(a1 == a2); // 결과: true Integer b1 = Integer.valueOf("128"); Integer b2 = Integer.valueOf("128"); System.out.println(b1 == ...

6월 28일 19:30에 게시됨

Java 제어 흐름과 사용자 입력 처리

Scanner를 통한 사용자 입력 처리 Java에서 사용자로부터 입력을 받기 위해 java.util.Scanner 클래스를 활용할 수 있다. 주로 콘솔 환경에서 값을 읽어오는 데 사용되며, 다음 메서드들이 대표적이다. next(): 공백을 기준으로 하나의 토큰만 인식한다. 즉, 공백 포함 문자열은 전부 수신하지 못한다. nextLine(): 현재 줄의 남은 모든 내용을 읽으며, 개행 문자(En ...

6월 28일 17:27에 게시됨

빌더 패턴

1. 빌더 패턴이란? 복잡한 객체의 생성과 표현을 분리하여 동일한 구성 요소로 다양한 표현을 생성할 수 있도록 설계 패턴입니다. 예를 들어 외식 시스템에서 메뉴 구성은 고정된 재료(건강식, 일반식 등)가 다르지만, 기본적인 조리 과정은 유사합니다. 2. 주요 목적 복잡한 객체의 구현 세부사항을 숨기고, 서브클래스를 통해 동적으로 객체를 생성하는 방식으로 ...

6월 27일 18:23에 게시됨

Java 고급 프로그래밍: 단위 테스트, 리플렉션 및 동적 프록시의 이해와 활용

단위 테스트를 통한 코드 신뢰성 확보 소프트웨어 개발 과정에서 코드의 논리적 결함을 조기에 발견하기 위해 단위 테스트는 필수적입니다. Java 생태계에서 가장 널리 사용되는 JUnit 프레임워크는 @Test 어노테이션을 통해 개별 메서드의 동작을 검증합니다. 단언문(Assertions)을 활용하여 실제 실행 결과와 기대값을 비교함으로써 코드의 안정성을 보장할 수 있습니다. ...

6월 27일 17:57에 게시됨