LangChain4j의 동기 및 스트리밍 언어 모델 인터페이스 비교와 구현
LangChain4j의 핵심 언어 모델 인터페이스
LangChain4j 프레임워크에서 대형 언어 모델(LLM)과 통신할 때 주로 사용되는 두 가지 핵심 인터페이스는 ChatLanguageModel과 StreamingChatLanguageModel입니다. 이 두 인터페이스는 응답을 수신하는 메커니즘과 적합한 애플리케이션 아키텍처에서 명확한 차이를 보입니다.
아키텍처 및 동작 방식 비교
...
6월 1일 21:30에 게시됨
자바 기반 대칭 키 암호화 알고리즘 분석 및 구현
대칭 키 암호화의 개념과 주요 알고리즘
암호화 기법 중 대칭 키 방식은 동일한 키를 사용해 데이터를 암호화하고 복호화하는 방법이다. 이 방식은 속도가 빠르고 실시간 통신에 적합하지만, 키 관리의 보안성이 핵심 과제가 된다. 아래에서는 자바 환경에서 구현 가능한 주요 대칭 암호화 알고리즘인 DES, 3DES, AES, PBE를 각각 살펴보고, 코드 예제를 통해 동작 원리를 ...
6월 1일 21:03에 게시됨
자바 기본 스위치 문법 학습 (Day05)
스위치의 세 가지 사용 방식
표준 스위치 구문
1.1 문법 구조
switch (식) {
case 값1:
명령어 블록1;
break;
case 값2:
명령어 블록2;
break;
...
case 값N:
명령어 블록N;
break;
default:
명령어 블록N+1;
}
스위치는 표현식의 값을 계산한 후 각 케이스 값과 비교합니다. 일치하는 ...
6월 1일 19:54에 게시됨
자바 핵심 프로그래밍 기법: 싱글톤 패턴 및 주요 정렬/검색 알고리즘 구현
자바 싱글톤 패턴 구현
싱글톤(Singleton) 패턴은 특정 클래스의 인스턴스가 애플리케이션 내에서 오직 하나만 존재하도록 보장하는 디자인 패턴입니다. 이는 전역적으로 접근 가능한 유일한 객체가 필요할 때 유용하게 사용됩니다. 예를 들어, 로거, 설정 관리자, 데이터베이스 연결 풀 등에서 활용될 수 있습니다. 자바에서 싱글톤을 구현하는 대표적인 두 가지 방식은 ' ...
6월 1일 19:32에 게시됨
스레드 풀 사용 시 주의사항과 모범 사례
스레드 풀 올바르게 선언하기
스레드 풀은 반드시 `ThreadPoolExecutor` 생성자를 통해 수동으로 선언해야 하며, `Executors` 클래스를 사용하여 생성하면 OOM(메모리 부족) 위험이 있습니다.
`Executors`가 반환하는 스레드 풀에는 다음과 같은 문제점이 있습니다:
`FixedThreadPool`과 `SingleThreadExecutor`: 무제한 `LinkedBlockingQueue`를 사용하며, 큐 크기가 `In ...
6월 1일 18:42에 게시됨
Milvus 벡터 데이터베이스 실무: Java 연동 가이드
Milvus 핵심 개념
벡터 데이터베이스는 RAG 시스템에서 고차원 벡터를 저장하고 검색하는 핵심 요소입니다. Milvus는 대규모 벡터 처리를 지원하는 대표적인 오픈소스 솔루션입니다.
컬렉션: 벡터 데이터 집합(테이블 개념)
파티션: 쿼리 성능 향상을 위한 논리적 분할
벡터 필드: 다차원 벡터 저장 전용 필드
인덱스: 검색 효율 결정(IVF_FLAT, HNSW 등)
유사도 측정: 코 ...
6월 1일 18:38에 게시됨
Java에서 BigDecimal을 활용한 소수점 계산 문제 해결
예제
====
@Test
public void test() {
System.out.println(0.3 + 0.1);
System.out.println(0.3 - 0.1);
System.out.println(0.2 * 0.1);
System.out.println(0.3 / 0.1);
}
결과
0.4
0.19999999999999998
0.020000000000000004
2.9999999999999996
설명
====
float 또는 double 타입은 모두 부동소수점 수이며, 컴퓨터는 이진수 체계를 사용하기 ...
6월 1일 17:10에 게시됨
Java/SpringBoot + Maven에서 Logback 활용 가이드
의존성 추가
일반 Java + Maven 프로젝트의 경우
다음 의존성을 수동으로 추가해야 합니다.
<properties>
<logback.version>1.2.3</logback.version>
<slf4j.version>1.7.30</slf4j.version>
</properties>
<dependencies>
<dependency>
<groupId>org.slf4j< ...
6월 1일 11:46에 게시됨
Java 예외 처리 핵심 정리
예외의 본질
프로그램 실행 중 JVM이 수행 불가능한 연작을 감지하면 런타임 에러가 발생한다. Java에서는 이를 예외(Exception)라는 객체로 포장해 던진다. 예외는 정상적인 실행 흐름을 방해하는 비정상 상황을 표현하며, 적절히 대응하지 않으면 프로세스는 비정상 종료된다.
예외 계층 구조
모든 예외는 java.lang.Throwable을 거점으로 전개된다. 두 개의 직접 계열 ...
5월 31일 21:53에 게시됨
Java 리플렉션, 객체 복제, 제네릭 및 어노테이션
리플렉션
리플렉션 개요
리플렉션은 실행 시점에 클래스 정보를 동적으로 분석하고 객체 메서드를 호출하는 기술입니다. JVM은 각 클래스에 대해 단일 Class 객체를 생성하며, 이 객체는 클래스의 구조 정보를 포함합니다.
리플렉션 핵심 클래스
클래스기능
Class클래스 메타데이터 표현
Field클래스 필드 조작
Method메서드 실행 관리
Constructor생성자 제어 ...
5월 31일 17:10에 게시됨