/
https://42jerrykim.github.io/ _index.md
같은 요청을 여러 번 보내도 결과가 한 번 보낸 것과 같아야 한다는 멱등성의 원리와, 네트워크 재시도가 분산 시스템에서 필수인 이유, 멱등키 패턴을 다룹니다. GET·PUT·DELETE·POST의 멱등성 여부와 판단 기준을 실행 가능한 코드로 설명합니다.
방화벽은 IP·포트 규칙으로 트래픽을 허용·차단하고, NAT는 사설 IP를 공인 IP로 변환해 여러 기기가 하나의 공인 IP를 공유하게 합니다. 상태 기반 방화벽의 연결 추적 방식과, 외부에서 내부 서버로 접속하려면 필요한 포트 포워딩 설정까지 함께 다룹니다.
분산 시스템에서 물리적 시계로는 이벤트의 선후 관계를 정확히 알 수 없는 이유와, 각 노드가 카운터 벡터를 유지해 인과 순서를 판단하는 벡터 시계의 원리를 다룹니다.
부호·지수·가수로 실수를 근사하는 IEEE 754 형식을 설명하고, 0.1+0.2가 정확히 0.3이 되지 않는 이유와 부동소수점 값을 비교할 때 epsilon 오차 허용이 필요한 이유를 컴파일 가능한 C 코드로 재현해 다룹니다.
SSE는 서버가 하나의 HTTP 연결로 클라이언트에게 단방향 실시간 스트림을 보내는 표준 기술입니다. text/event-stream 형식과 EventSource의 자동 재연결, 웹소켓의 양방향 통신과 비교해 언제 SSE가 더 가벼운 선택인지 다룹니다.
한 서비스의 장애가 이를 호출하는 다른 서비스로 연쇄 전파되는 문제와, 실패율이 임계값을 넘으면 타임아웃 중인 호출을 차단해 장애 확산을 막는 서킷 브레이커의 Closed/Open/Half-Open 상태 전이, 그리고 서비스 메시 계층에서의 적용까지 다룹니다.
세그먼트 트리는 구간 합·구간 최솟값 같은 구간 쿼리를 O(log n)에 처리하는 트리입니다. 배열 순회 대비 이점과 트리 구축·쿼리 원리를 컴파일 가능한 C 코드로 다루고, 배열 크기 산정·경계 조건에서 흔히 나는 구현 버그도 함께 짚습니다.
세마포어는 값이 0/1인 뮤텍스와 달리 정수 카운트로 여러 스레드의 동시 진입을 허용하는 동기화 도구입니다. 커넥션 풀 예시, POSIX 세마포어 코드, 락+조건 변수를 캡슐화한 모니터까지 다루며, 언제 세마포어 대신 모니터를 써야 하는지 비교합니다.
스레드풀은 스레드를 미리 만들어 재사용해 매 작업마다 생성 비용을 치르지 않게 하는 패턴입니다. 작업 큐와 워커 구조를 C 코드로 구현하고, 풀 크기 설정이 병목과 컨텍스트 스위칭 사이에서 갖는 트레이드오프를 설명합니다.
스킵 리스트는 연결리스트에 여러 층의 고속 포인터를 더해 평균 O(log n) 탐색을 얻는 확률적 자료구조입니다. Redis Sorted Set 사례와 함께 다룹니다.