
이번 글은 안드로이드 부스트코스 마지막 네트워킹 강의의 내용을 정리해 보려고 한다. 이 강의는 실습이 아닌 네트워킹의 전반적인 내용을 2시간 동안 개괄적으로 훑는 강의였기 때문에 그에 맞게 내가 이해한 이론적인 내용을 주로 다룰 것이다. 강의의 개요는 아래와 같이 세 가지로 구성된다. 1. 일반 데이터 네트워킹 대부분의 업무용 앱과 일반 앱 중 서버와의 통신이 필요한 앱에 적용하는 일반적인 네트워킹 방법 Thread, AsyncTask, Gson 정리 및 Node.js를 이용한 클라우드 서버 구성 방법에 대한 요약 2. 실시간 메시징 카톡 등 실시간 메시징이 필요한 경우에 적용하는 네트워킹 방법 Socket.IO 정리 및 Node.js를 이용한 클라우드 서버 구성 방법에 대한 요약 3. 실시간 방송 동영..
안드로이드 앱을 개발하면서 이미지 파일을 다루는 일이 굉장히 흔하다. 안드로이드 앱에서 이미지 파일은 Bitmap을 이용해서 다루는데, Bitmap 객체를 이미지를 파일로 저장하고 싶을 때 Bitmap의 compress() 메서드를 이용한다. compress() 메서드 구현체는 아래와 같다. public boolean compress(CompressFormat format, int quality, OutputStream stream) {...} 여기서 첫 번째 인자로 받는 CompressFormat은 JPEG, PNG, WEBP로 3가지 종류가 있다. 두 번째 인자인 quality는 압축 정도를 나타내는데 0~100의 숫자를 넣으면 (quality)%로 압축이 된다. 마지막으로 OutputStream은 ..

