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