MySQL 드라이버와 Druid 커넥션 풀 설정 불일치로 인한 Full GC 발생 원인 및 해결 방안

초기 대응 및 현황 파악 장애 발생 당시 3개의 인스턴스에서 Full GC가 발생했으며, 나머지 인스턴스들의 Old Generation 영역도 임계치에 도달해 있었습니다. 다수의 인스턴스가 동시에 Full GC에 진입하면 서비스 전체의 연쇄 장애(Snowball) 현상이 발생할 수 있으므로, 현장 조사를 위해 하나의 인스턴스를 격리한 후 나머지 인스턴스들을 순차적으로 재시작하는 롤링 ...

6월 6일 17:51에 게시됨

Maven 프로젝트 수동 구성 및 빌드 명령어 실행 가이드

1. Maven 프로젝트 디렉터리 구조 생성 Maven의 표준 디렉터리 레이아웃에 맞춰 프로젝트 폴더와 소스 코드를 배치합니다. IDE를 사용하지 않고 수동으로 구조를 잡을 때는 다음과 같은 계층을 유지해야 합니다. ManualMavenDemo ├── pom.xml └── src ├── main │ └── java │ └── com/example/demo/MessageService.java └── test ...

6월 6일 17:49에 게시됨

Java의 Synchronized와 CAS: 비관적 잠금과 낙관적 잠금 이해하기

Java에서 Synchronized는 비관적 잠금의 대표적인 예로, 어떤 데이터 접근이든 무조건 잠금을 걸어야 한다는 원칙을 따릅니다. 이는 사용자 모드와 커널 모드 간 전환, 잠금 카운터 관리 및 차단된 스레드 검사 등을 포함하는 복잡한 과정을 필요로 합니다. 하지만 하드웨어 명령어 집합의 발전으로 인해 충돌 감지 기반의 낙관적 동시성 제어가 가능해졌습니다. 먼저 작업 ...

6월 6일 02:21에 게시됨

자바 기반 Diffie-Hellman 키 교환 프로토콜과 대칭 암호화 연동 과정

Diffie-Hellman(DH) 알고리즘은 양방향 보안 통신을 위해 사전에 합의하지 않은 두 엔터티가 안전하지 않은 네트워크 환경을 통해 공유 비밀 키를 생성하는 핵심 기술입니다. 이 방식으로 도출된 시크릿 키는 일반적으로 효율적인 대칭 암호화 방식을 위한 입력값으로 사용되며, 현대적인 자바 애플리케이션에서는 JCA(Java Cryptography Architecture) 및 JCE(Java Crypt ...

6월 6일 00:07에 게시됨

JWT 간단 응용 예제

Spring Boot와 JWT를 활용한 인증 시스템 구현 1. Maven 의존성 추가 <dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt</artifactId> <version>0.9.1</version> </dependency> <dependency> <groupId>com.auth0</groupI ...

6월 5일 23:35에 게시됨

Spring Boot를 활용한 공동 도서관 대출 반납 관리 시스템 구축 및 운영 가이드

기술적 배경 Spring Boot는 Java 기반 애플리케이션 개발에서 널리 사용되는 경량화 프레임워크로, 자동화된 설정 및 내장형 웹 서버(Tomcat)를 통해 개발 효율성을 극대화합니다. 특히, 중소형 규모의 시스템 개발에 이상적인데, 도서관 대출 반납 시스템과 같은 비즈니스 로직 집중형 애플리케이션에 특히 유용합니다. 비즈니스 요구사항 현존하는 도서관 시스템은 종이 ...

6월 5일 22:45에 게시됨

마이바티스 프레임워크

마이바티스 개요 1.1简介 마이바티스(MyBatis)는 오픈소스 영속성(Persistence) 프레임워크로, JDBC 개발을 간소화하기 위해 설계되었습니다. 원래 Apache의 iBatis 프로젝트로 시작하여 2010년에 Google Code로 이전되면서 마이바티스로 이름을 변경했으며, 2013년 11월부터 GitHub에서 관리되고 있습니다. 마이바티스의 특징은 다음과 같습니다: 마이바티스는 일반 SQ ...

6월 5일 21:34에 게시됨

자바 멀티스레드 환경의 데이터 동기화 문제와 해결 방법

멀티스레드 프로그래밍에서 여러 스레드가 동일한 자원에 동시에 접근할 때, 적절한 제어가 이루어지지 않으면 데이터의 일관성이 깨지는 '스레드 안전(Thread Safety)' 문제가 발생합니다. 예를 들어, 여러 스레드가 하나의 공유 변수 값을 증가시키는 단순한 작업조차도 예상치 못한 결과를 초래할 수 있습니다. 데이터 불일치 현상의 발생 공유 자원에 여러 스레드가 ...

6월 5일 18:52에 게시됨

Java 및 데이터베이스 처리를 위한 핵심 기술 팁

날짜 연산 처리: Calendar를 활용한 날짜 조작 자바에서 날짜에 일수를 더하거나 빼야 할 경우 Calendar 클래스를 사용하는 것이 표준적인 방법이다. 아래 예제는 현재 날짜에 하루를 추가하는 코드이다. import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; Date currentDate = new Date(); Calendar calendar = new GregorianCalen ...

6월 5일 00:23에 게시됨

Navicat 연결 비밀번호 복구 도구: 다양한 버전 지원을 통한 데이터베이스 액세스 회복

Navicat 연결 정보에서 비밀번호를 복구하는 오픈소스 도구 소개 비밀번호를 잊어버렸을 때, 이 도구는 빠르고 안전하게 저장된 데이터베이스 연결 정보를 복원할 수 있도록 도와줍니다. 개발자 및 데이터 관리자는 종종 Navicat를 통해 여러 데이터베이스에 접근하는데, 이 과정에서 저장된 비밀번호가 중요 자산이 됩니다. 해당 비밀번호를 분실했을 경우, 이 오픈소스 ...

6월 4일 21:28에 게시됨