- join
- spring mvc
- 데이터베이스
- Docker
- AWS
- 스프링
- PYTHON
- jpa
- 문자열
- 1차원 배열
- DI
- 프로그래머스
- SSL
- spring boot
- hibernate
- string
- 스프링부트
- @transactional
- 자바
- static
- spring security 6
- select
- mysql
- sql
- spring
- ORM
- nginx
- springboot
- Django
- java
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
목록자바 (26)
개발하는 자몽
백준에서 DP의 기초 문제인 1463번을 풀어보았다. 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net 문제 풀이 해당 문제를 보고 어떻게 DP로 풀어야겠다! 는 생각이 바로 들진 않았고, 처음에 그냥 무작정 반복문과 if-else의 조합으로 풀었다. 실패했다. if-else가 아닌 이유 if-else가 아닌 모든 경우의 연산을 시도하고 가장 작은 연산 횟수를 택해야 하기 때문에 모두 if로 행하고 Math.min으로 비교했을 때 가장 작은 값을 택한다. 동적 계획법으로 풀 수 있는 이유 여러 해설을 봤는데 가장 이해가 잘 되는 글은 아래 블로그였다. 백준 알고리즘 1463번 문제풀이 1로 만들기 문제 정수 X에 사용할 수 ..
스프링 핵심 원리 - 고급편 - 인프런 | 강의 스프링의 핵심 원리와 고급 기술들을 깊이있게 학습하고, 스프링을 자신있게 사용할 수 있습니다., - 강의 소개 | 인프런 www.inflearn.com 섹션 5. 동적 프록시 기술 !중요! 동적 프록시를 공부하기 전 자바의 리플렉션을 알아야 한다 어제 공부한 내용을 간단하게! 정리해 보자. 리플렉션(Reflection) 스프링 핵심 원리 - 고급편 - 인프런 | 강의 스프링의 핵심 원리와 고급 기술들을 깊이있게 학습하고, 스프링을 자신있게 사용할 수 있습니다., - 강의 소개 | 인프런 www.inflearn.com 섹션 5. 동적 프 backend-jaamong.tistory.com 프록시를 생성할 때 interface가 있다면 JDK 동적 프록시로 생성..
스프링 핵심 원리 - 고급편 - 인프런 | 강의 스프링의 핵심 원리와 고급 기술들을 깊이있게 학습하고, 스프링을 자신있게 사용할 수 있습니다., - 강의 소개 | 인프런 www.inflearn.com 섹션 3. 템플릿 메서드 패턴과 콜백 패턴 오늘 공부한 내용을 간단하게 정리해 보자. 템플릿 메서드 패턴 전략 패턴 템플릿 콜백 패턴 템플릿 메서드 패턴(Template Method Pattern) 좋은 설계는 변하는 것과 변하지 않는 것을 분리하는 것이다. 이 둘을 분리하여 모듈화를 한다. 템플릿 메서드 패턴은 이런 문제를 해결한다. GOF 디자인 패턴 - 템플릿 메서드 패턴 작업에서 알고리즘의 골격을 정의하고 일부 단계를 하위 클래스로 연기합니다. 템플릿 메서드를 사용하면 하위 클래스가 알고리즘의 구조를..
동시성 문제와 쓰레드 로컬이 무엇인지 간단하게 정리해 보자. 동시성 문제 아래 코드에는 store라는 필드 변수와 해당 변수에 매개 변수를 저장하는 bizLogic() 메서드가 있다. 해당 필드 변수를 저장하고 조회하는 bizLogic 메서드에 여러 쓰레드가 동시에 접근하면 store의 값은 어떻게 될까? @Slf4j class FieldBiz { private String store; //필드 변수 public String bizLogic(String s) { log.info("저장 전 : store={} s={}", store, s); store = s; sleep(1000); log.info("저장 후 : store={} s={}", store, s); return store; } private v..
JUnit 테스트 케이스를 작성하면서 assertThat.isEqualTo()와 assertThat.isSameTo가 헷갈려서 정리한다. isSameAs() 주소 값 비교 "==" 비교 연산자와 동일 메모리 상에서 같은 객체를 참조하는지 확인 isEqualTo() 데이터 값 비교 equals() 메소드와 동일 객체가 서로 같은 값을 가지고 있는지 확인 isInstanceOf() 타입(class) 비교
문제 문제 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { static boolean check(String str) { boolean word[] = new boolean[26]; int prev = 0; for (int i = 0; i < str.length(); i++) { int now = str.charAt(i); //앞선 문자와 i번째 문자가 같지 않은 경우 if (prev != now) { //해당 문자가 처음 나오는 경우 (false인 경우) if (!word[now - 'a']) { word[now - 'a'] = true; prev =..
문제 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = br.readLine(); int len = str.length(); int cnt = 0; for (int i = 0; i < len; i++) { char ch = str.charAt(i); if (ch == 'c' && i < le..
문제 코드 import java.io.IOException; public class Main { public static void main(String[] args) throws IOException { //buffer와 switch-case를 사용한 방법 외 다른 방법 int cnt = 0; int input; while (true) { input = System.in.read(); if (input == '\n') break; if (input < 68) cnt += 3; else if (input < 71) cnt += 4; else if (input < 74) cnt += 5; else if (input < 77) cnt += 6; else if (input < 80) cnt += 7; else ..
문제 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine(), " "); int a = Integer.parseInt(new StringBuilder(st.nex..
문제 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine(), " "); System.out.println(st.countTokens()); } }