네이티브힙
Java Object 가 아닌 Native Object 가 거주하는 공간이며 OS 차원에서 결정된다.
- 가장 기초 Thread 를 제외한 모든 Thread
- Buffer, Lookup table 및 ZIP 관련 작업 (GZIPOutputStream methods)
- Swing, AWT 하에 native GUI 와 관련된 Buffer 및 구조체
- JNI Code 에 의해 사용된 Data
- Just-in-time(JIT) Compiler 및 Mixed-Mode-Interpreter 를 지원하는 함수
- JIT 관련 수행 코드
MVP 패턴
http://hackersstudy.tistory.com/71
MVC 패턴과는 다르게 입력이 View 에서 처린된다. Presenter 는 View의 인스턴스를 갖고 있으며 View 와 1대1 관계이고, 그에 해당하는 Model 의 인스턴스 또한 갖고 있기에 View 와 Model 사이에서 다리와 같은 역할을 한다. View 에서 이벤트가 발생하면 Presenter 에게 전달해주고 Presenter 는 해당 이벤트에 따른 Model 을 조작하고 그 결과를 바인딩을 통해 View 에게 통보하여 View 를 업데이트 시켜준다. MVC 패턴과는 다르게 Presenter 를 통해 Model / View 를 완벽히 분리해 주기 때문에 View 는 Model 을 따로 알고 있지도 앓아도 됨, 단점은 View 와 1:1 관계이기 때문에 View와의 의존성이 매우 강하다.
Parcelable vs Serializable
http://aroundck.tistory.com/2477
Serializable 은 Serialize 가 필요한 순간에 알아서 Serialize 해주는 maker interface 이다.
Parcelable 은 IPC (Inter Process Communication) 에 최적화된 녀석으로 Serialize 보다 속도가 빠르다.
속도가 차이나는 이유는 Serialization 은 Reflection 방법을 사용하여 Serialization 을 하는데, Parcelable 은 프로그래머가 직접 바로 Setting 을 해주기 때문에 빠른 것이다.
Comparable
Comparable - 기본 정렬 기준을 구현하는데 사용
Comparator - 기본 정렬 기준 이외에 다른 기준을 정렬하고자 할 때 사용
RxJava란?
http://pluu.github.io/blog/rx/2015/04/29/rxjava/
RxJava란 Reactive Programming 을 하기 위한 라이브러리인 Rx(Reactive Extensions)의 JVM 판 입니다.
이벤트를 정의한 Observable 인스턴스에 대해 짧은 함수를 엮은 스트림 같이 이벤트 결과 데이터를 가공하는 처리를 정의, 지연 실행, 비동기 콜백을 할 수 있습니다.
Atomic Type
http://128.199.231.48/java-atomic-type/
Synchronized 키워드를 AtomicBoolean, AtomicInteger 를 이용하여 변경 가능하다.
데드락을 해결하려면?
데드락 발생 조건은 아래와 같다.
1. Mutual Exclusion (자원에 대한 동시접근 불가)
2. Hold and Wait (점유하고 기다리기)
3. No Preemption (자원을 뺏어오지 못함)
4. Circular Wait (순환 형태로 대기함)
데드락을 예방 하려면 위 4가지 조건 중 하나라도 발생하지 않도록 하면 해결됨,
프로세스가 자원을 요구하는 시점에서 자원을 할당해도 안전한지를 검사하여 데드락을 방지하는 은행원 알고리즘,
교착 상태가 발생하는 것을 아예 막지 않고, 발생 시에 해결,
거의 무시해도 좋을 확률의 데드락이라면 무시
싱글턴 더블체크드락
public class Singleton { private volatile static Singleton singleton; public static Singleton getInstance() { if (singleton == null) { synchronized(this) { if (singleton == null) { singleton = new Singleton(); } } } return singleton; } private Singleton() { } }
해시코드란?
객체를 구별하기 위해서 고유한 정수값으로 출력시켜주는 메소드이다.
객체에 대한 서명, checksum 과 같은 것으로 보통 객체의 내용을 바탕으로 만들어진 난수처럼 보이는 객체 인식용 정수이다.
해시맵을 만들려면 무슨 자료구조를 쓸까?
https://minchangdev.wordpress.com/2014/01/12/16/
기본적인 자료구조는 key, value 값을 저장하고 있는 Entry 가 있고 각 entry 를 저장하기 위한 array table이 있다.