일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 알고리즘
- 운영체제
- MSA
- Proxy
- spring webflux
- react
- JavaScript
- 컴퓨터구조
- Kafka
- Data Structure
- design pattern
- 자바
- redis
- mongoDB
- Algorithm
- Heap
- IT
- MySQL
- Galera Cluster
- C
- c언어
- Java
- 백준
- 네트워크
- 파이썬
- JPA
- 자료구조
- Spring
- OS
- 디자인 패턴
- Today
- Total
목록전체 글 (214)
시냅스
Synchronized keyword static과 heap을 공유하면서 동시접근이 가능한 resource 에 관하여 race condition 을 회피하기 위해 Java에서 제공하는 키워드 함수에 synchronized 키워드를 붙이거나 (Lock in Synchronized Methods) 함수에 synchronized를 걸면 함수가 포함된 해당 객체(this)에 lock을 거는 것과 동일하다. synchronized block을 만들어 사용할 수 있다. (Synchronized Statements) 필요한 부분만 lock이 걸린다. 객체에 lock을 거는 것은 동일하다. 만약 singleton 객체에 synchronized 키워드를 사용할 경우 synchronized 메소드가 많을 수록 deadlo..
Equals 와 == 의 차이 Primitive type (원시타입) Call by value 주소로 변수 값을 바로 확인하여 계산하기 때문에 == 비교가 가능 Reference type (원시타입 이외 모두) Call by reference 주소값을 참조(포인터) 하여 사용하기 때문에 == 비교를 하게 될 경우 주소값을 비교하게 된다. String을 new (builder, buffer 포함)를 사용하지 않고 리터럴로 생성한 경우 String은 string constant pool 이라는 영역에 속한다. (intern) 같은 값에 한해서는 같은 주소값을 같게 된다. 따라서 == 비교가 가능하다. 이때 객체 내부에 Equals()를 override 하여 객체간 값에 대한 비교를 할 수 있다. Equals..
Annotation Processor 컴파일 단계에서 유저가 정의한 어노테이션의 소스 코드를 분석, 처리하기 위해 사용되는 Hook 자바 컴파일러의 플러그인 일종 컴파일 에러나 컴파일 경고를 만들어 냄 자바 컴파일러에 의해 소스코드(.java) 와 바이트코드(.class)를 내보내기도 한다. annotation processor를 통해서 메소드, 필드 등을 생성, 수정하거나 인터페이스만을 가지고도 구현부를 생성해줄 수 있다. 장정 런타임 전에 컴파일 단계에서 수행되기 때문에 비용이 제로에 가깝다. 리플렉션을 사용하지 않아 런타임 시에 예외를 발생시키지 않는다. Boilerplate code를 생성해준다. 단점 기존 클래스 파일에 소스(AST)를 변경할 때는 일종의 해킹이다. 프로세싱 단계 자바 컴파일러가..