일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- NestJS 요청흐름
- Generic method
- HandlerMethod
- CQS
- 벌크연산
- pessimistic lock
- cross-cutting concerns
- demand paging
- type eraser
- Transaction
- API
- assertJ
- SPOF
- CORS
- generic type
- wrapper class
- COPYOFRANGE
- TDZ
- 역정규화
- optimistic lock
- ExceptionResolver
- hoisting
- tracking-modes
- 단어변환
- 프로그래머스
- RequestMappingHandlerMapping
- propagation
- #@Transacional
- Java
- IllegalStateException
- Today
- Total
목록Language/Java (59)
jingyulog

입출력을 뜻하는 것으로, 입력은 키보드, 네트워크, 파일 등으로부터 받을 수 있고, 출력은 화면, 네트워크, 파일 등에 할 수 있다. 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..
추상 클래스나 인터페이스의 추상 메서드를 구현하기 위해 생성자 뒤에 중괄호가 나오고, 코드를 오버라이딩하여 구현한다. Car car = new Car() { @Override public void a() { System.out.println("이름없는 객체의 a 메서드 오버라이딩"); } }; car.a(); public class MyRunnableExecute { public void execute(MyRunnable myRunnable) { myRunnable.run(); } } MyRunnable m = new MyRunnable() { @Override public void run() { System.out.println("달릴 수 있다."); } }; MyRunnableExecute e = n..
싱글톤 패턴 private 생성자를 만든다. 즉, 외부에서 인스턴스를 생성하지 못하게 한다. 자기 자신 인스턴스를 참조하는 static한 필드를 선언한다. 2번에서 생성한 인스턴스를 반환하는 static한 메서드를 만든다. public class BeanFactory { // 2. 자기 자신 인스턴스를 참조하는 static한 필드를 선언한다. private static BeanFactory instance = new BeanFactory(); // 1. private 생성자를 만든다. 즉, 외부에서 인스턴스를 생성하지 못한다. private BeanFactory() { } // 3. 2번에서 생성한 인스턴스를 반환하는 static한 메서드를 만든다. public static BeanFactory getI..

요구사항을 받았을 때, 우리는 아키텍처를 기반으로 어떤 기능을 만들어야 할지부터 고민한다. 즉, 만들어야 할 기능들이 선언만 되어있고, 관련된 것들끼리 묶은 후 이름을 지어주는데, 이를 인터페이스라고 한다. 인터페이스 작성 문법 인터페이스의 모든 필드는 public static final이어야 하며, 모든 메서드는 public abstract이어야 한다. 단, public, final, abstract 는 생략하면 자동으로 붙는다. Java 8부터는 default 메서드와 static 메서드도 선언이 가능하다. /** * 1. 1 ~ 45 까지 써져있는 Ball을 로또 기계에 넣는다. * 2. 로또 기계에 있는 Ball들을 섞는다. * 3. 섞인 Ball 중에서 6개를 꺼낸다. */ public inte..