C언어로 CSV 파싱 구현하기 (토큰, 상태기계, 오류 처리)
CSV(Comma-Separated Values)는 데이터를 표 형태로 저장하는 가장 단순한 형식 중 하나이지만, 실제 파싱 과정에서는 단순히 쉼표로 구분하는 수준을 넘어 복잡한 예외 처리가 필요합니다. 문자열 내부의 쉼표, 따옴표로 감싼 필드, 다양한 개행 문자 등은 단순 split() 함수로 처리할 수 없습니다. 이 글에서는 C언어로 CSV 파일을 안정적으로 파싱하는 방법을 다루며, 토큰 분리, 상태기계(State Machine) 기반의 파싱, 그리고 예외 상황에서의 에러 처리 방법을 단계별로 설명합니다.CSV 파싱의 기본 구조와 토큰 분리 로직CSV 파일의 각 줄은 하나의 레코드이고, 쉼표(,)는 필드를 구분합니다. 그러나 따옴표로 감싸진 문자열 안에 쉼표가 포함될 수 있고, 필드 내에서 개행이 허..
2025. 10. 20.
자바 멀티스레딩 사례 (락, CAS, AQS)
자바에서 멀티스레딩은 단순히 속도를 높이기 위한 보너스가 아니라, 서버·백엔드·배치·게임·금융 등 여러 도메인에서 필수 역량이다. 특히 동기화 전략을 제대로 고르지 못하면 교착상태, 기아, 스루풋 저하, 예측 불가능한 지연 같은 문제가 즉시 드러난다. 이 글은 실무 시나리오를 통해 락(lock) 기반 설계, CAS(Compare-And-Set) 중심의 락-프리 패턴, 그리고 AQS(AbstractQueuedSynchronizer) 계열 동기화 도구의 실제 사용을 비교하고, 언제 무엇을 선택해야 하는지 판단 기준을 제시한다.락: 재진입 락과 조건 대기로 푸는 실무 동시성 문제락은 가장 이해하기 쉬운 동기화 도구다. 웹 주문 처리, 금융 거래처럼 “정합성이 절대적”인 구간에서는 락으로 임계 구역을 간명하게 ..
2025. 10. 20.