
프로그래밍을 하다 보면 동기와 비동기, 블로킹과 논블로킹이라는 개념을 자주 접하게 됩니다. 이 용어들은 서로 비슷해 보이지만, 실제로는 중요한 차이점을 가지고 있어서 혼란을 겪곤 합니다. 이러한 이유로 이번 글에서는 동기와 비동기, 블로킹과 논블로킹의 개념을 명확히 정리하고 그 차이점을 살펴보려 합니다. 1. 동기, 비동기, 블로킹, 논블로킹 개념[ 동기 ]동기 작업은 하나의 작업이 완료될 때까지 다른 작업을 대기하는 방식입니다. 즉, 현재 작업이 끝나야만 다음 작업이 시작됩니다. 작업이 순차적으로 실행되며, 작업 간에 의존성이 있는 경우에 주로 사용됩니다. 데이터베이스 트랜잭션, 파일 읽기/쓰기 작업, 연속적인 계산 작업 등등에 사용합니다. 예시 코드public class Example { ..

내가 작성한 프로그래밍 언어의 코드가 실제로 컴퓨터에서 어떻게 동작하는지에 대한 궁금증이 커져갔습니다. 이러한 호기심을 해결하기 위해 운영체제 책을 읽고 있는데, "Hello, World" 프로그램을 고수준 언어에서 시작하여 점차 저수준 언어로 내려가는 과정을 탐구해보기로 했습니다. 1. 고수준 언어에서 저수준 언어로 내려가보기[ 고수준 언어 ]고수준 언어는 사람의 읽기와 쓰기가 쉽도록 설계된 언어C/C++, Python, Java 등. 추상화 수준이 높고, 메모리 관리와 하드웨어 제어를 자동으로 처리예시) C++ 언어로 간단한 Hello, World 출력되는 코드#include int main() { printf("Hello, World"); return 0;} [ 저수준 언어 ]저수준 ..

API 접근 기록을 저장하는 기능을 맡으면서 Path, QueryString, Referrer, Body 값을 DB에 저장을 한다. HTTP의 주요 값을 갖고 있는 HttpServletRequest 클래스를 통해서 Path, QueryString, Referrer 조회하면 정상적으로 조회가 되지만, Body 조회를 하면 값이 없다고 나온다. 그 이유를 찾아보니 네트워크로부터 들어오는 데이터여서 한 번만 읽을 수 있도록 제한되어 있다고 한다. 개발환경 : Java 11, SpringBoot 2.7.71. 문제 사례public class TestController { @PostMapping("/test") public void test(@RequestBody String body, HttpSer..
생성 패턴 중에서 많이 쓰이는 팩토리 패턴(Factory Pattern)에 대해 알아보겠습니다. 1. 팩토리 패턴(Factory Pattern)의 개념 및 역할[ 팩토리 패턴이란? ]팩토리 패턴(Factory Pattern)은 객체를 생성하는 디자인 패턴 중 하나입니다. 객체를 생성하는 과정을 캡슐화하여 클라이언트가 직접 객체를 생성하는 것이 아니라 생성 로직을 분리해서 객체를 요청하고 생성하는 디자인 패턴입니다. 이를 통해 객체 생성의 유연성을 높이고, 의존성을 줄이며, 코드의 확장성을 향상시킵니다. [ 팩토리 패턴 주요 4가지 역할 ]1. 팩토리 패턴을 사용하여 생성 과정을 캡슐화할 수 있다. 이때 생성 과정의 변경 사항은 호출자에게 투명성을 가진다.2. 생성 과정을 팩터리 클래스로 추출한 후, 재..