오늘의 기록

    [리액티브 프로그래밍] 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..

    [리액티브 프로그래밍] 리액티브 스트림즈(Reactive Streams)

    [리액티브 프로그래밍] 리액티브 스트림즈(Reactive Streams)

    스프링으로 시작하는 리액티브 프로그래밍 책 정리 스프링으로 시작하는 리액티브 프로그래밍 | 황정식 - 교보문고 스프링으로 시작하는 리액티브 프로그래밍 | *리액티브 프로그래밍의 기본기를 확실하게 다진다*리액티브 프로그래밍은 적은 컴퓨팅 파워로 대량의 요청 트래픽을 효과적으로 처리할 수 있는 product.kyobobook.co.kr 리액티브 스트림즈(Reactive Streams)란? ✅ 리액티브 스트림즈 리액티브 라이브러리를 어떻게 구현할지 정의해 놓은 표준 사양. -> 데이터 스트림을 Non-Blocking이면서 비동기적인 방식으로 처리하기 위한 리액티브 라이브러리의 표준 사양 리액티브 스트림즈 구성요소 ✅ 리액티브 스트림즈 컴포넌트 컴포넌트 설명 Publisher 데이터를 생성하고 통지하는 역할. ..

    [리액티브 프로그래밍] 리액티브 시스템과 리액티브 프로그래밍

    [리액티브 프로그래밍] 리액티브 시스템과 리액티브 프로그래밍

    스프링으로 시작하는 리액티브 프로그래밍 책 정리 스프링으로 시작하는 리액티브 프로그래밍 | 황정식 - 교보문고 스프링으로 시작하는 리액티브 프로그래밍 | *리액티브 프로그래밍의 기본기를 확실하게 다진다*리액티브 프로그래밍은 적은 컴퓨팅 파워로 대량의 요청 트래픽을 효과적으로 처리할 수 있는 product.kyobobook.co.kr 리액티브 시스템(Reactive System)이란? ✅ 리액티브 시스템 반응을 잘하는 시스템. -> 클라이언트의 요청에 즉각적으로 응답함으로써 지연 시간을 최소화. 리액티브 선언문으로 리액티브 시스템 이해하기 ✅ 리액티브 선언문 리액티브 시스템 구축을 위한 일종의 설계 원칙이자 리액티브 시스템의 특징. ✅ 리액티브 설계 원칙 MEANS(수단) 리액티브 시스템은 비동기 메시지 ..

    [Database] MySQL InnoDB lock

    MySQL InnoDB 엔진은 상황에 따른 여러가지 lock을 통해 동시성을 제어해준다. 트랜잭션이 획득한 lock들은 해당 트랜잭션이 commit or rollback될 때까지 유효하다. 종류 Shared lock (S) row-level lock select 위한 read lock shared lock이 걸려 있는 동안 다른 트랜잭션이 해당 row에 대해 X lock(exclusive lock) 획득 불가능 S lock 획득 가능 (읽기는 가능) select ... lock in share mode 사용 (MySQL 8.0부터는 select ... for share 사용 가능) Exclusive lock (X) row-level lock update, delete 위한 write lock exclus..