전체 글
-
[Transaction] 트랜잭션 정리 - 1Spring/Study 2023. 6. 16. 15:55
본 정리는 Spring Boot와 연관지어 정리한 것입니다. 1. Transaction 1-1. 사전적 의미 트랜잭션의 사전적 의미는 "거래"이다. A가 B에게 송금하고, B는 A에게 입금을 받는다. 이 행위를 통틀어서 거래라고 한다. 1-2. 개념 커밋 Commit A의 송금과 B의 입금 두 행위 모두 성공하게 된다면? 데이터 베이스에 정보를 저장한다. 데이터베이스에 저장(반영)하는 것을 커밋(Commit) 이라고 한다. 롤백 Rollback 만약 A의 송금은 성공했는데, B의 입금 행위는 실패한다면? 커밋을 하면 안되고 A의 송금 행동을 되돌려야 할 것이다. 이 되돌리는 것을 롤백(Rollback) 이라고 한다. 1-3.트랜잭션 ACID 트랜잭션은 ACID라고 하는 Atomicity, Consiste..
-
[DBCP] 데이터베이스 커넥션 풀 간단 정리: Database Connection PoolSpring/Study 2023. 6. 14. 16:35
본 정리는 Spring Boot와 관련지어 정리한 내용이다. Database Connection Pool Database Connection Pool이 필요한 경우? 유저가 특정 서비스를 요청했을 때, 서비스가 서버에서 DB에 접근을 해서 처리를 해야 하는 서비스라면? 서버는 DB에 연결을 하기위해 TCP/IP 연결을 수행한다. 이때 3-way 핸드셰이크도 수행하게 될 것이다. 그렇게 되면 데이터 베이스에서 SQL을 실행시키는 시간 + 연결 시간이 소요된다. 매번 연결하는 시간이 진행된다면 매우 비효율적이기 때문에 서버와 DB간의 커넥션을 미리 저장 해놓는 공간이 데이터베이스 커넥션 풀이다. 어떻게 동작하는가? 서버가 시작하는 시점에 기본적으로 설정된 커넥션을 미리 확보해서 서버가 보관해둔다. Sprin..
-
[백준/JAVA] 1620번 나는야 포켓몬 마스터 이다솜 - HashMapETC/Algorithm 2023. 6. 9. 10:19
풀이 문자열인지 정수형인지 판단? Character.isDigit() 메소드를 사용하여 문자열인지 정수형인지 판단한다. 정수형이면 true값이 나온다. 문자열 전체를 조회해서 정수형에서 나올 수 없는 내용이면 false가 한번이라도 나오게 되면 그 문자열은 정수형이 아니다. 자료형 선택 문자열이 입력되면 정수형으로 몇 번째 포켓몬인지 출력되어야 하므로 HashMap을 정수형이 입력되면 문자열으로 포켓몬 이름이 출력되어야 하므로 ArrayList를 사용하였다. 코드 제출 코드 import java.io.*; import java.util.*; class Main { static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out..
-
[백준/JAVA] 1074번 Z - 분할 정복, 재귀ETC/Algorithm 2023. 6. 9. 10:15
풀이 모든 경우의 수를 다 세면? 시간 초과가 발생한다. 범위를 설정해서 특정 범위의 경우만 연산을 진행해야 한다. 코드 제출 코드 import java.io.*; import java.util.*; class Main { static int N, r, c; static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringToken..
-
[백준/JAVA] 1003번 피보나치 함수 - DPETC/Algorithm 2023. 6. 9. 10:13
풀이 규칙 찾기 앞이 0의 개수, 뒤가 1의 개수이다. 앞의 2개의 배열의 각각의 자리의 합이 현재의 값이 된다. 2차원 배열을 선언해서 풀면 된다. dp[n][0] = n의 0 횟수 dp[n][1] = n의 1 횟수 이다. 코드 제출 코드 import java.io.*; class Main { static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int T = Integer..
-
[프로그래머스/JAVA] 개인정보 수집 유효기간 - 2023 KAKAO BLIND RECRUITMENTETC/Algorithm 2023. 6. 9. 10:05
풀이 일일이 파싱 문자열로 받아서 일일이 파싱하는 방법 한 달은 28일로 고정 입력 값을 1년=12달 1달= 28일로 변환해서 비교하는 방법 6월에 18개월 뒤면? 24월로 12로 나머지 연산을 하게 되면 0이 나오게 된다. 주의하자. 코드 제출 코드 import java.util.*; class Solution { static HashMap term = new HashMap(); public int[] solution(String today, String[] terms, String[] privacies) { ArrayList parsedToday = new ArrayList(); ArrayList answer = new ArrayList(); StringTokenizer st = new StringT..
-
[프로그래머스/JAVA] 로또의 최고 순위와 최저 순위 - 2021 Dev-Matching: 웹 백엔드 개발자(상반기)ETC/Algorithm 2023. 6. 9. 10:00
풀이 0과, 맞춘 값을 저장한다. 0은 원하는 대로 값을 변경할 수 있다. 이미 맞춘 값에 0이 다 틀린 값이면 최소 등수 이미 맞춘 값에 0이 다 맞은 값이면 최대 등수이다. 코드 제출 코드 class Solution { public int\[\] solution(int\[\] lottos, int\[\] win\_nums) { int[] answer = new int[2]; int cntZero = 0; int cntMatch = 0; for (int i = 0; i < 6 ; i++){ if(lottos[i] == 0) cntZero++; for(int j = 0 ; j < 6 ; j++){ if(lottos[i] == win_nums[j]) cntMatch++; } } int[] matchs = ..
-
[백준/JAVA] 14940번 쉬운 최단거리 - BFS(너비 우선 탐색)ETC/Algorithm 2023. 6. 9. 09:56
풀이 BFS 알고리즘 최단거리 문제이므로 Queue를 사용하여 BFS를 구현하였다. 시작점은 한 개 start[2]를 통해 시작점 x, y좌표를 저장한다. BFS 시작할 때 출력 형태를 맞추기 위해 시작점을 0으로 지정하고, 미리 visited를 true로 설정해서 진행한다. 출력하기 직전에 판단 if(visited[i][j]) bw.write(map[i][j] + " "); else if (!visited[i][j] && map[i][j] == 1) bw.write("-1" + " "); else bw.write("0" + " ");조건이 3개가 존재한다. 방문했을 경우 그대로 출력한다. 방문하지 않았는데 갈 수 있었던 길이면 -1로 그 외에는 원래 못가는 길이였으므로 0으로 출력한다. 코드 제출 코드..