일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Python
- TEST
- 코루틴
- boj
- Hilt
- textfield
- 백준
- activity
- pandas
- MyVoca
- Compose
- ProGuard
- architecture
- AWS
- relay
- 코드포스
- android
- Rxjava
- GitHub
- Kotlin
- Gradle
- 프로그래머스
- Coroutines
- 쿠링
- 암호학
- livedata
- Coroutine
- MiTweet
- androidStudio
- Codeforces
- Today
- Total
목록분류 전체보기 (379)
이동식 저장소
Kotlin Coroutines에서 Dispatcher는 코루틴이 실행되는 스레드를 결정한다. 특정한 스레드를 지정할 수도 있고, thread pool에 넘겨줄 수도 있고, 아예 정하지 않을 수도 있다. ``launch``, ``async``, ``withContext`` 등의 모든 코루틴 빌드 함수는 ``CoroutineContext`` 타입의 매개변수를 받는다. 따라서 필요하다면 dispatcher를 매개변수로 넘겨줄 수 있다. launch(Dispatchers.Default) { // do something } 이 글에서는 Kotlin에서 사용할 수 있는 dispatcher에 대해 자세히 알아보겠다. Dispatchers.Main 메인 스레드, 즉 UI 스레드를 의미하는 dispatcher이다. J..
백그라운드 작업 ``MealWork``와 ``ScheduleWork``를 정의했고, 현재 실행되고 있는 백그라운드 작업의 수를 세기 위해 Preferences DataStore에 정수형 값 ``RUNNING_WORKS_COUNT``를 정의했다. ``MealWork``와 ``ScheduleWork``가 실행될 때 count를 1 증가시키고, 작업이 끝날 때 count를 1 감소시키는 코드를 작성했다. 대략 다음과 같다. // MealWorker, ScheduleWorker override suspend fun doWork(): Result { preferencesRepository.increaseRunningWorkCount() // do background work preferencesRepository..
방금 공부한 내용을 확인하고 싶다면, 그 내용을 누군가에게 설명해 보면 된다. 설명하면서 막히는 부분이 있다면 분명 어디선가 빠트린 부분이 있는 것이다. 마찬가지로 자기 자신을 돌아보고 싶다면, 자신을 남에게 소개해 보면 된다. 나는 정말 제대로 공부했는가? 질문에 질문을 이어 던져도 완벽하게 대답할 수 있는가? 이 코드를 왜 짰는지, 어떻게 짰는지 설명할 수 있겠는가? 설명할 수 없는 것은 존재하지 않는 것이다. 차라리 아예 얘기하지 않는 편이 좋다. 모르면 깔끔하게 인정해야지, 변명하듯이 말 늘리지 말자. 어제 자기 전에 누워있는데, 문득 나만의 것이 없다는 생각이 들었다. 세상에 없던 것을 만들어본 적이 있는가? 또는 적어도 노력해본 적이 있는가? 물론 한빛 캘린더는 세상에 없던 것이지만, 아직 많..
Graph 그래프란 하나 이상의 정점이 0개 이상의 간선으로 이어진 것을 말한다. 간선은 양방향일 수도, 단방향일 수도 있다. 간선이 단방향이라면 간선을 통해 한쪽 방향으로만 이동할 수 있으며, 반대로는 이동할 수 없다. 간선에는 가중치가 있을 수도 있다. 일반적으로 가중치란 간선을 지나가는 비용 또는 정점 간의 거리를 의미한다. 그래프와 관련된 알고리즘으로는 최단 거리 알고리즘과 SCC 등이 있다. Tree 생각해 보니 Heap보다 Tree를 먼저 정리해야 했는데... 뭐 어쩔 수 없지. 사이클이 없는 그래프를 Tree라고 부른다. 사이클이란 정점에서 출발하여 서로 다른 간선을 지나 자기 자신으로 돌아오는 경로이다. 트리의 맨 위에 있는 노드를 루트 노드라고 한다. 반대로 맨 밑에 있는 노드를 리프 노..
Array 배열은 같은 타입의 자료 여러 개를 일직선으로 저장하는 자료구조이다. 메모리 공간에도 연속적으로 저장되는 특성 때문에 대량의 비트 연산을 쉽게 수행할 수 있다. 모든 자료가 연속적으로 저장되므로, 첫 번째 원소의 주소만 알면 상수 시간에 모든 원소에 접근할 수 있다. 그러나 (맨 뒤에 삽입하는 경우를 제외하면) 삽입과 삭제 연산을 처리하는 데 선형 시간이 걸린다. 삽입 또는 삭제하는 위치 뒤에 있는 요소들을 뒤로 밀거나(삽입) 앞으로 당겨와야(삭제) 하기 때문이다. 배열이 꽉 찼다면 메모리를 추가로 할당받아야 한다. 운이 나쁘다면 아예 다른 위치로 값을 옮겨야 할 수도 있다. LinkedList 값을 연속해서 저장하지 않고, 다음 값의 주소만을 가리키는 방식으로 저장한다. 메모리 상에 연속해서..