자바 파일 처리 유틸리티
파일과 바이트 배열 상호 변환
파일을 바이트 배열로 읽거나 바이트 데이터를 파일로 저장하는 유틸리티 클래스:
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.nio.file.*;
public class DataConverter {
private static final Logger logger = LoggerFactory.getLogger(DataConverter.class);
public static byte[] convertToBytes( ...
7월 5일 23:36에 게시됨
Java 버퍼와 네이티브 메모리 관리의 심층 분석
힙 내외 메모리 아키텍처 이해
자바 애플리케이션은 일반적으로 힙(heap) 영역에 객체를 할당하며, 이는 JVM에 의해 가비지 컬렉션(GC) 대상이 됩니다. 반면 힙 외부 메모리(off-heap memory)는 JVM 힙 바깥쪽, 즉 운영체제가 직접 관리하는 네이티브 메모리 공간에 데이터를 저장합니다. 이 방식은 특히 고성능 I/O 처리나 대규모 캐시 시스템에서 중요한 역할을 합니다.
...
6월 28일 00:02에 게시됨
Java 네트워크 I/O 모델 비교: BIO부터 Netty까지
1. BIO (Blocking I/O)
가장 기본적인 네트워크 I/O 모델로, 모든 I/O 작업이 블로킹 방식으로 동작합니다. 서버는 클라이언트 연결을 기다리는 accept() 호출과 데이터 읽기/쓰기 과정에서 모두 스레드가 멈춥니다.
서버 예제
package network.bio;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.net.ServerSocket;
import java.net.So ...
6월 20일 18:59에 게시됨
Java 문법 상의 주요 특징 및 C++와의 비교
이 문서는 Java SE의 주요 특징을 중심으로 C++와의 비교를 통해 핵심 내용을 설명합니다.
Java의 기본 데이터형
데이터형 이름
차원
默시 값
페기지 클래스
byte
1
0
Byte
short
2
0
Short
char
2
'\u0000'
Character
int
4
0
Integer
long
8
0L
Long
float
4
0.0f
Float
double
8
0.0d
Double
boolean
1비트
false
Boolean
C++와 달리 Java는 함 ...
6월 13일 16:57에 게시됨
Netty 리액터 패턴의 동작 원리 소스 코드 분석
1. EventLoop의 개념
EventLoop은 간단히 설명하면 이벤트를 지속적으로 감시하는 무한 루프 구조입니다. 이벤트가 발생하면 해당 이벤트를 처리하는 역할을 담당합니다. 일반적인 구현 방식은 별도의 스레드를 생성하여 끊임없이 루프를 실행하는 것입니다.
기본 구조:
while (selector.select()) {
processSelectedKeys();
}
2. EventLoopGroup의 구조
EventLoo ...
6월 7일 01:14에 게시됨
Netty ByteBuf 기본 개념과 활용
ByteBuf 구조
ByteBuf는 Netty의 핵심 구성 요소 중 하나로, 바이트 데이터를 저장하고 조작하는 유연한 버퍼입니다. 기존의 java.nio.ByteBuffer와 유사한 구조를 가지지만, 더 강력하고 사용하기 편리한 기능을 제공합니다.
ByteBuf는 다음과 같은 주요 요소를 가집니다:
읽기 인덱스 (read index): 현재 읽을 위치를 나타냅니다.
쓰기 인덱스 (write index): 현재 쓸 ...
6월 2일 00:37에 게시됨
리눅스 I/O 모델 5가지 심층 분석
1. 핵심 개념 이해
사용자 공간과 커널 공간
현대 운영체제는 가상 메모리를 사용합니다. 32비트 시스템 기준으로 4GB(2^32)의 가상 주소 공간이 존재합니다.
운영체제의 핵심인 커널은 보호된 메모리 영역에 접근 가능하며, 하드웨어 장치에 대한 모든 권한을 가집니다.
보안을 위해 사용자 프로세스가 커널에 직접 접근하지 못하도록 가상 공간을 두 부분으로 나눕니 ...
5월 30일 03:42에 게시됨