전체 글

전체 글

    [리액티브 프로그래밍] Operator

    [리액티브 프로그래밍] Operator

    스프링으로 시작하는 리액티브 프로그래밍 책 정리 스프링으로 시작하는 리액티브 프로그래밍 | 황정식 - 교보문고스프링으로 시작하는 리액티브 프로그래밍 | *리액티브 프로그래밍의 기본기를 확실하게 다진다*리액티브 프로그래밍은 적은 컴퓨팅 파워로 대량의 요청 트래픽을 효과적으로 처리할 수 있는product.kyobobook.co.kr Operator란?✅ Operator리액티브 스트림즈에서 연산자 역할.ex) just(), create(), fromArray(), filter(), map()-> Reactor에서 가장 중요한 구성요소. +) Operator를 처음 이해할 때는 마블 다이어그램을 보는 것이 좋은데, 마블 다이어그램에 대한 설명은 다음 글을 참고하자.https://gksdudrb922.tistor..

    [리액티브 프로그래밍] Testing

    스프링으로 시작하는 리액티브 프로그래밍 책 정리 스프링으로 시작하는 리액티브 프로그래밍 | 황정식 - 교보문고스프링으로 시작하는 리액티브 프로그래밍 | *리액티브 프로그래밍의 기본기를 확실하게 다진다*리액티브 프로그래밍은 적은 컴퓨팅 파워로 대량의 요청 트래픽을 효과적으로 처리할 수 있는product.kyobobook.co.kr 시작하기에 앞서, reactor-test 모듈의 기능을 사용하기 위해, build.gradle 파일에 다음 의존성을 추가한다.dependencies { testImplementation 'io.projectreactor:reactor-test'}  StepVerifier를 사용한 테스팅Reactor에서 가장 일반적인 테스팅 방식은,구독 시점에 Operator 체인이 시나리오..

    [Java] String + null

    Java에서 String 타입과 null에 대해 '+' 연산을 수행하면 어떻게 될까?System.out.println("123" + null);// 결과123nullNPE가 발생할줄 알았는데, 123null이 출력된다..? 그 이유는 자바 doc을 보면 알 수 있다. If an operand of type String is null, then the string "null" is used instead of that operand. -> 어느 한 피연산자가 null이면 해당 피연산자 대신 문자열 "null"이 사용된다는 뜻이다. 만약 특정 문자열에 null이 더해질 때 NPE를 발생시키고 싶다면 String.concat() 메서드를 사용하면 된다."123".concat(null)null.concat("1..

    [Java] Suppressed Exception

    ✅ Suppressed ExceptionSuppressed Exception은 throw되지만 무시되는 예외를 말한다.예를 들어, try-catch-finally 문에서 try문에서 예외가 발생했을 때, catch문에서 예외를 받아 throw한 상황에서,finally 문에서도 예외가 발생했다면, try문에서 발생한 예외는 무시(suppressed)된다.'무시'된 예외는 실제로 throw되지 않아, stacktrace에 찍히지 않는다.-> 잘 이해가 안될 수 있는데, 다음 예제를 통해 더 자세하게 알아보자. ✅ try-catch-finally문에서 Suppressed Exceptionpublic static void demoSuppressedException(String filePath) throws IO..

    [리액티브 프로그래밍] Debugging

    [리액티브 프로그래밍] Debugging

    스프링으로 시작하는 리액티브 프로그래밍 책 정리 스프링으로 시작하는 리액티브 프로그래밍 | 황정식 - 교보문고스프링으로 시작하는 리액티브 프로그래밍 | *리액티브 프로그래밍의 기본기를 확실하게 다진다*리액티브 프로그래밍은 적은 컴퓨팅 파워로 대량의 요청 트래픽을 효과적으로 처리할 수 있는product.kyobobook.co.kr Reactor에서의 디버깅 방법✅ Reactor 디버깅의 어려움동기식 또는 명령형 프로그래밍 방식은 Exception이 발생했을 때,스택트레이스를 확인하거나, 예외 상황 발생이 예상되는 코드에 브레이크포인트를 걸어 문제가 발생한 원인을 단계적으로 찾아가면 된다.반면에, Reactor는 대부분 비동기적으로 실행되고, 선언형 프로그래밍 방식으로 구성되므로 디버깅이 쉽지 않다.-> 이..

    [리액티브 프로그래밍] Context

    스프링으로 시작하는 리액티브 프로그래밍 책 정리 스프링으로 시작하는 리액티브 프로그래밍 | 황정식 - 교보문고스프링으로 시작하는 리액티브 프로그래밍 | *리액티브 프로그래밍의 기본기를 확실하게 다진다*리액티브 프로그래밍은 적은 컴퓨팅 파워로 대량의 요청 트래픽을 효과적으로 처리할 수 있는product.kyobobook.co.kr Context란?✅ 프로그래밍에서 Context어떠한 상황에서 그 상황을 처리하기 위해 필요한 정보ex)ServletContext: Servlet이 Servlet Container와 통신하기 위해 필요한 정보를 제공하는 인터페이스.ApplicationContext: SpringFramwork에서 애플리케이션 정보를 제공하는 인터페이스. (ex. Spring Bean)Securit..

    [리액티브 프로그래밍] Scheduler

    [리액티브 프로그래밍] Scheduler

    스프링으로 시작하는 리액티브 프로그래밍 책 정리 스프링으로 시작하는 리액티브 프로그래밍 | 황정식 - 교보문고 스프링으로 시작하는 리액티브 프로그래밍 | *리액티브 프로그래밍의 기본기를 확실하게 다진다*리액티브 프로그래밍은 적은 컴퓨팅 파워로 대량의 요청 트래픽을 효과적으로 처리할 수 있는 product.kyobobook.co.kr 스레드(Thread)의 개념 이해 Reactor에서 사용되는 Scheduler는 Reactor Sequence에서 사용되는 스레드를 관리해 주는 관리자 역할을 한다. -> 그럼 먼저 스레드에 대해 알아보자. ✅ 물리적인 스레드 실제 하드웨어와 관련된 스레드. 그림을 보면 하나의 코어는 두 개의 스레드를 포함하고 있다. -> 물리적인 스레드는 논리적인 코어라고도 부른다. ✅ 논..

    [리액티브 프로그래밍] Sinks

    스프링으로 시작하는 리액티브 프로그래밍 책 정리 스프링으로 시작하는 리액티브 프로그래밍 | 황정식 - 교보문고 스프링으로 시작하는 리액티브 프로그래밍 | *리액티브 프로그래밍의 기본기를 확실하게 다진다*리액티브 프로그래밍은 적은 컴퓨팅 파워로 대량의 요청 트래픽을 효과적으로 처리할 수 있는 product.kyobobook.co.kr Sinks란? ✅ Processor 리액티브 스트림즈의 구성요소 중 하나인, Publisher와 Subscriber의 기능을 모두 지닌 Processor는 Reactor 3.5.0부터 제거되었다. 대신 Processor의 기능을 개선한 Sinks가 3.4.0부터 지원되기 시작했다. Sinks는 Signal을 프로그래밍 방식으로 전송할 수 있는 구조이다. -> Reactor에서..