/
https://42jerrykim.github.io/ _index.md
코드 리뷰는 병합 전 마지막 검토 관문으로, 버그뿐 아니라 결합도·응집도 같은 설계 문제를 잡아낸다. 병목이 되지 않으려면 작은 단위로 자주 올려야 하는 이유와, PR을 언제 쪼개야 하는지 구체적인 판단 기준까지 함께 다룹니다.
코루틴은 OS 스레드보다 훨씬 가벼운 사용자 수준 실행 단위로, I/O 대기 중 스레드를 블로킹하지 않고 다른 작업으로 전환합니다. Python asyncio의 async/await 코드로 이벤트 루프의 전환 원리를 설명합니다.
콘텐츠 협상은 같은 URL이 Accept·Accept-Language 헤더에 따라 형식·언어가 다른 응답을 주는 HTTP 메커니즘입니다. Vary 헤더가 캐싱과 상호작용하는 방식과, 협상 실패 시 406 응답·캐시 파편화 문제까지 함께 다룹니다.
쿠키는 매 요청에 자동으로 전송되는 브라우저 저장소이고, 로컬 스토리지는 JS로만 접근하는 저장소입니다. CSRF·XSS 위험과 HttpOnly·Secure 속성, 그리고 어떤 데이터를 어느 저장소에 둘지 판단하는 기준을 함께 다룹니다.
쿼리 플래너는 같은 SQL을 실행하는 여러 방법 중 통계를 근거로 가장 저렴한 것을 고르는 옵티마이저입니다. 조인 알고리즘 선택과 EXPLAIN 출력 읽는 법을 다룹니다.
클로저는 함수가 자신이 정의된 렉시컬 환경의 변수를 기억해 반환 후에도 접근하는 원리입니다. 렉시컬 스코프와 동적 스코프의 차이를 JavaScript 카운터 예시로 다루고, 클로저의 메모리 누수 위험과 언제 피해야 하는지도 정리합니다.
선형 탐색과 이진 탐색의 시간 복잡도를 비교하고, 이진 탐색이 정렬된 데이터를 전제로 하는 이유를 구간 배제 논리로 설명하며, 실무에서 흔한 오프바이원·오버플로 버그를 컴파일 가능한 C 코드와 종료 조건·중간값 계산·경계 갱신별 비교표로 함께 다룹니다.
트라이는 문자열을 문자 단위 트리로 저장해 접두사 검색을 빠르게 처리하는 자료구조입니다. 해시테이블 대비 자동완성에 유리한 이유를 C 코드와 함께 다룹니다.
트랜잭션 격리 수준은 동시에 실행되는 트랜잭션이 서로의 결과를 얼마나 볼 수 있는지 정하는 규칙입니다. 4단계 표준 수준과 각 수준에서 발생하는 이상 현상을 SQL과 함께 다루고, PostgreSQL·MySQL의 기본 격리 수준 차이까지 설명합니다.
팩토리 패턴은 객체 생성 로직을 별도 함수나 클래스로 캡슐화해 호출부가 구체 클래스를 몰라도 되게 만드는 생성 패턴입니다. 단순 팩토리·팩토리 메서드·추상 팩토리의 차이와 흔한 오개념, 과잉 설계 판단 기준을 Python 코드로 다룹니다.