/
https://42jerrykim.github.io/ _index.md
가비지 컬렉션은 더 이상 참조되지 않는 메모리를 언어 런타임이 자동으로 회수하는 기법입니다. 참조 카운팅과 추적 방식의 원리, 순환 참조 문제를 Python 예시로 다루고, 언제 GC 튜닝을 고려해야 하는지도 함께 정리합니다.
매 단계 지역 최적 선택이 전역 최적을 보장하는 조건과, 동전 거스름돈 문제가 그리디로 항상 풀리지 않는 반례를 활동 선택 문제 코드와 함께 다룹니다.
백그라운드에서 지속 실행되는 데몬 프로세스의 특징과, 자식 종료 후 부모가 wait하지 않아 남는 좀비 프로세스, 고아 프로세스가 init에 입양되는 과정을 다룹니다. 서버 프로그램에서 좀비 누적을 막기 위해 언제 SIGCHLD 핸들러가 필요한지도 함께 설명합니다.
부분 문제 중복과 최적 부분 구조 개념을 바탕으로 메모이제이션(Top-down)과 타뷸레이션(Bottom-up)을 피보나치 코드로 비교하고 시간복잡도 개선을 다룹니다.
비대칭키로 데이터를 해시 후 개인키로 암호화해 작성자를 증명하는 디지털 서명 원리와, 이 서명 체계로 TLS 인증서가 서버 신원을 보증하는 방식(CA의 역할)을 다룹니다. 자체서명과 CA서명 인증서를 언제 쓸지 판단 기준도 함께 다룹니다.
레이트 리미팅은 짧은 시간에 과도한 요청을 보내는 클라이언트를 제한해 서비스 남용과 무차별 대입 공격을 막습니다. 토큰 버킷과 슬라이딩 윈도우 알고리즘을 코드로 비교하고, API 게이트웨이·로그인 방어에 적용하는 실무 사례와 429 응답 처리까지 다룹니다.
레지스터가 캐시·메인 메모리보다 빠른 이유를 CPU 내부의 물리적 위치와 접근 방식으로 설명하고, 명령어 집합 구조(ISA)가 소프트웨어와 하드웨어를 잇는 계약이라는 개념, RISC와 CISC의 설계 철학 차이를 다룹니다.
CPU의 L1/L2/L3 캐시 계층 개념을 애플리케이션 레벨로 확장합니다. 브라우저 캐시부터 CDN, Redis, DB 캐시까지 이어지는 계층 구조와 캐시 미스 전파를, Cache-Aside 코드와 계층 수를 정하는 판단 기준까지 함께 다룹니다.
수동 메모리 관리는 use-after-free, 이중 해제 같은 버그를 낳습니다. Rust의 소유권·빌림 규칙이 이런 버그를 컴파일 시점에 원천 차단하는 원리를 가비지 컬렉션과 대비해 설명합니다.
서비스 간 직접 동기 호출 대신 큐를 거쳐 비동기로 통신하는 방식이 만드는 느슨한 결합과 부하 완충 효과, at-least-once와 at-most-once 전달 보장을 다룹니다. 소비자 로직이 멱등해야 하는 이유와 순서 보장이 깨지는 상황도 함께 다룹니다.