전체 글

전체 글

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

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

    스프링으로 시작하는 리액티브 프로그래밍 책 정리 스프링으로 시작하는 리액티브 프로그래밍 | 황정식 - 교보문고 스프링으로 시작하는 리액티브 프로그래밍 | *리액티브 프로그래밍의 기본기를 확실하게 다진다*리액티브 프로그래밍은 적은 컴퓨팅 파워로 대량의 요청 트래픽을 효과적으로 처리할 수 있는 product.kyobobook.co.kr Backpressure란? ✅ Backpressure의 역할 Publisher가 데이터를 emit하는 속도에 비해, Downstream Publisher(Downstream Consumer) 혹은 Subscriber가 데이터를 처리하는 속도가 느리다면 오버플로가 발생하거나 최악의 경우에는 시스템이 다운되는 문제가 발생한다. -> Backpressure는 Publisher가 끊..

    [리액티브 프로그래밍] Cold Sequence와 Hot Sequence

    스프링으로 시작하는 리액티브 프로그래밍 책 정리 스프링으로 시작하는 리액티브 프로그래밍 | 황정식 - 교보문고 스프링으로 시작하는 리액티브 프로그래밍 | *리액티브 프로그래밍의 기본기를 확실하게 다진다*리액티브 프로그래밍은 적은 컴퓨팅 파워로 대량의 요청 트래픽을 효과적으로 처리할 수 있는 product.kyobobook.co.kr Cold와 Hot의 의미 ✅ 컴퓨터 시스템에서 Cold와 Hot Cold: 어떤 작업을 위해 다시 시작하고, 같은 작업을 매번 반복함. Hot: 어떤 작업에 대해 다시 시작하지 않고, 같은 작업이 반복되지 않음. Cold Sequence Subscriber의 구독 시점이 달라도, 구독할 대마다 Publisher가 데이터를 emit하는 과정을 처음부터 다시 시작하는 데이터의 흐..

    [리액티브 프로그래밍] 마블 다이어그램(Marble Diagram)

    [리액티브 프로그래밍] 마블 다이어그램(Marble Diagram)

    스프링으로 시작하는 리액티브 프로그래밍 책 정리 스프링으로 시작하는 리액티브 프로그래밍 | 황정식 - 교보문고 스프링으로 시작하는 리액티브 프로그래밍 | *리액티브 프로그래밍의 기본기를 확실하게 다진다*리액티브 프로그래밍은 적은 컴퓨팅 파워로 대량의 요청 트래픽을 효과적으로 처리할 수 있는 product.kyobobook.co.kr 마블 다이어그램(Marble Diagram)이란? ✅ 마블 다이어그램 비동기적인 데이터 흐름을 시간의 흐름에 따라 시작적으로 표시한 다이어그램. 그림에 나와있는 번호 순서대로 설명하자면, Publisher가 데이터를 emit하는 타임라인. 가운데 Operator를 기준으로 Upstream의 Publisher라고 볼 수 있다. (Source Flux) Publisher가 emi..

    [리액티브 프로그래밍] Reactor 개요

    스프링으로 시작하는 리액티브 프로그래밍 책 정리 스프링으로 시작하는 리액티브 프로그래밍 | 황정식 - 교보문고 스프링으로 시작하는 리액티브 프로그래밍 | *리액티브 프로그래밍의 기본기를 확실하게 다진다*리액티브 프로그래밍은 적은 컴퓨팅 파워로 대량의 요청 트래픽을 효과적으로 처리할 수 있는 product.kyobobook.co.kr Reactor란? ✅ Reactor Spring Framework 팀 주도하에 개발된 리액티브 스트림즈의 구현체. Spring Framework 5 버전부터 Spring WebFlux 기반의 리액티브 애플리케이션을 제작하기 위한 핵심 역할을 한다. -> Reactor Core 라이브러리가 Spring WebFlux 라이브러리에 포함되어 있다. Hello Reactor 코드로 ..

    [Java] Comparator와 @FunctionalInterface

    함수형 인터페이스 공부하다가, Comparator 인터페이스 @FunctionalInterface 애노테이션이 붙은 것을 확인했다. @FunctionalInterface public interface Comparator { int compare(T o1, T o2); boolean equals(Object obj); ... } 해당 애노테이션은 Comparator가 함수형 인터페이스라고 명시하는 것이다. 그러나 함수형 인터페이스는 추상 메서드가 한 개여야 한다. 근데 Comparator는 위와 같이 추상 메서드가 두개다. -> 왜 Comparator를 함수형 인터페이스로 명시한걸까하는 의문이 들었다. 찾아보니, 모든 클래스는 Object 클래스를 상속받데, 만약 아무 것도 상속받지 않은 클래스가 있으면 ..

    [리액티브 프로그래밍] 리액티브 프로그래밍을 위한 사전 지식

    스프링으로 시작하는 리액티브 프로그래밍 책 정리 스프링으로 시작하는 리액티브 프로그래밍 | 황정식 - 교보문고 스프링으로 시작하는 리액티브 프로그래밍 | *리액티브 프로그래밍의 기본기를 확실하게 다진다*리액티브 프로그래밍은 적은 컴퓨팅 파워로 대량의 요청 트래픽을 효과적으로 처리할 수 있는 product.kyobobook.co.kr 함수형 인터페이스(Functional Interface) 리액티브 프로그래밍을 잘 사용하기 위해서 기본적으로 함수형 프로그래밍 기법을 알아야 한다. ✅ 함수형 인터페이스 단 하나의 추상 메서드만 정의되어 있는 인터페이스. 함수를 일급 시민으로 취급하여, 함수 자체를 파라미터로 전달할 수 있다. ex) Comparator public class Example4_1 { publi..

    [리액티브 프로그래밍] Blocking I/O와 Non-Blocking I/O

    스프링으로 시작하는 리액티브 프로그래밍 책 정리 스프링으로 시작하는 리액티브 프로그래밍 | 황정식 - 교보문고 스프링으로 시작하는 리액티브 프로그래밍 | *리액티브 프로그래밍의 기본기를 확실하게 다진다*리액티브 프로그래밍은 적은 컴퓨팅 파워로 대량의 요청 트래픽을 효과적으로 처리할 수 있는 product.kyobobook.co.kr Blocking I/O 하나의 스레드가 I/O에 의해서 차단되어 대기하는 것. -> 멀티스레딩 기법으로 차단된 시간을 효율적으로 사용할 수는 있으나, 이 방식도 몇 가지 문제점이 있다. ✅ 컨텍스트 스위칭으로 인한 스레드 전환 비용 프로세스 정보를 PCB에 저장, reload 하는 시간 동안에는 CPU가 다른 작업을 하지 못하고 대기한다. -> 컨텍스트 스위칭이 많으면 CPU..

    [Java] public class

    자바에서 하나의 .java 파일에 여러 class를 만들 수 있지만, public class는 파일명과 동일한 이름의 클래스 하나만 만들 수 있다. ex) Member.java public class Member { } class Id { } class Name { } 하나의 자바 파일에 여러 클래스를 작성하는 경우에, 하나의 public(대표) class를 파일명과 동일하게 하는 것이 코드의 가독성에 도움이 된다고 한다. (자바를 만든 제임슨 고슬링이 이렇게 하라고 함..) +) 만약 public class의 클래스 이름이 파일명과 다르면 컴파일 오류가 발생한다. 참고로 Kotlin의 경우, 하나의 파일에 여러 class를 선언할 수 있고, 파일명과 꼭 맞출 필요도 없다. ex) Member.kt cl..