Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
Tags
- 알고리즘
- 동적 프로그래밍 방법
- 인프런워밍업클럽
- 욕심쟁이 방법
- 순차탐색
- 분할정복 방법
- VI
- Less
- 인프런
- 오블완
- CS스터디
- oh-my-zsh
- mycli
- 네트워킹데이
- zsh theme
- zsh
- table status
- 맥
- MySQL
- cs
- spring boot
- 스터디2기
- 티스토리챌린지
- 터미널
- 이진탐색
- mysql 표
- Pager
- 오일러 경로
- mysql 표 출력
- 데이크스트라
Archives
- Today
- Total
Develop
10일차_디자인패턴, 디미터법칙, IO, FileIO 본문
안녕하세용!
10일차 3주 1일차 입니당
이제 자바문법이 몇개만 남겨두고 거의 끝나간다고 합니다.. 짝짝짝
공부 내용
데코레이터 패턴(Decorator Pattern)
- 객체의 기능을 확장할 때, 원래 객체를 변경하지 않고 동적으로 기능을 추가할 수 있도록 하는 패턴
- 클래스를 직접 수정하지 않고도 객체를 감싸면서 새로운 기능을 추가
- 상속이 아닌 조합 방식으로 기능을 추가하는 구조
디미터 법칙(Law of Demeter, LoD)
- '객체는 자신이 직접적으로 소유하고 있는 객체와만 상호작용해야 하며, 너무 많은 객체와 직접적인 관계를 가지면 안된다' 는 원칙
- 친구의 친구는 내친구가 아니다 라는 개념으로, 객체 간의 결합도를 낮추고 유지보수를 쉽게 만든다.
- 객체의 메서드를 호출할 때 . 은 한번만 사용
- 도매인 객체가 아니라, 데이터 클래스(VO, DTO)라면 지키지 않아도 상관없음
IO
- **파일 및 폴더 생성 (**File 클래스 활용)
- 절대 경로 vs 상대 경로
- 디렉토리 존재 여부 확인 후 생성 (exists())
FileIO
- 바이트 기반 파일 입출력
- FileInputStream (파일을 바이트 단위로 읽음)
- FileOutputStream (파일을 바이트 단위로 씀)
• 바이트 스트림을 이용한 파일 입출력
• 파일 복사 기능 (copyFile())
• **스트림을 사용한 후 반드시 close()해야 함 (**try-with-resources 활용 시 자동으로 닫힘)
FileWR
- 문자 기반 파일 입출력
- FileReader (텍스트 파일을 문자 단위로 읽음)
- FileWriter (텍스트 파일을 문자 단위로 씀)
- StringBuffer 를 활용하여 문자열 조작
- 파일을 줄 단위로 읽어오는 방법 (read())
bufferedIO
- 버퍼 기반 바이트 스트림
- 버퍼를 사용하여 입출력 성능 향상
- 버퍼 크기(기본 8192바이트)를 사용하여 성능을 개선
- 기본 스트림과 함께 사용 (FileInputStream, FileOutputStream)
- BufferedInputStream (바이트 입력을 버퍼를 이용해 빠르게 읽음)
- BufferedOutputStream (바이트 출력을 버퍼를 이용해 빠르게 씀)
- **바이트 기반 파일 복사 (**copyFile() 메서드 구현)
bufferdWR
- 버퍼 기반 문자 스트림
- 버퍼를 사용하여 문자 기반 입출력 성능 향상
- 파일을 줄단위로 읽고 쓰기(readLin())
- 문자열을 한 줄 씩 저장하고 출력하기(write(), StringBuffer 활용)
- BufferedReader (문자 기반 입력을 버퍼를 이용해 빠르게 읽음)
- BufferedWriter (문자 기반 입력을 버퍼를 이용해 빠르게 씀)
오늘도 수고하셨습니다. 바이바이..
'백엔드 > KDT_Programmers' 카테고리의 다른 글
| 12일차_MySQL, DBeaver 설치, DB 이론, Java 프로젝트에서 .env 파일 적용하기(feat. 나름 딥다이브) (0) | 2025.03.20 |
|---|---|
| 11일차_IO class, Gemini API KEY 발급 및 Postman 테스트, HTTP (0) | 2025.03.19 |
| 9일차_Lambda, Record, Stream, Optional, Reduce 등 (0) | 2025.03.18 |
| 8일차_Set, Map, Stack, Queue 등 (0) | 2025.03.14 |
| 7일차_Collection, ArrayList, LinkedList, Iterator 등 (0) | 2025.03.14 |