본문 바로가기

프로그래밍(TA, AA)/JVM 언어

(117)
[RxJava] RxJava 프로그래밍(1) - 리액티브 프로그래밍 서버 다수와 통신하게 되면 API 호출 각각에 콜백을 추가하게 된다. 콜백이 늘어나면 애플리케이션의 복잡성도 증가(callback hell)하게 된다. RxJava는 자바로 리액티브 프로그래밍을 할 수 있는 라이브러리이며 비동기 프로그래밍과 함수형 프로그래밍 기법을 함께 활용한다. RxJava2는 Maybe나 Flowable 같은 새로운 클래스가 추가되었고 비동기 테스팅도 자연스럽게 할 수 있다. 리액티브 프로그래밍은 복잡한 비동기 프로그램을 쉽게 만들 수 있게 해준다. 리액티브의 의미에서 알 수 있듯이 이벤트(스크린 터치, 마우스 클릭, 키 입력, 서버의 비동기 응답)에 소비자가 비동기로 반응하여 처리한다. 또한 비동기에서 처리하기 힘든 에러 처리나 데이터 가공을 쉽게 할 수 있게 도와주기도 한다. 이..
[Java] Kryo 직렬화 라이브러리 Kryo는 Java 진영의 빠르고 효율적인 바이너리 객체 그래프 직렬화 프레임워크이다. Kryo 프로젝트는 고속, 경량의 사용하기 쉬운 API를 목적으로 만들어졌다. 이 프로젝트는 파일, 데이터베이스 또는 네트워크를 넘어 객체를 유지에 유용하다. Kryo는 또한 깊고 얕은 복사/clone 기능를 수행할 수 있다. 바이너리 변환이 아닌 객체에서 객체로 직접 복사하는 기능이다. Kryo 클래스는 자동으로 직렬화를 수행한다. 출력 및 입력 클래스는 바이트 버퍼 방식으로 처리하고, 선택적으로 스트림 플러시 처리가 가능하다. import com.esotericsoftware.kryo.Kryo; import com.esotericsoftware.kryo.io.Input; import com.esotericsoftw..
[Spring] WebFlux는 어떻게 적은 리소스로 많은 트래픽을 감당할까? https://alwayspr.tistory.com/44 Spring WebFlux는 어떻게 적은 리소스로 많은 트래픽을 감당할까? 위 그림은 DZone 게시글 중 하나인 Spring WebFlux를 이용한 Boot2와 Spring MVC를 이용한 Boot1을 비교한 그래프이다. 해당 그래프에서는 두 가지 특징을 볼 수 있다. 첫 번째로는 유저가 적을 때에는 성능� alwayspr.tistory.com 더보기 Spring WebFlux와 Spring MVC를 성능 비교했을때, 성능엔 별반 차이가 없다. 두번째로 유저수가 늘어날수록 극명한 성능 차이를 보여주고 있다. 어떻게 이러한 차이가 일어날 수 있을까? 1. I/O 더 적은 하드웨어 리소스, 더적은 스레드로 동시성을 처리하기 위해서는 논블로킹 웹스택..
[Spring] 스프링 NoSQL 보호되어 있는 글입니다.
[Spring] 캐싱 보호되어 있는 글입니다.