/
https://42jerrykim.github.io/ _index.md
LZ4·Zstd·Snappy 압축의 계보와 매치 탐색·엔트로피 코딩 원리를 설명하고, CPU-대역폭 트레이드오프와 손익분기 부등식을 바탕으로 메시지 크기·CPU·대역폭·딕셔너리 사용 여부에 따라 알고리즘과 레벨을 선택하는 기준을 정리합니다. 네트워크 지연시간을 전파·전송·처리·큐잉 네 요소로 분해하고 각 요소의 물리적 근거와 계산식을 정리합니다. WAN·데이터센터·혼잡 액세스 링크 등 환경별로 어떤 성분이 지배적인지 판단하는 기준과 흔한 오개념, 이론치와 실측의 간극을 함께 다룹니다. RTT·대역폭·직렬화 지연이 조합되어 네트워크 지연을 만드는 원리를 정성적·정량적으로 다지는 입문 챕터입니다. Bandwidth-Delay Product 계산과 흔한 오개념을 정리해 이후 소켓·TCP·직렬화 챕터를 읽을 직관을 세웁니다. TCP는 바이트 스트림이라 메시지 경계를 스스로 보장하지 않습니다. 이 장은 length-prefix, delimiter, fixed-size 세 프레이밍 전략의 동작 원리와 부분 수신 처리, 상황별 선택 기준을 정리합니다. TCP_NODELAY로 Nagle 알고리즘을 끄는 시점, SO_SNDBUF/SO_RCVBUF 버퍼 크기가 지연·처리량에 미치는 영향, 커널 자동 튜닝과 수동 설정의 경계를 setsockopt 예제와 ss 출력으로 정리합니다. Protocol Buffers, FlatBuffers, Cap'n Proto의 인코딩 방식과 직렬화·역직렬화 비용 차이를 비교하고, 메시지 크기·접근 패턴·스키마 진화 요구에 따라 어떤 포맷을 선택할지 판단 기준을 정리합니다. 2026년 6월 Yandex가 오픈소스로 공개한 zero-copy 포맷 YaFF의 레이아웃 전략과 벤치마크 수치를 분석하고, FlatBuffers·Cap'n Proto 대비 언제 신흥 포맷을 도입할지 판단하는 기준을 제시합니다. 저지연 바이너리 프로토콜에서 고정 크기 헤더가 파싱 없는 오프셋 접근을 가능하게 하는 원리, additive-only 버전 관리 규칙, 플래그·예약 필드·TLV 확장 블록으로 하위 호환성과 확장성을 함께 확보하는 설계 원칙을 SBE와 ITCH 사례로 정리합니다. C++ 메모리 모델의 relaxed/acquire/release/seq_cst 순서를 happens-before 관점에서 실무적으로 해석합니다. 잘못된 relaxed 사용이 만드는 데이터 레이스 버그를 깨진 코드로 재현하고 ThreadSanitizer로 검증하는 절차를 다룹니다. C++20 atomic::wait/notify로 스핀 폴링을 커널 대기로 바꾸는 패턴과 libstdc++의 futex 기반 구현을 다룹니다. notify 누락이 만드는 lost wakeup 버그를 재현하고, C++26 fetch_max/fetch_min 표준화 현황도 정리합니다.