이번 포스팅에서는 안드로이드 아키텍처가 어떻게 구성되어 있고, 어떤 역할을 하는지 간단하게 정리하고 가려고 한다. 이번 포스팅은 안드로이드 개발자 문서인 플랫폼 아키텍처를 참고했다. Android Platform Architecture는 다음과 같이 구성되어 있다. Linux Kernel 안드로이드 플랫폼 기반은 Linux 커널이다. 예를들어 ART에서 threading 또는 하위 수준 메모리 관리와 같은 기본 기능에 Linux 커널을 사용한다. Binder IPC - 프로세스 간 통신 Binder Thread - 앱 프로세스에 존재하는 naive thread pool (최대 16개), 다른 프로세스에서 IPC 통신 시 이 thread pool을 통해 접근 HAL (Hardware Abstraction ..

안드로이드 컴파일 방식은 크게 2가지로 나뉘는데, 그 2가지는 초창기에 사용한 Dalvik 컴파일 방식과 이후에 도입된 ART 컴파일 방식이다. 이번 포스팅에서는 컴파일 방식이 안드로이드 버전에 따라 어떻게 변화해 왔는지 알아보면서 컴파일 방식의 차이점도 함께 정리해보려고 한다. 안드로이드 개발 언어가 운영체제에 독립적인 Java로 채택이 되면서 JVM이 필요했다. 하지만 라이센스 문제와 메모리 효율성 등의 문제로 안드로이드는 Dalvik VM(=DVM)을 사용하게 된다. 라이센스 문제 Java ME를 사용하기 위해서 Sun 회사에게 라이센스 비용을 지불해야하는 문제가 발생했다. (DVM에서 컴파일 과정 중 .class를 .dex로 변환하는 dx 툴은 Java SE를 사용했기 때문에 Java 언어 사용은..

Dalvik의 GC는 CMS 알고리즘을 사용하고, ART GC는 CMS 알고리즘을 개선한 Customed CMS 알고리즘을 사용한다. CMS 알고리즘은 이전 포스팅인 Garbage Collection 동작 방식에서 다룬 적 있기 때문에 이번 포스팅에서는 ART GC인 Customed CMS 알고리즘이 기존 CMS 알고리즘에서 어떻게 개선되었는지에 대해 정리해보려 한다. 이 글은 ART 가비지 컬렉션 디버깅하기를 참고해서 작성했다. ART는 다음과 같이 GC 방법을 개선했다. Dalvik은 STW 횟수가 2회(Initial Mart & Remark)이지만 ART CMS 가비지 컬렉션은 Remark에서만 1회 발생한다. ART에서는 Initial Mark 단계에서 GC thread가 모든 루트 객체를 체크하..

이번 포스팅에서는 JVM에서의 Garbage Collection 동작 방식에 대해 정리하려고 한다. 안드로이드 컴파일 과정을 공부하던 중에 Dalvik은 GC 방법으로 CMS 알고리즘을 사용하고, ART는 Customed CMS 알고리즘을 사용한다는 것을 알게 되었다. 또한 CMS 알고리즘보다 Customed CMS 알고리즘이 2배 이상의 성능을 낸다고 하는데, 여기서 CMS 알고리즘은 무엇이고 Customed CMS 알고리즘은 기존 CMS 알고리즘의 어느 부분을 개선하였길래 기존CMS 알고리즘 방식의 2배 이상의 성능을 내는 것인지 궁금해졌다. 이번 포스팅은 이 중에서 CMS GC 방식을 알기 위해 전체적인 Garbage Collection 방식을 공부한 것을 정리한 내용이다. Java 언어를 동작 시..

우리가 흔히 말하는 가상 머신은 기본 운영 체제를 기반으로 한 물리적 추상화를 에뮬레이트하는 높은 수준의 추상화로, 가상 시스템을 통해 동일한 플랫폼을 여러 운영 체제 및 하드웨어 아키텍처에서 실행할 수 있다. 여기서 가상 머신은 시스템 가상 머신이 아닌 프로세스 가상 머신을 의미한다. 일반적으로 가상 머신은 다음의 기능을 할 수 있어야 한다. 물리적 CPU가 수행하는 작업을 에뮬레이션 소스 언어를 바이트 코드로 컴파일 명령어 및 피연산자를 포함하는 데이터 구조 (명령어가 처리하는 데이터) 함수 호출 조작을위한 호출 스택 실행할 다음 명령어를 가리키는 IP(=Instruction Pointer) 가상 CPU-instruction dispatcher 명령 포인터로 주소를 지정해서 다음에 수행할 명령어 가져..
Kotlin에서 지원하는 기능 중에서 Kotlin 코드에서 XML 인스턴스로 바로 접근이 가능하도록 도와주는 Android Extension이라는 기능이 있다. XML 인스턴스를 Kotlin으로 가져와서 사용할 수 있도록 만든 프로퍼티를 합성 프로퍼티(Synthetic Property)라고 한다. 이 프로퍼티는 클래스 내에 뷰 ID 이름으로 생성된다. 예를 들어 xml 코드에서 아래와 같은 Button을 하나 정의했다고 가정하자. 이 Button은 Android Extension에 의해 Kotlin의 합성 프로퍼티가 만들어진다. 이 프로퍼티는 아래 예제 코드처럼 Button의 id인 ‘btn_save’를 통해 접근할 수 있다. override fun onCreate(savedInstanceState: B..
- Total
- Today
- Yesterday
- DiffUtil
- Android
- 내용제공자
- 안드로이드
- SQLD
- python3
- 프로그래머스
- ViewHolder
- covariance
- personal access token
- AndroidStudio
- pecs
- 위험권한
- Python
- SQL Server
- Java
- 알고리즘
- Algorithm
- kotlin
- SQL
- SOCKET
- AsyncListDiffer
- MSSQL
- RuntimeException
- GitHub
- gson
- 부스트코스
- RecyclerView
- 파이썬
- SQLiteOpenHelper
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |