| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- Generic method
- hoisting
- SPOF
- 역정규화
- TDZ
- assertJ
- 벌크연산
- ExceptionResolver
- NestJS 요청흐름
- #@Transacional
- generic type
- demand paging
- pessimistic lock
- CQS
- CORS
- COPYOFRANGE
- optimistic lock
- Transaction
- wrapper class
- 단어변환
- Java
- HandlerMethod
- 프로그래머스
- RequestMappingHandlerMapping
- type eraser
- tracking-modes
- IllegalStateException
- API
- cross-cutting concerns
- propagation
- Today
- Total
목록Language/Java (62)
jingyulog
Composite Pattern 과 Decorator Pattern 폴더와 파일을 다이어그램으로 표현해보자 폴더와 파일의 공통점으로 FileComponent로 뽑아낸다. 여기서 핵심은 폴더는 파일 컴포넌트를 가진다. 즉, 폴더는 파일 컴포넌트를 구현하는 폴더나 파일을 가질 수 있다는 소리이다. (일체화). 이런 형식을 Composite Pattern이라고 한다. 이 내용을 아래 코드로 작성할 수 있다. package theory.composite; public abstract class Node { private String name; // 폴더와 파일의 이름 public Node(String name) { this.name = name; } public String getName() { return n..
I/O Stream이란 byte나 char의 흐름이다. 그리고 byte 단위의 입출력 클래스는 InputStream, OutputStream의 후손이다. 마찬가지로 char 단위의 입출력 클래스는 Reader, Writer의 후손이다. 그리고 이들은 모두 추상 클래스이다. 또한 자바 I/O 객체는 사용하면 꼭 close를 해줘야한다. https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/package-summary.html java.io (Java SE 17 & JDK 17) package java.io Provides for system input and output through data streams, serialization a..
java.io.File 클래스는 파일의 크기, 파일의 접근 권한, 파일의 삭제, 이름 변경 등의 작업을 할 수 있는 기능을 제공해 준다. (디렉토리도 파일 취급) 하지만, 파일 인스턴스를 만들었다고 해서 실제 폴더에 파일이 생성되는 것은 아니다. https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/File.html File (Java SE 17 & JDK 17) All Implemented Interfaces: Serializable, Comparable An abstract representation of file and directory pathnames. User interfaces and operating systems use..
입출력을 뜻하는 것으로, 입력은 키보드, 네트워크, 파일 등으로부터 받을 수 있고, 출력은 화면, 네트워크, 파일 등에 할 수 있다. Java I/O에서 사용되는 객체는 자바에서 사용되는 객체이다. 즉, Java I/O가 제공하는 객체는 어떤 대상으로부터 읽어들여서 어떤 대상에게 쓰는 일을 한다. 또한 Java I/O는 조립되어 사용되도록 만들어졌다. 즉, 아래와 같이 Decorator 패턴으로 만들어졌다. 장식할 대상을 주인공으로 보고 이 주인공을 장식한다고 하자. 케이크의 빵이 주인공이라고 하면, 이 빵에 크림과 딸기 등의 장식을 덧붙일 수 있다. 위 그림에서 보면 ConcreteComponent가 주인공이고, Decorator가 장식인데, Decorator는 Component를 가질 수 있다. 즉 ..
제네릭 다음의 ObjectBox 클래스는 어떤 오브젝든지 저장할 수 있고, 어떤 오브젝든지 꺼낼 수 있다. 하지만 꺼내서 사용할 때는 원래 타입으로 변환시키는 번거로운 과정이 필요하다. ObjectBox box = new ObjectBox(); box.setObject("kim"); String str = (String) box.getObject(); System.out.println("str.toUpperCase() = " + str.toUpperCase()); box.setObject(5); Integer i = (Integer) box.getObject(); System.out.println(i.intValue()); 이러한 과정을 해소시키위해 제네릭이라는 문법이 등장했다. 그리고 여기서 T는 아직..
이차원 가변 배열의 선언과 초기화 타입[][] 변수명 = new 타입[행의수][]; 변수명[행의인덱스] = new 타입[열의수]; Arrays 배열을 다룰때 사용하는 유틸리티로 java.util이라는 패키지에 포함되어 있다. 여기서 java.lang 패키지에 있는 클래스를 제외한 패키지 내의 클래스를 사용하려면 해당 패키지 경로를 import 해줘야 한다. package theory.array; import java.util.Arrays; public class ArrayMain { public static void main(String[] args) { int[] copyFrom = {1, 2, 3}; int[] copyTo1 = Arrays.copyOf(copyFrom, 5); int[] copyTo..