Language
-
[Java NIO] NIO 는 어떻게 동작할까 ? (DMA, Kernel Space)Language/Java 2024. 1. 31. 06:11
- 목차 들어가며. 이번 글에서는 Java NIO 가 어떻게 동작하는지 깊이있게 다루어보려고 합니다. 앞으로 Java NIO 와 관련된 글들을 이어서 작성할 예정입니다. DMA Controller. 먼저 DMA Controller 에 대해서 알아보도록 하겠습니다. 컴퓨터를 아주 단순히 표현하면 아래 그림과 같이 표현될 수 있습니다. CPU 와 Memory 그리고 Disk 로 표현될 수 있습니다. 좀 더 나아가서 NIC 같은 네트워크 인터페이스가 추가될 수 있죠. 그래서 Disk 에 존재하는 실행파일은 메모리로 옮겨지고, CPU 는 Memory 로 적재된 실행파일의 코드를 한줄 한줄 실행하며 컴퓨터는 동작합니다. 또한 Network Card 를 통해서 유입되는 데이터를 읽어들이고, 다시 데이터를 전송하며 ..
-
Jackson 으로 JSON 다루기Language/Java 2024. 1. 22. 06:22
- 목차 들어가며. Jackson 은 JSON 데이터를 Serialization/Deserialization 하는 대표적인 자바 라이브러리입니다. 특히 JSON 과 POJO 사이의 변환을 손쉽게 할 수 있도록 여러 기능을 제공합니다. 이번 글에서는 여러 사례와 실습을 통해서 Jackson 을 활용한 Parsing 방법에 대해서 알아보도록 하겠습니다. JDK & Jackson Compatibility. 아래 URL 은 Jackson 의 Release 노트의 사이트의 주소입니다. https://github.com/FasterXML/jackson/wiki/Jackson-Release-2.14 Jackson Release 2.14 Main Portal page for the Jackson project. Con..
-
Java off-heap 메모리 알아보기Language/Java 2023. 12. 22. 19:01
- 목차 소개. Java 로 작성된 프로그램은 JVM 이라는 가상 머신 위에서 동작합니다. OpenJDK, Correto, Zulu 등에 해당하는 여러 JDK 는 JVM 이라는 Java 가상 머신을 생성하게 되는데요. Java 프로그램이 실행될 때마다 JVM 은 생성되고, JVM 이 전적으로 Java 프로그램을 매니징하게 됩니다. ByteCode 를 실행하고 실행에 필요한 메모리를 관리하는데 Heap, Stack, Class 등으로 표현되는 여러 메모리를 관리합니다. 그리고 이러한 메모리들은 Garbage Collector 의 모니터링 대상이 되구요. Java 프로그램에서 생성하는 여러 객체들은 Garbar Collector 의 대상이 되므로 프로그래머의 관리 대상에서 제외되는 편리함이 있습니다. 오늘 ..
-
Spring Batch Job 알아보기Language/Spring 2023. 11. 24. 23:51
- 목차 JobLauncher. JobLauncher 는 스프링 배치를 구성하는 대표적인 컴포넌트입니다. 스프링으로 웹서버를 구현할 때에 Controller, Service 등이 필요하듯, 스프링 배치를 구동하기 위해서 JobLauncher 가 필요합니다. 이름에서 알 수 있듯이 JobLauncher 는 Job 를 실행하도록 돕는 컴포넌트입니다. JobLauncher 는 run 이라는 메소드를 가지구요. run 메소드를 통해서 특정 Job 을 실행할 수 있습니다. 아래 코드 예시는 스프링 배치에서 Job 을 실행하는 코드입니다. import org.springframework.batch.core.Job; import org.springframework..
-
Spring Bean 알아보기Language/Spring 2023. 10. 30. 10:19
- 목차 Bean 이란?Bean 은 스프링에서 관리하는 Java Object 입니다. 일반적인 스프링 웹 환경에서 Controller, Service, DataSource, ThreadPool 등이 Bean 으로써 사용됩니다. 직접 생성하는 Java Object 와 Bean 의 차이를 먼저 설명드리면 좋을 것 같은데요. 다른 개발환경의 케이스를 통해 비유를 들어볼려고 합니다. 예시 1: Thread vs ThreadPool .Thread 와 ThreadPool 을 예시로 들 수 있을 것 같습니다. 멀티쓰레딩을 구현하기 위해서 여러 Thread 를 생성해야하는데요. 필요한 Thread 수량만큼, new Thread 와 같은 형식으로 생성해서 사용해도 무방합니다. 다만 효율적인 관리를 위해서 필요한 사이즈의..
-
Spring IoC Container 알아보기Language/Spring 2023. 10. 30. 10:19
- 목차 관련된 글https://westlife0615.tistory.com/7 Spring Bean 알아보기- 목차 Bean 이란? Bean 은 스프링에서 관리하는 Java Object 입니다. 일반적인 스프링 웹 환경에서 Controller, Service, DataSource, ThreadPool 등이 Bean 으로써 사용됩니다. 직접 생성하는 Java Object 와 Bean 의 차westlife0615.tistory.com 소개.IoC Container 는 Bean Container 또는 Spring Container 라고 불립니다. IoC Container 는 Spring Bean 을 관리하는 Spring 의 요소로써, Bean 의 라이프사이클을 관리하며 책임집니다. 흔히 Bean 을 mana..
-
RxJava Hot vs Cold Observable 알아보기Language/ReactiveX 2023. 10. 2. 11:11
- 목차 관련된 글 https://westlife0615.tistory.com/317 RxJava Observable 알아보기 - 목차 관련된 글 https://westlife0615.tistory.com/2 ReactiveX 알아보기 - 목차 소개. Reactive X 패러다임에 대해서 알아보려고 합니다. Push and Pull. 데이터 커뮤니케이션에는 Push 와 Pull 두가지 방식이 있습니 westlife0615.tistory.com 소개. Observable 의 Data Emission 방식에는 두가지가 존재합니다. 하나는 Hot Observable 그리고 다른 하나는 Cold Observable 방식입니다. Cold Observable 은 우리가 알고 있는 기존의 방식입니다. Observab..
-
RxJava Flowable 알아보기Language/ReactiveX 2023. 10. 2. 02:40
- 목차 소개. Flowable 은 BackPressure 기능을 가진 Observable 입니다. Flowable 은 단순히 데이터 스트림을 관리하는 수준을 넘어서 데이터 처리 속도의 동기화를 조율할 수 있습니다. Flowable 은 Downstream 의 Consumer 의 데이터 소비 속도에 맞추어 생산 속도를 조율합니다. 처리 속도를 조율하기 위해서 데이터를 임시적으로 저장하기 위한 버퍼를 사용합니다. Flowable 은 Floawable 내부의 버퍼를 가지고 있고, Backpressure Buffer 라는 외부의 버퍼를 활용합니다. Flowable Buffer 와 Backpressure Buffer 를 통해서 데이터 처리를 잠시 유예하거나 버퍼가 오버플로우되었을 때, 어떤식으로 Drop 할지 선..
-
RxJava Terminating Operator 알아보기Language/ReactiveX 2023. 10. 2. 01:08
- 목차 관련된 글 https://westlife0615.tistory.com/317 RxJava Observable 알아보기 - 목차 관련된 글 https://westlife0615.tistory.com/2 ReactiveX 알아보기 - 목차 소개. Reactive X 패러다임에 대해서 알아보려고 합니다. Push and Pull. 데이터 커뮤니케이션에는 Push 와 Pull 두가지 방식이 있습니 westlife0615.tistory.com https://westlife0615.tistory.com/321 RxJava Combining Operator 알아보기 - 목차 관련된 글 https://westlife0615.tistory.com/317 RxJava Observable 알아보기 - 목차 관련된 ..
-
RxJava Combining Operator 알아보기Language/ReactiveX 2023. 10. 1. 17:50
- 목차 관련된 글 https://westlife0615.tistory.com/317 RxJava Observable 알아보기 - 목차 관련된 글 https://westlife0615.tistory.com/2 ReactiveX 알아보기 - 목차 소개. Reactive X 패러다임에 대해서 알아보려고 합니다. Push and Pull. 데이터 커뮤니케이션에는 Push 와 Pull 두가지 방식이 있습니 westlife0615.tistory.com 소개. RxJava 의 결합 연산자에 대해서 알아보려고 합니다. mergeWith. mergeWith 는 두개 이상의 데이터 소스를 하나의 데이터 소스로 결합하는 결합 연산자입니다. merge Synchronously. 아래의 예시는 동기적인 방식으로 두 소스코드를..