일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 역사
- appcompatactivity
- 데코레이터 패턴
- AsyncListDiffer
- apk 빌드 과정
- 플로이드워셜
- 운영체제
- NestedScrollView
- Dispatchers
- AAC
- viewModelScope
- 안드로이드
- DiffUtil
- 물리 메모리
- 절대 주소
- Android
- flutter
- 상태관리
- recyclerview
- Kotlin
- 리사이클러뷰풀
- appcompatacitivity
- http발전과정
- 디자인 패턴
- GetX
- 프로세스
- 뷰홀더
- Today
- Total
목록Develop (25)
hong's android

Synchronized 사용 이유 멀티 스레드를 이용해서 한 프로그램에서 동시에 다른 스레드들을 실행할 수 있다. 하지만 동시에 동일한 변수, 객체, 메서드에 접근한다면 원하지 않은 값을 결과로 얻을 수 있다. 예를 들어, Int limit = 10; 이란 값을 가진 클래스가 존재한다. main에서 두 개의 스레드를 실행해 메서드 실행을 완료한 후 limit의 값을 1 뺀다. (Limit 값이 0 이상에 있을 때만 값을 가져오게 하고 싶다.) 두 개의 스레드에서 동시에 limit이 위 메서드에 접근했다고 치면, 동시에 접근했을 때 두 개의 스레드 모두 조건에 만족한 뒤 메서드를 실행해서 limit 값을 1 빼준다. 그러면 결국 -1이 되므로 원하는 값을 가져오지 못한다. 위 예는 두 개의 스레드 밖에 없..
리플렉션이란? 동적으로 클래스의 정보를 분석하거나, 클래스의 메소드를 호출 할 수 있게해주는 api 리플렉션 단점 1.컴파일 최적화를 하지 못한다. 리플렉션을 실행하는 부분은 미리 실행 내용에 대한 정보를 알지 못하므로 jvm은 컴파일 타임에 최적화 하지 못한다. JIT Compiler의 Bytecode Caching, Opcode Optimization.. 등 초기 호출 이후로는 캐싱을 통해서 Reflection API를 통한 메서드 호출도 최적화된다는 것을 의미한다. 2.정적으로 타입 검사를 하지 못한다. 정적을 타입 검사를 하지 못하므로 런타임에 타입 오류가 날 수 있다. 3.캡슐화 저해 접근 제한자에 상관없이 리플렉션은 접근 할 수 있다. 그럼에도 불구하고 왜 필요한가? 컴파일 타임에는 알 수 없..
2장에서 다루는 내용- 함수. 변수. 클래스. enum, 프로퍼티를 선언하는 방법 제어 구조- 스마트 캐스트- 예외 던지기와 예외 잡기 조건문조건문은 문이 아니라 식이다. 그렇기 때문에 리턴값이 존재하고 몇몇 경우에 간결하게 코드를 작성할 수 있다.fun eval (e: Expr): Int = if (e is Num) { e.value } else if (e is Sum》 { eval(e.right》 + eval(e.left) } else { throw IllegalArgumentException (" Unknown expression’’ )}(식이 본문인 경우에 타입추론이 있기 때문에 리턴값을 생략 할 수 있다. 하지만 식이 본문이 아닌 경우 반환 타입과..
1장에서 다루는 내용 -코틀린 기본 기능 데모 -코틀린 언어의 주요 특성 -코틀린을 활용한 안드로이드와 서버 개발 -코틀린이 다른 언어보다 더 나은 점 -코틀린으로 코드를 작성하고 실행하는 방법 정적 타입 지정 언어 동적 타입 지정 언어와 달리 메서드와 필드에 대한 검증이 컴파일 타임에 일어난다. 정적 타입 지정 언어는 컴파일 타임에 검증이 일어나 여러 장점들이 존재한다. 1. 런타임에 호출할 메서드 검증을 안 해도 되므로 빠르다. 2. 안정적이다. 컴파일 타임에 오류를 검출해서 런타임에 정지될 확률이 낮아진다. 3. 타입을 명시하기 때문에 코드 이해가 빠르다. 4.ide 도구를 이용해서 리팩토링을 안전하게 할 수 있다. 하지만 타입 명시를 해주어야 하기 때문에 코드가 길어진다. 코틀린은 타입 추론을 사..

컨텍스트 스위칭이란? 다음 우선순위가 높은 프로세스를 실행할때 해당 프로세스 정보를 PCB에 저장하고 다음 프로세스의 정보를 PCB에서 load 하는 과정이다. 컨텍스트 스위칭이 일어날때 cpu의 동작은 멈춘다. 프로세스 보다 스레드의 컨텍스트 스위칭의 비용이 더 낮다. 그 이유는 스레드들은 데이터를 프로세스 안에서 데이터를 공유하는 부분이 많기 때문에 스택 영역의 데이터만 저장하고 load 해주는 작업만 하면되기 때문이다. 필요한 이유 동시에 여러 작업을 수행하는 멀티 프로세스, 멀티 스레딩을 통해 빠른속도로 응답할 수 있기 때문이다. (빠른 응답 시간을 가진 시분할 시스템에 유용) 프로세스 컨텍스트 스위칭이 일어나는 상황 1. I/O interrupt 2. CPU 사용시간 만료 3. 자식 프로세스 F..

Garbage Collector Gc의 수거대상 Gc root로부터 참조를 탐색했을 때, unreachable 한 객체 Gc root 1) 스택 영역의 데이터들 2) 메소드 영역의 데이터들 3) JNI에 의해 생성된 객체들 *JNI : os에 종속적인 프로그램을 실행시키기 위한 프레임 워크 또는 c, c++ 등 다른 언어로 작성된 라이브러리를 호출하거나 반대로 호출되는 것을 가능하게 해주는 프레임워크 Gc가 언제 일어날까? 위와 같이 새로운 객체들은 Young Generation 영역에, 만든지 비교적 오래된 객체들은 Old Generation에 저장한다. 일반적인 Gc 동작 Minor Gc Young Generation에서 일어나는 Gc, Eden 영역이 가득 차면 발생한다. 1. 새로운 객체가 만들어..