| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- HandlerMethod
- tracking-modes
- generic type
- pessimistic lock
- Transaction
- SPOF
- IllegalStateException
- Java
- CORS
- RequestMappingHandlerMapping
- optimistic lock
- wrapper class
- CQS
- Generic method
- cross-cutting concerns
- #@Transacional
- COPYOFRANGE
- hoisting
- TDZ
- 벌크연산
- 프로그래머스
- 단어변환
- demand paging
- ExceptionResolver
- 역정규화
- type eraser
- propagation
- NestJS 요청흐름
- API
- assertJ
- Today
- Total
목록Language/Java (61)
jingyulog
스레드 기본 정보Thread 클래스는 스레드를 생성하고, 관리하는 기능을 제공한다.public class ThreadInfoMain { public static void main(String[] args) { // main thread Thread mainThread = Thread.currentThread(); log("mainThread = " + mainThread); log("mainThread.threadId() = " + mainThread.threadId()); log("mainThread.getName() = " + mainThread.getName()); log("mainThread.getPrioritiy()..
자바 메모리 구조// 예시 코드public class OrderService { // 1. static 변수 public static String appName = "MyOrderApp"; public static int userCount = 0; // 2. 인스턴스 변수 (필드) private int orderId; // 3. 메서드 public void createOrder(int id) { // 여기서 Order created가 리터럴 상수 System.out.println("Order created: " + id); }}Method Area: 메서드 영역은 프로그램을 실행하는데 필요한 공통 데이터를 관리한다. 이 영역은 프로그..
개요자료 구조에서 순회는 자료 구조에 들어있는 데이터를 차례대로 접근해서 처리하는 것을 의미한다.그런데 다양한 자료 구조가 있고, 각각의 자료 구조마다 데이터를 접근하는 방법이 다 다르다. 가령 배열 리스트는 index를 size까지 차례대로 증가시키면서 순회해야 하고, 연결 리스트는 node.next를 사용해서 node의 끝이 null일 때 까지 순회해야 한다. 이렇듯 각 자료 구조마다 순회하는 방법이 서로 다르기 때문에 각 자료 구조의 순회 방법을 배워야 한다. 그리고 순회 방법을 배우려면 각 자료 구조의 내부 구조도 알아야 한다. 하지만 우리는 단지 자료 구조에 들어있는 모든 데이터를 단순히 순서대로 접근해서 출력하거나 계산하고 싶을 뿐이다.따라서 결국에 우리는 자료 구조의 구현과 관계 없이 모든 ..
제네릭의 타입 매개변수와 타입 인자제네릭의 핵심은 사용할 타입을 미리 결정하지 않는다는 점이다. 즉, 클래스 내부에서 사용하는 타입을 클래스를 정의하는 시점에 결정하는 것이 아니라, 해당 클래스를 실제 사용하는 생성 시점에 클래스 내부에서 사용할 타입을 결정하는 것이다. 이를 쉽게 비유하면 메서드의 매개변수와 인자의 관계와 비슷하다. 차이가 있다면 메서드의 매개변수는 사용할 값에 대한 결정을 나중으로 미루는 것이고, 제네릭의 타입 매개변수는 사용할 타입에 대한 결정을 나중으로 미루는 것이다.메서드는 매개변수에 인자를 전달해서 사용할 값을 결정한다.제네릭 클래스는 타입 매개변수에 타입 인자를 전달해서 사용할 타입을 결정한다.용어 정리제네릭 타입(Generic Type)클래스나 인터페이스를 정의할 때, 타입..
개요우리가 작성한 .java 파일은 JDK에 포함된 javac(java compiler)를 통해 컴파일된다. 이 과정에서 JVM에 이해할 수 있는 바이트 코드로 변환되어 .class 파일이 생성된다.이후부터는 JVM이 담당하는데, 먼저 Class Loader가 바이트 코드를 JVM 메모리에 동적으로 로드한다. 이렇게 로드된 바이트 코드는 Method Area에 저장되며, 이때, Loading, Linking, Initiaiization 단계를 거친다.그다음 실행 엔진(Execution Engine)이 로드된 바이트 코드를 실행한다. 하지만 바이트 코드는 컴퓨터가 읽을 수 없기 때문에 Interpreter와 JIT 컴파일러(Just-In-Time Compiler)를 함께 사용하여 기계어로 변환한다.Inte..
public T genericMethod(T o) {// 제네릭 메소드 ... } [접근 제어자] [반환타입] [메소드명]([제네릭타입] [파라미터]) { // 텍스트 } 제네릭 메서드는 클래스와 다르게 반환타입 이전에 제네릭 타입을 선언한다. 그러면 genericMethod는 파라미터 타입에 따라 T 타입이 결정된다. 즉, 클래스에서 지정한 제네릭 유형과 별도로 메서드에서 독립적으로 제네릭 유형을 선언하여 쓸 수 있다. 여기서에 제네릭 메서드가 필요한 이유에 대한 힌트를 얻을 수 있다. 바로 정적 메서드로 선언할 때 필요하기 때문이다. 즉, 객체 생성과 관계 없이 독립적으로 static 메서드에서 사용할 제네릭 타입이 필요한 것이다.