목록2024/05 (29)
쌓고 쌓다
보통 애플리케이션 구조는 다음과 같이 3가지 계층으로 나눈다.서비스 계층에서는 비즈니스 로직을 담당하며 특정 기술에 의존하지 않고 순수 자바 코드로 작성한다.데이터 접근 계층에서는 JDBC, JPA와 같은 기술로 DB에 접근하는 코드를 작성한다. 서비스 계층에서 JDBC 트랜잭션을 사용하기위한 코드는 다음과 같다.public void somethingWork() { Connection connection = dataSource.getConnection(); try { connection.setAutoCommit(false); // 트랜잭션 시작 bizLogic(); // 비즈니스 로직 connection.commit(); } catch (Excepti..
우리가 DB 커넥션을 획득할때 어떤 과정을 거칠까?애플리케이션은 DB 드라이버를 통해 커넥션을 조회.DB 드라이버는 DB와 TCP/IP 커넥션 연결을하며 이때 3-way-handshake 같은 동작들이 발생.DB 드라이버는 TCP/IP 커넥션 연결되면 ID/PW 같은 부가 정보들을 DB에 전달.DB에서 ID/PW를 통해 내부 인증을 거치며 내부에 DB 세션을 생성한다.DB는 DB 드라이버에게 커넥션 생성 완료를 응답.DB 드라이버는 커넥션 객체를 생성해서 애플리케이션(클라이언트)에 반환. DB가 필요할때 마다 커넥션을 맺고 끊음의 반복은 시간이 많이 드는 일이다.그래서 커넥션을 미리 생성해서 두고두고 사용하는 방법이 커넥션 풀이다.커넥션 풀에 커넥션들은 DB와 TCP/IP 커넥션이 맺어진 상태로 보관되어..
https://school.programmers.co.kr/learn/courses/30/lessons/42898 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 풀이 방법이동은 오른쪽 또는 아래로만 이동이 가능하다.그러면 way[i][j] 위치로 이동하는 최단 경로는 way[i-1][j] 와 way[i][j-1] 위치에서 오는 방법뿐이다.즉 way[i][j]에 도착하는 최단 경로의 개수는 way[i-1][j] + way[i][j-1]이다. 반복문을 통해 x 방향으로 채우고 y 방향으로 채우며[i][j] 위치의 값을 [i-1][j]와 [i][j-1]의 값 합으..
https://school.programmers.co.kr/learn/courses/30/lessons/12938 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 풀이 방법각 원소의 곱이 최대가 되게 하려면각 원소들의 크기가 균등하게 일정하게 분포되어있으면 모든 원소의 곱이 최대가 된다. 원소의 합 S가 주어졌을때 N개로 나눠 분배할때 균등하게 분포를 해주면 된다.나눠야할 원소의 합 S가 있을때 N으로 나눈다면 균등하게 분포할 수 있는 값이 된다. 위의 개념을 활용해서현재 idx 위치의 집합 원소를 배정할때현재 배분해야할 원소의 총 합을 남은 원소 자리의 개수..
https://school.programmers.co.kr/learn/courses/30/lessons/12927 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 풀이 방법N을 가지고 최대값을 작게 만드는것이 누적 피로도를 작게 할 수 있는 방법이다.그래서 우선순위 큐를 통해 pop하여 최대값을 갖는 작업을 1시간씩 작업하면 된다. 전체 코드import java.util.*;class Solution { public long solution(int n, int[] works) { long answer = 0; PriorityQue..