| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- CORS
- ExceptionResolver
- wrapper class
- generic type
- SPOF
- TDZ
- Java
- 역정규화
- RequestMappingHandlerMapping
- demand paging
- Transaction
- 프로그래머스
- optimistic lock
- propagation
- cross-cutting concerns
- assertJ
- NestJS 요청흐름
- 벌크연산
- type eraser
- IllegalStateException
- HandlerMethod
- #@Transacional
- CQS
- API
- Generic method
- tracking-modes
- 단어변환
- pessimistic lock
- hoisting
- COPYOFRANGE
- Today
- Total
목록Language/Java (62)
jingyulog
static method는 객체 생성이나 유틸리티 관련에서 사용될 때가 있다. 되도록 instance method를 사용한다.
자바 API 자바 API란 자바 개발자가 제공하는 명령어를 말한다. API 문서란 이런 명령어들의 사용법과 규격을 제공하는 문서이다. 생성자의 접근 제한자 생성자의 접근 제한자가 private하다는 것은 instance 생성을 못하게 한다는 의미이다. 그렇게 instance를 생성하지 못하면 instance method들은 사용할 수 없게되고, static이 붙은 클래스 메서드만 사용이 가능하게 된다. Math 클래스 Math 클래스를 만든 사람은 여러 개의 instance를 생성하지 못하게 함으로써 메모리를 절약할 수 있도록 하고, Math.method() 형식으로 쉽게 호출하도록 만들었다.
자바 소스는 javac 명령을 통해 컴파일된다. (javac VendingMachine.java) 컴파일 후 실행할 때, main 메서드를 가진 클래스를 실행한다. (java VendingMachineMain). 즉, JVM 이 VendingMachineMain을 실행해주게 된다. 그렇다면 JVM은 VendingMachineMain을 어디서 찾아서 실행할까? 즉, 정리해서 질문하면, javac를 이용해 compile을 하면, 소스 파일이 있던 곳에 class파일이 생성된다. 그렇다면 java VendingMachineMain이라고 실행하면 JVM은 어디서 찾을까? JVM이 클래스를 실행하려면, 일단 클래스를 찾아야 한다. 이 때, JVM이 VendingMachineMain 클래스를 java가 실행되는 경..
자바는 JVM덕분에 OS에 독립적인 특성을 가지고 있다. 그럼 JVM의 어떤 기능 때문에 OS에 독립적으로 실행시킬 수 있는지 자바 컴파일 과정을 알아보자. 자바 컴파일 순서 개발자가 Java Source (.java)를 작성한다. Java Compiler가 Java Source 파일을 읽어 byte code (.class)로 컴파일한다. 여기서 byte code는 JVM이 읽을 수 있는 코드이다. 컴파일된 byte code를 JVM의 Class Loader에게 전달한다. Class Loader는 동적 로딩을 통해 필요한 클래스들을 로딩 및 링크하여 Runtime Data Area의 Method Area. 즉, JVM의 메모리에 올린다. Execution Engine은 JVM 메모리에 올라온 byte c..
계산 결과가 최댓값을 넘거나 최솟값보다 작을 경우, 음수는 양수로, 음수로 바뀌는 문제가 발생하는데 이를 오버플로우라고 한다. 1byte가 표현할 수 있는 가장 큰 값은 01111111이다. 여기에 1을 더하면 10000000이 된다. 즉, 부호 비트가 1인 음수가 되게되는데, 이 값을 구하기 위해 -1하고 보수를 취해주면 10000000이 된다. 따라서 10진수로 표현하면 -128이 되는 것이다. 정리하면 1byte로 표현할 수 있는 가장 큰 값은 127이고, 127에 1을 더하면 -128이 된다. 이 현상을 오버플로우라고 한다. 타입의 변환: 자바 강제 형 변환의 문제점 long이 가질 수 있는 가장 큰 값을 2진수로 표현하면, 01111111 11111111 11111111 11111111 1111..
리터럴 값인 숫자 5는 int타입이다. 리터럴 값인 숫자 5L은 long타입이다. byte 크기: 1바이트 값의 범위: -2^(8-1) ~ 2^(8-1)-1 short 크기: 2바이트 값의 범위: -2^(16-1) ~ 2^(16-1)-1 int 크기: 4바이트 값의 범위: -2^(32-1) ~ 2^(32-1)-1 long 크기: 8바이트 값의 범위: -2^(64-1) ~ 2^(64-1)-1 float타입은 4byte 크기의 실수 값을 가질 수 있다. 리터럴 값인 숫자 5.2f는 float 타입이다. double타입은 8byte 크기의 실수 값을 가질 수 있다. 리터럴 값인 숫자 5.2는 double이다. float 크기: 4바이트 값의 범위: (3.4 X 10^-38) ~ (3.4 X 10^38) 지수의..