Kotlin inline, reified, noinline 정리
목차 inline 함수 reified 타입 파라미터 noinline 람다 @JvmName 오버로딩 실제 적용 사례 요약 1. inline 함수 1.1 동작 원리 inline 키워드가 붙은 함수는 컴파일 시 호출 지점에 함수 본문이 직접 복사된다. 일반 함수 호출처럼 스택 프레임을 만들지 않...
목차 inline 함수 reified 타입 파라미터 noinline 람다 @JvmName 오버로딩 실제 적용 사례 요약 1. inline 함수 1.1 동작 원리 inline 키워드가 붙은 함수는 컴파일 시 호출 지점에 함수 본문이 직접 복사된다. 일반 함수 호출처럼 스택 프레임을 만들지 않...
Kotlin 코루틴 Trouble-Shooting (with Redisson 분산락) Situation Redisson 분산락을 사용하는 lock 함수에서, block() 람다 함수 실행 후에 락이 정상적으로 해제(unlock)되지 않는 현상 발생 -- 1. 정상적으로 `unlock` 되는 경우 2025-05-1...
Kotlin 의 .takeIf() & .takeUnless() 함수 Kotlin v1.9.22 버전 기준 블로그 작성 .takeIf() takeIf() 함수는 프로그래밍 역사상 오래 전부터 즐겨 사용하는 if 문과 같은 객체의 상태를 체크하는 로직에서 대체하여 활용할 수 있다. if 문에 들어가는 조건식...
코틀린 제네릭스 Generics? 제네릭 generic 이란 개념은, Java 개발하면서 많이 마주치게 된다. Kotlin 도 Java 와 비슷한 제네릭스 개념을 가지고 있지만, 실체화한 타입 파라미터 와 선언 지점 변성 등의 새로운 개념이 추가되었다. 이런 개념은 제네릭 활용을 좀 더 풍부하게 만들어 주는 역할을 한다. ...
코틀린 타입 시스템 Type System? Java 와 Kotlin 의 큰 차이점 중 하나는 변수 타입을 널이 될 수 있는 타입 과 널이 될 수 없는 타입 으로 나눌 수 있다는 점이다. 그리고, 컬렉션 Collection 을 다룰 때에도 읽기 전용 컬렉션 과 변경 가능 컬렉션 으로 나눠진다. 이 두 가지 특성은 Kotl...
Kotlin 의 람다 Lambda Part.1 람다 식 Part.1 멤버 참조 Part.1 함수형 스타일 Part.2 시퀀스 Sequence : 지연 컬렉션 연산 Part.2 자바 함수형 인터페이스 코틀린에서 사용 Part.2 수신 객체 지정 람다 사용 지연 계산(lazy) 컬렉션 연산 코틀린...
Kotlin 의 람다 Lambda Part.1 람다 식 Part.1 멤버 참조 Part.1 함수형 스타일 Part.2 시퀀스 Sequence : 지연 컬렉션 연산 Part.2 자바 함수형 인터페이스 코틀린에서 사용 Part.2 수신 객체 지정 람다 사용 람다 식 Lambda expression 람...
Kotlin 의 다양한 클래스 활용법 데이터 클래스 data class 클래스 위임 by object 키워드 컴파일러가 생성한 메소드 Java 는 클래스가 equals, hashCode, toString 등의 메소드를 구현해야하기 때문에, IDE 에서 자동으로 이런 메소드를 자동으로 기계적으로 구현해주고 있...
Kotlin 클래스에 대해서… 객체 지향 프로그래밍을 하면서 클래스와 인터페이스 개념을 빼놓을 수는 없을 것 같다. Kotlin 에서도 다양한 클래스를 지원하고 있고, 그와 상응하게 Java 코드로 변환 처리는 어떻게 되고 있는지 파악하여 정확하게 Kotlin 개발을 할 필요가 있다고 생각한다. 클래스와 인터페이스 ...
Kotlin 함수에 대해서… Kotlin 의 함수 관련된 다양한 API 를 살펴보고자 한다. 실제 꽤 많은 내용을 포함하고 있다. 컬렉션 Collection 만들기 함수 호출 이름 붙인 인자 Default 파라미터 값 최상위 함수와 최상위 프로퍼티 const ...
Kotlin 기초 Kotlin 의 기초로서, 아래 항목을 확인해보겠다. 함수와 변수 클래스와 프로퍼티 선택 표현과 처리 이터레이션 예외 처리 함수와 변수 Function & Variable 함수 fun main(args: Array<String>) { println("H...
Kotlin 프로그래밍을 제대로 사용하기 위해 기초부터 차근차근 공부해보기로 했다. 학습의 기준은 Kotlin in Action 책으로 정하였고, 1장부터 11장까지 천천히 정리해볼 생각이다. Kotlin? Java 플랫폼에서 동작하는 새로운 프로그래밍 언어 정적 타입 (statically typed) 지정 언...
Step Spring Batch 에서 실질적으로 데이터를 처리하는 단계인 Step 에 대해서 알아보자. Step 의 데이터 처리 방식은 3단계로 나눠진다. ItemReader ItemProcessor ItemWriter 위와 같은 3개의 단계를 거쳐 데이터를 1. DB 또는 파일에서 읽고, 2. 가공/처리하...
Job Spring Batch 에서 상위 개념인 Job 의 설정은 무엇이 있는지 살펴보자. Configuring a Job Job 은 Step 을 가지고 있으며, 구현하기 위해서는 JobRepository 가 필요하다. 그리고 JobBuilderFactory 를 통해서 아래와 같은 설정을 할 수 있다. Restart...
Batch application 의 필요성 Spring Batch 를 살펴보기 전에 “Batch application 은 왜 필요할까?” 를 당연 먼저 생각해볼 필요가 있다. Batch application 은 아래와 같은 조건의 상황을 개발할 때 효율적인 서비스라고 생각한다. 대용량 데이터 처리 : 1만건, 10만건...