Quasar 라이브러리를 활용한 Java 코루틴 예제 (Maven 기반)
메인 스레드는 1부터 10까지의 무작위 정수를 생성하여 정수 채널에 전송하고, 이 과정을 반복하면서 각 반복 후 일정 시간 동안 대기합니다.
또한, 새로운 Fiber 코루틴을 생성하여 정수 채널에서 값을 지속적으로 수신하고, 수신된 값이 존재할 경우 이를 출력합니다.
Maven 의존성 설정
<!-- 코루틴 프레임워크 Quasar -->
<dependency>
<groupId ...
9월 5일 11:32에 게시됨
Java와 MySQL 연동: JDBC 드라이버 설정부터 CRUD 구현까지
1. MySQL Connector/J 다운로드 및 프로젝트 설정
Java 애플리케이션에서 MySQL 데이터베이스에 접근하기 위해서는 JDBC(Java Database Connectivity) 드라이버가 필요합니다. MySQL 공식 사이트에서 'Platform Independent' 버전을 선택하여 Connector/J JAR 파일을 다운로드합니다.
다운로드한 JAR 파일을 프로젝트에 연동하는 일반적인 단계는 다음과 같습니다.
...
9월 5일 05:43에 게시됨
Java SPI 메커니즘을 활용한 모듈형 시스템 설계 가이드
레거시 시스템의 확장성 한계와 SPI 도입 배경
오래된 대규모 모놀리식 프로젝트에 새로운 비즈니스 로직을 추가할 때, 기존 코드베이스의 강한 결합도로 인해 변경 영향도를 예측하기 어려운 경우가 빈번합니다. 이러한 상황에서 인터페이스를 통해 안정적인 비즈니스 흐름을 정의하고, 실제 구현체는 런타임에 동적으로 분리하여 로드하는 방식이 아키텍처적 해결책이 됩 ...
9월 5일 00:03에 게시됨
선택 정렬 알고리즘의 동작 원리 및 자바 구현 분석
선택 정렬 개요
선택 정렬 (Selection Sort) 은 정렬되지 않은 데이터 집합에서 가장 작은 (또는 큰) 값을 찾아 해당 위치로 이동시키는 반복적인 과정을 기반으로 합니다. 기본적으로 전체 데이터를 두 개의 영역으로 나눕니다. 하나는 이미 정렬이 완료된 부분이고, 다른 하나는 아직 처리되지 않은 미정렬 부분입니다.
동작 메커니즘
오름차순 정렬을 기준으로 설명하 ...
9월 4일 17:05에 게시됨
JIM: 자바 기반 오픈소스 실시간 메시징 플랫폼 분석
JIM(Java Instant Messenger)은 Java 언어로 개발된 오픈소스 실시간 통신 소프트웨어이다. JVM의 크로스플랫폼 특성을 활용해 Windows, macOS, Linux 등 다양한 운영체제에서 동일한 사용자 경험을 제공하며, TCP/IP 기반 통신과 XMPP 프로토콜을 선택적으로 지원한다. 파일 전송, 그룹 채팅, 음성/영상 통화 등의 핵심 기능 외에도 확장 가능한 플러그인 아키텍처와 강력 ...
9월 4일 12:47에 게시됨
JVM 가비지 컬렉션(GC)의 메커니즘과 주요 알고리즘 분석
가비지 컬렉션의 핵심 개념과 특징
가비지 컬렉션(Garbage Collection, GC)은 자바 가상 머신(JVM)이 프로그램에서 더 이상 사용하지 않는 메모리를 자동으로 탐지하여 해제하는 프로세스입니다. 개발자가 명시적으로 메모리를 해제할 필요가 없어 생산성이 높고 메모리 누수 위험이 줄어들지만, 제어할 수 없는 실행 타이밍과 'Stop-the-World'로 인한 성능 오버헤드라는 ...
9월 4일 03:31에 게시됨
자바 풀스택 개발 면접 기술 가이드: 백엔드, 프론트엔드 및 아키텍처
자바 핵심 기능 및 JVM 메모리 모델
최신 자바 개발 환경에서 Java 8 이후 도입된 기능들은 필수적인 지식으로 간주됩니다. 특히 람다 표현식(Lambda Expressions), 함수형 인터페이스, Stream API는 컬렉션 데이터 처리를 간결하게 만들며, 병렬 스트림을 통한 성능 향상도 가능합니다. 또한 Optional 클래스는 NullPointerException을 예방하는 데 유용하게 활용됩니다.
...
9월 3일 12:41에 게시됨
JNDI 인젝션
RMI
RMI는 Remote Method Invocation의 약자로, 한 JVM에서 실행 중인 Java 프로그램이 다른 원격 JVM에서 실행되는 Java 프로그램을 호출하는 기술입니다. 이 원격 JVM은 동일한 서버 또는 다른 서버에 있을 수 있으며, 두 시스템 간에는 네트워크를 통해 통신합니다.
RMI는 JRMP(Java Remote Message Protocol)라는 통신 프로토콜을 사용하며, 이는 Java 전용으로 설 ...
9월 2일 05:25에 게시됨
링크드리스트 문제 해결 전략 및 예제 코드
링크드리스트 문제를 해결할 때 가장 먼저 기억해야 할 점은 가상의 헤드 노드를 설정하는 것입니다.
LeetCode 24: 두 노드씩 교환하기
주어진 링크드리스트에서 두 개의 노드씩 교환하는 문제입니다. 이때 중요한 것은 적절한 위치의 노드를 참조하는 것입니다. 특히 두 개의 노드를 교환하기 전의 노드를 기억해야 합니다.
class Solution {
public ListNode swapPai ...
9월 2일 03:46에 게시됨
Spring Boot에서 동적 오류 메시지를 효과적으로 처리하는 방법
웹 애플리케이션 개발 시 백엔드는 단순히 비즈니스 로직을 수행하는 것을 넘어, 전면 프론트엔드로 명확하고 구조화된 오류 정보를 전달해야 한다. 특히 사용자 인증과 같은 복잡한 시나리오에서는 정적 메시지로는 부족하며, 남은 시도 횟수나 잠금 시간과 같이 실시간으로 계산되는 동적 정보가 필요하다. 이러한 요구사항을 충족하면서도 코드의 유지보수성과 일관성을 ...
9월 2일 03:34에 게시됨