본문 바로가기

Category

(227)
[프로그래머스] 연속된 부분 수열의 합 문제 https://school.programmers.co.kr/learn/courses/30/lessons/178870?language=java 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 비내림차순으로 정렬된 수열이 주어질 때, 다음 조건을 만족하는 부분 수열을 찾으려고 합니다. 기존 수열에서 임의의 두 인덱스의 원소와 그 사이의 원소를 모두 포함하는 부분 수열이어야 합니다. 부분 수열의 합은 k입니다. 합이 k인 부분 수열이 여러 개인 경우 길이가 짧은 수열을 찾습니다. 길이가 짧은 수열이 여러 개인 경우 앞쪽(시작 인덱스가 작은)에 나..
[HikariCP][ASM] JDBC 쿼리 로깅하기(ProxyConnection) ProxyConnection ProxyConnection은 java.sql.connection 인터페이스를 구현한 프록시 클래스이다. 그럼 실제 Connection을 하는 객체는? Springboot 등에서 실제 Connection 구현체는 사용하는 데이터베이스와 JDBC Driver에 따라 달라진다. 예를 들어, MySQL을 사용한다면 com.mysql.cj.jdbc.ConnectionImpl이 될 수 있으며, PostgreSQL을 사용한다면 org.postgresql.jdbc.PgConnection이 될 수도 있다. 스프링 부트는 자동 구성(DataSource를 생성하는 기본 로직과 유사하게)을 통해 데이터 소스를 설정하고, 애플리케이션에서 사용하는 구체적인 JDBC 드라이버에 맞는 Connectio..
[HikariCP][Delegate]ProxyPreparedStatement 타깃 코드 다음 코드의 동작과 흐름을 확인해보자. public abstract class ProxyPreparedStatement extends ProxyStatement implements PreparedStatement { ProxyPreparedStatement(ProxyConnection connection, PreparedStatement statement) { super(connection, statement); } public boolean execute() throws SQLException { this.connection.markCommitStateDirty(); return ((PreparedStatement)this.delegate).execute(); } public ResultSe..
[HikariCP][DataSource]HikariDataSource/HikariPool, 그리고 동작 과정 HikariDataSource와 HikariPool HikariDataSource HikariDataSource는 DataSource 구현체이다. HikariCP를 사용하여 DataSource를 구현할 경우, 구체적인 구현체는 이 클래스가 된다. 이렇게 구현되어, Bean 인스턴스에 들어가 관리되는 것이다. 애플리케이션의 Config를 담당하기도 한다. application.properties 또는 application.yml 파일에 커넥션 풀 관련 설정(최대 커넥션 개수, 최소 유휴 커넥션 개수 등)을 지정할 때, 이 설정들은 com.zaxxer.hikari.HikariDataSource 인스턴스를 통해 관리된다. HikariDataSource 인스턴스는 HikariCP 커넥션 풀의 구성과 상태 관리를..
[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] 실습 파일 및 내용 ..