전체 글 13

IllegalStateException - 지금 상태에서 호출하면 안 되는 메서드

✅ java.lang.IllegalStateExceptionException in thread "main" java.lang.IllegalStateException: Already initialized at com.example.Initializer.init(Initializer.java:18) 🔍 자주 발생하는 케이스1. 이미 초기화된 상태에서 다시 초기화 시도public class Initializer { private boolean initialized = false; public void init() { if (initialized) { throw new IllegalStateException("이미 초기화되었습니다."); } initia..

DevLog/Java 2025.05.18

java.lang.IllegalArgumentException - 메서드 호출이 잘못됐다는 신호

✅ java.lang.IllegalArgumentExceptionException in thread "main" java.lang.IllegalArgumentException: Width must be greater than zero at com.example.ImageResizer.resize(ImageResizer.java:42) 🔍 자주 발생하는 케이스1. 유효하지 않은 값이 들어왔을 때public void setAge(int age) { if (age 메서드에 유효하지 않은 값이 전달되었을 때 사용자가 명시적으로 던짐2. 외부 라이브러리 내부에서 발생Files.readString(Path.of("")); // IllegalArgumentException비어있는 경로나 null 값을 넘..

DevLog/Java 2025.05.18

java.util.ConcurrentModificationException - 반복문에서 리스트 수정하면 생기는 문제

✅ java.util.ConcurrentModificationExceptionException in thread "main" java.util.ConcurrentModificationException at java.base/java.util.ArrayList$Itr.checkForComodification(ArrayList.java:1043) at java.base/java.util.ArrayList$Itr.next(ArrayList.java:997) 🔍 자주 발생하는 케이스1. for-each 문에서 remove 시도List list = new ArrayList(); list.add("a"); list.add("b"); for (String item : list) { if (item.equ..

DevLog/Java 2025.05.18

java.lang.NullPointerException - 왜 null인지 모를 때

✅ java.lang.NullPointerExceptionException in thread "main" java.lang.NullPointerException at com.example.MyClass.myMethod(MyClass.java:10) 🔍 자주 발생하는 케이스 1. Spring에서 주입 실패@Autowired private SomeService service; service.doSomething(); // 여기서 NullPointerException원인: 해당 빈이 스프링 컨텍스트에 등록되지 않았거나, 컴포넌트 스캔 대상이 아님해결: @Component, @Service, @Repository 등 어노테이션 누락 여부 확인2. Map에서 존재한다고 착각한 keyMap userMap = n..

DevLog/Java 2025.05.18

MySQL 오류: Illegal mix of collations for operation 'like'

Illegal mix of collations (utf8mb4_0900_ai_ci,COERCIBLE) and (utf8mb4_unicode_ci,COERCIBLE) for operation 'like' Illegal mix of collations for operation 오류는MySQL에서 문자열 비교 연산(LIKE, =, IN)을 수행할 때, 비교에 사용되는 문자열들의 collation이 서로 다를 경우 발생한다. 그중에서 'LIKE' 오류는 LIKE 비교 연산에서 좌변과 우변의 collation이 일치하지 않거나, 우변 내부의 구성 요소들끼리 collation이 달라 발생한다. ✅ Character Set과 Collation 개념 정리1. Character Set (문자 집합)데이터를 어떤 문자..

DevLog/Java 2025.05.01

IntelliJ JavaDoc 템플릿 설정 및 사용법 정리

메소드 주석을 원하는 템플릿으로 자동 생성할 수 없나?그래서 방법을 정리해보기로 했다. 기존 사용 방법 (Mac 기준)1. /** 입력 후 EnterIntelliJ IDEA에서는 메소드 위에 /**를 입력하고 Enter를 누르면 기본 JavaDoc 양식이 자동으로 생성된다.하지만 이 방식은 IntelliJ에 기본 내장된 형식을 따르기 때문에, 별도로 설정한 커스텀 템플릿은 적용되지 않는다. 2. Command + Option + Shift + G커스텀 템플릿을 적용하려면 반드시 Command + Option + Shift + G (Generate JavaDoc) 단축키를 사용해야 한다.따라서 이 글에서는 IntelliJ 기본 템플릿 대신, 직접 설정한 템플릿을 적용하는 방법을 소개한다.JavaDoc..

DevLog/Intellij 2025.04.27

Gradle 의존성 정리

implementation, api, compileOnly, runtimeOnly 차이?이름만 보고 쓰기엔 헷갈려서 정리해두기로 했다. ✅ 기본 개념 요약키워드상황컴파일 시 포함실행 시 포함다른 모듈에서 사용implementation내부 구현용. 외부에는 노출하지 않음✅✅❌api외부에 노출되는 라이브러리✅✅✅compileOnly컴파일만 필요. 실행 시엔 없어야 함✅❌❌runtimeOnly런타임에만 필요. 컴파일엔 불필요❌✅❌ 📌 키워드별 설명과 예시1. implementationimplementation 'org.springframework.boot:spring-boot-starter-web' 대부분의 의존성은 이걸로 선언하면 충분하다.implementation은 다른 모듈에서 이 모듈을 의존하더라도..

DevLog/Java 2025.04.25

Java와 Spring Boot 버전 조합 정리

Java 몇 버전에 Spring Boot 뭐 써야 하지?그래서 그 결과를 LTS 중심으로 정리해두기로 했다. ✅ Java 버전별 특징 (LTS 기준)버전출시주요 특징비고82014람다, Stream API, Optional, java.time레거시의 주력, 여전히 많이 사용됨112018var, HttpClient, isBlank, GC 개선Java 8 이후 가장 안정적으로 자리잡은 버전172021record, sealed class, switch 개선, 텍스트 블록Spring Boot 3.x의 최소 요구 버전212023패턴 매칭, 가상 쓰레드 (Virtual Threads)최신 LTS, 일부 기능은 실험적 적용 단계💡 Java는 8 이후로 6개월 주기의 릴리스 체계를 따르며, 주요 LTS는 11, 17,..

DevLog/Java 2025.04.25

LangChain #5 – 챗봇 구현

이전 글 LangChain #4 – LangChain 도구(tool)란 무엇인가? 에서는 LangChain 도구를 정의하고, 이를 Agent로 연결해 자동 호출과 응답 생성 구조까지 구현해보았다.이번 글에서는 이 Agent를 백엔드 API로 감싸고, 간단한 웹 UI를 붙여 실제 챗봇 형태로 동작하도록 만드는 과정을 처음부터 한 번에 정리해보려고 한다.프로젝트 목표 - LangChain을 활용한 문서 기반 챗봇 구축- FastAPI로 API 서버 구현- 간단한 HTML/CSS/JS로 챗봇 웹 UI 연결까지 1. 프로젝트 생성 및 기본 세팅프로젝트 생성 및 파이썬 버전 설정# 프로젝트 생성poetry new faq-chatbot# 프로젝트로 이동cd faq-chatbot# 파이썬 버전 설정poetry env..

DevLog/LangChain 2025.04.17

LangChain #4 – LangChain 도구(tool)란 무엇인가?

LangChain은 LLM을 중심으로 다양한 기능을 조합할 수 있는 프레임워크로앞선 글들에서는 주로 프롬프트, 문서, 체인 중심으로 구성했지만 LangChain에서 진짜 유용한 기능 중 하나는 바로 도구(tool)이다. 이번 글에서는 도구(tool)에 대한 개념과 사용하는 방법을 정리해보려 한다.LangChain 구성요소구성요소설명LLM텍스트 응답 생성Prompt입력 포맷 정의Chain여러 구성요소 연결 흐름Retriever유사한 문서 검색ToolLLM이 사용할 수 있는 외부 기능Agent여러 도구를 상황에 따라 선택적으로 실행 도구(tool)란?도구(tool)는 함수, API, 시스템 명령어 등 '행동 가능한 것들'을 래핑한 구성이다.LangChain에서는 @tool 데코레이터를 통해 함수를 도구로 ..

DevLog/LangChain 2025.04.15