본문 바로가기

Java

(15)
HikariCP Oracle 데이터베이스와의 커넥션 유효성을 검사 성능 최적화!! oracle.jdbc.defaultConnectionValidation 설정은 HikariCP (JDBC 커넥션 풀링 라이브러리)에서 Oracle 데이터베이스와의 커넥션 유효성을 검사할 때 사용하는 설정 입니다. 기본적으로, HikariCP는 커넥션 풀에 있는 커넥션이 여전히 유효한지 확인하기 위해 여러 방법을 제공합니다. SOCKET: 소켓을 통해 연결 상태를 검사합니다.FAST: 기본적인 유효성 검사로, 연결이 유효한지 간단히 확인합니다.METADATA: 메타데이터를 사용하여 연결을 검사합니다.TABLE: 특정 테이블에 대해 간단한 쿼리를 실행하여 연결을 검사합니다.설정 방법구분내용 SOCKET 위에서 설명한 것처럼, SOCKET은 소켓을 통해 연결 상태를 검사합니다. 이는 네트워크 레벨에서 연결이 ..
[JAVA] Thread Local이란 무엇인가? 기본 개념부터 활용까지! Thread Local이란 무엇인가?ThreadLocal은 자바에서 멀티스레딩 프로그래밍을 할 때 사용되는 클래스입니다. 각 스레드가 독립적으로 값을 가지도록 해주며, 여러 스레드가 동시에 같은 변수를 사용할 때 발생할 수 있는 문제를 피할 수 있습니다.일반적으로 멀티스레딩 환경에서 공유 변수는 동기화가 필요합니다. 하지만 동기화는 성능에 영향을 미칠 수 있습니다. ThreadLocal을 사용하면 스레드마다 고유한 변수를 가질 수 있기 때문에 동기화가 필요 없습니다.ThreadLocal의 주요 메서드는 다음과 같습니다:get(): 현재 스레드의 값을 반환합니다.set(T value): 현재 스레드의 값을 설정합니다.remove(): 현재 스레드의 값을 삭제합니다.public class ThreadLoca..
[JAVA] JVM GC(Garbage Collection)이란 무엇인가? 대표 알고리즘 알아보기! JVM GC(가비지 컬렉션)의 개념**가비지 컬렉션(GC)**는 JVM(Java Virtual Machine)이 동적으로 할당된 메모리 중 더 이상 사용되지 않는 객체를 자동으로 식별하고 회수하는 메커니즘입니다. 이는 개발자가 명시적으로 메모리를 해제하는 번거로움을 덜어주며, 메모리 누수를 방지합니다.주요 개념과 단계힙(Heap) 메모리 관리JVM의 힙은 크게 Young Generation, Old Generation, 그리고 Permanent Generation (또는 Metaspace)으로 나뉩니다.Young Generation: 새로 생성된 객체가 저장되는 공간. 대부분의 객체는 여기에 생성되며, 수명이 짧습니다.Old Generation: Young Generation에서 살아남은 객체들이 이동되..
[JAVA] Java 21 Virtual Thread와 Kotlin Coroutine 비교해보기 구분Java 21 가상 스레드Kotlin 코루틴동시성 모델JVM이 관리하는 가벼운 스레드로, 자바의 스레드 모델에 직접 매핑되어 자원 사용과 컨텍스트 전환 비용을 줄임.구조적 동시성으로, Kotlin 런타임에서 관리하는 가벼운 스레드. 작업을 차단하지 않고 중단 및 재개 가능.통합기존 Java 코드 및 라이브러리와 원활하게 통합.Kotlin 언어 기능 및 특정 라이브러리 필요 (예: kotlinx.coroutines).성능메모리 오버헤드가 적고 JVM의 네이티브 지원으로 수백만 개의 스레드 처리 가능.수천 개의 코루틴을 효율적으로 관리하지만 중단 지점과 코루틴 전용 구조 필요.Code로 비교해보기Kotlin 코루틴import kotlinx.coroutines.*fun main() = runBlocking..
[Spring Boot] AOP(Aspect-Oriented Programming, 관점 지향 프로그래밍)란 무엇인가? Spring Boot에서 AOP(Aspect-Oriented Programming, 관점 지향 프로그래밍)는 코드의 중복을 줄이고, 모듈성을 향상시키기 위한 강력한 도구입니다. AOP는 주로 애플리케이션의 로깅, 트랜잭션 관리, 보안, 예외 처리 등 횡단 관심사(Cross-Cutting Concerns)를 처리하는 데 사용됩니다.AOP의 기본 개념Aspect(애스펙트): 횡단 관심사를 모듈화한 것입니다. 예를 들어, 로깅이나 트랜잭션 관리 기능이 하나의 Aspect가 될 수 있습니다.Join Point(조인 포인트): 애플리케이션 실행 중 특정 지점입니다. 메서드 호출이나 예외 처리 등 여러 종류의 Join Point가 있습니다.Advice(어드바이스): 특정 Join Point에서 실행될 코드를 정의합..
[JAVA] WebClient 사용법 알아보기! 간단 예제 포함! Spring Boot에서 WebClient는 비동기식 HTTP 요청을 처리하기 위해 사용되는 클라이언트입니다. WebClient는 Spring 5에서 도입된 새로운 HTTP 클라이언트로, RestTemplate의 대체제로 설계되었습니다. WebClient는 비동기 및 동기 방식 모두를 지원하며, 더 유연하고 강력한 기능을 제공합니다.WebClient 기본 설정Spring Boot 프로젝트에서 WebClient를 사용하려면 먼저 의존성을 추가해야 합니다. build.gradle 또는 pom.xml 파일에 다음을 추가하세요.Gradledependencies { implementation 'org.springframework.boot:spring-boot-starter-webflux'}Maven ..
자바 성능 튜닝 정보 알아보기! 구분 내용 -Djava.awt.headless 그래픽 사용자 인터페이스 (GUI)를 지원하는 환경에서 Java 애플리케이션을 실행할 때 사용됩니다. 이 설정은 화면이 없는 서버 환경에서 Java 애플리케이션을 실행할 때 유용합니다. java.awt.headless 시스템 속성을 true로 설정하면, Java 애플리케이션은 그래픽 환경이 없는 "헤드리스" 모드로 실행됩니다. 이 모드에서는 그래픽 화면이 없기 때문에 그래픽 관련 작업을 수행할 수 없습니다. 대신, 이 모드에서는 그래픽 작업을 대신할 수 있는 대체 수단을 사용하게 됩니다. 이러한 설정은 주로 웹 서버, 배치 프로세스 또는 백그라운드 작업과 같이 그래픽 환경이 필요하지 않은 Java 애플리케이션을 개발하고 실행할 때 유용합니다. 이렇게 설정을 ..
[개념] Spring Framework와 Spring boot에 대해 알아보자! Spring Framework와 Spring Boot는 모두 Java 기반의 프레임워크로, 웹 애플리케이션 및 서비스를 개발하는 데 사용됩니다. 그러나 두 프레임워크 간에는 몇 가지 중요한 차이가 있습니다. 1. 초기 설정과 설정의 용이성: Spring Framework: 초기에는 XML 기반의 설정이 많이 사용되었습니다. Annotation 기반 설정이 도입되었지만 여전히 일부 설정은 XML을 사용할 수 있습니다. 프로젝트를 시작하기 위해 많은 설정이 필요할 수 있습니다. Spring Boot: 스프링 부트는 기본적인 설정을 자동으로 제공하는 "초기화 자동화"에 중점을 두고 있습니다. Convention over Configuration 원칙을 따르므로 개발자가 추가 설정을 하지 않아도 기본적인 설정이..