일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- java
- php변수
- 변수
- 그림으로 배우는 서버구조
- ios
- 플러터
- php개발
- Flutter
- jquery
- 이클립스
- 설치
- 코틀린
- Kotlin
- node
- 정보처리기사
- script
- Flow
- 스나이퍼팩토리
- 조건문
- node.js
- kotlininaction
- php
- android
- SwiftUI
- express
- 코루틴
- Eclipse
- 서버
- kotlin2.0
- 스터디
- Today
- Total
목록Kotlin (58)
mygomii

코틀린 코루틴이 스레드, 반응형 스트림, 콜백과 같은 다른 동시성 접근 방식과 다른 핵심 속성으로 상당수의 경우 코드 형태를 크게 변경할 필요가 없다는 점14.4.1 일시 중단 함수를 사용한 코드는 순차적을 보인다코루틴의 일시 중단 함수(suspend 함수)를 사용하면, 코드가 비동기 작업임에도 마치 동기적이고 순차적인 코드처럼 보임콜백 기반의 코드(콜백 지옥)나 반응형 스트림 코드와 달리, 코루틴의 suspend 함수는 중단과 재개가 자연스럽게 처리되므로 코드의 가독성이 높아짐// 콜백 기반api.fetchData { result -> process(result) { updateUI(it) }}// 코루틴val data = api.fetchData()val processed = ..

스레드(Thread)운영체제(OS) 단위의 동시성 실행 단위각 스레드는 자체 스택 메모리를 사용스레드는 생성 비용이 높음 (수 ms~수십 ms)수천 개 이상의 스레드 생성은 메모리, 스케줄링 비용 측면에서 한계가 있음코루틴(Coroutine)언어 단위의 동시성 실행 단위 (Kotlin 언어 레벨에서 제공)스레드보다 가볍고 효율적단일 스레드 위에서 수만 개의 코루틴 동시 실행 가능코루틴은 스레드 풀 또는 메인 스레드 위에서 동작컨텍스트 스위칭 비용이 낮음 (스레드와 달리 OS 개입이 거의 없음)suspend/resume로 상태 저장 및 재개 → 비동기 작업에 적합항목스레드(Thread)코루틴(Coroutine)생성 비용높음낮음실행 단위OS 단위언어 단위 (Kotlin)개수수천 개 한계수만 개 가능컨텍스트 ..

코루틴은 코틀린의 강력한 특징으로 비동기적으로 실행되는 넌블로킹 동시성 코드를 우아하게 작성할 수있게 해줌스레드와 같은 전통적 방법과 비교하면 코루틴이 훨씬 가볍게 작동구조화된 동시성을 통해 코루틴은 동시성 작업과 그 생명주기를 관리할 수 있는 기능도 제공

동시성은 여러 작업을 동시에 실행하는 것하지만 모든 작업을 물리적으로 함계 실행할 필요는 없음코드의 여러 부분을 돌아가면서 실행하는 것도 동시성 시스템CPU 코어가 하나뿐인 시스템에서 실행되는 애플리케이션까지도 동시성을 사용할 수 있다는 듯이런 경우 여러 동시성 태스크를 계속 전환해 가면서 동시성을 달성병렬성은 여러 작업을 여러 CPU 코어에서 물리적으로 동시에 실행하는 것을 말함병렬 계산은 현대적 멀티코어 하드웨어를 효과적으로 사용할 수 있고, 그 효율을 더 높이는 경우도 많음

DSL이란?DSL (Domain-Specific Language): 특정 도메인을 위한 작고 표현력 있는 언어코틀린의 람다와 확장 함수, 인포크 연산자, 수신 객체 등을 이용하면 마치 언어처럼 보이는 API를 만들 수 있음fun createHtml(): Element { val table = Element("table") val row = Element("tr") row.add(Element("td", "Hello")) table.add(row) return table}DSL 스타일로 전환 (아래 코드)html { table { tr { td { +"Hello" } } }}13.1.1 도메인 특화 언어가독성 향상: 도메인 ..

리플렉션(Reflection)은 코드를 실행 중에 탐색하거나 수정할 수 있는 기능코틀린에서는 kotlin.reflect 패키지를 통해 리플렉션 기능을 제공함이를 활용하면, 클래스 이름으로 객체를 만들거나, 프로퍼티 이름으로 값을 읽고 쓸 수 있음12.2.1 코틀린 리플렉션 API: KClass, KCallable, KFunction, KPropertyKClass코틀린 클래스에 대한 메타데이터를 담는 객체.String::class, MyClass::class처럼 사용.자바의 Class와 유사하지만, 코틀린 타입 시스템과 연동됨.KClass를 통해 클래스 이름, 생성자, 멤버, 상속 계층 등을 조회 가능.val kClass = String::classprintln(kClass.simpleName) // 출력..

Jetpack 라이브러리의 KMP 지원 확대Google은 Android와 iOS 간의 비즈니스 로직 공유를 위해 Jetpack 라이브러리에 KMP 지원을 추가하고 있음지난해 Room, DataStore, Collection 라이브러리에 KMP 지원을 시작했으며, 현재는 ViewModel, SavedState, Paging 라이브러리에도 지원을 확대하고 있습니다. Jetpack 라이브러리의 플랫폼별 지원 수준은 세 가지 계층으로 분류되며, 최상위 계층은 Android, iOS, JVM을 포함함라이브러리상태설명RoomStableDB 사용 가능 (SQLDelight 대안으로 각광)DataStoreStableSharedPreferences 대체 가능CollectionStableKotlin 표준 컬렉션 확장 지원..

12.1.1 어노테이션을 적용해 선언에 표지 남기기@Test테스트 함수임을 표시하는 어노테이션코틀린에서 JUnit 기반의 테스트를 실행할 때 사용이 어노테이션이 붙은 함수는 테스트 프레임워크가 자동으로 실행import org.junit.Testimport kotlin.test.assertEqualsclass MyTests { @Test fun addition_isCorrect() { assertEquals(4, 2 + 2) }}JUnit4: org.junit.Test**JUnit5**에서는 @org.junit.jupiter.api.Test 사용코틀린에서는 kotlin.test.Test도 제공됨 (멀티플랫폼에서 사용 가능)@Deprecated더 이상 사용하지 말아야 할 선언에..