본문 바로가기

공부 기록

(319)
스프링 부트 2.0 Day 31. Redis 사용하기 https://www.youtube.com/live/7kpjnBsmuvg?feature=share https://hub.docker.com/_/redis/ redis - Official Image | Docker Hub Quick reference Supported tags and respective Dockerfile links 7.2-rc2, 7.2-rc, 7.2-rc2-bullseye, 7.2-rc-bullseye 7.2-rc2-alpine, 7.2-rc-alpine, 7.2-rc2-alpine3.18, 7.2-rc-alpine3.18 7.0.11, 7.0, 7, latest, 7.0.11-bullseye, 7.0-bullseye, 7-bullseye, bullse hub.docker.com htt..
[10분 테코톡] 리차드의 @Transactional https://youtu.be/taAp_u83MwA 트랜잭션 : DB에 모두 저장되거나, 모두 저장되지 않는 작업의 단위 - 작업 단위를 묶어주지 않았을 경우, 서로 다른 커넥션을 사용하는 경우 => 개별 작업으로 처리됨 - 작업 단위를 트랜잭션으로 묶었을 경우 => 전부 반영 또는 미반영 AOP의 등장 트랜잭션의 시작 -> {관심사 로직 수행} -> 커밋 또는 롤백 프록시 객체의 도입 => 타겟 객체를 상속해서 재정의한 클래스 - 선언적 트랜잭션 관리 => @Transactional - 프로그래밍 방식 트랜잭션 관리 => 코드로 직접 작성하는 방식 요약 - 빈 생성 시, @Transactional 어노테이션이 있으면 프록시 객체가 빈으로 등록된다. - 스프링이 제공하는 선언적 트랜잭션 관리를 통해 서비..
Do it! 알고리즘 코딩테스트 with JAVA - (6) 스택과 큐 스택과 큐 - 배열에서 발전된 형태의 자료구조 - 구조는 비슷하지만 처리 방식은 다르다. 스택 - 삽입과 삭제 연산이 후입선출(LIFO)로 이뤄지는 자료구조 => 재귀 함수 알고리즘 원리와 일맥상통하다. - 삽입과 삭제가 한 쪽에서만 일어나는 특징이 있다. - 깊이 우선 탐색, 백트래킹 종류의 코딩 테스트에 효과적이다. - 용어 : top(삽입과 삭제가 일어나는 위치), push(삽입 연산), pop(삭제 연산), peek(조회 연산) 큐 - 삽입과 삭제 연산이 선입선출(FIFO)로 이뤄지는 자료구조 => 먼저 들어온 데이터가 먼저 나간다. - 삽입과 삭제가 양방향에서 이뤄진다. - 너비 우선 탐색에서 자주 사용된다. - 용어 : rear(가장 끝 데이터), front(가장 앞의 데이터), add(rea..
Do it! 알고리즘 코딩테스트 with JAVA - (5) 슬라이딩 윈도우 슬라이딩 윈도우 - 2개의 포인터로 범위를 지정한 다음 범위를 유지한 채로 이동하며 문제를 해결한다. - 투 포인터 알고리즘과 매우 비슷하다. 문제 풀이 https://yurison.tistory.com/423 [백준/자바] 12891 - DNA 비밀번호 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { static int check; static int[] verify; static int[] current; public static void main(String[] args) throws I..
Do it! 알고리즘 코딩테스트 with JAVA - (4) 투 포인터 문제 풀이 https://yurison.tistory.com/421 [백준/자바] 2018 - 수들의 합 5 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int start = 1; int end = 1; int sum = 1; int result = 1; while(start yurison.tistory.com https://yurison.tistory.com/422 [백준/자바] 1253 - 좋다 import java.io.BufferedReader; import java.io.IOExce..
Do it! 알고리즘 코딩테스트 with JAVA - (3) 구간 합 구간 합 - 합 배열을 이용하여 시간 복잡도를 더 줄이기 위해 사용하는 특수한 목적의 알고리즘 - 합 배열을 미리 구해놓으면 기존 배열의 일정 범위의 합을 구하는 시간 복잡도가 O(N)에서 O(1)로 감소한다. - 구간 합 배열을 만드는 공식 : S[i] = S[i - 1] + A[i] - 구간 합을 구하는 공식 : i에서 j까지의 구간 합 => S[j] - S[i - 1] 문제 풀이 https://yurison.tistory.com/298 [백준/자바] 11659 - 구간 합 구하기 4 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in)..
Do it! 알고리즘 코딩테스트 with JAVA - (2) 디버깅 디버깅 - 프로그램에서 발생하는 문법 오류나 논리 오류를 찾아 바로잡는 과정 코딩테스트 팁 - 로그로 찍어보는 것도 나쁜 것은 아니지만 디버깅을 하는 것보다 시간이 오래 걸리고, 숲보다 나무를 보게 된다. - 테스트케이스 결과가 예기치 않은 음수가 나오는 경우 대부분 변수 자료형을 바꾸면 해결된다.(int -> long)
Do it! 알고리즘 코딩테스트 with JAVA - (1) 시간복잡도 시간복잡도 - 주어진 문제를 해결하기 위한 연산 횟수 - 일반적으로 1억 번의 연산 == 1초의 시간으로 예측한다. 유형(표기법) - 빅-오메가(최선일 때) - 빅-세타(보통일 때) - 빅-오(최악일 때) => 코딩 테스트에서 유념해야 하는 유형