- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- pullrequest
- 일본어문법
- rxjava
- blog
- jlpt
- 학습지
- n3문법
- 인공지능
- errorhandling
- GIT
- 진짜학습지후기
- suspend
- PR
- KotlinInAction
- Android
- 책리뷰
- 책추천
- Kotlin
- webflux
- posting
- androidstudio
- 코틀린
- github
- CustomTab
- 진짜학습지
- ai
- 일본어기초
- 진짜일본어
- 안드로이드
- coroutine
목록Kotlin (12)
코딩하는 개굴이
해당 내용은 “코틀린 코루틴” 서적을 기반으로 작성되었습니다. Coroutine 의 중단은 어떻게 작동할까? 코루틴의 중심이 되는 기능이자 스레드 등과의 큰 차이점 중 하나가 잠시 멈추는, 중단에 있다는 것을 들어보았을 것이다. 마치 비디오 게임을 하다가 체크포인트나, 세이브를 하는 것처럼 중단 후 돌아올 수 있는 것이다. 이 부분에서 코루틴은 스레드와 크게 차이점을 가진다. 스레드는 저장이 불가하고 멈추는 것만 가능하나, 코루틴은 중단 시에 어떤 자원도 사용하지 않으면서 돌아올 때 다른 스레드에서 실행하는 것도, 중단되었을 때 반환하는 Continuation 객체의 직렬화/역직렬화까지 가능하기 때문이다. 그렇다면 도대체 어떤 점에서 다른지, 어떻게 중단과 재개는 동작하는지 한번 알아보도록 하자. 재개 ..
해당 포스팅은 Fastcampus 의 실무 프로젝트로 배우는 Kotlin & Spring: 리팩토링부터 서비스 구현까지 강의를 기반으로 작성되었습니다. Coroutine 의 기초 동작을 파악해볼 수 있도록 runBlocking, launch, async, suspend, flow 등을 사용해 코드를 작성해 보았다. 실행해보며, 감을 잡아보도록 하자 :) import kotlinx.coroutines.* import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.collect import kotlinx.coroutines.flow.flow import kotlin.system.measureTimeMillis fun main() { // #####..
Dispatchers.Main 을 이용해 로직을 짜는데, 뭔가 이상하게 순서가 꼬였다 싶은 순간이 있을 수 있다. 보통의 개발자는 위에서부터 아래로 코드의 실행 순서를 가정하고 개발을 하곤하기에 Dispatchers.Main 의 정확한 이해는 중요하다. 따라서, 순서가 보장되게 이를 사용하려면 어찌 해야하는지 한번 알아보도록 하자. 그러기 위해서 Dispatcher이 무엇인지 코루틴의 동작은 어찌되는지 먼저 확인해보자. Dispatcher 란? 코루틴의 어떤 스레드에서 돌아갈지 정의하는 역할로써, Event Loop 를 통해 작동된다. Event Loop는 Call Stack 과 Callback Queue 의 상태를 반복적으로 체크하고, 함수를 실행할 시간이 되면 큐의 첫번째 아이템을 Call Stack..
RxJava 는 비동기를 위해 주로 사용되는데, 그냥 사용한다고 비동기 처리가 수행되는 것이 아니라, 스케줄러를 통해 스레드를 분리해주어야한다. 스케줄러란? Scheduler 는 RxJava 의 코드가 어느 스레드에서 실행될 것인지를 지정하는 역할을 수행한다. 스케줄러의 지정은 subscribeOn, observeOn 연산자를 이용한다. subscribeOn: Observable 이 데이터의 흐름을 발생시키고 연산하는 스레드를 지정할 수 있다. 데이터를 발생시키는 쪽에서 흐름을 제어하기 위해 사용 observeOn: Observable 이 Observer에게 알림을 보내는 스레드를 지정할 수 있다. 전달받는 쪽에서 데이터를 처리하는 부분을 위해 사용 스케줄러의 종류 💡 RxJava 에서는 Computat..
Subject 는 데이터 스트림과 subscriber 성격을 둘다 갖고있다. Observable 과 Observer 를 둘다 구현한 추상 타입이기 때문에, 하나의 소스로부터 다수의 subscriber 에게 멀티 캐스팅이 가능한 장점이 있다. Observer 를 직접 구현하기 때문에, onNext, onError, onComplete 등의 이벤트를 수동으로 subscriber 에게 전달해줄 수 있다. 데이터 스트림의 성격 예를들어 PublishSubject 를 기준으로 살펴보자. 간단하게 PublishSubject 는 가장 단순한 구현체로, 이벤트를 subscriber 에게 전달할 수 있다. 단, 구독한 시점에서부터 발생하는 데이터를 전달하기 때문에, 데이터가 모두 발행된 뒤 구독하면 받을 수 없다. va..
시작하기 전에, 해당 글에서는 본인이 헷갈리는 부분이 다소 많았기 때문에 부가 설명을 많이 추가했음을 먼저 알리고싶다. 코루틴은 무엇일까? 코루틴은 시작된 스레드를 중단하지 않으면서 비동기적으로 실행되는 코드로, AsyncTask처럼 스레드의 직접 관리가 필요하지 않고, 기존의 다중 스레드보다 효율적으로 동작하는 장점이 있다. # 코루틴은 Thread를 중단하지 않는다? 스레드를 중단하지 않는다는 것이 어떤 의미일까? 우선, 코루틴1을 실행 중인 상태에서 코루틴2가 실행 될 때를 가정해보자. 이때, 실행 중인 Thread를 중지시키면서 Context Switching을 수행하는 것이 아닌 잠시 코루틴1을 멈춰두었다가 다시 실행할 때 이전 상태를 불러와 다시 스레드에서 이를 수행한다. 따라서, 코루틴은 T..
Kotlin IN ACTION 4강 : 클래스, 객체, 인터페이스 본 내용은 Kotlin IN ACTION (드미트리 제메로프, 스베트라나 이사코바 지음 / 에이콘 출판사) 책을 기반으로 작성되었습니다. 클래스 계층 정의 코틀린 인터페이스 코틀린 인터페이스 정의 및 구현하는 방법은 자바 8과 유사하다. 코틀린 인터페이스 안에는 추상 메소드와 구현이 있는 메소드도 정의할 수 있다. (자바 8의 디폴트 메소드와 유사) 코틀린에서 인터페이스는 interface 키워드를 사용하여 정의한다. 인터페이스를 구현하는 모든 비추상 클래스(구체적 클래스)들은 추상 메소드를 구현해야 한다. 자바에서는 클래스의 확장에서는 extends를, 인터페이스 구현은 implements 키워드를 사용하지만, 코틀린은 클래스 네임 뒤 ..
Kotlin IN ACTION 3강 : 함수 정의와 호출 본 내용은 Kotlin IN ACTION (드미트리 제메로프, 스베트라나 이사코바 지음 / 에이콘 출판사) 책을 기반으로 작성되었습니다. Kotlin 의 Collection 코틀린에서 모든 컬렉션은 자바 컬렉션을 활용하고 있어 자바 코드와의 상호작용 및 호환이 용이하면서, 더 많은 기능들을 쓸 수 있는 장점을 지닌다. println(set.javaClass) //javaClass는 자바 getClass에 해당한다. //코틀린의 모든 컬렉션은 독자적인 컬렉션이 아닌 자바 컬렉션을 활용한다. Collection : 여러 데이터를 모아놓은 하나의 단위로, 불변(immutable/read-only) 혹은 가변(mutable/read&write) 중 하나의..
본 내용은 Kotlin IN ACTION (드미트리 제메로프, 스베트라나 이사코바 지음 / 에이콘 출판사) 책을 기반으로 작성되었습니다. Kotlin IN ACTION 2강 : 코틀린 기초 Hello World! fun main(args: Array) { println("Hello World!") } 해당 코드에서 코틀린의 특징을 알아보자. 함수를 선언 시에, fun 키워드를 사용한다. 파라미터 이름 뒤에 파라미터의 타입을 쓴다. (변수 선언 시에도 마찬가지) 함수를 최상위 수준에 정의할 수 있다. (클래스 안에 함수를 넣어야 할 필요가 없다.) 배열 처리를 위한 문법이 따로 존재하지 않는다. 출력 시 println을 사용한다. (표준 자바 라이브러리 함수를 간결하게 사용 할 수 있도록 감싼 wrappe..
본 내용은 Kotlin IN ACTION (드미트리 제메로프, 스베트라나 이사코바 지음 / 에이콘 출판사) 책을 기반으로 작성되었습니다. Kotlin IN ACTION 1강 : 코틀린이란 무엇이며, 왜 필요한가? Kotlin 이란? 코틀린은 자바 플랫폼에서 돌아가는 새로운 프로그래밍 언어 대표적으로 서버상의 코드 (웹 애플리케이션의 백엔드 등), 안드로이드의 모바일 애플리케이션에 활용 가능 자바와 같이 정적 타입 (statically typed) 지정 언어 정적 타입 지정 언어 : 모든 프로그램 구성 요소의 타입을 컴파일 시점에 알 수 있으며, 프로그램 안에서 객체의 필드, 메소드 등의 사용시에 컴파일러가 타입을 검증해 준다. 동적 타입 지정 언어 : 타입과 관계없이 모든 값을 변수에 넣을 수 있고, 객..