/
https://42jerrykim.github.io/ _index.md
레이스 컨디션은 여러 스레드가 공유 자원에 동시에 접근할 때 실행 순서에 따라 결과가 달라지는 버그입니다. 뮤텍스로 임계 구역을 보호하는 원리를 C 코드로 재현하고 고치며, 그 대가인 성능 비용과 대안까지 다룹니다.
로드 밸런싱은 하나의 서버로는 감당 못 할 트래픽을 여러 서버에 나눠 처리하는 기법입니다. 라운드 로빈·최소 연결·헬스 체크 알고리즘을 비교하고, L4/L7 계층 구분과 세션 고정 문제의 근본 해법까지 함께 다룹니다.
리팩토링은 동작을 바꾸지 않으면서 코드 구조를 개선하는 작업입니다. 코드 스멜을 신호로 언제 리팩토링할지 판단하고, 테스트로 안전망을 갖춘 상태에서 Extract Method를 적용하는 과정과 리팩토링 대 재작성 선택 기준을 다룹니다.
가상 메모리는 각 프로세스에게 실제 물리 메모리보다 넓고 독립된 주소 공간을 제공하는 추상화입니다. 페이징과 페이지 폴트, 스와핑을 malloc 동작과 함께 다루고, mmap과 malloc 중 언제 무엇을 선택할지의 판단 기준까지 설명합니다.
배열과 연결리스트는 데이터를 순서대로 저장하는 가장 기초적인 두 자료구조입니다. 메모리 레이아웃 차이가 접근·삽입·삭제 성능과 캐시 지역성에 미치는 영향을 컴파일 가능한 C 코드로 비교하고, 동적 배열의 상환 O(1) 삽입 원리까지 함께 다룹니다.
Git은 파일의 변경 이력을 저장하는 것이 아니라, 매 커밋마다 전체 스냅샷을 해시로 저장하는 그래프 기반 시스템입니다. 커밋·브랜치·머지의 내부 자료구조와, rebase가 공유 히스토리에서 왜 위험한지까지 다룹니다.
샤딩은 데이터를 여러 서버에 나눠 저장하고, 복제는 같은 데이터를 여러 서버에 복사해 둡니다. 두 기법이 각각 어떤 한계를 넓히는지, 일관 해싱과 복제 지연이 만드는 일관성 문제, 그리고 언제 샤딩을 도입해야 하는지를 실제 명령 예제와 함께 다룹니다.
스택과 큐는 배열·연결리스트 위에 후입선출·선입선출이라는 접근 순서 제약을 얹은 자료구조입니다. 함수 호출, 되돌리기, 너비 우선 탐색 같은 실제 사용 사례와 원형 큐로 배열 큐를 구현하는 원리를 컴파일 가능한 C 코드로 비교합니다.
암호화는 되돌릴 수 있게 데이터를 숨기고, 해싱은 되돌릴 수 없게 지문을 만듭니다. 대칭키·비대칭키 암호화와, 비밀번호를 안전하게 저장하는 솔팅된 해시를 비교합니다.
SQL 인젝션, XSS, CSRF는 웹 애플리케이션에서 가장 흔한 세 가지 취약점입니다. 각 공격이 성립하는 조건과, 파라미터화 쿼리·이스케이핑·CSRF 토큰으로 막는 원리를 코드로 다루며, 프런트엔드 검증만으로는 왜 부족한지도 설명합니다.