Reactor 는 이벤트를 처리하는 Thread 가 publishOn 혹은 subscribeOn 과 같은 함수로 인해서 계속 바뀔 수 있다. 이로 인해서 Transaction, Logback 과 같이 ThreadLocal 을 이용하여 데이터를 전달하는 기능들에 한계가 발생하였다. 이것을 해결하기위하여 Reactive Sequence 상에서 공유되는 데이터를 만들 수 있는데 이 기능이 Context 이다. Context 를 사용하기 전에 확인해보고 싶은 두가지 궁금한점이 있었다. Reactive Stream 을 처리하는 쓰레드가 변경되어도 Context 는 변하지 않는지. Reactive Stream 을 처리하는 과정에서 Context 의 데이터가 변경되면 하위 Stream 에 영향이 있는지. Mono.j..
1. About the Documentation 이 문서는 리액터 공식 문서를 번역한 것이다. 출처 : projectreactor.io/docs/core/release/reference/index.html 2. Getting Started 2.1 Reactor 소개 Reactor 는 JVM 기반에 backpressure 라고 불리는 demand management 효율적으로 관리하는 완전한 Non-blocking 리액티브 프로그래밍을 제공한다. Reactor 는 Java 8 의 함수지향 API 들과 연동하며 특히 CompletableFuture, Stream, Duration 을 사용한다. Reactor 는 비동기 Sequence 인 Flux 와 Mono 를 제공하며 Reactive Streams 의 특..
G1GC 소개 G1 Garbage Collector 는 믄 메모리를 사용하는 멀티 프레서서 머신을 타겟으로 하는 GC 이다. 최소한의 설정으로 높은 처리량과 짧은 "pause-time" 목표를 달성하고자 한다. G1 GC는 아래 특징들을 가진 응용프로그램과 환경에서 처리 속도와 처리량간의 최고의 균형을 제공하도록 돕는다. 힙 사이즈가 10GB 이상이면서 사용중인 데이터가 힙의 50퍼센트 이상을 차지 객체 할당과 Promotion의 비율이 시간이 지남에 따라 크게 달리짐 힙 안에서 많은 파편화 수백 millisecond 이하의 "pause-time"이 목표 G1GC 는 Concurrent Mark-Sweep(CMS) Collector 를 대체한다. G1GC 는 아래 내용들로 높은 성능과 짧은 "pause-..
쓰는중
Serial GC ( -XX:+UseSerialGC ) Serial Collector 는 Java SE 5 와 6 의 기본 Garbage Collector 였다. Serial Collector 는 하나의 가상 CPU 를 사용하여 Minor GC 와 Major GC 가 순차적으로 끝난다. 그리고 mark 하고 압축(mark-compact)하는 수집 함수를 사용한다. 이 함수는 오래된 메모리들을 Heap 영역의 시작점으로 이동시켜서 새로운 메모리 할당은 힙 영역 끝에서 단일된 연속의 덩어리로 만들어지도록 한다. 이 메모리 압축은 새로운 덩어리의 매모리를 Heap 에 할당할때 더 빠르게 만든다. Parallel GC ( -XX:+UseParallelGC ) Parallel Collector 는 Young Ge..
JVM Generation JVM 내의 모든 객체를 Mark 하고 Compact 하는 것은 매우 비효율적이기 때문에 Heap 영역은 아래 세가지 영역으로 나뉘어져 있다. Young Generation Old Generation (Tenured Generation) Permanent Generation Young Generation 은 새로운 객체가 할당되는 곳이다. Young Generation 이 꽉 차게 되면 Minor GC 가 발생한다. Minor GC 는 큰 객체의 해제율로 최적화 될 수 있다.Young Generation 이 사용되지 않는 객체로 모두 차게 되면 참조를 잃은 객체들은 매우 빨리 수집된다. Minor GC 로 부터 살아남은 객체들은 나이를 먹고(Aged) 결국에는 Old Gener..
JVM 성능과 관련된 JVM Component 는 아래 세가지 이다. - Heap - JIT Compiler - Garbage Collector 대부분의 성능 튜닝은 Heap 의 사이즈를 조절하는 것과 가장 적저한 Garbage Collector 를 선택 하는것이다. JIT Compiler 또한 성능에 큰 영향이 있지만 새로운 버전의 JVM 에서만 드물게 튜닝이 필요하다. 자바 튜닝에는 2가지 주요 목표가 있다. 대응성 & 처리량 대응성 대응성이란 응용프로그램 또는 시스템이 얼마나 빨리 요청받은 데이터를 응답하느냐에 대한 것이다. 긴 "Pause Time" 을 갖는 응용프로그램은 높은 대응성을 가지고 있다고 할 수 없다. 초점은 빠른 시간내에 응용 프로그램이 반응하는것이다. 처리량 처리량은 응용프로그램이..
Error Error 는 심각한 시스템 레벨의 문제를 의미한다 Error 는 예상할 수 없으며 복구할 수 없는 비정상적인 상태이므로 catch 할 수 없다. Exception 예외란 프로그램이 실행되는 동안 발생한 이벤트이다. 예외는 정상적인 프로그램 수행을 방해한다. 함수안에서 Error 가 발생하면 함수는 예외 객체를 생성하여 실행중인 시스템에 전달한다. 예외 객체는 에러 타입과 에러가 발생했을때 시스템의 상태를 포함하고 있다. 예외 객체를 만들어서 실행중인 시스템에게 전달하는 것을 '예외를 던지다' 라고 표현한다. 함수가 예외를 던지면 실행중인 시스템은 예외를 핸들링 할 수 있는 Exception Handler를 가지고 있는 함수를 Call Stack 에서 찾아 나간다. 발생한 Exception 을..
Abstract Class abstract 로 선언된 클래스 abstract 메서드를 포함할 수 있고 포함하지 않을 수 있다. abstract 메서드는 구현되어 있지 않은 메스드를 의미한다. abstract void moveTo(double deltaX, double deltaY); abstract 메서드를 포함하고 있는 클래스는 반드시 abstract class 이여야만 한다. abstract 클래스를 상속받은 sub 클래스는 반드시 모든 abstract 클래스를 구현해야 한다. 만약 모든 abstract 메서드를 구현하지 않았다면 abstract class 로 선언되어야만 한다. Interface Interface 는 상수, Signature 함수, default 함수, static 함수, neste..
접근 제어자 접근 제어자는 다른 클래스가 특정 필드를 사용할 수 있는지 특정 메서드를 호출(invoke) 할 수 있는지 결정한다. 접근 제어에는 두가지 레벨이 존재한다. Class 레벨 : public, package-private, default Member 레벨 : public, private, protected, package-private, default Class 레벨 public : 모든 클래스에서 접근 가능 default : 해당 클래스가 속한 패키지에서만 접근 가능. package-private : default 와 마찬가지로 해당 클래스가 속한 패키지에서만 접근 가능. Member 레벨 public : 모든 곳에서 접근 가능. default : 해당 클래스가 속한 패키지에서만 접근 가능...
- Total
- Today
- Yesterday
- GlobalFilter
- notify()
- Lazy
- custom config data convertion
- HashMap
- getBoolean
- reative
- circurit breaker
- dynamodb
- AbstractMethodError
- ConcurrentHashMap
- Flux
- N+1
- ResultSet
- rate limit
- referencedColumnName
- aurora
- RouteDefinition
- spring cloud gateway
- msyql-connector-java
- RoutePredication
- notifyAll()
- DyanomoDB
- reactor
- wait()
- MariaDB
- mariada-connector
- Seperate Chaining
- mariadb-connector-j
- router
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |