본문 바로가기

전체 글

(86)
[네트워크] 캐시(Cache) 캐시(Chache) 자주 사용하는 데이터나 값을 미리 복사해 놓은 임시 장소 아래와 같은 저장공간 계층 구조에서 확인할 수 있듯이, 캐시는 저장 공간이 작고 비용이 비싼 대신 빠른 성능을 제공한다. 파레토의 법칙과 지역성의 원리보통 개발을 할 때, "캐시로 처리하겠다"는 "나중에 요청할 결과를 미리 저장해둔 후 요청이 오면 빠르게 처리해 주겠다"는 것을 의미한다.즉, 미리 결과를 저장하고 나중에 요청이 오면 그 요청에 대해서 DB 또는 API를 참조하지 않고 Cache를 참조하여 요청을 처리하도록 만들겠다는 것이다.앞서 작성한 것 처럼, 캐시는 자주 사용하는 데이터나 값을 미리 복사해 놓은 임시 장소이기 때문이다.캐시의 이런 동작 배경에는 파레토 법칙과 지역성 원리가 있다. 파레토 법칙은 "80%의 결과..
[kotlin]코틀린의 생성자(constructor) 🧭 코틀린의 생성자(Constructor)코틀린에서는 하나의 주(primary) 생성자와 여러 개의 부(secondary) 생성자를 사용할 수 있다. 주 생성자는 클래스의 헤더로써 클래스의 이름과 동일한 이름을 사용한다.만약 주 생성자에 어노테이션이나 가시성 변경자(visibility modifiers)가 없다면, 생성자 키워드는 생략 가능.// constructor 키워드를 사용한 모습 class Person constructor(firstName: String) { /* . . . */ } // constructor 키워드를 생략한 모습 class Person(firstName: String) { /* . . . */ }보통 주 생성자는 클래스를 초기화할 때 주로 사용하는 간략한 생성자로, 클래스 본..
[Kotlin] Scope Functions 정리 Scope Function(let, with, run, apply, also) 정리Scope Function 이라는 함수명에서 알 수 있듯이, 이 함수들을 람다식을 이용해서 호출하면 일시적인 Scope(범위)가 생기게 되고, 이 범위 안에서는 전달된 객체에 대해 “it” 또는 “this”라는 Context Object를 통해서 접근하게 된다. 두 가지 차이점Scope Function에는 서로 다른 두 가지 주요 차이점이 있다.Context Object를 참조하는 방법(this, it)Return value Context Object: this or itScope Function 람다식 내에서 Context Object는 실제 객체명 대신 짧은 참조명인 “it”또는 “this”키워드로 접근할 수 있다. 그..
[Kotlin] 클래스 계층 정의 인터페이스코틀린 인터페이스 안에는 추상 메소드 뿐만이 아니라, 구현이 있는 메소드도 정의할 수 있다.interface MyInterface{ fun printHi() } class Printer: MyInterface{ override fun printHi() = println("Hi") } // >> Printer().printHi() // >> Hi Java에서는 extends와 implements 키워드를 사용하여 상속과 구현을 처리 하지만, 코들린에서는 클래스 이름 뒤에 콜론(:)을 붙이고 인터페이스와 클래스 명을 명시하는 것으로 상속과 인터페이스 구현을 처리한다.Override를 하는 경우, 자바는 @Override 어노테이션을 사용하는데, 코틀린에서는 그냥 Override 라는 키워드를 함수 ..
[Android: Jetpack] ViewModel & Lifecycle 기초(2) 앱이 강제 종료 될 경우 대비 바로 앱이 강제 종료 될 경우의 대비 방법을 알아보겠다. 여담으로, 메모리 부족 등의 이유로 시스템이 앱을 강제종료할 겨ㅇ우에는 뷰모델은 데이터를 유지할 수 없다. savedStateHandle 사용 이 방법은 앞전 글에도 설명했지만, RAM에 데이터를 저장하기 때문에 많은 데이터를 저장할 수는 없다. 하지만 시스템에 의한 강제종료에도 데이터를 유지할 수 있다. https://developer.android.com/topic/libraries/architecture/saving-states#onsaveinstancestate 이 방법은 거의 모든 코틀린 데이터 타입을 저장할 수 있다. 또, saveState에는 Key:Value 형태로 값을 저장한다.(Map이요) 자 그럼,..
[Android: Jetpack] ViewModel & Lifecycle 기초(1) ViewModel에 대해 정확히 알고 넘어가기 위해서는 먼저, Lifecycle에 대해 알아야한다. Activity의 생명주기는 예전에 정리해둔 자료를 보도록 하자. ViewModel을 사용하면 좋은 이유를 가장 와닿기 쉽게 떠올린다면, 화면을 회전시키는 상황을 떠올리면 된다. 화면을 회전하게 되면, 화면의 구성이 바꿔면서 그에 맞게 View를 재생성 해야한다. 파괴된 View를 다시 생성할 때, 액티비티가 보유 중이던 데이터가 사라지게 된다. 화면 전환 시, onDestroy()가 호출되고, 다시 onCreate가 실행되며 값이 초기화 되는 것이다. 이에 대한 해결 방법으로는 onSavedInstanceState가 있다. 이는 액티비티를 재생산 할 때 사라져버리는 휘발성 데이터를 메모리에 보존했다가 꺼..
[Android: Jetpack] 안드로이드 AAC(Android Architecture Components) 간략한 정리 어차피 글을 쓰는 현재가 이것들을 중점적으로 공부하는 시점이기 때문에, 한번 간략하게 정리해 놓고 세부적인 내용을 개별적으로 문서화 하려고 한다. AAC란? AAC(Aandroid Architecture Pattern)란 2017년 구글I/O에서 발표한 개발자의 편의를 돕기위한 6개의 라이브러리로 구성은 다음과 같다. Lifecycles(Easy handling lifecycles) LiveData(Lifecycle aware observable) ViewModel(Managing data in a lifecycle) Room(Object Mapping for SQLite) Paging(Gradually loading infomation) DataBinding Navigation WorkManager 이..
[Kotlin] 코틀린 프로퍼티와 필드(Properties and Fields) 🥅 들어가며 N2T로 업로드 했던 글들을 하나씩 다시 보고 있는데, 티스토리에서 전부 코드 블럭이 뭉개져서 업로드 되는 것을 발견했다.. 천천히 하나하나 전부 티스토리 에디터로 다시 수정작업을 진행할 예정이다.(ㅠㅠ) 이번 글의 목표는 다음과 같다. 프로퍼티와 필드(백킹 필드)에 대한 내용 이해하기 그럼 긴말 없이 바로 시작해 보자. ✍🏼 프로퍼티(Properties) 코틀린에서는 두가지 방법으로 프로퍼티를 선언할 수 있다. 변경이 가능한 (= Mutable) 변수로 var 값을 읽기만 가능(read only)하고, 변경할 수 는 없는( = Immutable) 변수로 val class Address{ var name : String = "Park Sang Hyun" var street: String = ..