전체 글

전체 글

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

    [Database] 트랜잭션 격리 수준

    [Database] 트랜잭션 격리 수준

    트랜잭션 격리 수준 동시에 트랜잭션이 처리될 때, 트랜잭션끼리 얼마나 서로 고립되어 있는지를 나타낸 것이다. → 즉, 특정 트랜잭션이 다른 트랜잭션에서 변경한 데이터를 볼 수 있도록 허용할지 말지를 결정하는 것이다. level이 아래로 내려갈수록 트랜잭션간 고립 정도가 높아지며, 성능이 떨어지는 것이 일반적이다. 동시성 문제 Dirty Read 트랜잭션1에서 A테이블을 SELECT 한 후 트랜잭션2에서 A테이블 내용을 변경하는 상황. 트랜잭션2가 해당 변경사항을 commit 하지도 않았는데, 트랜잭션1에서 다시 A테이블을 SELECT하면 해당 변경사항을 읽어들일 수 있음. Non-repeatable Read (Inconsistent Read) 트랜잭션1에서 A테이블을 SELECT 한 후 트랜잭션2에서 A..

    [자바 최적화] 자바 언어의 성능 향상 기법

    [자바 최적화] 자바 언어의 성능 향상 기법

    자바 최적화 책 정리 자바 최적화(Optimizing Java) | 벤저민 J. 에번스 - 교보문고 자바 최적화(Optimizing Java) | 자바 애플리케이션 성능을 한 단계 높여줄 튜닝 이야기성능 튜닝은 실험과학이다. 추측과 구전 튜닝에 의존할 일이 아니다. 이 책은 복잡한 기술 스택을 다루는 중/고 product.kyobobook.co.kr 컬렉션 최적화 ✅ 자바 최적화의 한계 자바는 객체를 생성하면 객체를 가리키는 레퍼런스와(스택), 객체 자체(힙)를 따로 저장한다. -> 이렇게 레이아웃을 나누는 방식은 C/C++ 형식의 배열이나 벡터를 사용하는 것만큼 성능을 얻을 수 없게 한다. ✅ 자바 컬렉션 컬렉션이 애플리케이션 성능에 전체적인 영향을 끼칠 수 있다는 사실을 인식해야 한다. List 최적..

    [자바 최적화] JIT 컴파일의 세계로

    [자바 최적화] JIT 컴파일의 세계로

    자바 최적화 책 정리 자바 최적화(Optimizing Java) | 벤저민 J. 에번스 - 교보문고 자바 최적화(Optimizing Java) | 자바 애플리케이션 성능을 한 단계 높여줄 튜닝 이야기성능 튜닝은 실험과학이다. 추측과 구전 튜닝에 의존할 일이 아니다. 이 책은 복잡한 기술 스택을 다루는 중/고 product.kyobobook.co.kr JITWatch란? ✅ JITWatch 이 책의 필자 중 한 사람인 크리스 뉴랜드가 개인 프로젝트로 구축한 오픈 소스 자바FX 툴. -> 실행 중인 자바 애플리케이션이 생성한 핫스팟 컴파일 상세 로그를 파싱/분석하여 그 결과를 자바FX GUI 형태로 보여준다. -> 애플리케이션을 실행할 때 다음 플래그를 추가해야 JVM이 JITWatch에 입력할 로그를 생성..

    [자바 최적화] JVM의 코드 실행

    [자바 최적화] JVM의 코드 실행

    자바 최적화 책 정리 자바 최적화(Optimizing Java) | 벤저민 J. 에번스 - 교보문고 자바 최적화(Optimizing Java) | 자바 애플리케이션 성능을 한 단계 높여줄 튜닝 이야기성능 튜닝은 실험과학이다. 추측과 구전 튜닝에 의존할 일이 아니다. 이 책은 복잡한 기술 스택을 다루는 중/고 product.kyobobook.co.kr 바이트코드 해석 ✅ 평가 스택 JVM 인터프리터는 일종의 스택 머신처럼 작동한다. -> 작업할 값을 모두 평가 스택에 놓고 스택 최상단에 위치한 값을 변환하는 식으로 작동한다. JVM은 다음 세 공간에 주로 데이터를 담아 놓는다. 평가 스택: 메서드별로 하나씩 생성된다. 로컬 변수: 결과를 임시 저장한다(특정 메서드별로 존재한다). 객체 힙: 메서드끼리, 스..

    [DDD Start] 이벤트

    [DDD Start] 이벤트

    도메인 주도 개발 시작하기 책 정리 도메인 주도 개발 시작하기 실제 업무에 도메인 주도 설계(DDD)를 적용할 수 있도록 기본적인 DDD의 핵심 개념을 익히고 구현을 통해 학습할 수 있도록 구성한 DDD 입문서 www.hanbit.co.kr 시스템 간 강결합 문제 ✅ 도메인 로직에서 외부 서비스 의존 ex) 쇼핑몰에서 구매를 취소하면 환불을 처리해야 한다. -> 이 때, 환불 기능을 실행하는 주체가 주문 도메인 엔티티일 수 있다. public class Order { // 외부 서비스를 실행하기 위해 도메인 서비스를 파라미터로 전달받음 public void cancel(RefundService refundService) { verifyNotYetShipped(); this .state = OrderSta..