본문 바로가기

전체 글

(215)
람다(Lambda)식의 정의와 함수형 인터페이스, 메서드 참조 https://www.youtube.com/watch?v=4ZtKiSvZNu4 먼저 해당 포스팅은 다음 유튜브 설명을 참조했음을 미리 밝힌다. 이해에 큰 도움이 되니 먼저 확인해보길 권장한다. 이후 시간이 된다면 스트림 포스팅 역시 확인하면 도움이 될 것이다. https://csg1353.tistory.com/214 기초 개념 자바에서 람다 표현식과 스트림 API는 코드를 더 간결하고 명료하게 만들어주는 강력한 기능이다. 람다 표현식은 익명 함수의 한 형태로, 간결한 방식으로 메소드를 전달할 수 있는 기능을 제공한다. 스트림 API는 데이터 컬렉션을 선언적으로 처리할 수 있도록 해주며, 람다 표현식과 함께 사용될 때 더욱 효과적이다. 람다(Lambda) 메서드를 하나의 식으로 표현한 것 람다 (lambd..
13023 - ABCDE[G5] 문제 문제 BOJ 알고리즘 캠프에는 총 N명이 참가하고 있다. 사람들은 0번부터 N-1번으로 번호가 매겨져 있고, 일부 사람들은 친구이다. 오늘은 다음과 같은 친구 관계를 가진 사람 A, B, C, D, E가 존재하는지 구해보려고 한다. A는 B와 친구다. B는 C와 친구다. C는 D와 친구다. D는 E와 친구다. 위와 같은 친구 관계가 존재하는지 안하는지 구하는 프로그램을 작성하시오. 입력 첫째 줄에 사람의 수 N (5 ≤ N ≤ 2000)과 친구 관계의 수 M (1 ≤ M ≤ 2000)이 주어진다. 둘째 줄부터 M개의 줄에는 정수 a와 b가 주어지며, a와 b가 친구라는 뜻이다. (0 ≤ a, b ≤ N-1, a ≠ b) 같은 친구 관계가 두 번 이상 주어지는 경우는 없다. 출력 문제의 조건에 맞는 ..
단어 뒤집기 2 - 17413[S3] 설명 https://www.acmicpc.net/problem/17413 17413번: 단어 뒤집기 2 문자열 S가 주어졌을 때, 이 문자열에서 단어만 뒤집으려고 한다. 먼저, 문자열 S는 아래와과 같은 규칙을 지킨다. 알파벳 소문자('a'-'z'), 숫자('0'-'9'), 공백(' '), 특수 문자('')로만 이루어져 www.acmicpc.net 문제 문자열 S가 주어졌을 때, 이 문자열에서 단어만 뒤집으려고 한다. 먼저, 문자열 S는 아래와과 같은 규칙을 지킨다. 알파벳 소문자('a'-'z'), 숫자('0'-'9'), 공백(' '), 특수 문자('')로만 이루어져 있다. 문자열의 시작과 끝은 공백이 아니다. ''가 문자열에 있는 경우 번갈아가면서 등장하며, '
MySQL 데이터를 Psql로 마이그레이션하기 프로젝트 과정에서 데이터를 마이그레이션할 상황이 발생했다. MySQL 기반 데이터를 psql에 적용시켜보자. 먼저, Data Export를 통해 dump.sql 파일이 존재함을 가정한다. 1. NotePad++ 설치 및 데이터 변환 (심플) https://notepad-plus-plus.org/downloads/ Downloads | Notepad++ notepad-plus-plus.org 일단 최신 버전의 NotePad를 다운로드하자. 만일 리눅스 환경이라면 sed -i -e 's/DEFAULT CHARACTER SET [a-z]*\s*//g' dump.sql 을 통해 간편하게 변환할 수도 있다. NotePad를 통해 psql에서 사용할 수 없는 데이터를 전부 변환처리 해야 한다. Ctrl + H를 통..
[프로그래머스] 연속된 부분 수열의 합 문제 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 커넥션 풀의 구성과 상태 관리를..