분류
Tech
TIL
Log
2026
[TS #5] 타입 가드와 Discriminated Union — 런타임 타입 안전 처리
[TS #4] 유틸리티 타입 — Partial, Pick, Omit, Record 실전 활용
[TS #3] 제네릭 — Java 제네릭과 뭐가 다른가
[TS #2] interface vs type — 언제 뭘 쓰는가
[TS #1] TypeScript를 왜 쓰는가 — Java와 비교하며 이해하기
OOP와 SOLID — Spring이 왜 이렇게 설계됐는지 이해하는 열쇠
Java 동시성 — synchronized, volatile, ThreadLocal, 그리고 Spring과의 관계
Java 컬렉션 내부 구조 — ArrayList, HashMap이 실제로 어떻게 동작하는가
JVM 메모리 구조와 GC — OOM이 왜 발생하고 어떻게 막는가
인터페이스 vs 추상 클래스 — 면접 단골 질문, 제대로 이해하기
Java 상속과 다형성 — 언제 쓰고 언제 피해야 하나
Java 클래스와 객체 — 접근 제어자, static, 불변 객체까지
알아두면 구하는 Git 명령어 — rebase, squash, cherry-pick, stash, revert
버전 번호가 약속인 이유 — SemVer, Git Tag, CHANGELOG 관리
GitHub + Jira + Slack — 개발 알림을 한 곳에 모으기
PR을 잘 쓴다는 것 — 작성자와 리뷰어가 모두 편한 코드 리뷰
Git + Jira — 브랜치·커밋·PR에 이슈 키 연결하기
커밋 메시지를 잘 쓴다는 것 — Conventional Commits 실전 가이드
Jira, 혼자 써도 되나요? — 1인 개발자의 이슈 트래커 시작하기
팀 Git의 시작 — 브랜칭 전략, Git Flow vs GitHub Flow 언제 뭘 쓰나
[DB 완전 정복 #9] 어떤 DB를 왜 선택하는가 — MySQL, PostgreSQL, Redis, MongoDB 선택 기준
[DB 완전 정복 #8] MongoDB는 왜 임베딩을 권장하나 — 문서 모델과 WiredTiger
[DB 완전 정복 #7] Redis가 빠른 진짜 이유 — 단일 스레드, 이벤트 루프, 자료구조
[DB 완전 정복 #6] MySQL과 PostgreSQL, 뭐가 다른가 — MVCC 구현부터 JSONB까지
[DB 완전 정복 #5] HikariCP와 커넥션 풀 — 설정 하나가 서비스를 멈춘다
[DB 완전 정복 #4] 정규화는 언제 깨야 하나 — 1NF부터 3NF, 실무 비정규화까지
[DB 완전 정복 #3] 느린 쿼리를 잡아라 — EXPLAIN 읽는 법과 페이징 최적화
[Java 객체지향 실전 #6] 이 코드, 어느 계층에 있어야 할까? — Spring 계층별 책임 분리
[DB 완전 정복 #2] MySQL이 동시 요청을 처리하는 방법 — MVCC, 갭 락, 데드락
[Java 객체지향 실전 #5] 주문 완료 후 해야 할 일이 자꾸 늘어난다면 — Spring 이벤트로 의존성 끊기
[DB 완전 정복 #1] 쿼리가 느린 이유는 대부분 인덱스에 있다
[Java 객체지향 실전 #4] 카카오, 네이버, 구글... API 클라이언트 코드가 계속 늘어난다면
vim 대신 Neovim + LazyVim 세팅한 기록
Starship으로 터미널 프롬프트 세팅하기
[Java 객체지향 실전 #3] 엔티티에 setter가 있다면 — 빈약한 도메인 모델을 풍부하게 만드는 법
Ghostty로 터미널 환경 다시 세팅한 기록
[Java 객체지향 실전 #2] 엔티티마다 반복되는 코드를 제네릭으로 한 번에 — BaseEntity, GenericService, ApiResponse
Hugo + Stack 테마로 기술 블로그 만들기
[Java 객체지향 실전 #1] if/else 지옥에서 탈출하기 — 전략 패턴 + Spring Bean 자동 주입
[Spring 완전 정복 #14] Spring @Scheduled — cron 표현식과 다중 서버 중복 실행 방지
[Spring 완전 정복 #13] Spring Cache — @Cacheable로 DB 부하 줄이기, Redis 캐시 전략
[Spring 완전 정복 #12] Spring @Async — 비동기 처리와 CompletableFuture 병렬 실행
[Spring 완전 정복 #11] Spring 테스트 전략 — 단위·슬라이스·통합 테스트를 언제 어떻게 쓸까
[Spring 완전 정복 #10] Spring 예외 처리 — @ControllerAdvice와 Custom Exception 설계
[Spring 완전 정복 #9] Spring Security + JWT 구현 — 인증 흐름부터 토큰 검증까지
[Spring 완전 정복 #8] QueryDSL이 실무 표준인 이유 — JPQL의 한계와 타입 안전한 동적 쿼리
[Spring 완전 정복 #7] Spring Data JPA — 영속성 컨텍스트와 N+1 문제 완전 정리
[Spring 완전 정복 #6] Java 데이터 접근 기술의 진화 — JDBC에서 JPA까지, 왜 바뀌었나
[Spring 완전 정복 #5] @Transactional 완전 정복 — 동작 원리, 전파속성, 격리수준
[Spring 완전 정복 #4] Spring Boot — xml 없이 바로 뜨는 이유, 자동설정 원리 완전 분석
[Spring 완전 정복 #3] Spring MVC 내부 구조 — DispatcherServlet이 요청을 처리하는 방법
[Spring 완전 정복 #2] Spring Core — IoC, DI, AOP, 그리고 동시성까지
[Spring 완전 정복 #1] Spring을 제대로 이해하려면 Servlet부터 — HTTP 요청이 Controller에 닿기까지
개인정보처리방침