/
https://42jerrykim.github.io/ _index.md
SOLID는 낮은 결합도와 높은 응집도를 실천 가능한 다섯 규칙으로 정리한 객체지향 설계 원칙입니다. 단일 책임 원칙을 중심으로 각 원칙의 목적과 흔한 오해를 코드로 다루고, 언제 적용하고 언제 과잉 설계로 흐르는지 판단 기준도 정리합니다.
결합도는 모듈 사이의 의존 정도, 응집도는 한 모듈 내부 요소들의 연관 정도를 가리키는 설계 척도입니다. 낮은 결합도·높은 응집도가 왜 좋은 설계의 기준인지, Yourdon과 Constantine의 고전적인 분류 체계와 함께 코드 리팩토링으로 다룹니다.
그래프는 트리의 부모-자식 제약을 없애고 임의의 노드끼리 연결한 자료구조입니다. 인접 리스트·인접 행렬 표현과 BFS·DFS 순회를 C 코드와 함께 비교합니다.
데드락은 두 개 이상의 실행 흐름이 서로가 쥔 락을 기다리며 영원히 멈추는 상황입니다. 상호배제·점유대기·비선점·순환대기라는 발생 필요조건 네 가지와, 락 순서 고정으로 순환대기를 끊어 이를 예방하는 방법을 C 코드로 재현합니다.
디자인 패턴은 반복되는 설계 문제에 대한 검증된 해법에 이름을 붙인 것입니다. GoF의 생성·구조·행동 패턴 분류와, 전략 패턴 코드를 SOLID 원칙과 연결해 다루며 패턴 남용(과잉 설계)을 피하는 판단 기준도 함께 정리합니다.
레이스 컨디션은 여러 스레드가 공유 자원에 동시에 접근할 때 실행 순서에 따라 결과가 달라지는 버그입니다. 뮤텍스로 임계 구역을 보호하는 원리를 C 코드로 재현하고 고치며, 그 대가인 성능 비용과 대안까지 다룹니다.
로드 밸런싱은 하나의 서버로는 감당 못 할 트래픽을 여러 서버에 나눠 처리하는 기법입니다. 라운드 로빈·최소 연결·헬스 체크 알고리즘을 비교하고, L4/L7 계층 구분과 세션 고정 문제의 근본 해법까지 함께 다룹니다.
리팩토링은 동작을 바꾸지 않으면서 코드 구조를 개선하는 작업입니다. 코드 스멜을 신호로 언제 리팩토링할지 판단하고, 테스트로 안전망을 갖춘 상태에서 Extract Method를 적용하는 과정과 리팩토링 대 재작성 선택 기준을 다룹니다.
가상 메모리는 각 프로세스에게 실제 물리 메모리보다 넓고 독립된 주소 공간을 제공하는 추상화입니다. 페이징과 페이지 폴트, 스와핑을 malloc 동작과 함께 다루고, mmap과 malloc 중 언제 무엇을 선택할지의 판단 기준까지 설명합니다.
배열과 연결리스트는 데이터를 순서대로 저장하는 가장 기초적인 두 자료구조입니다. 메모리 레이아웃 차이가 접근·삽입·삭제 성능과 캐시 지역성에 미치는 영향을 컴파일 가능한 C 코드로 비교하고, 동적 배열의 상환 O(1) 삽입 원리까지 함께 다룹니다.