Spring Security / OAuth 2.0 / Kafka / Thread / 아키텍쳐 / 언어
·
카테고리 없음
[Spring Security] 로그인 UsernamePasswordAuthenticationFilter가 /login 요청을 가로챔. 입력된 username/password를 AuthenticationManager.authenticate()로 전달. AuthenticationProvider가 UserDetailsService를 통해 검증 후 성공 시 SecurityContextHolder에 저장. 성공 시 AuthenticationSuccessHandler 실행 → 홈 리다이렉트. 로그아웃 LogoutFilter가 /logout 요청을 처리. LogoutHandler가 세션/쿠키 제거 및 SecurityContext 초기화. LogoutSuccessH..
MySQL / MongoDB / Redis / Transaction
·
면접
[MySQL] 파티셔닝 vs 샤딩 파티셔닝: 테이블을 논리적으로 분리 (예: 날짜 기준 분할). 샤딩: 데이터를 DB 단위로 분산 저장. key 기반으로 샤드 위치 결정 필요. SELECT FOR UPDATE vs LOCK IN SHARE MODE FOR UPDATE: 쓰기 잠금(X Lock) → 다른 트랜잭션의 수정 차단. LOCK IN SHARE MODE: 읽기 잠금(S Lock) → 수정만 제한, 읽기는 허용. Join vs 서브쿼리 Join은 옵티마이저가 조인 순서·인덱스를 최적화하여 한 번에 결합. 서브쿼리는 외부 쿼리의 각 행마다 내부 쿼리를 반복 실행 (N+1 구조). count(*) 쿼리 성능 개선 인덱스 스캔 가능 여부..
Spring Boot / Scheduler / Batch / Data JPA
·
면접
[Spring / Spring Boot] IoC (제어의 역전) 객체 생성과 의존성 관리를 개발자가 직접 하지 않고, 컨테이너(Spring 등)가 대신 수행. 대표적 구현 방법: DI(의존성 주입) DI (의존성 주입) 객체가 필요한 의존 객체를 직접 생성하지 않고 외부에서 주입받는 방식. 종류: 생성자 주입, 세터 주입, 필드 주입. 장점: 객체 간 결합도를 낮춰 유지보수를 용이하게 함. Bean의 생명주기 객체 생성: 스프링 컨테이너가 어노테이션을 스캔하여 Bean 인스턴스를 생성. 의존성 주입 및 초기화. 소멸: 컨테이너 종료 시 정리. @Component / @Service / @Repository 차이 @Compon..
스레드와 동시성
·
BE 개발
1. 스레드(Thread)운영체제(OS)에서 실행되는 가장 작은 실행 단위하나의 프로세스는 여러 개의 스레드를 가질 수 있고, 이 스레드들은 같은 메모리 공간을 공유CPU는 여러 스레드를 빠르게 전환(context switching)하면서 실행스레드가 많아질수록 전환 비용이 커지고, 메모리 사용량도 증가ex) Spring MVC는 요청 1개당 스레드 1개를 할당. 사용자가 동시에 1,000명 들어오면 스레드도 1,000개가 생기고, 이 상태에서 context switching 비용이 급격히 늘어나 서버 리소스를 많이 잡아먹게 된다.2. 동시성(Concurrency)과 병렬성(Parallelism)동시성(Concurrency): 여러 작업이 동시에 실행되는 것처럼 보이는 상태실제로는 CPU가 작업을 매우 ..