본문 바로가기

Kotlin/Kotlin 프로그래밍24

[Kotlin] Kotlin의 싱글톤 패턴(Singleton Pattern) Kotlin으로 프로그래밍을 하다보니 싱글톤에 대한 개념이 정확하게 서있는 것 같지 않아서, 포스팅을 통해 정리해보려고 한다. 우선 Java의 static과의 차이, object와 companion object의 차이를 중심적으로 정리한다. 싱글톤 패턴 (Singleton Pattern) 어떤 클래스의 인스턴스는 오직 하나임을 보장하며, 이 인스턴스는 전역에서 접근할 수 있는 디자인 패턴이다. 어플리케이션의 시작부터 종료까지 1번의 생성으로 고정된 메모리 영역을 가지므로, 메모리를 효율적으로 사용할 수 있다. (in Android) Java의 static VS. Kotlin의 object 1. 사용 방법에서의 차이 Java에서는 싱글톤 패턴을 구현하기 위해 많은 보일러 플레이트 코드가 발생했다. 하지만 .. 2022. 2. 5.
[Kotlin] 클로저와 표준 함수 let, also, apply, run, with 모든 내용은 이지스퍼블리싱의 Do it! 코틀린 프로그래밍을 바탕으로 정리한 것입니다. Kotlin의 표준 함수 Kotlin 표준 라이브러리에서 제공하는 함수를 이용하면 코드를 더 단순화하고 가독성을 높일 수 있음 이 표준 함수는 람다식과 고차 함수를 이용하여 선언되어 있음 람다식 val 변수 이름: 자료형 = { 매개변수[, ...] -> 람다식 본문 } val sum: (Int, Int) -> Int = { x, y -> x + y } val mul: { x: Int, y: Int -> x * y} val add: (Int) -> Int = { it + 1 } val isPositive: (Int) -> Boolean = { val isPositive = it > 0 isPositive // 반환값 .. 2021. 7. 8.
[Kotlin/Coroutine] 코루틴(Coroutine)의 개념과 사용 모든 내용은 Do it! 코틀린 프로그래밍을 바탕으로 정리한 것입니다. 프로세스나 스레드는 해당 작업을 중단(stopped)하고 다른 루틴을 실행하기 위한 문맥 교환을 시도할 때 많은 비용이 듦. 코루틴(Coroutine)은 비용이 많이 드는 문맥 교환없이 루틴을 일시 중단(suspended)하여 비용을 줄일 수 있음. → 운영체제가 스케줄링에 개입하는 과정이 필요하지 않다는 것 & 일시 중단은 사용자가 제어할 수 있음 common 패키지 launch / async : 코루틴 빌더 Job / Deferred : cancellation 지원 Dispatchers : Default는 백그라운드 코루틴을 위한 것이고 Main은 Android,.. 2021. 6. 16.
[Kotlin/Coroutine] 코루틴(Coroutine) - 동시성 프로그래밍 모든 내용은 Do it! 코틀린 프로그래밍을 바탕으로 정리한 것입니다. 동시성 프로그래밍 👆 동기와 비동기 동기적(synchronous) : 프로그래밍에서 순서대로 작업을 수행하여 1개의 루틴을 완료하고 다른 루틴을 실행하는 방식 비동기적(asynchronous) : 여러 개의 루틴이 선행 작업의 순서나 완료 여부와 상관없이 실행되는 방식 비동기 프로그래밍은 RxJava, Reactive와 같은 서드파티(third-party) 라이브러리에서 제공함 서드파티란, 기본으로 제공되는 표준 라이브러리가 아닌 다른 개발자(제3자)가 만든 라이브러리! 플러그인, 프레임워크, 유틸리티 API 등을 제공함! 👍 코틀린에서는 코루틴(Coroutine)을 서드파티가 아닌 기본으로 제공함 개별적인 작업을 루틴(routine.. 2021. 6. 3.
[Kotlin] 코틀린의 시퀀스(Sequence) 모든 내용은 Do it! 코틀린 프로그래밍을 바탕으로 정리한 것입니다. 시퀀스(Sequence) 순차적인 컬렉션으로 요소의 크기를 특정하지 않고, 나중에 결정할 수 있는 특수한 컬렉션 요소 값 생성하기 generateSequence() fun main() { val nums: Sequence = generateSequence(1) { it + 1 } println(nums.take(10).toList()) // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] val squares = generateSequence(1) { it + 1 }.map {it*it} println(squares.take(10).toList()) // [1, 4, 9, 16, 25, 36, 49, 64, 81, 100] .. 2021. 6. 2.
[Kotlin] 컬렉션(Collection)의 확장함수 모든 내용은 Do it! 안드로이드 앱 프로그래밍을 바탕으로 정리한 것입니다. [이전 포스팅] 코틀린의 컬렉션 - List, Set, Map에 대한 내용은 아래 포스팅 참고 [Kotlin] 컬렉션(Collection) - List 모든 내용은 Do it! 코틀린 프로그래밍을 바탕으로 정리한 것입니다. 컬렉션(Collection) 컬렉션은 자주 사용하는 기초적인 자료구조를 모아 놓은 일종의 프레임워크로 표준 라이브러리로 제공하고 junyoung-developer.tistory.com [Kotlin] 컬렉션(Collection) - Set, Map 모든 내용은 Do it! 코틀린 프로그래밍을 바탕으로 정리한 것입니다. 컬렉션(Collection) 컬렉션은 자주 사용하는 기초적인 자료구조를 모아 놓은 일종의 .. 2021. 5. 27.
728x90