Java
-
[Java NIO] Selector register 이해하기Java/NIO 2024. 6. 11. 06:35
- 목차 들어가며.Java NIO 의 Selector 는 비동기적으로 여러 채널(Channel)을 모니터링할 수 있는 강력한 도구입니다. 이 중에서도 register 메서드는 특정 채널을 Selector에 등록하고 관심 이벤트를 설정하는 중요한 역할을 합니다. 이 글에서는 register 메서드의 사용법과 작동 원리를 살펴보겠습니다. Selector와 Channel의 관계.Selector 는 여러 개의 Channel 을 등록하여, 읽기, 쓰기, 연결 수락 등의 이벤트를 비동기적으로 감지할 수 있습니다. register 메서드는 Selector 와 Channel 사이의 연결 고리 역할을 합니다.Selector: 이벤트를 감지하고, 필요한 처리를 트리거합니다.Channel: Selector 에 등록되어 이벤..
-
[Java NIO] Selector Wakeup 알아보기Java/NIO 2024. 6. 10. 06:32
- 목차 들어가며.Java NIO(Non-blocking IO) 는 효율적인 네트워크 프로그램을 작성할 수 있는 강력한 도구를 제공합니다. 그중에서도 Selector 는 다중 채널에서 이벤트를 감지하여 효율적으로 비동기 작업을 처리할 수 있도록 도와줍니다. 하지만 Selector를 사용할 때 wakeup() 메서드를 정확히 이해하고 사용하는 것이 중요합니다. 이 글에서는 Selector.wakeup() 이 무엇인지, 왜 필요한지, 그리고 실제로 어떻게 동작하는지를 살펴보겠습니다. https://westlife0615.tistory.com/891 [Java NIO] Selector register 이해하기- 목차 들어가며.Java NIO 의 Selector 는 비동기적으로 여러 채널(Channel)을 모니..
-
Java ReentrantLock 알아보기Java 2024. 6. 3. 06:08
- 목차 들어가며.Java 의 ReentrantLock 은 멀티스레드 환경에서 공유 자원에 대한 접근을 제어하기 위한 동기화 도구입니다.ReentrantLock 은 java.util.concurrent 패키지에 포함된 동시성 제어 클래스 중 하나로기본적으로 synchronized 키워드와 유사한 역할을 하지만, 더 많은 기능과 유연성을 제공합니다. 일반적으로 동기화를 구현하기 위해 Mutex 와 Semaphore 와 같은 메커니즘이 사용됩니다.ReentrantLock 은 Mutex 에 해당하는 Java 의 동기화 도구입니다. Mutex 는 Mutual Exclusion 의 약자로, 하나의 자원(Resource) 에 대해 동시에 여러 스레드가 접근하지 못하도록 보장하는 동기화 메커니즘입니다.즉, 한 시점에..
-
[Java] 익명 클래스와 메모리 관계 알아보기 ( Anonymous Class , Method Area )Java 2024. 6. 2. 07:21
- 목차 들어가며.익명 클래스(Anonymous Class) 는 자바에서 이름 없는 클래스를 정의하고 동시에 인스턴스를 생성할 때 사용되는 문법입니다.익명 클래스는 간결함과 편의성을 제공하지만, 그 사용이 항상 메모리 효율적이지는 않습니다.익명 클래스의 일반적인 형태는 다음과 같습니다 interface AnonymousInterface { void print();}abstract class AnonymousAbstract { abstract void print();}class Main { public static void main (String[] args) { AnonymousInterface instance = new AnonymousInterface() { ..
-
[Gradle] Java Plugin 알아보기Java/Gradle 2024. 3. 6. 22:33
- 목차 들어가며.Java Plugin 은 Gradle 에서 Java 프로젝트를 빌드하고 관리하는 데 필요한 주요 플러그인입니다.이 플러그인은 Java 애플리케이션을 컴파일하고, JAR 파일을 생성하며, 테스트를 실행하고, 의존성을 관리하는 기능을 제공합니다. Gradle 은 기본적으로 Java 빌드를 간편하게 할 수 있도록 많은 기능을 자동으로 제공하고, 다양한 설정을 통해 빌드 프로세스를 커스터마이징할 수 있습니다. 기본적으로 build.gradle 파일 내부에서 아래와 같이 선언하여 사용합니다.plugins { id 'java'} 그리고 java Block 을 통해서 Java Compile, Build 에 관한 여러가지 설정이 가능합니다. java { sourceCompatibility = ..
-
[Gradle] Gradle 과 JVM 관계 알아보기 ( 간단한 Task 생성하기 )Java/Gradle 2024. 2. 17. 17:49
- 목차 들어가며.이번 글에서는 Gradle 의 동작 방식을 알아보기 위해서 build.gradle 내부에 간단한 Task 를 생성 후 실행해보도록 합니다. Gradle 과 JVM 관계.먼저 Gradle 이 JVM 위에서 어떤 식으로 동작하는지 알아보기 위해서 Gradle Docker Container 를 실행합니다. docker run -it --rm --name gradle gradle bash 그리고 이 Gradle Docker Container 내부에서 간단한 Task 를 생성 후 실행합니다.아래의 간단한 예시는 build.gradle 파일을 생성하며, 이 파일은 300초 동안 실행되도록 작성하였습니다. cat ./build.gradletask delayedTask { println "Ta..
-
[Java NIO] NIO 는 어떻게 동작할까 ? (DMA, Kernel Space)Java/NIO 2024. 1. 31. 06:11
- 목차 들어가며.이번 글에서는 Java NIO 가 어떻게 동작하는지 깊이있게 다루어보려고 합니다.앞으로 Java NIO 와 관련된 글들을 이어서 작성할 예정입니다. DMA Controller.먼저 DMA Controller 에 대해서 알아보도록 하겠습니다.컴퓨터를 아주 단순히 표현하면 아래 그림과 같이 표현될 수 있습니다.CPU 와 Memory 그리고 Disk 로 표현될 수 있습니다.좀 더 나아가서 NIC 같은 네트워크 인터페이스가 추가될 수 있죠. 그래서 Disk 에 존재하는 실행파일은 메모리로 옮겨지고,CPU 는 Memory 로 적재된 실행파일의 코드를 한줄 한줄 실행하며 컴퓨터는 동작합니다.또한 Network Card 를 통해서 유입되는 데이터를 읽어들이고, 다시 데이터를 전송하며 Network ..
-
Jackson 으로 JSON 다루기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 메모리 알아보기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 의 대상이 되므로 프로그래머의 관리 대상에서 제외되는 편리함이 있습니다. 오늘 ..
-
Java Thread Pool 알아보기Java 2023. 9. 30. 11:48
- 목차 관련된 글https://westlife0615.tistory.com/318 Java Future 알아보기- 목차 관련된 글 https://westlife0615.tistory.com/319 Java Thread Pool 알아보기 - 목차 소개. Thread Pool 은 Worker Thread 들을 관리하는 자료구조입니다. Thread Pool 은 최대로 할당 가능한 Thread 갯수를 제한하며, Wowestlife0615.tistory.com 소개. Thread Pool 은 Thread 를 관리하는 자료구조입니다. Thread Pool 이 Thread 를 관리한다는 의미는 Thread 의 생성과 삭제 그리고 재사용성을 높이기 위한 매커니즘이 있음을 뜻합니다. 만약 어떤 프로그램이 10개의 Th..