일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- http 역사
- Kotlin
- recyclerview
- viewModelScope
- appcompatacitivity
- 내부 단편화
- NestedScrollView
- apk 빌드 과정
- DiffUtil
- appcompatactivity
- 절대 주소
- flutter
- 상태관리
- GetX
- 뷰홀더
- 플로이드워셜
- AsyncListDiffer
- 리사이클러뷰풀
- Android
- 데코레이터 패턴
- 자이고트
- 리사이클러뷰
- 디자인 패턴
- 운영체제
- http발전과정
- AAC
- Dispatchers
- 프로세스
- 물리 메모리
- 안드로이드
- Today
- Total
목록Develop (25)
hong's android
래퍼 클래스로 계산하면 안될까? 원시 타입이 필요한이유 래퍼클래스 참조타입이기때문에 원시타입보다 크다. 원시형의 데이터를 가져오는것보다 래퍼 클래스 형태의 객체를 가져오는것이 비효율적이고 더 느리다. 그 이유는 래퍼 클래스는 객체이다. 래퍼클래스로 된 객체를 메모리에 저장하기 위한 데이터들은 아래와 같습니다. (32비트 기준) 아래와 같습니다. housekeeping 정보로 구성된 12 bytes의 object header 공간이 있습니다. primitive fields는 각자 정해진 크기만큼 차지합니다. reference fields는 4 bytes를 차지합니다. array 배열은 16 bytes가 필요합니다. object 공간 12 bytes + array length 공간 4 bytes object..
Map 인터페이스 Set 인터페이스와 다르게 key와 value를 이용한다. Collection 인터페이스에 속한 구현체 클래스를 상속받은 구현 클래스 종류 HashMap 키에 대한 해시값을 사용해서 해당 값을 인덱스로 하여 배열을 만든다. Thread-safe 하지 않다. 그렇기 때문에 Collections.synchronizedMap(new HashMap(…)); 으로 사용하거나 null을 허용한다. 또는 java.util.concurrent 패키지의 ConcurrentHashMap 클래스를 사용할 수 있다. HashTable Collection 인터페이스 이전에 나온 HashTable, synchronized를 사용해서 thread-safe 하다. 하위 호환성에 가치를 두기 때문에 HashMap에 ..

자바는 jvm이라는 가상머신 덕분에 플랫폼(os) 독립적이다. 보통 c 나 c++ 같은 언어는 프로그램을 개발했던 환경에서만 정상적으로 실행할 수 있다. 해당 기계어로 변환되어 있기 때문이다. 반면 자바는 프로그램을 개발했던 환경에 구애받지 않고 어떠한 환경에서도 정상적으로 작동이 된다. 자바는 .class 라는 바이트 코드를 jvm에서 기계어로 변환하는 과정을 거치는데 이 과정에서 jvm은 해당 os에 맞는 기계어로 번역해 주기 때문이다. Jvm 동작 원리 1. 자바소스를 컴파일 자바 컴파일러에 의해 바이트 코드(. class )로 컴파일된다. 2. 객체?를 참조할 때 classLoader는 동적로딩을 통해서 필요한 클래스를 JVM 메모리에 올린다. 3. 실행엔진(Execution Engine)에 의해..

DeadLock 교착상태에 빠진것을 의미한다. 교착 상태란 두 개 이상의 작업이 서로 상대방의 작업이 끝나기 만을 기다리고 있기 때문에 결과적으로 아무것도 완료되지 못하는 상태를 가리킨다. 아래 예시는 두개의 프로세스가 교착상태에 빠졌을때를 보여준다. 교착상태 성립 조건 상호배제 : 사용중인 자원을 다른 프로세스가 접근하지 못한다. 점유대기 : 자원을 가지고 있는데 다른 프로세스가 가지고 있는 자원을 가지고 있다. 비선점 : 자원을 함부로 뺐을 수 없다. 순환대기 : 서로가 서로의 자원을 기다리고 있는 상태이다. 자바에서 두 스레드들의 교착상태 public class Main { public static Object object1 = new Object(); public static Object obje..

String은 불변이다. String은 변하지 않는다. 계속 값을 더하게 되면 값이 변경되어서 변경되는 것이라고 착각할 수 있지만 내부적으로 기존 객체는 쓰레기가 되고 계속 새로운 객체를 만들어서 참조를 변경해 준다. Java string은 왜 불변일까? 1. 메모리를 절약할 수 있는 String Constant pool을 사용하기 위해 만약 변환될 수 있는 상태가 되면 Constant pool에 참조하고 있는 두 string이 있다고 했을 때 그중 하나의 값을 변경했는데 똑같은 참조를 하고 있는 상태가 된다. 2. thread safe 하기 위해 멀티 스레드가 공유 자원을 사용할 때 문제가 생긴다. 두 개의 스레드가 있다고 생각하자. 두 번째 스레드가 새로운 값을 할당하기 위해 새로운 객체를 생성한다...

Abstract class (추상화 클래스) 추상 : 여러 가지 사물이나 개념에서 공통되는 특성이나 속성 따위를 추출하여 파악하는 작용. 자바에서의 추상 클래스 공통된 메소드, 필드를 묶어 하나의 클래스를 만드는 것을 의미한다. 추상화는 공통된것을 묶어놓는것이다. 코드를 다시 재사용하거나 공통된 특징들을 파악하기 편리하다. Interfacet (인터페이스) 인터페이스: 서로 다른 두 개의 시스템, 장치 사이에서 정보나 신호를 주고받는 경우의 접점이나 경계면이다. 즉, 사용자가 기기를 쉽게 동작시키는데 도움을 주는 시스템을 의미한다. (즉 인터페이스는 서로 소통을 하기위한 미리 만들어 놓은 규칙, 프로토콜이다.) 자바에서의 인터페이스 클래스들이 구현해야 하는 동작을 지정하는데 사용되는 추상 자료형이다. 서..