프로세스는 컴퓨터 프로그램이 실행되는 인스턴스입니다. 각 프로세스는 다음과 같은 리소스를 포함합니다:코드: 실행할 명령어 집합데이터: 프로그램이 처리하는 정보메모리: 코드와 데이터를 저장할 공간소켓: 네트워크 통신을 위한 인터페이스프로세스는 무겁습니다. 즉, 생성하고
다양한 I/O(입출력) 호출 방식에 대해 이야기해보겠습니다.I/O는 Inbound(입력)와 Outbound(출력)를 의미합니다. 흔히 사용하는 네 가지 주요 I/O 모델에 대해 알아보겠습니다.동기 블로킹은 가장 단순하고 전통적인 방식입니다.예시:고객이 식당에 전화를 걸
리액티브 프로그래밍과 가상 스레드(Virtual Thread)를 살펴보고, 둘의 차이점과 서로가 어떠한 장단점이 있는지 알아보겠습니다.가상 스레드는 Java 19에서 프리뷰 기능으로 도입되었으며, Java 21에서 정식 기능으로 도입되었습니다. 이는 Project Lo
리액티브 프로그래밍은 데이터의 흐름과 변화에 반응하는 프로그래밍 패러다임입니다.이 방식은 주로 비동기 처리와 스트림 데이터를 다루는 데 유용합니다. 리액티브 프로그래밍의 핵심 개념은 Publisher/Subscriber 패턴과 관찰자 패턴(Observer Pattern
Reactor 라이브러리를 알아보기 전에, 핵심 개념인 Lazy Evaluation을 이해하는 것이 중요합니다. 먼저 Java Stream의 Lazy 특성을 살펴보고, 이것이 Reactor의 동작 방식과 어떻게 연결되는지 알아보겠습니다.Stream API는 데이터 처리
단일 Subscriber가 있을 때 사용하도록 설계되었습니다.FluxSink는 스레드 세이프입니다. 여러 스레드와 공유할 수 있습니다.다운스트림 수요에 대해 걱정하지 않고 계속 데이터를 싱크로 방출할 수 있습니다FluxSink는 데이터를 순차적으로 구독자에게 전달합니다
리액티브 프로그래밍에서 데이터 스트림을 처리하는 방식은 애플리케이션의 성능과 효율성에 큰 영향을 미칩니다. 리액터(Reactor)와 같은 리액티브 라이브러리는 퍼블리셔(Publisher)와 서브스크라이버(Subscriber)의 개념을 통해 데이터 흐름을 관리하며, 이
Spring 프레임워크에는 크게 두 가지 웹 프로그래밍 모델이 있습니다. Spring MVC와 Spring WebFlux입니다. 이 두 모델 간의 가장 큰 차이점은 비동기 처리 방식입니다.전통적인 Spring MVC 모델은 Servlet 기반의 동기/블로킹 방식으로 동