| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- pessimistic lock
- TDZ
- API
- Transaction
- generic type
- CQS
- optimistic lock
- 단어변환
- SPOF
- demand paging
- COPYOFRANGE
- 역정규화
- Generic method
- #@Transacional
- propagation
- wrapper class
- hoisting
- assertJ
- CORS
- RequestMappingHandlerMapping
- ExceptionResolver
- cross-cutting concerns
- tracking-modes
- 벌크연산
- 프로그래머스
- Java
- HandlerMethod
- IllegalStateException
- type eraser
- NestJS 요청흐름
- Today
- Total
목록Language/Java (59)
jingyulog
자바는 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) 지수의..
&&과 &, ||과 |의 결과는 같게 나오지만 JVM은 실행을 다르게 한다. &&일 경우에는 앞의 식이 거짓이면 뒤에있는 식은 실행하지 않는다. (한쪽만 거짓이어도 실행할 필요가 없기 때문에) &일 경우에는 앞의 식이 거짓이어도 뒤의 식이 실행된다. ||의 경우에는 앞의 식이 참일 경우에는 뒤의 식이 실행되지 않는다. |가 사용될 경우에는 앞의 식이 참일 경우라도 뒤의 식이 실행된다. 즉, 차이점은 앞의 식의 논리 연산 결과에 따라 뒤에 있는 식을 실행하느냐? 안하느냐?의 차이가 있다. 따라서 결과는 같게 나오지만, 뒤의 식에 수식 등이 들어갈 경우, 수식에 증가, 감소되는 식이 있으면 실행이 되고 안되고에 따라서 문제가 될 수도 있다. boolean 형 타입은 메모리를 얼마나 사용할까? 1byte(8b..
exclusive-or 또는 XOR 이라고 말한다. 2개의 식의 논리 값이 서로 다를 경우, 참이 된다. 아래의 식이 참이려면 한쪽은 참이고, 한쪽은 거짓이 나와야 한다. a > 10 ^ a < 20 예를 들어, a가 31이라는 값을 가질 경우, true & false가 되니 이때 결과는 참이 나온다. 인용 https://www.youtube.com/watch?v=ndRDxcOnXfw&list=PLHpaQi-LiUCx-vcbcnpU5Tzv2X99WCowN&index=6&ab_channel=%EB%B6%80%EB%B6%80%EA%B0%9C%EB%B0%9C%EB%8B%A8-%EC%A6%90%EA%B2%81%EA%B2%8C%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D%EB%..
기본형 변수 기본형 변수(primitive type)은 값을 가진다. ex) int - 4byte, short-2byte, long-8byte 기본형 타입은 메모리를 확보하고 그 메모리에 값을 저장한다. 즉, int의 경우에는 메모리의 4byte 공간에 값이 할당된다. 참조형 변수 Book b = new Book();에서 Book 처럼 기본형이 아닌 타입은 모두 참조형(Reference Type)이라고 말한다. 기본형이 아닌 타입은 값을 가지지 않고, 값을 참조하게 된다. 리터럴 int i = 1; 에서 1을 정수 리터럴 1이라고 말한다. 즉, 리터럴이란 변수에 입력되는 값을 말한다. 변수의 초기화 클래스 안에 선언된 변수인 field는 초기화를 하지 않아도 사용이 가능하다. 예를 들어, boolean ..