본문 바로가기

전체 글

(215)
[DataSource]HikariCP DataSource 연동 과정 및 구현체 https://www.javadoc.io/doc/com.zaxxer/HikariCP/latest/com.zaxxer.hikari/com/zaxxer/hikari/package-summary.html com.zaxxer.hikari package summary - HikariCP 5.1.0 javadoc Latest version of com.zaxxer:HikariCP https://javadoc.io/doc/com.zaxxer/HikariCP Current version 5.1.0 https://javadoc.io/doc/com.zaxxer/HikariCP/5.1.0 package-list path (used for javadoc generation -link option) https://javadoc..
[TroubleShooting][ASM][HikariCP] HikariCP 기반 Springboot 트랜잭션 로그 수집 - 1 개요 HikariCP는 고성능 JDBC 커넥션 풀 라이브러리로, Spring Boot에서 널리 사용되며, DB 연결 관리를 최적화하기 위해 설계되었다. Spring Boot는 HikariCP를 기본적인 DataSource 구현체로 사용한다. (Spring Boot 2.0 이상 버전부터 HikariCP가 기본 Connection Pool로 설정되어 있다.) 이는 Spring Boot의 자동 구성 메커니즘을 통해 제공되며, 특별한 설정 없이도 HikariCP를 사용할 수 있게 해준다. 사용자는 application.properties 또는 application.yml 파일에서 HikariCP에 대한 세부 설정을 조정할 수 있다. HikariCP는 JDBC의 javax.sql.DataSource 인터페이스를 ..
[디자인 패턴]프록시(Proxy) 패턴 설명과 예시 https://refactoring.guru/ko/design-patterns/proxy 프록시 패턴 / 디자인 패턴들 / 구조 패턴 프록시 패턴 다음 이름으로도 불립니다: Proxy 의도 프록시는 다른 객체에 대한 대체 또는 자리표시자를 제공할 수 있는 구조 디자인 패턴입니다. 프록시는 원래 객체 refactoring.guru 개요 프록시 패턴은 구조 패턴의 하나로, 어떤 객체에 대한 접근을 제어하는 대리인(프록시) 객체를 두어 직접적인 접근을 방지하는 패턴이다. 이 패턴은 실제 서비스 객체의 참조를 감싸는 프록시 객체를 생성하여, 클라이언트가 서비스 객체에 접근할 때 프록시 객체를 통해 간접적으로 접근하게 만든다. 프록시 패턴은 접근 제어, 비용이 많이 드는 연산의 지연 실행, 원격 객체의 접근 등 ..
ASM 학습 정리 공식 Reference 기반 번역 및 학습 1. Introduction https://csg1353.tistory.com/163 [A Java bytecode engineering library] 1. Introduction 1.1. Motivations 프로그램 분석, 생성 및 변환은 다양한 상황에서 유용하게 사용될 수 있는 기술이다. • 프로그램 분석은 간단한 구문 분석부터 전체 의미 분석에 이르기까지 다양하며, 응용 프로 csg1353.tistory.com [Core API] 2. Classes[1/2] https://csg1353.tistory.com/164 [A Java bytecode engineering library] - [Core API] 2. Classes[1/2] 실습 파일 및 내용 ..
[ASM][Util]TraceClassVisitor/고수준 코드 출력하기[InteliJ] Java ASM 라이브러리의 TraceClassVisitor는 Java 바이트코드를 분석하고 조작하기 위한 도구 중 하나이다. ASM 라이브러리는 Java 클래스 파일을 직접 읽고 쓰며, 이를 통해 런타임에 클래스의 구조를 변경하거나 분석할 수 있는 기능을 제공한다. TraceClassVisitor는 ASM의 방문자(visitor) API 중 하나로, 클래스 파일의 내용을 분석하고 이해하기 쉬운 형태로 출력하는 데 사용된다. 1. 개념 TraceClassVisitor는 ASM 라이브러리에서 제공하는 클래스 방문자 중 하나로, 방문한 바이트코드 구조(클래스, 메소드, 필드 등)를 사람이 읽을 수 있는 형식으로 출력하는 기능을 한다. 이 클래스는 ClassVisitor 인터페이스를 구현하며, 방문자 패턴을 ..
[A Java bytecode engineering library] - [Tree API] 9.Metadata 이번 파트는 상대적으로 짧은 편이다. 9. 메타데이터(Metadata) 이 장에서는 컴파일된 자바 클래스의 메타데이터(예: 애너테이션)에 대한 트리 API를 소개한다. 이 메타데이터는 이미 4장에서 소개되었고, 해당 코어 API를 알고 나면 트리 API가 간단하기 때문에 이 장은 매우 짧다. 9.1. 제네릭(Generics) 트리 API는 제네릭 타입에 대한 지원을 제공하지 않는다! 실제로 제네릭 타입을 코어 API에서와 같이 시그니처로 표현하지만, SignatureVisitor에 해당하는 SignatureNode 클래스를 제공하지 않으며, 비록 가능하지만(실제로는 타입, 메소드, 클래스 시그니처를 구분하기 위해 여러 Node 클래스를 사용하는 것이 편리할 것이다). 9.2. 애너테이션(Annotatio..
[ASM] Label 기본 개념 및 if/for/while 제어문 바이트코드 조작 개요 Label의 기본 개념 Label 객체는 코드 내 특정 위치를 가리키는 마커 역할을 한다. 이 위치는 다른 지점에서 점프하거나 분기할 때 참조될 수 있다. ASM에서는 메서드의 바이트 코드를 생성하거나 수정할 때, Label을 사용하여 조건문, 반복문, try-catch 블록 등의 흐름 제어 구조를 구현한다. Label은 MethodVisitor 인터페이스를 통해 메서드의 코드를 방문할 때 사용되며, visitLabel(Label label) 메소드를 사용하여 코드 상의 특정 위치를 정의한다. Label 사용 방법 Label 객체 생성: 먼저, Label 객체를 생성한다. 이 객체는 코드 내의 특정 위치를 나타낸다. Label start = new Label(); Label 위치 정의: 메서드 바이..
[A Java bytecode engineering library] - [Tree API] 8. Method Analysis 8. Method Analysis 이 장에서는 메소드의 코드를 분석하는 ASM API를 소개한다. 이 API는 트리 API를 기반으로 한다. 코드 분석 알고리즘 소개로 시작하여, 해당 ASM API와 일부 예시를 제시한다. 8.1. 소개 코드 분석은 매우 광범위한 주제이며, 코드를 분석하기 위한 많은 알고리즘이 존재한다. 여기서 모두를 소개하는 것은 불가능하며 이 문서의 범위를 벗어난다. 사실 이 섹션의 목적은 단지 ASM에서 사용되는 알고리즘에 대한 개요를 제공하는 것이다. 이 주제에 대한 더 나은 소개는 컴파일러에 관한 책에서 찾을 수 있다. 다음 섹션에서는 데이터 흐름과 제어 흐름 분석이라는 두 가지 중요한 코드 분석 기술을 소개한다: 데이터 흐름 분석( data flow analysis )은 메소..