- GC(Garbage Collection) 개념과 종류
- Reflection 정리
- Synchronized, Volatile, Atomic Type
- ThreadLocal
- SerialVersionUID 지정하는 이유
- Enum 조회 성능 높이기
- 도서 관리 애플리케이션
- 코틀린 기본 문법
- 함수 다루기
- 클래스와 객체
- 함수형 프로그래밍
- 영역 함수 (run, with, let, apply, also)
- 특별 클래스 (Enum, Data, Inline)
- Multi Module with Gradle
- Retryable, Recover 사용법
- Jackson Annotation 정리
- RequestContextHolder
- JDK Dynamic Proxy, CGLib
- 로그 추적기
- Proxy Factory
- Advisor, Advice, Pointcut 개념
- 빈 후처리기
- @Aspect
- AOP 개념
- AOP 구현에 사용되는 어노테이션 사용법
- Spring Boot Profile 설정
- Configuration 값 가져오는 방법 - @Value, @ConfigurationProperties
- @Profile, @ActiveProfiles
- 날짜 다루기 - @DateTimeFormat, @JsonFormat
- Redisson으로 분산 락 구현
- Spring Events - @EventListener, @TransactionalEventListener
- Transaction Propagation
- Servlet
- Interceptor 구현
- Filter 구현
- 캐시 사용하기 - @Cacheable, @CachePut, @CacheEvict
- 중복 타입 Bean 솔루션 - @Primary, @Qualifier
- 동시성 이슈 해결 방법 - Mysql, Redis
- ApplicationContextAware, BeanNameAware
- 비동기 처리 여러가지 방법 - ExecutorService, CompletableFuture, @Async
- TimeZone 설정
- 영속성 컨텍스트 개념 정리
- 단/양방향 매핑 & 연관관계 주인
- 연관관계 - N:1, 1:N, 1:1, N:N
- 상속 관계 매핑
- @MappedSuperclass, @AttributeOverrides
- Cascade, OrphanRemoval
- 쿼리 생성 네이밍에 사용되는 키워드
- Get vs Find
- Sort, Pageable, Slice, Page
- Auditing, AuditorAware
- Entity Lifecycle Events
- Fetch Join - JPQL, EntityGraph
- Enumerated, AttributeConverter
- JPA에서 JSON Column 사용하기
- JPA 동적 쿼리 만들기 - @DynamicInsert, @DynamicUpdate
- JPA Multi Database 설정
- Index
- Exclusive Lock, Shared Lock
- Transaction Isolation Level
- Optimistic Lock, Pessimistic Lock
- Nested Loop Join, Sort Merge Join, Hash Join
- Kafka를 사용하는 이유와 특징
- Kafka 기본 개념
- 빅데이터 아키텍처
- Kafka CLI 활용
- Kafka Producer
- Kafka Producer Application 구현
- Kafka Consumer
- Kafka Consumer Application 구현
- Consumer Lag & Monitoring
- Idempotence Producer, Transaction Producer & Consumer
- Kafka Streams
- Kafka Streams Application 구현
- Kafka Streams Window Processing
- Kafka Streams Queryable Store
- Kafka Connect
- Kafka 내용 정리