본문 바로가기

Language/Kotlin

(8)
[Kotlin] Coroutine 기초 과제 1. 빈칸 채우기 문제 1. 코루틴은 Kotlin에서 제공하는 경량 ________ 모델이다.2. 코루틴의 핵심 3요소는 suspend fun, CoroutineScope, 그리고 ________ 이다.3. suspend는 함수가 “항상 비동기”라는 뜻이 아니라, ________/재개 가능하다는 뜻이다.4. 결과가 없는 비동기 작업을 시작할 때 주로 사용하는 빌더는 ________ 이다.5. 결과가 있는 비동기 작업을 시작하고 await()로 받는 빌더는 ________ 이다.6. 블로킹 I/O 작업은 보통 withContext(________)로 분리한다.7. 자식 코루틴이 모두 끝날 때까지 기다리는 안전한 범위를 만드는 함수는 ________ 이다.8. 자식 하나가 실패해도 다른 자식을 계속 수행하게..
[Kotlin] Sealed Class와 Result 패턴 복습과제 Sealed Class · Result 패턴 — 개념 빈칸 문제안내: ( )에 알맞은 말을 적으세요. 영어 키워드도 OK입니다.정답은 맨 아래에 있습니다. 1. Sealed Class1-1. sealed class는 가능한 ( )의 개수가 타입 정의에 고정되어 있다. 1-2. sealed class는 보통 ( )처럼 직접 인스턴스를 만들 수 없다. 1-3. 추가 데이터가 없는 상태 하나만 표현할 때는 data ( )를 쓴다. 1-4. 필드가 있는 상태는 data ( )로 만든다. 1-5. sealed의 하위 타입은 보통 ( ) 파일에 선언하며, 바깥에서 임의로 상속할 수 없다. 1-6. when에서 is OrderStatus.Paid처럼 분기하면, 해당 블록 안에서 ( ) cast로 status.paid..
[복습] 1~3강까지 미션 [목표]Scope 5개를 상황만 보면 골라 쓸 수 있다 (let / apply / also 중심)패턴 A·B·C를 직접 타이핑할 수 있다data class, nullable, ?., ?:, takeIf를 결제 도메인 예제에 섞어 쓸 수 있다https://play.kotlinlang.org/에서 작성하면됨 문제를 풀기 위한 가상 결제 DTOdata class PaymentRequest( val orderId: String, val amount: Long, val idempotencyKey: String?, // 멱등키 — 없을 수 있음 val couponCode: String?)data class PaymentEntity( var orderId: String = "", v..
[Kotlin] Coroutine 기초 1.Coroutine 기초 개념2.꼭 알아야 하는 기초 API3.Go(goroutine)와 비교 포인트4.결제/도메인 시스템에서 코루틴 활용5.Go로 짜던 감각을 Kotlin으로 옮길 때 팁6.실무에서 자주 하는 실수 1.Coroutine 기초 개념코루틴은 Kotlin에서 제공하는 경량 동시성 모델이다.결제/주문 같은 백엔드 시스템은 DB 조회, 외부 PG 호출, 메시지 발생처럼 I/O 대기가 많기 때문에 coroutine을 이해하면 실무에 바로 연결 할 수 있다. 1) 코루틴의 핵심 3요소핵심은 3가지이다.suspend 함수(suspend fun) : 중단/재개 가능한 함수CoroutineScope: 코루틴 생명주기 관리 범위Dispatcher: coroutine이 실행될 스레드 풀 (IO, Defa..
[Kotlin] Collection API & 함수형 프로그래밍 - 람다/고차함수/스코프 함수 복습- Collection API- Sequence- 함수형 프로그래밍 핵심 개념 1. 람다/고차함수/스코프 함수 복습먼저, 오늘 학습 목표를 시작하기 전에 위 3가지를 확실히 복습하면 Collection API를 이해하기 쉬울 것같아서 정리한다. 람다 (Lambda)고차함수 (Higher-Order Function)스코프 함수 (Scope Function)1) 람다 (Lambda)이름 없는 함수를 값처럼 넘기거나 저장하는 문법이다.// 일반 함수fun add(a: Int, b: Int): Int { return a + b}// 람다 (같은 의미)val addLambda: (Int, Int) -> Int = { a, b -> a + b }println(add(1, 2..
[Kotlin] Scope Function 완전 정리 코틀린 Scope Function은 5개이다.- let- run- with- apply- also 처음엔 비슷해 보여서 헷갈리는데, 핵심은 딱 2가지이다.1. 객체를 블록 안에서 어떻게 참조하나? (this / it)2. 블록의 결과로 무엇을 반환하나? (람다 결과 / 객체 자신) 1. 함수 1. letnull이 아닐 때만 블록을 실행하고, it으로 값을 받아 변환한 결과를 돌려준다.val merchantId: String? = request.merchantIdval normalizedMerchantId = merchantId ?.trim() ?.takeIf { it.isNotEmpty() } ?.let { // 결제 시스템에서는 식별자 정규화가 중요 it.upp..
[Kotlin] Kotlin 핵심 문법 3가지 1. 널 안정성(Null Safety)2. 데이터 클래스(Data Class)3. 확장 함수 (Extension) 자바 백엔드에서 NullPointerException(NPE) 은 가장 흔한 런타임 장애 원인 중 하나이다.// JavaUser user = userRepository.findById(id);System.out.println(user.getName()); 여기서 user가 null이면 서버가 터진다. 해당 NullPointerException(NPE) 은 백엔드 시스템에서 여러 가지 심각한 문제를 일으킨다.컴파일 중에 감지되지 않음특정 운영 데이터에서만 발생하는 경우가 많음트래픽이 많을 경우 서비스 장애로 이어질 수 있음특히 결제, 정산, 주문 처리 시스템에서는 단 한번의 null처리 실수..
[Kotlin] 코틀린 이해해보기 1. 코틀린의 이해2. 기본 문법- 변수 선언- 함수 선언1. 코틀린의 이해핀테크/결제 기업들이 백엔드에 코틀린을 도입하는 이유를 알고 싶어 조사해봤다.1원만 틀려도 대형 사고가 터지는 결제/핀테크 백엔드 시스템에서 자바의 불편함과 반복 코드를 줄이고 안정성을 강화하기 때문이라고 한다. 1-1. 코틀린을 쓰는 4가지 이유결제 백엔드는 대용량 트래픽 처리, 돈과 관련된 데이터 무결성, 빠른 기능 배포가 생명이다. 코틀린은 이 세 가지를 모두 만족한다. JVM 상호 운용과 점진적 전화 (Gradual Adoption)대형 핀테크/결제 시스템은 오랫동안 Java와 Spring Framework로 구축된 경우가 많다.Kotlin은 같은 JVM 바이트코드를 대상으로 하며, Java와 상호 운용이 잘 되도록 설계..