분류 전체보기
Connection Pool
웹 애플리케이션에서 데이터베이스와 연결을 맺을 때마다 Conenction을 생성한다면 많은 비용이 들뿐만 아니라, Connection 관리를 직접해줘야 되는 단점이 존재한다.이를 해결하기 위해 Connection Pool을 사용하는데, 여러 오픈 소스 라이브러리가 존재한다.(Apache Commons DBCP, Tomcat-JDBC, HikariCP)또한, Connection Pool을 적절히 사용하기 위해선 구조와 원리에 대해 알고 있어야 한다.사내에서 Apache Commons DBCP사용하므로 이에 대해 알아보자.Commons DBCP 속성 설정initialSize : 최초 시점에 getConnection() 를 통해 커넥션 풀에 채워 넣을 커넥션 개수 (default = 0)maxTotal (1...
추상 팩토리 패턴과 전략패턴 활용
데이터베이스 모니터링 아키텍처를 설계 중 여러 데이터베이스의 Collector, Loader를 사용하기 위해 추상 팩토리 패턴, 전략패턴을 활용하여 아키텍처를 설계해보았습니다.추상 팩토리 패턴객체 생성 패턴 중 하나로, 관련된 객체들을 하나의 팩토리(Factory)에서 생성하도록 하는 디자인 패턴입니다.객체 생성에 대한 구체적인 클래스를 감추고, 상위 인터페이스만을 통해 객체를 생성함으로써 코드의 유연성과 확장성을 높이는 데 도움이 됩니다.추상 팩토리public interface MonitoringFactory { Collector createCollector(); Loader createLoader();}public class OracleMonitoringFactory implements Monit..
blkid를 활용하여 Mount시 Volume 고정하기
AWS에서 인스턴스에 EBS를 여러 개 연결하면 Mount 시 EBS의 파일 크기가 작은 순으로 할당되는 것을 막기 위해, blkid 명령어로 EBS의 UUID를 얻어 Mount 시 EBS 연결을 UUID를 통해 할당되게 만들 수 있습니다./etc/fstab 파일에 마운트할 디스크나 블록 디바이스의 파일 시스템 명( /dev/sda1 등)을 적는 것보다 UUID를 적는 것이 더 유리합니다.blkid란?blkid는 디스크 블록 장치의 파일 시스템 종류와 함께 파일 시스템의 UUID 값을 출력합니다. 이 UUID 값은 이후 파일 시스템을 시스템에 자동 마운트하는 과정에서 사용됩니다.파일 시스템 생성아래 명령어를 사용하기 위해서는 파일 시스템을 디스크 블록에 먼저 생성해야 합니다.mkfs.xfs -f /dev..
JNI 사용하기
JNI(Java Native Interface)는 자바와 Native Code(C,C++)를 연결하는 데 사용되는 프레임워크이다. JNI를 통해 자바 Application에서 Natice Library를 호출하거나, Native Application에서 Java Method를 호출 할 수 있다.이를 통해, 성능 향상, 기존 Native Library 재사용을 할 수 있다.자바에서 사용하는 방법Native method자바는 Method 구현이 native code에서 제공될 것임을 나타내는데 사용되는 native keyword를 제공한다.공유 라이브러리 : Java 코드 내에서 라이브러리에 대한 참조만 있다. 실행 파일을 실행하는 환경이 프로그램에서 사용하는 libs의 모든 파일에 액세스 할 수 있어야 한..
Oracle Process
DB Process & ThreadOracle ProcessProcess는 OS에 따라 달라진다오라클 프로세스는 오라클 데이터베이스 코드를 실행하는 실행 단위입니다. Process Architecture (oracle.com)Multiprocess and MultiThread데이터베이스와 애플리케이션의 작업을 여러 프로세스로 나누면 여러 사용자와 애플리케이션이 동시에 인스턴스에 연결할 수 있으며 시스템 성능도 향상됩니다.쓰레드 모드로 사용하면 일부 프로세스들을 OS 프로세스로 실행 가능하다.Oracle Process ≠ OS Process종류Client Process : Application 또는 Oracle Tool 을 실행시킨다.SQLPlus을 실행시킬 시 OS는 Client Process를 실행시킨..
[프로그래머스 문제풀이]2024 KAKAO WINTER INTERNSHIP 산 모양 타일링
보자마자 DP문제다. DP문제는 점화식을 세워야 한다. 가로의 길이는 2*n+1이므로 현재 위치에서 어떤 타일을 사용해서 모양을 완성시킬 수 있는가에 대해 알아보자 가로로 타일을 채워갈 때 크게 두 가지로 나눌 수 있다. 타일을 정삼각형으로 쌓아야 하는 경우, 역삼각형으로 쌓아야 하는 경우다. 현재 위치가 x일 때, 삼각형 하나만 사용하는 경우엔 가로로 한 칸을 채울 수 있다. 따라서, dp [x] += dp [x-1] 마름모 타일이 서있지 않는 경우, 둘 다 가로로 두 칸을 채울 수 있다. 따라서 , dp [x] += dp [x-2] 마지막으로 마름모 타일을 돌려 높이가 1인 경우다. 이땐 현재 위치에서 타일을 정삼각형으로 쌓아야 하는 경우, 현재 위치보다 한 칸 앞의 타일의 높이가 1인 경우이다. 따..
[프로그래머스 문제풀이]2024 KAKAO WINTER INTERNSHIP n+1 카드게임
문제흐름을 살펴보면 카드가 2장 주어졌을 때, 한 장도 가지지 않을 것인지, 한 장을 가질 것인지, 두 장을 가질 것 인지를 결정해야 한다. 여기서 포인트는 카드를 뽑을 것인가는 당장 정하지 않는다는 것이다. 지금 당장 n+1을 만들 수 있는 카드 조합이 있다면, 카드를 뽑지 않고, 카드 더미에 쌓아두는 것이다. 당장 카드를 뽑지 않아도 나중에 필요할 때 coin을 사용해서 n+1 카드를 만들 수 있는 것이다. 따라서 전체적인 흐름은 아래와 같다. 1. 카드를 카드 더미에 쌓는다. 2. n+1 해결하기 1. 수중에 있는 카드로 n+1을 만들 수 있다면, 다음 카드 뽑기 2. coin을 사용해야 한다. 2-1. coin 없다면 게임 끝 2-2. coin 한 개를 사용해서 (수중에 카드 한 장 + 카드 더미..
[프로그래머스 문제풀이]2024 KAKAO WINTER INTERNSHIP 주사위 고르기
문제의 흐름을 파악하면 크게 3단계로 나눌 수 있다. 1. 모든 주사위 조합을 구한다. 2. 조합들을 비교하여 , A가 B를 이기는 가장 높은 확률의 주사위 조합을 구한다. 3. 가장 확률이 높은 주사위 번호를 오름차순으로 정렬한다. 결국 주사위 n/2개를 뽑은 A가 나머지 주사위를 고른 B를 가장 많이 이기는 주사위 n/2개의 주사위 조합을 구하면 된다. 실제 코딩테스트를 볼 때 위의 단계까진 생각했으나 구현에서 막혔다. 시간 복잡도를 계산하면 n의 범위는 10이므로 A가 가질 수 있는 최대 주사위의 개수는 5개, 5개의 주사위에서 나올 수 있는 주사위의 합은 최대 6*6*6*6*6= 7776개이다. A가 B를 이기는 횟수를 구하기 위해 A가 가질 수 있는 주사위의 합의 개수, B가 가질 수 있는 주사..