- JVM 메모리 구조
- 상수 풀(String Pool)은 GC가 될까?
- Garbage collection(1)
- Garbage collection(2)
- 시간 복잡도와 BiG-O 표기법
- Call by value의 메모리 관리 과정
- JVM과 하드웨어 아키텍쳐 간의 관계
- 메모리 누수(Memory Leak)과 GC 성능 튜닝
- Collection
- ArrayList 깊은 복사, 얕은 복사
- ArrayList는 어떻게 동적으로 사이즈가 늘어나는가? add() flow(동작 방식)
- PriorityQueue(우선순위 큐)와 용량 및 동작방식
- ConcurrentHashMap
- 일급 컬렉션
- ArrayDeque
- 블로킹 큐(Blocking Queues)
싱글톤 패턴은 객체가 단 1개만 생성되는 것을 보장할까? 및 자바에서 싱글톤을 구현하는 패턴들
- 자바 병렬 프로그래밍 - 병렬 처리의 중요성 (1)
- 자바 병렬 프로그래밍 - 스레드 안전성(Thread Safe) (2)
- 쓰레드
- 멀티 쓰레드
- 쓰레드들에 대한 변수의 변경의 가시성을 보장하는 volatile 키워드
- 쓰레드 영역에 변수를 설정하여 특정 쓰레드가 실행하는 코드에서 그 쓰레드의 설정된 변수 값을 사용할 수 있는 ThreadLocal
- Fork Join Pool
- 64비트는 왜 원자적이지 않을까? 및 연산의 원자성에 관한 고찰
- Blocking I/O, Non-Blocking I/O(NIO)와 대용량 트레픽
-
기본 개념
- 기본 문법, 변수와 자료형, 함수, 연산자 개념 정리
- 제어문 -> IF문, When, 반복문, break countinue return
- 객체지향 -> 생성자, 상속, 모듈, 접근제한자, Property, 지연초기화, Overriding, Any, this와 super, 추상클래스, 인터페이스
- kotlin의 다양한 클래스 -> Companion, DataClass, Generic, 중첩클래스, 형변환, null처리 및 안전성을 위한 형변환, 열거형, Sealed Class, 리플렉션, 연산자 오버로딩
- 함수형 프로그래밍 -> 익명, 인라인, 확장, Infix, 고차 함수
- kotlin의 컬렉션
-
Kotlin + SptringBoot
- 스프링이란 무엇?
- Spring이 왜 Spring인지? 와 SpringBoot VS Spring
- 레이어 구조
- IntellJ로 Maven(Spring Boot) 프로젝트 생성하기
- Spring Boot Devtools을 이용한 자동화
- 의존성 주입(DI)과 스프링 및 테스트코드
- 필드주입보다 생성자 주입을 권하는 이유, Autowired의 3가지 방법
- 프론트와 백이 서로 다른 주소를 가지고 있을 때 @CrossOrigin을 이용한 통신
- HTTP 방식 중 URLConnection, HttpClient보다 RestTemplate가 효율적인 이유
- RestTemplate(2), xml -> json 변환 후, jackson을 이용하여 DTO와 mapping
- Filter와 Interceptor
- Profile
- log4j vs Lockback vs log4j2, 프로젝트에 무엇을 적용하는게 좋을까?
- Log4j2의 Log Level과 성능 향상에 관하여
- opaque token을 사용하여 JWT 자체 만료시간 강제 무효화 하기
- SMTP 메일 인증 시, 로컬에서는 잘 작동하는데 EC2에서는 왜 FAIL이 발생할까?
- 상품 주문 시, Pessimistic Lock으로 동시성 제어
- 인프런, 스프링 핵심원리 기본편 정리
- 단위테스트 & 통합테스트
- 단위테스트시 좀 더 정확한 테스트를 위하여 고급 기술 ArgumenMatcher
- checked exception을 unchecked exception으로 변경해서 던져야 하는 경우
- 예외처리를 위한 ExceptionHandler 및 아주 간단한 responseentity
- responseentity / 작성중
- 예외처리 할 때, controller 전역에 적용되는 ControllerAdvice annotation -> 1. @RestControllerAdvice
- 예외처리 할 때, controller 전역에 적용되는 ControllerAdvice annotation -> 2. @ControllerAdvice
- Junit4 -> Junit5 (목적(쓰임새)은 같지만 4 -> 5 로직 비교)
- 인프런, 더 자바
- 트레픽 분산을 위한 Master/Slave DataSource 동적 라우팅 설정
- 외래키(Foreign Key)와 데드락(DeadLock)
- MySQL 실행 계획 분석을 통해 페이징 쿼리 성능 개선
-
Real MySQL
-
Redis
- Web Server, WAS 차이와 이 두 개를 따로 두는 경우
- Apache MPM vs Nginx
- HttpServlet와 Spring, Dispatcher-Servlet
- Proxy
- 커넥션 풀을 사용하지 않았을때 발생하는 "비용"은 구체적으로 어떤 비용일까? 네트워크와 관련하여 비용에 관한 고찰
- HTTP Method
- HTTP Status Code
- HTTP vs HTTPS
- 톰캣이 스레드를 부여하는 과정
- 아파치 톰캣
- 서비스의 보안을 위해 어떻게 CIA를 지킬 수 있을까?
- 서비스의 보안을 위해 어떻게 CIA를 지킬 수 있을까?(2) - RSA로 해결
- 인터럽트(interrupt)
- 문맥교환(context switching)
- 커널 수준의 쓰레드 vs 사용자 수준의 쓰레드
- 프로세스 간 통신(Inter-Process Communication,IPC)
지속적 통합 - CI를 이용한 애자일 - 젠킨스 CI 구축
성능 테스트
- 리눅스 서버에 ngrinder 설치하기
- nGrinder를 이용해 Login API 성능 테스트 후 Scale-Out을 적용하여 성능 개선 - (1)
- nGrinder를 이용해 Login API 성능 테스트 후 Scale-Up을 적용하여 성능 개선 - (2)
MSA(MicroService Architecture)
- MSA(MicroService Architecture)란 무엇인가?
- Spring cloud 적용에 사용되는 컴포넌트 중 하나인 Eureka
- MSA의 BFF 패턴, 외부 구성 저장소 패턴, 인증 인가 패턴이란?
- 장애 및 실패 처리를 위한 서킷 브레이커 패턴 및 모니터링과 추적 패턴 출처
Kafka
k8s
- kubernetis(쿠버네티스), 왜 사용할까요?
- 쿠버네티스(k8s) 서비스 메시 패턴의 구현체인 Istio란?
- Docker에서 k8s Service mesh parttern 의 구현체인 Istio 설치
docker