일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- Orace 18c
- Oracle Express Edition
- 윈도우 Oracle
- Oracle 18c 설치
- Oracle 사용자명 입력
- Oracle 테이블 띄어쓰기
- ora-01722
- 서평단
- ORA-12899
- oracle 18c
- Oracle 윈도우 설치
- 오라클 캐릭터셋 변경
- Oracle 18c HR
- 오라클 캐릭터셋 확인
- Oracle 테이블 대소문자
- Oracle 18c HR schema
- Oracle 사용자명
- 오라클 캐릭터셋 조회
- 무료 오라클 데이터베이스
- ORA-00922
- 비전공자를 위한 데이터베이스 입문
- 무료 오라클 설치
- Oracle 초기 사용자
- oracle
- Today
- Total
목록전체 글 (418)
The Nirsa Way

※ 인프런 강의 Spring AI 실전 가이드: RAG 챗봇 만들기를 실습하는 내용입니다.※ 해당 강의 코드를 코틀린 → 자바로 언어를 바꿔 진행하기 때문에 일부 코드 및 구현부가 다를 수 있습니다.※ 실습이지만 코드를 직접 까보는 내용을 기록하는 포스팅이므로 강의 내용과 상이할 수 있습니다.[Spring AI] #1. LLM 호출 실습 시작 – 구조 먼저 실행해보기[Spring AI] #2. AiConfig 분석 – OpenAI API 연결 설정 방법[Spring AI] #3-1. ChatService 분석 – 메시지 생성과 모델 호출 흐름[Spring AI] #3-2. ChatService 분석 – buildRequestPrompt()로 요청 준비하기[Spring AI] #3-3. ChatServic..

