Bldev's Blog

자바·스프링 백엔드 개발 노트

최신 글

[스프링] 스프링 AI

스프링 AI 스프링 AI란 자바/스프링 생태계에서 생성형 AI 기반 애플리케이션을 손쉽게 개발할 수 있도록 지원하는 추상화 프레임워크이다. 초기 생성형 AI 애플리케이션 개발은 한동안 랭체인(LangChain), 라마인덱스(LlamaIndex), Neo4j 파이썬 라이브러리, 다양한 LLM 프로바이더의 파이썬 라이브러리

2026. 3. 12.

[코틀린/스프링] 트랜잭션 관리

트랜잭션 관리 트랜잭션 관리란 데이터베이스의 상태를 변경하는 작업을 수행하는 과정인 트랜잭션을 관리하는 것을 의미한다. 데이터베이스의 상태 변경 작업에는 쓰기, 수정, 삭제가 있다. 일련의 작업을 수행하는 메서드 내에서 여러 작업 실행을 하나의 트랜잭션으로 실행할지 결정하여 작업 실행이 하나라도 실패하면 전체 작업 실행이

2025. 7. 30.

[스프링] 필터

스프링 프레임워크에서 필터(filter)란 클라이언트로부터 유입되는 요청이 스프링의 핵심 진입점인 ⁠ 에 도달하기 전과 클라이언트로 응답이 나가기 직전에 두 시점에 요청과 응답을 가로채어 공통 작업을 처리하는 웹 컴포넌트이다. 요청은 스프링의 컨트롤러, HandlerInterceptor⁠), 디스패처 서블릿(⁠Dispat

2025. 5. 12.

[스프링] 엘라스틱서치 구성

쿠버네티스 환경에서 엘라스틱서치 기본 설정 엘라스틱서치는 다음 설정 파일을 사용한다. : 기본적인 설정이 저장되는 파일이다. 클러스터 정보, 노드 정보, 데이터 파일 저장 경로 등을 설정할 수 있다. : 힙 메모리 사이즈, GC 옵션, 힙 메모리 덤프 등의 JVM 관련 설정을 할 수 있다. : log4j2 로깅과 관련된

2024. 9. 15.

[자바] MDC

MDC 여러 클라이언트의 요청을 동시적으로 처리하는 서버에서 로그 출력을 수행할 때 하나의 요청에 대해 여러 로그가 출력될 수 있다. 요청에 대한 작업 수행이 동기적으로 일어나는 것이 아니라면 여러 요청에 대한 로그 출력이 동시 다발적으로 발생하는데 특정 요청에 대한 로그를 식별하는 것이 필요하다. 로깅 라이브러리는 특정

2025. 1. 12.

[HTTP] 프록시 서버

프록시(proxy) 서버란 클라이언트와 서버 사이에 위치하여 서버 대신 클라이언트의 요청을 받는 중개 서버를 의미한다. 클라이언트 입장에서 프록시 서버는 서버 역할을 하는 반면, 서버 입장에서 프록시 서버는 클라이언트 역할을 한다. 프록시 서버는 클라이언트의 요청을 받아 처리하므로 서버와 동일하게 요청에 대한 HTTP 연

2024. 8. 15.

[자바/동시성] CAS와 Atomic 클래스

자바에서 기본적으로 래퍼(wrapper) 클래스는 불변(immutable)이다. 래퍼 클래스를 한 번 인스턴스화 한 이후에는 값을 변경할 수 없다. 래퍼 클래스를 메서드의 파라미터나 메서드 블록의 로컬 변수로 선언하여 사용하는 경우 불변성에 대해서만 주의하면 사용에 큰 문제가 되지 않는다. 동시성 프로그래밍에서 공유 객체

2024. 6. 10.

[자바/코틀린] 컬렉션 프레임워크

자바의 컬렉션 프레임워크 컬렉션 프레임워크(collections framework)는 컬렉션(collection) 자료 구조(data structure)를 구현한 자바의 공식 라이브러리이다. 컬렉션(collection)이란 데이터(요소)를 그룹화한 것으로 추상 자료형(ADT, abstract data type)을 의미한다

2024. 5. 15.

[자료 구조/알고리즘] 문자열

문자열은 연속된 문자들이 그룹화되어 구성된 자료 구조이다. 따라서 데이터를 그룹화한 추상 자료형인 컬렉션(collection)의 다양한 자료 구조로 문자열을 구조화할 수 있으며 다양한 자료 구조 탐색 알고리즘을 사용하여 부분 문자열들을 탐색 및 비교하는 등의 문제를 해결할 수 있다. 선형 컬렉션 그래프 문자열을 그래프 자

2025. 7. 25.

[자료 구조/알고리즘] 백트래킹

백트래킹(backtracking)(또는 역추적) 알고리즘이란 최적의 해결책을 찾기 위해 모든 가능한 방법을 후보(candidate)로 구성한 후, 점진적으로 후보들을 시도하면서 유효한 후보가 아닐 경우(문제의 정답 조건을 만족하지 않을 경우) 문제 해결 과정에서 제외하고 되돌아가 다른 후보를 시도(백트랙)하는 과정을 반복

2025. 7. 25.

[자료 구조/알고리즘] 백트래킹 구현

N 퀸 문제 노드: 퀸들의 현재 배치 상태 간선: 한 행에서 다음 행으로 퀸을 놓는 것 가지치기: 퀸을 놓으려는 위치가 이미 다른 퀸의 공격 범위에 있는 경우 퀸을 배치하지 않는 것 루트 노드: 퀸이 놓이지 않은 초기 상태 리프 노드: 더 이상 퀸을 놓을 수 없는 최종 상태 정답인 경우: 모든 퀸이 놓인 상태 정답이 아닌

2025. 7. 25.

[자료 구조/알고리즘] 연결 리스트 구현

단일 연결 리스트 더미 노드 미사용 더미 노드 사용 이중 연결 리스트 더미 노드 미사용 더미 노드 사용 LRU(least recently used) 캐시 구현

2025. 7. 25.

글 더 보기

프롬프트 엔지니어링 · 자연어처리 · AI 추론 · 모델 최적화

추가 학습 없이 스스로 개선하는 LLM: Self-Refine의 반복적 자기 피드백 전략

2026. 9. 2.

연구 배경 및 핵심 문제 의식 대형 언어 모델(LLM)은 놀라운 언어 생성 능력을 갖추고 있지만, 단 한 번의 추론 패스(forward pass)만으로 최선의 답변을 내놓는다는 암묵적 가정 아래 운용되어 왔다. 그러나 실제 작업 환경에서는 코드 작성, 수학적 추론, 대화 응답 생성처럼 복잡한 태스크일수록 첫 번째 시도의

검색 증강 생성 · 인공지능

[RAG, AI] 벡터 유사도 검색과 RAG

2026. 3. 12.

벡터 유사도 검색 벡터 유사도 검색(vector similarity search)(또는 벡터 검색)이란 벡터로 표현되는 데이터를 검색하는 데이터 검색 방법이다. 벡터란 단어, 문장, 문서, 이미지, 영상 데이터의 숫자 표현이다. 머신러닝 모델과 인공지능 응용 애플리케이션에서 주로 사용되는 개념이다. 벡터는 데이터 간의 의

아키텍처 · 소프트웨어 · 캐싱

[아키텍처/소프트웨어] 캐싱

2025. 7. 29.

캐싱(caching)이란 데이터 원본을 별도의 저장소에 복제하여 빠르게 제공하는 것이다. 캐싱은 데이터의 응답 지연 시간을 단축시키고 데이터를 제공하는 서버와 데이터를 제공받는 클라이언트 모두의 성능을 향상시킬 수 있는 중요한 방법이다. 원본 데이터를 복제하여 저장하는 저장소를 캐시 저장소(cache store)라고 한다

데이터베이스

[데이터베이스] ACID와 CAP

2025. 7. 2.

데이터의 무결성과 일관성 데이터베이스에서 데이터의 무결성(integrity)이란 데이터가 올바른가, 데이터에 결점이 없는가에 대한 것이다. 동의어로는 정확성(correctness), 완전성(completeness), 신뢰성(reliability), 유효성(validation)이 있다. 무결성은 주로 하나의 데이터베이스 또

알고리즘

[알고리즘] 정렬

2025. 6. 12.

버블 정렬 리스트의 데이터를 처음부터 끝까지 하나씩 선택하여(N번), 인접한 데이터와 크기를 비교하여 정렬 순서에 맞게 서로 위치를 바꾸는 작업을 더 이상 비교할 데이터가 없을 때까지 최대 N번 수행한다. 정렬 알고리즘 중 구현이 가장 간단하지만 가장 비효율적인 알고리즘이다. 버블 정렬은 안정 정렬이다. 시간 복잡도 최선

라마인덱스

[RAG] Llmaindex

2025. 3. 12.

색인과 질의 색인 (indexing): 데이터를 정리하는 과정 데이터의 관련성 결정: 전체 데이터 중 어떤 데이터가 중요한지 판단 색인 방법 원본 데이터 색인 데이터 요약 및 데이터 요약본 색인 질의 (querying): 질문에 대한 적절한 답을 찾는 과정 (적절한 인덱스로부터 데이터를 가져오는 과정) 검색 (retrie

게시글을 더 불러오는 중...