일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- collectLatest
- Product Flavor
- KAKAO
- monotone stack
- cancellationException
- ServerDrivenUI
- SDUI
- 릴리즈 키해시
- TOSS 과제
- 백준
- Flow
- Advanced LCA
- app-distribution
- conflate
- flowon
- google play console
- coroutine
- hotStream
- coroutinecontext
- 백준2309
- Android
- Next Challenge
- coldStream
- coroutinescope
- Algorithm
- withContext
- ShapeableImageView
- Kotlin
- java
- 안드로이드
- Today
- Total
목록Kotlin (4)
루피도 코딩한다
문제 https://school.programmers.co.kr/learn/courses/30/lessons/42890 풀이 흐름 후보 키 목록 뽑기 -> 비트 연산을 활용한 조합구하기 최소성 검사 -> 비트 연산 활용 유일성 검사 -> 자료구조 Set 활용 후보키 에 속하는 속성을 String으로 이어붙인 뒤 set에 넣어주기 ex) 후보키가 이름, 전공 이렇게 두가지가 있다면 아래와 같이 처리함 val hashSet = {"ryanmusic, "apeachmath" .. } 조합에 관해 느낀점 c++에서는 조합을 구할 때 algorithm STL에서 지원해주는 permutation 함수를 활용해 편리하게 구현했었다. 그런데 kotlin에서는 조합 합수의 경우 재귀함수로 구성하는 등 그 과정이 좀 복잡..

지난 포스트에서는 Flow를 방출하는 쪽에서 flowOn연산자를 사용해 Context를 변경하는 방법에 대해 살펴보았다. 이렇게 Producer의 Context를 변경하게 될 경우 오래 걸리는 작업들을 비동기적으로 처리할 수 있어서 도움이 된다. 그러나 만약 Collect 하는 쪽의 작업이 오래 걸리면 어떻게 해야 할까? 방출되는 속도에 비해 처리되는 속도가 현저히 느리며 데이터가 계속 쌓이게 되는 문제를 Back Pressure라고 한다. 이번 포스트는 이런 문제를 해결할 수 있는 Buffering에 대한 내용을 다룬다. 아래 예시를 통해 Collector의 시간이 긴 상황을 살펴보자. emit : 100ms의 delay 걸림 collect : 300ms의 delay 걸림 둘 다 thread를 지정하지..

Intermediate flow operators Basic Operators map : map 내부에서 변경한 데이터를 downStream으로 흘려보냄 filter : 조건에 맞는 것만 남기기 (조건을 술어 혹은 predicate라고 한다) filterNot : 조건에 맞지 않는것만 남기기 Transform Operator transform : stream 수정 (임의의 값을 임의의 횟수만큼 emit 가능) Size-limiting Operators take(n) : 시작지점부터 n개만큼 data를 다 받아들이면 flow 실행 cancle 시키기 takeWhile : 특정 조건을 만족하는 동안만 값을 가져오게 하기. 조건 안맞으면 즉시 실행 취소 drop(n) : 시작부터 n 개만큼 data 버리기 만..
코루틴 취소를 왜하냐? 필요하지 않은 코루틴을 적절히 취소해 컴퓨터 자원을 아낄 수 있다 코루틴 취소 하는 방법 == CancellationException 발생 Kotlin 공식문서의 말을 빌리자면 *' A coroutine code has to cooperate to be cancellable' *라고 한다. Cancellable 하다라는 것은 코루틴 블록 내부에서 CancellationException 이 발생가능한 구조여야 한다는 것이다. CancellationException이 발생되는 방법은 아래와 같이 두가지가 있다. [취소 방법 1] kotlinx.coroutines의 suspending function을 활용하자 kotlinx.coroutines의 suspending 함수들은 'cance..