본문 바로가기

Java65

[JAVA] java.nio.file을 사용한 간단한 메모장 만들기 java.nio.file 패키지를 사용한 모던 자바 파일 입출력(I/O) 방법과 사용자 입력을 처리하는 간단한 메모장을 만들어 보겠습니다. 언제 사용하면 좋을까요? 1. 설정 파일 또는 데이터 초안 생성: 사용자가 입력한 특정 키 값(첫 줄)을 파일 이름으로 하고 나머지 내용을 값으로 하는 설정 파일(.txt, .properties 등)의 초안을 만드는 데 활용할 수 있습니다.2. 사용자 생성 콘텐츠 저장: 사용자가 게시글 제목과 내용을 입력하면, 제목을 기반으로 파일 이름을 만들어 저장하는 간단한 시스템의 로직을 이해하는 데 도움이 됩니다. java.nio.file 장점1. 직관적인 API: Path 객체로 파일/디렉토리 경로를 명확하게 표현하고, Files 유틸리티 클래스로 다양한 파일 관련 작업을.. 2025. 4. 28.
[JAVA] 사용자 정의 예외 만들기 안녕하세요.오늘은 사용자 정의 예외를 만들어보겠습니다. 1. Checked 예외와 Unchecked 예외의 차이와 특징(1) Checked 예외 (체크드 예외)컴파일러가 예외 처리를 강제합니다.예외가 발생할 수 있는 코드를 사용할 때, 반드시 try-catch로 처리하거나 throws로 선언해야 합니다.주로 외부 환경(파일 입출력, 네트워크, 데이터베이스 등)과 관련된 예외입니다.예시: IOException, SQLExceptiontry { FileReader fr = new FileReader("test.txt");} catch (FileNotFoundException e) { System.out.println("파일이 없습니다!");} (2) Unchecked 예외 (언체크드 예외)컴파일러.. 2025. 4. 24.
[Java] HttpClient 사용해서 OpenAI GPT API 호출하기 안녕하세요 오늘은 OpenAI 에서 제공하는 API 를 호출해보도록 하겠습니다. OpenAI의 GPT 시리즈는 대표적인 LLM 중 하나이며, 우리는 OpenAI에서 제공하는 API를 통해 이 모델에 직접 질문을 보내고 응답을 받아보겠습니다. 즉, “프롬프트”라는 입력을 전달하고, 모델이 생성하는 자연어 응답을 받아볼 수 있습니다. LLM(Large Language Model, 대규모 언어 모델) 이란 말그대로 "엄청 큰 언어 모델" 입니다.수십억 개 이상의 단어, 문장, 문서를 학습해서 사람처럼 문장을 이해하고 생성하는 인공지능을 의미합니다. 1. 먼저 open ai 홈페이지에서 API 인증 키를 발급 받습니다. 2. Http 통신 (HttpClient) 으로 오픈 AI 의 서버에 요청.. 2025. 4. 23.
[Java] 옵저버 패턴 활용 예시 구현하기 오늘은 옵저버 패턴을 활용해 데이터를 업데이트하는 예시를 구현해보겠습니다. 옵저버 패턴은 주체(subject) 라 불리는 객체가 해당 객체 자신에게 의존하는 관찰자들(observer)의 목록을 관리하고, 주체의 상태가 변경될때마다 관찰자들에게 알려주는 디자인 패턴 입니다. Main 클래스public class Main { public static void main(String[] args) { // Subject(주체) 생성 Subject subject = new Subject(); // Observer(관찰자) 생성 Observer observer1 = new ConcreteObserver("Observer 1"); Observe.. 2025. 4. 19.
[JAVA] 예외 처리(Exception Handling) 1. 예외(Exception) vs 오류(Error)프로그래밍을 하다 보면 예외(Exception)와 오류(Error)라는 단어를 자주 접하게 됩니다. 자바에서 예외(Exception)와 오류(Error)는 모두 실행 중에 발생하는 문제 상황을 나타냅니다. 하지만, 이 둘은 본질적으로 다릅니다.(1) 예외(Exception)정의:예외는 프로그램 실행 중에 발생할 수 있는 예상 가능한 문제입니다.예를 들어, 파일을 읽으려는데 파일이 없거나, 배열의 잘못된 인덱스에 접근하는 경우가 이에 해당합니다.특징:주로 프로그래머의 실수나 외부 환경에서 발생합니다.예외 처리(Exception Handling)를 통해 문제를 복구하거나 적절히 대처할 수 있습니다.예외는 Exception 클래스를 상속받아 구현됩니다.예시:.. 2025. 4. 17.
[Java] Apache POI로 Excel 파일을 .txt로 변환하기 안녕하세요 오늘은 Apache POI 라이브러리를 사용하여 엑셀 파일을 텍스트 파일로 변환해보도록 하겠습니다 기존 엑셀 파일입니다 Main.javapublic class Main { public static void main(String[] args) throws Exception { FileInputStream fis = new FileInputStream("엑셀파일이 저장되어 있는 경로/vocab_sample.xlsx"); Workbook workbook = new XSSFWorkbook(fis); Sheet sheet = workbook.getSheetAt(0); BufferedWriter writer = new BufferedWrite.. 2025. 4. 16.
[Java] 자바 Record 불변 데이터 객체 쉽게 만들기 (Java 14+) 레코드(Record)란?Java 14부터 도입된 record는 불변(immutable) 데이터를 담기 위한 간결한 클래스 문법입니다.우리가 흔히 사용하는 DTO(Data Transfer Object)나 VO(Value Object) 클래스보다 훨씬 간단하고 명확하게 데이터를 표현할 수 있죠. 불변(Immutable) 데이터란?한 번 만들어진 이후, 내부 상태(값)를 바꿀 수 없는 객체를 의미.즉, 객체가 생성되고 나면 필드 값을 변경할 수 없고 외부에서 setter로 값을 바꾸는 것도 불가능 불변 객체는 데이터를 바꿀 수 없으므로,여러 스레드가 동시에 접근해도 동기화(synchronized) 처리 없이 사용할 수 있음. 예) 이 클래스는 setName()을 통해 객체의 상태(이름)를 바꿀 수 있어 → .. 2025. 4. 14.
[JAVA] Optional 클래스로 NullPointerException 방지하기 안녕하세요.오늘은 Optional 클래스를 활용해서 NullPointerException을 방지하는 방법을 알아보겠습니다. 1. NullPointerException이란?NullPointerException은 널값을 참조하려고 할 때 발생하는 런타임 에러입니다. 예를 들어, 아래 코드는 널값을 참조하려고 하기 때문에 에러가 발생합니다.String value = null;System.out.println(value.length()); // NullPointerException 발생 이 문제를 해결하기 위해 우리는 흔히 if문을 사용하여 널 체크를 합니다.if (value != null) { System.out.println(value.length());} else { System.out.prin.. 2025. 4. 10.
[Java] Queue 구현 예제 1. Queue 구현1.1. Queue의 개념Queue는 선입선출(FIFO, First In First Out) 방식의 자료구조입니다. 먼저 들어온 데이터가 먼저 나가는 구조입니다. 일상적인 예로는 줄 서기를 생각할 수 있습니다. 앞에 있는 사람이 먼저 나가는 구조입니다.1.2. 구현 방법Queue는 배열을 사용하여 구현할 수 있으며, front와 rear 포인터를 관리하면서 큐의 앞부분과 뒷부분을 추적합니다. 배열을 이용한 고정 크기 큐를 구현할 수 있습니다.1.3. Queue의 기능enqueue(value): Queue에 값을 추가.dequeue(): Queue에서 값을 제거하고 반환.peek(): Queue의 맨 앞 값을 확인(삭제하지 않음).isEmpty(): Queue가 비었는지 확인.isFul.. 2025. 4. 7.