finalizer와 cleaner 사용을 피하라객체 소멸자 finalizer와 cleaner는 GC에 의해 실행되며 실행 시점 보장이 없기에 예측되지 않습니다. 즉 GC의 알고리즘에 따라 천차만별이며 테스트 과정의 JVM에서는 잘 동작 했지만 배포된 서버에서는 정상적인 동작을 하지 않아 문제가 발생할 수 있습니다.아래의 코드는 finalize()의 예시 코드이며 객체 생성한 다음 참조 해제하여 gc를 요청하는 코드입니다. 즉 gc는 obj 객체의 참조가 비워져 있으므로 메모리를 수거하려고 할 것 입니다. 또한 finalize()를 오버라이딩 했음으로 GC가 해당 객체를 수거할 때 finalize() 메서드가 호출됩니다.public class Test { @Override protected vo..
다 쓴 객체 참조를 해제하라메모리 누수(Member Leak)을 방지하기 위해 다 쓴 객체는 참조를 해제하라는 말 뜻입니다. 일반적으로 자바에서는 GC(Garbage Collector)가 객체를 회수하지만 GC의 특성상 "해당 객체를 참조하는 곳이 없어야 수거" 합니다.즉, 더 이상 객체를 사용하지 않지만 어디선가 참조되고 있다면 GC는 해당 객체를 수거하지 않으며 메모리 누수가 발생하는 경우가 생길 수 있습니다. 예시는 아래와 같은 코드입니다.public class Stack { private Object[] elements; private int size = 0; public Stack() { elements = new Object[10]; } public v..

※ 인프런 강의 Spring AI 실전 가이드: RAG 챗봇 만들기를 실습하는 내용입니다.※ 해당 강의 코드를 코틀린 → 자바로 언어를 바꿔 진행하기 때문에 일부 코드 및 구현부가 다를 수 있습니다.※ 실습이지만 코드를 직접 까보는 내용을 기록하는 포스팅이므로 강의 내용과 상이할 수 있습니다.[Spring AI] #1. LLM 호출 실습 시작 – 구조 먼저 실행해보기[Spring AI] #2. AiConfig 분석 – OpenAI API 연결 설정 방법[Spring AI] #3-1. ChatService 분석 – 메시지 생성과 모델 호출 흐름[Spring AI] #3-2. ChatService 분석 – buildRequestPrompt()로 요청 준비하기[Spring AI] #3-3. ChatServic..

※ 인프런 강의 Spring AI 실전 가이드: RAG 챗봇 만들기를 실습하는 내용입니다.※ 해당 강의 코드를 코틀린 → 자바로 언어를 바꿔 진행하기 때문에 일부 코드 및 구현부가 다를 수 있습니다.※ 실습이지만 코드를 직접 까보는 내용을 기록하는 포스팅이므로 강의 내용과 상이할 수 있습니다.[Spring AI] #1. LLM 호출 실습 시작 – 구조 먼저 실행해보기[Spring AI] #2. AiConfig 분석 – OpenAI API 연결 설정 방법[Spring AI] #3-1. ChatService 분석 – 메시지 생성과 모델 호출 흐름[Spring AI] #3-2. ChatService 분석 – buildRequestPrompt()로 요청 준비하기[Spring AI] #3-3. ChatServic..

※ 인프런 강의 Spring AI 실전 가이드: RAG 챗봇 만들기를 실습하는 내용입니다.※ 해당 강의 코드를 코틀린 → 자바로 언어를 바꿔 진행하기 때문에 일부 코드 및 구현부가 다를 수 있습니다.※ 실습이지만 코드를 직접 까보는 내용을 기록하는 포스팅이므로 강의 내용과 상이할 수 있습니다.[Spring AI] #1. LLM 호출 실습 시작 – 구조 먼저 실행해보기[Spring AI] #2. AiConfig 분석 – OpenAI API 연결 설정 방법[Spring AI] #3-1. ChatService 분석 – 메시지 생성과 모델 호출 흐름[Spring AI] #3-2. ChatService 분석 – buildRequestPrompt()로 요청 준비하기[Spring AI] #3-3. ChatServic..

※ 인프런 강의 Spring AI 실전 가이드: RAG 챗봇 만들기를 실습하는 내용입니다.※ 해당 강의 코드를 코틀린 → 자바로 언어를 바꿔 진행하기 때문에 일부 코드 및 구현부가 다를 수 있습니다.※ 실습이지만 코드를 직접 까보는 내용을 기록하는 포스팅이므로 강의 내용과 상이할 수 있습니다.[Spring AI] #1. LLM 호출 실습 시작 – 구조 먼저 실행해보기[Spring AI] #2. AiConfig 분석 – OpenAI API 연결 설정 방법[Spring AI] #3-1. ChatService 분석 – 메시지 생성과 모델 호출 흐름[Spring AI] #3-2. ChatService 분석 – buildRequestPrompt()로 요청 준비하기[Spring AI] #3-3. ChatServic..

오토박싱(auto-boxing)과 언박싱(unboxing)자바는 기본형(int, long, double, ...)과 래퍼 클래스(Integer, Long, Double, ...)를 구분합니다. 기본형과 래퍼 클래스는 오토박싱과 언박싱을 통해 자동으로 이루어지지만 때로는 성능 저하로 이루어질 수 있습니다.우선 아래의 코드는 int 타입(10)을 Integer로 자동으로 변환시켜주는 오토 박싱의 예시입니다. 자바에서 숫자는 기본적으로 int 이므로 숫자 10은 기본형, 데이터 타입은 Integer인 래퍼클래스 이기에 자동으로 변환 시켜줍니다.Integer num = 10; 언박싱은 반대로 래퍼 클래스를 기본형으로 자동 변환해주는 것을 뜻하는데, 언박싱에 대한 내용은 포스팅 하단에 남기겠습니다. 오토 박싱의..

정규표현식 처리 성능 개선Java에서 문자열 정규식 검증을 위해 흔히 String.matches()를 사용합니다. 하지만 matches()는 내부적으로 Pattern 객체를 호출마다 새로 생성합니다. 즉, 한번 쓰고 버려져서 가비지 컬렉션 대상이 되는 객체가 매번 생성되는 것 입니다. 1회성이면 차이는 없지만 루프 또는 대량 처리에서 사용하면 심각한 성능 저하를 가져올 수 있습니다.public static void main(String[] args) { List inputs = Arrays.asList( "1234", "abc", "9876", "12a4", "0000", "42", "99999" ); // String.matches() - 매번 Pattern 객체 생성 ..

※ 정적 팩터리 메서드란 : https://nirsa.tistory.com/428 생성자 대신 정적 팩터리 메서드를 활용하라Java9 부터는 Boolean(String) 생성자를 사용하면 deprecated(사용 자제, 향후 제거 예정) 되어있는 것을 확인할 수 있는데 항상 새 인스턴스를 반환하므로 비효율적이고, 문자열이 true 외의 값이면 모두 false를 반환하는데 직관적이지 않은 이유가 있습니다.※ Boolean(String) 생성자는 deprecated 되었지만 예전부터 존재했기에 호환성에 대한 문제와 valueOf(String)으로 바꾸게 되면 내부에서 TRUE / FALSE를 참조할 때 순환 참조 이슈가 발생할 가능성 등이 많아 현실적으로 제거 되기엔 힘들지 않을까 싶습니다. 불필요한 객체 ..