일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 서평단
- 윈도우 Oracle
- 비전공자를 위한 데이터베이스 입문
- Oracle Express Edition
- Oracle 사용자명
- ora-01722
- 무료 오라클 데이터베이스
- Oracle 윈도우 설치
- Oracle 사용자명 입력
- Oracle 테이블 띄어쓰기
- 오라클 캐릭터셋 확인
- oracle
- 오라클 캐릭터셋 변경
- Oracle 18c HR
- Oracle 초기 사용자
- oracle 18c
- ORA-00922
- 무료 오라클 설치
- 오라클 캐릭터셋 조회
- Oracle 테이블 대소문자
- Orace 18c
- Oracle 18c HR schema
- ORA-12899
- Oracle 18c 설치
- Today
- Total
목록전체 글 (444)
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..

※ 인프런 강의 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를 참조할 때 순환 참조 이슈가 발생할 가능성 등이 많아 현실적으로 제거 되기엔 힘들지 않을까 싶습니다. 불필요한 객체 ..
불필요한 객체 생성을 피하라이미 생성된 객체를 재사용할 수 있다면 새로운 객체를 만들지 말고 기존에 사용중인 객체를 재사용하자라는 의미로써 객체 생성에 의한 비용을 줄여 GC 및 메모리 낭비를 줄이기 위함입니다. 아래와 같은 코드가 있다면 new String()에 의해 코드가 실행될 때 마다 매번 새로운 객체를 heap에 생성합니다. 같은 값을 가지고 있으므로 기존 객체를 재사용하면 되지만, 매번 새로운 객체를 만들기 때문에 매우 비효율적으로 동작하게 됩니다.System.out.println(new String("hello")); // 새 객체 생성 1System.out.println(new String("hello")); // 새 객체 생성 2// 또는 String str = new String("he..
자원을 직접 명시할 경우객체가 직접 필요한 의존 객체를 생성하지 말고 외부에서 주입받도록 하여 결합도를 낮추자는 의미로 사용되며 의존 객체 주입 패턴이라고 불리웁니다. 아래의 코드에서는 자원을 직접 명시하여 특정 구현체에 대하여 강하게 결합된 형태를 확인할 수 있습니다.public class MailService { private final MailSender mailSender; public MailService() { this.mailSender = new SmtpMailSender(); // 직접 객체 생성 } public void sendWelcomeMail(String email) { mailSender.send(email, "어서오세요.", "참여..

기본 타입의 값 또는 관련 메서드를 모아놓는 용도인스턴스화를 막기 위해 "생성자를 안쓰면 되지 않나?" 라고 생각할 수 있지만, 개발자가 생성자를 구현하지 않을 경우 컴파일러가 public 기본 생성자를 만들어주기 때문에 private 생성자를 사용하여 인스턴스화를 막아야 합니다.우선 첫번째로 java.util.Math는 private 생성자를 사용하여 인스턴스화를 막아둔 모습을 확인할 수 있습니다. Math처럼 기본 타입의 값들을 모아놓는 용도로 사용하기 위해 인스턴스화를 막아두는 케이스가 있습니다. 두번째로는 아래의 코드처럼 모든 메서드가 static인 클래스에서도 모든 메서드가 정적 메서드이므로 인스턴스화를 할 이유가 없기 때문에 이러한 클래스를 구현할 때 private 생성자를 사용하여 인스턴스화..

싱글턴(Singleton) 이란?클래스의 인스턴스가 오직 하나만 생성이 가능하도록 보장하는 디자인 패턴 public static final 필드 방식의 싱글턴public static final을 사용하여 인스턴스를 생성하는 방식입니다. 하지만 리플렉션(AccessibleObject.setAccessible)에 의해 private 생성자를 호출할 수 있는 방법이 존재하여 싱글턴임을 100% 보장하지 않습니다.import java.lang.reflect.Constructor;import java.lang.reflect.InvocationTargetException;public class Main { public static void main(String[] args) throws NoSuchMethodEx..