전체 글

DB

DataSource, Connection Pool, HikariCP

DataSource 란? DataSource는 커넥션을 획득하는 방법을 추상화하는 인터페이스이다. 이 인터페이스의 핵심 기능은 커넥션 조회이다. 특히 자바에서는 javax.sql.DataSource라는 인터페이스를 제공해준다. 만약 사용자가 DriverManager를 통해 커넥션을 획득하다가 나중에 HikariCP 커넥션 풀을 이용하려고 하면 커넥션을 획득하는 애플리케이션 코드를 모두 변경해야 한다. 하지만 이 커넥션을 획득하는 방법을 추상화해놓은 DataSource 인터페이스를 이용한다면 해당 인터페이스의 구현체만 갈아 끼우면 된다. 따라서 애플리케이션 로직은 DataSource 인터페이스에만 의존하도록 하면, 사용자는 커넥션을 획득하는 방법을 바꾸더라도 애플리케이션 로직을 변경하지 않아도 된다. DB..

알고리즘/문제

[프로그래머스] Lv2 예상대진표 / JAVA

https://school.programmers.co.kr/learn/courses/30/lessons/12985#qna 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 코드 class Solution { public int solution(int n, int a, int b) { /* 각 자리에서 1을 더한 후 2로 나누면 다음 라운드의 숫자가 된다. 카운트를 1씩 증가한다. 위 결과를 a-b==1 가 되는 순간 카운트를 리턴한다. */ int answer = 1; int bigger=0; int smaller=0; if(a>b){ bigger=a; sm..

DB

데이터베이스 샤딩(Sharding)

데이터베이스 샤딩이란 무엇인가요? 데이터베이스 샤딩은 대규모 데이터베이스를 여러 머신에 저장하는 프로세스입니다. 단일 머신 또는 데이터베이스 서버는 제한된 양의 데이터만 저장하고 처리할 수 있습니다. 데이터베이스 샤딩은 데이터를 샤드라고 하는 더 작은 청크로 분할하고 여러 데이터베이스 서버에 저장함으로써 이러한 한계를 극복합니다. 모든 데이터베이스 서버의 기본 기술은 일반적으로 동일하며 함께 작동하여 대량의 데이터를 저장하고 처리합니다. 데이터베이스 샤딩이 중요한 이유는 무엇인가요? 애플리케이션이 성장함에 따라 애플리케이션 사용자 수와 애플리케이션에 저장되는 데이터의 양도 시간이 갈수록 증가합니다. 데이터 볼륨이 너무 커지고 애플리케이션을 사용하여 동시에 정보를 읽거나 저장하려고 하는 사용자가 너무 많아..

알고리즘/문제

<실패>[프로그래머스] Lv2 구명보트 / JAVA

https://school.programmers.co.kr/learn/courses/30/lessons/42885#qna 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 코드 import java.util.*; class Solution { public int solution(int[] people, int limit) { /* people을 내림차순 정리한다 -> quick sort 이므로 O(nlogn) 최댓값부터 limit 만족하는 두가지 골라본다. $ 효율성 테스트가 통과될까 궁금하다. */ /* 첫 풀이 : 테스트 실패, 효율성 시간초과, 시간 2..

Spring

@Repository 어노테이션

@Repository 어노테이션 스프링에서 지원하지 않는 Exception을 Spring Exception으로 전환하기 위해서 @Repository어노테이션을 사용한다. Exception이 발생할 경우 Unchecked Exception을 DataAccessException으로 전환시켜준다. 주로 DAO(Data Access Object)에서 사용하는데 예를들어 트랜잭션을 적용한 메소드에서 DB오류가 발생해도 롤백이 가능한 이유이다. Spring Data Jpa 사용 시, 꼭 필요한가? @Repository 는 빈 등록을 위해 사용한다. 하지만 JpaRepository 인터페이스를 상속받은 리포지토리는 @Repository 가 없어도 정상적으로 빈 등록이 된다. public interface TestRe..

알고리즘/문제

[프로그래머스] Lv2 카펫 / JAVA

https://school.programmers.co.kr/learn/courses/30/lessons/42842 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 코드 class Solution { public int[] solution(int brown, int yellow) { /* yellow 로 만든 사각형의 가로,세로에 2씩 더하면 전체사각형의 크기가 된다. brown의 개수는 전체사각형의 타일 개수 - yellow 타일 개수이다. */ /* 1. for : i 가 1부터 yellow 의 절반까지 1) yellow 를 i 로 나눠떨어질 때만 1] ..

알고리즘/문제

[프로그래머스] Lv2 영어 끝말잇기 / JAVA

https://school.programmers.co.kr/learn/courses/30/lessons/12981 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 코드 주석은 대략적인 풀이과정으로 보면된다. class Solution { public int[] solution(int n, String[] words) { /* 규칙성을 고민해보았으나 그냥 구현문제인 것 같다. $주어진 words 의 개수가 n으로 나누어떨어지지 않으면 언젠가 같은 단어를 말하게 되므로 반드시 탈락자가 발생한다. */ /* words 에서 인덱스%n 의 값으로 사람을 구분한다...

잡학사전

Docker, 도커

보호되어 있는 글입니다.

알고리즘/문제

[프로그래머스] Lv2 다음 큰 숫자 / JAVA

https://school.programmers.co.kr/learn/courses/30/lessons/12911 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 코드 class Solution { public int solution(int n) { /* 1. 조건에서 규칙을 찾아보자. n=1 : 2 n=2 : 4 n=4 : 8 n=8 : 16 n=3 : 5 n=5 : 6 n=6 : 9 n=9 : 10 n=10 : 12 n=7 : 11 -> 규칙 모르겠다. 2. 그냥 구현으로 확인하는 방법 1) n을 2진수로 바꿔 1 개수를 센다 2) n에서 1씩 증가하면..

develop06
DEVELOP06