멀티스레딩 환경에서 여러 스레드가 동시에 같은 리소스에 접근하려 할 때, 데이터의 일관성과 무결성을 유지하는 것이 중요합니다. 이를 위해 자바에서는 뮤텍스(Mutex)와 세마포어(Semaphore) 같은 동기화 메커니즘을 제공합니다. 이 글에서는 뮤텍스와 세마포어의 개념을 설명하고, 차이점을 자바 예제와 테스트코드로 함께 살펴보겠습니다. 뮤텍스(Mutex) 뮤텍스는 Mutual Exclusion(상호 배제)의 약자이다. 한 번에 하나의 스레드만이 특정 리소스나 코드 섹션에 접근할 수 있도록 합니다. 리소스에 접근하는 스레드가 뮤텍스를 1. '잠그고(lock)' 2. 작업을 한다 3. '해제(unlock)' 즉 한 시점에 단 하나의 스레드만이 리소스를 사용할 수 있게 됩니다. 자바에 ReentrantLoc..
junit5
JSON 데이터를 라이브러리 없이 파싱해보자 우선 json이란 무엇일까요? 파싱해보는게 주제이므로 json에 대해서는 아래글을 참조해주세요. https://notavoid.tistory.com/29 restfull 통신할때 많이 사용하는 MIME(Content-type)타입인 application/json 타입 데이터를 파싱 해볼겁니다. 파싱할때 로직이 복잡해서, 보통 jackson 라이브러리나 gson 라이브러리를 많이 씁니다. 얼마나 복잡하냐? - 중첩된 객체, 배열, 특수 문자 처리, 타입 변환 등 복잡한 JSON 구조나 데이터 타입을 처리를 내부적으로 처리해줘야합니다. 하지만 저는 중첩된 객체, 배열 정도만 처리하는걸로해서 예제를 작성해 볼 예정입니다. 물론 jackson 라이브러리를 써서 처리하..
Form 데이터를 파싱해보자 웹 개발에서 사용자 입력을 처리하는 것은 필수적인 작업입니다. 1. application/x-www-form-urlencoded 타입 2. application/json 타입 두 MIME 타입은 HTML 폼 데이터를 서버로 전송하는 데 자주 사용되는 인코딩 방식입니다. 그 중에 application/x-www-form-urlencoded 타입을 알아 볼 겁니다. application/x-www-form-urlencoded의 MIME 타입은 폼 데이터를 키-값 쌍으로 인코딩하며, 각 쌍은 &으로 구분되고 키와 값은 =으로되고 띄어쓰기는 +로 됩니다. 예를 들어, 사용자가 웹 폼에 이름, 나이, 도시를 입력하는 경우를 보겠습니다. 이름 : sumin Kim 나이 : 30 도시 :..