아카이브
- 14 / 05 Docker 이미지는 정말 OS일까?
- 13 / 05 컨테이너는 어떻게 격리될까?
- 12 / 05 VM과 컨테이너는 무엇이 다를까?
- 11 / 05 AOP 기반 로깅 전략 — 이력 파이프라인으로 확장 가능한 시스템 설계
- 08 / 05 EntityGraph와 페이징을 같이 사용할 때 주의할 점
- 07 / 05 AOP를 이해하면서 정리한 생각 — 공통 로직은 어디에 있어야 할까
- 06 / 05 Interceptor를 이해하면서 정리한 생각 — 요청 흐름은 어디서 제어되는가
- 04 / 05 Filter를 이해하면서 정리한 생각 — 인증은 어디서 시작되는가
- 01 / 05 Filter vs Interceptor vs AOP — 어디서 무엇을 처리해야 할까
- 30 / 04 코드 컨벤션과 GitHub 규칙을 정리하면서 느낀 것
- 29 / 04 세션 기반 인증에서 JWT 기반 인증으로 전환하면서 정리한 것들
- 28 / 04 데이터의 안전한 작별: Soft Delete와 유예 기간(Grace Period) 전략
- 27 / 04 로컬 develop 오염으로 PR 커밋이 섞인 문제와 해결
- 24 / 04 PUT vs PATCH — 단순한 수정 범위를 넘어 멱등성으로 이해하기
- 23 / 04 Spring Security 요청 처리 흐름과 DispatcherServlet
- 22 / 04 Facade vs Application Service
- 21 / 04 JPA 심화 학습: 영속성 컨텍스트의 비밀과 조회 최적화 전략
- 20 / 04 퍼사드(Facade) 패턴: 서비스 순환 참조와 JPA 데이터 정합성 해결
- 17 / 04 인증 방식의 이해: Session vs JWT와 Spring ArgumentResolver 활용
- 16 / 04 Spring Boot: 빈 관리부터 전역 예외 처리까지의 핵심 정리
- 15 / 04 락, 캐시, 메시지 큐, 비동기 처리 언제 써야 할까?
- 14 / 04 Spring: 개발자의 자신감, 테스트
- 13 / 04 Spring: 오브젝트와 의존관계
- 10 / 04 Spring Proxy: 핵심 로직을 투명하게 감싸는 '기술적 안경'
- 09 / 04 실무적 선택의 기로: ID 전략부터 서비스 레이어 설계까지
- 08 / 04 API 문서 자동화: Javadoc과 Swagger로 구축하는 소통의 '캐시(Cache)'
- 07 / 04 개발자의 기본기: 코드 이전에 갖춰야 할 '기록'과 '소통'의 기술
- 06 / 04 재귀의 늪에서 탈출하기: 메모이제이션(Memoization)
- 03 / 04 안정 계수 정렬(Stable Counting Sort)의 원리와 역방향 순회
- 02 / 04 프로그램의 안전망: 예외 처리(Exception Handling)의 모든 것
- 01 / 04 Javadoc: 코드를 제품으로 격상시키는 문서화의 기술
- 31 / 03 Enum, Lambda, Stream: 선언적 코드와 객체지향적 책임의 결합
- 30 / 03 삭제 로직과 데이터 연관성으로 엮인 양방향 매핑의 함정
- 27 / 03 객체지향 설계 원칙: 다형성 활용과 명확한 의도 표현
- 26 / 03 [Java] 스트림 인덱스 출력과 객체지향적 책임 분리 (DI & SRP)
- 25 / 03 [Java] 요제푸스 문제: 인덱스 계산 없이 '큐 회전'으로 해결하기
- 24 / 03 Java JVM 구성 요소와 Garbage Collection(GC) 동작 원리
- 23 / 03 Java Enum의 추상 메서드와 람다(Lambda) 활용
- 20 / 03 Java Scanner nextInt() 호출 후 nextLine() 무시 현상
- 18 / 03 머릿속 엉킨 로직을 푸는 열쇠: 컴퓨팅적 사고와 플로우차트
- 17 / 03 협업의 문턱, 깃허브 코드 리뷰와 Pending의 늪
- 16 / 03 GitHub 기본 브랜치명을 master에서 main으로 변경하며 배운 점
- 13 / 03 자바의 구동 원리: JDK, JVM 그리고 플랫폼 독립성
- 12 / 03 PUT 메서드에 'Optional' 매개변수를 넣었을 때 벌어지는 일
- 11 / 03 패키지 임포트 오류로 깨달은 npm의 본질과 전략적 학습법
- 10 / 03 AI보다 먼저 '에러 메시지'를 믿어야 하는 이유 (feat. JSON Syntax Error)
- 09 / 03 개발 효율을 높이는 API 명세서 작성의 5단계 원칙
- 25 / 01 콘서트 랭킹 개발을 하며 느낀 것 – UseCase를 두지 않기로 한 이유
- 24 / 01 락과 트랜잭션 경계 분리: 좌석 예약을 구현하며 배운 실무 패턴
- 22 / 01 Redis 캐시에 객체를 저장할 때 직렬화가 필요한 이유
- 21 / 01 Testcontainers Docker 연결 오류를 해결하지 못하고 다시 yml 방식으로 돌아간 이유
- 20 / 01 Spring 테스트 구조에서 sourceSet 분리와 Testcontainers를 써보며 느낀 점
- 19 / 01 테스트 때문에 엔티티에 setter를 추가하면 안 되는 이유
- 19 / 01 예약 HOLD 타임아웃 처리에서 Port-In 인터페이스를 생략한 이유
- 19 / 01 람다에서 JPA 엔티티를 쓰다 컴파일 에러가 난 진짜 이유
- 19 / 01 Gradle Kotlin DSL에서 create import를 하면 안 되는 이유
- 18 / 01 JPA 동시성 테스트에서 TransactionRequiredException을 만난 이유
- 18 / 01 낙관적 락 테스트가 실패하던 이유
- 17 / 01 Spring Data JPA 테스트에서 JpaRepository 메서드가 사라진 이유