/
https://42jerrykim.github.io/ _index.md
웹소켓은 HTTP 연결을 업그레이드해 양방향 실시간 통신을 여는 프로토콜이고, CORS는 브라우저가 다른 출처로의 요청을 통제하는 보안 정책입니다. 두 개념을 실제 핸드셰이크·preflight 흐름과 실행 가능한 코드로 다룹니다. 인증은 사용자가 누구인지 확인하는 것이고, 인가는 그 사용자가 무엇을 할 수 있는지 결정하는 것입니다. 세션 기반과 토큰(JWT) 기반 인증을 비교하고, 로그인 여부만 확인해 역할 검사를 빠뜨리는 권한 상승 취약점을 실제 코드로 다룹니다. 정규화는 데이터 중복과 이상 현상을 줄이기 위해 테이블을 쪼개는 설계 원칙이고, 인덱스는 그렇게 나뉜 테이블에서도 빠른 조회를 보장하는 자료구조입니다. B-Tree 인덱스가 디스크 I/O를 줄이는 원리를 SQL과 함께 다룹니다. 캐싱은 느린 원본 대신 빠른 사본을 먼저 확인해 반복 조회를 줄이는 기법입니다. 지역성 원리, LRU 교체 정책, 캐시 무효화가 왜 어려운 문제인지 C 코드와 함께 다룹니다. 컴파일러는 실행 전에 소스 코드 전체를 기계어로 번역하고, 인터프리터는 코드를 한 줄씩 즉시 해석해 실행합니다. 두 방식의 차이와 이를 절충한 JIT 컴파일, 그리고 상황별로 어떤 실행 방식을 택해야 하는지 판단 기준을 다룹니다. 타입 시스템은 정적/동적(검사 시점)과 강/약(암묵적 변환 허용 여부)이라는 서로 독립된 두 축으로 분류됩니다. TypeScript·Python·JavaScript·C 네 언어의 실제 코드로 네 조합의 차이와 언제 어떤 타입 시스템을 택할지 판단 기준까지 비교합니다. 트리는 노드 사이에 계층 관계를 갖는 자료구조로, 이진 탐색 트리와 균형 트리를 중심으로 순회 방식·탐색 성능·불균형 문제를 다룹니다. 정렬된 값을 순서대로 삽입하면 O(n)으로 퇴화하는 이유와, AVL·레드-블랙 트리가 회전으로 이를 막는 원리를 컴파일 가능한 C 코드와 함께 설명합니다. 파일 시스템은 디스크의 저장 블록을 사람이 다루는 파일·디렉터리 구조로 바꾸는 계층입니다. inode 기반 구조와 저널링을 통해 파일 접근과 장애 복구 원리를 다루고, 저널링 모드별 성능·안전성 트레이드오프까지 함께 설명합니다. 프로세스는 독립된 메모리 공간을 가진 실행 단위이고, 스레드는 그 메모리를 공유하는 더 가벼운 실행 단위입니다. 두 단위의 자원 격리 차이를 fork와 스레드 생성 코드로 비교하고, 격리가 중요한 상황과 가벼운 동시성이 중요한 상황을 구분하는 판단 기준까지 다룹니다. 해시테이블은 해시 함수로 키를 배열 인덱스로 변환해 평균 O(1) 탐색을 제공하는 자료구조입니다. 해시 충돌 처리 방식과 균형 트리 대비 트레이드오프를 C 코드와 함께 다룹니다.