분류 전체보기
-
코루틴 Timeout이 제대로 동작하지 않은 이유Kotlin/코루틴 2024. 3. 25. 00:24
개요코루틴 timeout을 다루며 코루틴 Timeout이 제대로 동작하지 않은 이유에 대해 공유해보고자 합니다.부제: coroutine timeout dose not work 코루틴의 withTimeout 메서드public suspend fun withTimeout(timeMillis: Long, block: suspend CoroutineScope.() -> T): T { contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } if (timeMillis setupTimeout(TimeoutCoroutine(timeMillis, uCont), block) }} withTimeout 메서드를 활용하면 ..
-
ScheduledThreadPoolExecutor란?Java/Executor Service 2024. 3. 17. 19:29
개요 ScheduledThreadPoolExecutor라는 개념을 알게 되어 이해해보고자 합니다. 해당 글을 읽기 전 Future, ThreadPool, ExecutorService, ThreadPoolExecutor 개념에 대해 잘 모른다면 다음 글을 읽고 오시면 좋습니다. ExecutorService란? ThreadPoolExecutor란? ScheduledThreadPoolExecutor란? val fixedThreadPool = Executors.newFixedThreadPool(2) val scheduledThreadPool: ExecutorService = Executors.newScheduledThreadPool(2) //newScheduledThreadPool 내부 구현은 Scheduled..
-
Kotlin takeIf와 takeUnless 함수Kotlin/Kotlin 2024. 3. 13. 00:01
개요 Kotlin에서 takeIf()와 takeUnless() 함수를 제공한다는 사실을 알게 되었고, 해당 함수들에 대해서 알아보고자 합니다. takeIf 함수 public inline fun T.takeIf(predicate: (T) -> Boolean): T? { contract { callsInPlace(predicate, InvocationKind.EXACTLY_ONCE) } return if (predicate(this)) this else null } takeIf 함수는 T (어떤 객체)의 확장함수입니다. predicate를 인자로 받아서 조건에 만족하는경우 자기 자신을 반환하거나 null을 반환합니다. takeUnless 함수 public inline fun T.takeUnless(predi..
-
SOHO란?금융지식쌓기 2024. 3. 12. 00:01
SOHO란? Small Office Home Office의 약자로 기존 사무실의 개념에 벗어나는 공간 내에서 이루어지는 사업을 뜻합니다. 창업용어로써 전문성을 가지고 적은 자본으로도 창업이 가능합니다. 흔히 가택 근무 형태나 인터넷 등을 통해 소규모 사업을 하는 개인 자영업자들을 말합니다. KB 국민은행의 SOHO센터 국민은행을 예로 들면 SOHO 센터를 운영하며 개인사업자 지원제도 및 전용대출상품등을 제공합니다. 참고자료 https://www.moef.go.kr/sisa/dictionary/detail?idx=224 https://m.blog.naver.com/sbcblog/222130815315 https://ko.wikipedia.org/wiki/%EC%86%8C%ED%98%B8_(%EC%98%A4..
-
logback 초간단 사용법모니터링 2024. 3. 11. 00:01
개요Logback은 Java 커뮤니티에서 가장 널리 사용되는 로깅 프레임워크 중 하나입니다. log4j를 대체하고 있으며 빠른 적용이 가능합니다. Dependencydependencies { implementation("ch.qos.logback:logback-core:1.3.5") implementation("ch.qos.logback:logback-classic:1.3.5") testImplementation("org.slf4j:slf4j-api:2.0.4")}3가지 의존성을 추가해주면 됩니다. Logback Architecture %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n ..
-
Kotlin fold, reduce 메서드Kotlin/Kotlin 2024. 3. 10. 00:01
Reduce 메서드 public inline fun Iterable.reduce(operation: (acc: S, T) -> S): S { val iterator = this.iterator() if (!iterator.hasNext()) throw UnsupportedOperationException("Empty collection can't be reduced.") var accumulator: S = iterator.next() while (iterator.hasNext()) { accumulator = operation(accumulator, iterator.next()) } return accumulator } reduce 메서드의 경우 Iterable의 확장함수입니다. 초기값은 컬렉션의 첫 ..
-
Kotlin associateBy, groupBy 함수Kotlin/Kotlin 2024. 3. 9. 00:01
개요 Kotlin의 Collection을 다루는 방법 중 associateBy 함수와 groupBy 함수에 대해서 알아보고자 합니다. associateBy와 groupBy 함수 둘의 공통점은 collection의 특정한 키로 map을 만들어냅니다. 키는 KeySelector 매개변수에 정의되고 valueSelector는 키의 값에 어떤 내용을 저장할지를 정의합니다. associateBy와 groupBy 함수의 차이점 associateBy 함수는 key가 동일할 때 마지막으로 등장한 값을 덮어씌워서 사용하며 groupBy는 key가 동일하더라도 list로 모든 값을 다룰 수 있습니다. associateBy 내부구현 //key값만 받음 public inline fun Iterable.associateBy(k..
-
Adaptor 패턴으로 호출가능한 Local 환경 만들기Spring Framework 2024. 3. 8. 00:01
개요 FeignClient를 활용하다 보면 Local 호출 테스트를 수행하기 위해 MockServer를 띄우는 작업을 수행해야 합니다. 어떻게 하면 Dummy값으로라도 Local에서도 호출 테스트를 수행해 볼 수 있을까요? 문제 상황 @FeignClient( name = "localTestFeign", url = "http://external-service:8080", dismiss404 = true, ) interface ExternalServiceCallFeignClient { @GetMapping("/external-service-call") fun getExternalInformation(): String } feignClient url을 가상의 외부 도메인을 호출한다고 가정하겠습니다. @Rest..