전체 글
-
Coroutine 취소BackEnd/coroutine 2025. 6. 1. 05:00
Coroutine 취소 코루틴 실행 도중, 더이상 코루틴을 실행할 필요가 없어지면 즉시 취소해야 합니다. 취소하지 않으면 코루틴이 스레드를 계속해서 사용하기 때문에 애플리케이션의 성능 저하로 이어집니다.예) 사용자가 오래 걸리는 이미지 변환 작업을 요청한 후 취소한 경우 다음은 2500밀리초 이후 longJob 코루틴을 취소하는 코드입니다.import kotlinx.coroutines.*fun main() = runBlocking { val startTime = System.currentTimeMillis() val longJob: Job = launch(Dispatchers.Default) { repeat(10) { repeatTime -> delay(1..
-
지연 CoroutineBackEnd/coroutine 2025. 5. 31. 03:00
지연 Coroutine지연 코루틴이란 즉시 실행 요청되지 않는 코루틴입니다.launch 함수의 start 인자로 CoroutineStart.LAZY를 넘기면 지연 코루틴이 생성됩니다.지연 코루틴은 start 함수나 join 함수를 호출하면 실행됩니다.즉시 실행만 원하면 start 함수를, 실행과 동시에 끝날 때까지 기다리려면 join 함수를 호출하면 됩니다.import kotlinx.coroutines.*fun main() = runBlocking { val startTime = System.currentTimeMillis() val lazyJob: Job = launch(start = CoroutineStart.LAZY) { println("[${getElapsedTime(startTime)}..
-
Coroutine 순차 처리BackEnd/coroutine 2025. 5. 9. 23:50
'토큰 업데이트 후 네트워크 요청', '이미지 변환 후 업로드 요청' 같이 작업 간에 선후 관계(종속성) 있는 작업들이 존재합니다. 다음은 순차처리 되지 않는 코드입니다. 토큰이 업데이트 되고 네트워크 요청을 해야하나, 병렬로 처리되어 토큰 업데이트 완료 전 네트워크 요청이 일어납니다.import kotlinx.coroutines.*fun main() = runBlocking { val updateTokenJob = launch(Dispatchers.IO) { println("[${Thread.currentThread().name}] 토큰 업데이트 시작") delay(100L) // 새로운 토큰을 가져오는데 걸리는 시간 println("[${Thread.cu..
-
CoroutineDispatcherBackEnd/coroutine 2025. 5. 6. 08:30
CoroutineDispatcher코루틴을 스레드로 보내 실행시키는 객체 CoroutineDispatcher는 코틀린 코루틴의 핵심 구성요소 중 하나로, 코루틴이 어떤 스레드나 스레드 풀에서 실행될지를 결정하는 역할을 합니다. 즉, "코루틴을 어디에서, 어떻게 실행할 것인가"를 제어하는 실행 컨텍스트의 일부입니다.SingleThreadDispatcher SingleThreadDispatcher는 오직 하나의 스레드에서만 코루틴을 실행하도록 보장하는 디스패처(Dispatcher)입니다.import kotlinx.coroutines.*val singleThreadDispatcher: CoroutineDispatcher = newSingleThreadContext("SingleThread")fun m..
-
runBlockingBackEnd/coroutine 2025. 5. 5. 10:00
runBlocking runBlocking 함수는 이 함수를 호출한 스레드를 사용해 실행되는 코루틴을 만들어냅니다. runBlocking 코루틴이 종료될 때 스레드 점유가 해제됩니다. 즉, 현재 스레드를 블로킹(중단)하여 코루틴 코드를 동기적으로 실행하는 함수입니다.runBlocking = Run(실행) + Blocking(차단) 주요 특징현재 스레드를 블로킹: runBlocking { ... } 블록 내 모든 작업이 끝날 때까지 해당 스레드를 멈춥니다.코루틴 월드로 진입: 일반 함수(main 등)에서는 launch, async 같은 코루틴 빌더를 바로 사용할 수 없습니다. runBlocking을 사용하면 코루틴 스코프가 생성되어, 그 안에서 launch, async 등 코루틴 관련 함수를 사용할 수 ..
-
Coroutine 등장 배경BackEnd/coroutine 2025. 5. 3. 22:00
Overview 인프런- 코틀린 코루틴 완전 정복 강의를 수강하고 정리합니다.강의 소스 코드 GitHub - HanseomKim/coroutinelecture: 『코틀린 코루틴 완전 정복』, 조세영, 인프런(2024) 저장소 입니다.『코틀린 코루틴 완전 정복』, 조세영, 인프런(2024) 저장소 입니다. Contribute to HanseomKim/coroutinelecture development by creating an account on GitHub.github.com 단일 스레드 애플리케이션 스레드 하나만 사용해 실행되는 애플리케이션입니다. 단일 스레드 애플리케이션의 한계 스레드는 한 번에 하나의 작업밖에 수행하지 못하기 때문에, 한 작업이 오래 걸리는 경우 문제가 됩니다. 메인 스레드 또..
-
Synonym SearchBackEnd/Elasticsearch API 2025. 4. 3. 04:00
검색 시 유사어를 활용하여 검색 결과의 범위를 확장하고 검색 경험을 향상시키는 기능입니다. 예를 들어, 사용자가 "laptop"을 검색하면 "notebook"이 포함된 문서도 찾을 수 있게 해주는 기능입니다. 동의어 구현 방법1. Synonyms API 사용 (Elasticsearch 8.13+) REST API를 통해 동의어 세트를 관리할 수 있습니다.PUT /_synonyms/my_synonyms{ "synonyms_set": [ { "id": "tech-terms", "synonyms": ["laptop, notebook, portable computer"] } ]} 그리고 분석기 설정에서 이를 참조합니다."filter": { "my_synonym_filter"..
-
Fuzzy Match QueryBackEnd/Elasticsearch API 2025. 4. 1. 04:00
검색어와 정확히 일치하지 않더라도 유사한 용어를 찾을 수 있게 해주는 기능입니다. 주로 오타, 철자 오류, 유사어 처리에 유용합니다. Fuzzy Match Query Match Query에 fuzziness 파라미터를 추가하여 사용합니다.GET /_search{ "query": { "match": { "field_name": { "query": "search_term", "fuzziness": "AUTO" } } }} 주요 파라미터fuzziness: 허용되는 최대 편집 거리입니다. "AUTO" 또는 정수 값(1, 2 등)으로 설정 가능하며, "AUTO"는 검색어 길이에 따라 자동으로 조정됩니다. (3~5글자: 1회 편집 허용, 6글자 이상: 2회..