전체 글(768)
-
[Spring] 마이바티스
1. Driver Loading 2. Connection 생성 3. Statement 마이바티스는 위의 요소들을 자동화해줌
2024.04.19 -
[알고리즘] 히스토그램
https://www.acmicpc.net/problem/1725 1725번: 히스토그램 첫 행에는 N (1 ≤ N ≤ 100,000) 이 주어진다. N은 히스토그램의 가로 칸의 수이다. 다음 N 행에 걸쳐 각 칸의 높이가 왼쪽에서부터 차례대로 주어진다. 각 칸의 높이는 1,000,000,000보다 작거나 같은 자 www.acmicpc.net import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; import java.util.TreeMap; import java.util.TreeSet; public cl..
2024.04.18 -
[Back-end][DB] 제3정규형 전에 제2정규형이 만족되어야 하는 이유 증명
명제: 제2정규형이 아니면 제3정규형이 아니다. 제3정규형이 아닌 경우 = A -> B이고 B -> C이면 A -> C이다. 제2정규형이 아닌 경우 = 복합키 (A+B) 중 임의의 키 A -> C이다. 제3정규형이 아닌 경우의 식 중 A를 (A' + B')인 복합키라고 가정하자. (A' + B') -> B'는 항상 만족한다. 또한 제2정규형이 아니면 B' -> C인 것이 존재한다. (또는 A' -> C일 수 있다. 여기서는 B'라고 가정) 따라서 (A' + B') -> B'이고 B' -> C이기 때문에 삼단논법에 의해 (A' + B') -> C가 만족이 된다. 방금의 삼단논법이 만족되기 때문에 제3정규형은 만족이 되지 않는다. 즉 제2정규형이 만족되지 않으면 제3정규형은 만족되지 않는다. 이걸 대우로 하..
2024.04.18 -
[CS] redis에서 RDB와 AOF를 동시에 사용할 수 있는가?
결론은 yes이다. 이 둘을 활용하는 것은 redis.conf에서 aof-use-rdb-preamble yes로 설정할 수 있다. 5.0부터 기본값이 yes로 바뀌었다고 한다. 아래는 왜 둘을 동시에 사용하는 것이 좋은지에 대한 설명 RDB(Snapshot) VS AOF(Append only file) RDB 방식은 저장하는데 AOF 방식보다 시간이 오래 걸립니다. 하지만 프로그램을 재시작할때 AOF에 비해 로딩 시간이 빠릅니다. 반면 AOF 방식은 모든 write/update 명령어를 모두 log 파일에 기록합니다. 즉 append만 하기 때문에 쓰는 시간이 RDB보다 빠릅니다. 하지만 프로그램을 재시작할때 모든 명령어를 읽어야 하기 때문에 로딩이 RDB보다 느립니다. 따라서 현재 Redis를 활용할 ..
2024.04.18 -
[Spring] AOP 정리
AOP(Aspect Oriented Programming) - 핵심 관심 사항(core concern)과 공통(부가) 관심 사항(cross-cutting concern) 1. Target - 핵심 기능을 담고 있는 모듈로 target은 부가기능을 부여할 대상이 됨 2. Advice - 어느 시점에 어떤 공통 관심 기능을 적용할지 정의 한 것. Target에 제공할 부가기능을 담고 있는 모듈. - 시점은 총 5개 3. JoinPoint - Target가 Advice가 만나는 지점 - Aspect가 적용될 수 있는 지점(method, field) - 즉 target 객체가 구현한 인터페이스의 모든 method는 JoinPoint가 됨 4. Pointcut - 공통 관심 사항이 적용될 JoinPoint. - ..
2024.04.16 -
[Spring] Annotation AOP VS XML AOP
- Annotation 방식 import javax.swing.JPanel; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.After; import org.aspectj.lang.annotation.AfterReturning; import org.aspectj.lang.annotation.AfterThrowing; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; @As..
2024.04.16