반응형

2021/05 7

[코틀린 프로그래밍] Chapter.11 내부 반복과 지연 연산

외부 반복자가 눈에 띄는 명령형 스타일과는 다르게 함수형 프로그래밍은 내부 반복자를 사용한다. 개발자는 반복에 집중하는 것이 아니라 콜렉션이나 범위에 있는 각 요소에 집중하게 한다. 또한 내부 반복자는 명시적 뮤터빌리티을 피하게 해주기 때문에 경쟁조건의 위험없이 반복을 쉽게 병렬화할 수 있다. 코틀린의 내부 반복자는 편리하고 표현력이 강하고 외부 반복자와 비교했을 때 복잡성을 낮춰준다. 하지만 퍼포먼스가 안 좋을 수 있다. 내부 반복자는 외부 반복자와 비교해 봤을 때 연산을 약간 더 많이 한다. 콜렉션의 요소의 크기가 수백개 정도로 비교적 작은 경우엔 영향이 없지만 수천 개를 다루는 아주 큰 데이터의 콜렉션을 다루는 경우에는 오버헤드가 이슈가 될 수 있습니다. 이럴 때 바로 코틀린의 시퀀스가 필요합니다...

Study/kotlin 2021.05.25

[코틀린 프로그래밍] Chapter.10 람다를 사용한 함수형 프로그래밍

함수형 프로그래밍은 본질적으로 복잡성이 낮습니다. 개발자는 적은 코드로 기능을 구현하고 코드가 더 읽기 쉽고, 이해하기 쉽고, 유지보수하기 쉽게 만들 수 있습니다. Java 같은 언어는 명령형 스타일과 객체지향 스타일의 조합을 제안했습니다. 객체지향 프로그래밍은 추상화와 캡슐화 개념에서 유용했습니다. 함수형 프로그래밍의 목적은 객체지향형 프로그래밍을 대체하는 것이 아니라 복잡성을 낮추는 것입니다. 코틀린은 태생부터 명령형, 함수형, 객체지향형 패러다임을 지원했습니다. 이번 글에서는 함수형 프로그래밍의 장점에 대해서 정리해보겠습니다. 또한 람다 표현식을 만들고 사용하는 법과 람다를 사용하는 경우에 대해서 알아보겠습니다. 함수형 스타일 함수형 스타일은 선언적 스타일에서 태어났습니다. 선언적 스타일의 핵심은 ..

Study/kotlin 2021.05.18

[Kotlin] Application 설정값 가져오는 방법 - ConfigurationProperties로 구성

이번 글에서는 Kotlin에서 아래의 application.yml의 설정값을 읽어오는 방법을 정리해보겠습니다. 이 글에서 사용하는 설정방법은 SpringBoot 2.2.1 이상 버전부터 지원가능한 방법입니다. 모든 소스는 Github에 올려두었습니다. Application.yml sample: kotlin: language: kotlin study-days: 30 java: language: java study-days: 90 test: javaTest build.gradle.kts 아래의 디펜던시가 추가되있어야 ConfigurationProperties를 사용할 수 있습니다. dependencies { annotationProcessor("org.springframework.boot:spring-boo..

Develop/kotlin 2021.05.17

Unrecognized field "address" (class me.kotlin.sample.sample.SimpleData), not marked as ignorable (2 known properties: "first_name", "last_name"]) at [Source: UNKNOWN; line: -1, column: -1] (through reference chain: me.kotlin.sample.sample.SimpleData["ad..

ObjectMapper를 사용하던 중 에러 발생! 증상 에러 메시지 Unrecognized field "address" (class me.kotlin.sample.sample.SimpleData), not marked as ignorable (2 known properties: "first_name", "last_name"]) at [Source: UNKNOWN; line: -1, column: -1] (through reference chain: me.kotlin.sample.sample.SimpleData["address"]) OtherData 데이터 객체를 SimpleData 데이터 객체로 바꾸는 중 에러 발생 class OtherData( val lastName: String? = null, va..

TroubleShooting 2021.05.12

[코틀린 프로그래밍] Chapter.09 델리게이션을 통한 확장

먼저 글을 작성하기 전에 자바에는 없는 기능을 알려드립니다. 상속과 델리게이션은 클래스를 다른 클래스로부터 확장시키는 개념입니다. 코틀린은 객체 지향 프로그래밍을 디자인하면서 두 가지 방법 중 선택하여 사용할 수 있습니다. 상속은 부모와 자식이 강력하게 묶이고 수정할 수 없습니다. 일단 상속을 받으면 클래스는 부모의 클래스에 귀속되어 버립니다. 델리게이션은 상속보다 유연한 개념입니다. 객체는 객체 자신이 처리해야 할 일을 다른 클래스 인스턴스에게 위임하거나 넘길 수 있습니다. 서로 다른 클래스의 인스턴스끼리 위임할 수 있습니다. 상속 대신 델리게이션을 쓰는 상황 - 상속 : 클래스의 객체가 다른 클래스의 객체가 들어갈 자리에 쓰여야 할 때 - 델리게이션 : 클래스의 객체가 단순히 다른 클래스의 객체를 사..

Study/kotlin 2021.05.11

[Querydsl-JPA] 자주 사용하는 기능 정리 (Kotlin)

이번 글에서는 다양한 프로젝트를 진행하면서 자주 사용되었던 Querydsl-JPA를 정리해보겠습니다. Kotlin Querydsl-JPA 설정방법이 궁금하신 분은 지난번 작성한 이글을 참조해주시기 바랍니다. 모든 소스는 Github에 올렸습니다. 참조해주세요 :) 간단한 목차입니다. 찾으시는 기능이 있으시다면 아래의 목차를 복사하여 Ctrl + F 로 검색하시면 빠르게 찾으실 수 있습니다. 간단한 RUD Read 전체조회 원하는 필드만 조회 QueryProjection Annotation Projections.fields Update Delete 게시판 관련 쿼리 케이스 Paging 기능 추가 케이스 Page && Sort 기능과 검색조건 포함된 케이스 Many Dynamic Query 대용량 데이터 처..

Develop/spring-data 2021.05.10

[코틀린 프로그래밍] Chapter.08 클래스 계층과 상속

언어를 다루는 개발자 입장에선 클래스는 쉬운 것 같으면서도 매우 복잡하다고 생각합니다. 클래스는 다른 클래스의 추상화와 연결되어 있고 이를 바탕으로 만들어집니다. 코틀린의 클래스는 기본적으로 final입니다. 베이스 클래스로 사용하려면 open 키워드를 class 앞에 선언해줘야합니다. 클래스를 sealed로 정의하여 클래스에서 확장할 수 있는 특정 클래스를 명시할 수 있습니다. 인터페이스와 추상 클래스 인터페이스 코틀린의 인터페이스는 추상 메소드를 작성하는 명세에 의한 설계를 할 수 있고 Java의 default 메서드처럼 구현이 가능합니다. 또한 static 메소드가 컴패니언 객체에 들어있는 것과 유사하게 작성할 수 있습니다. // 간단한 interface interface Remote { // 구현..

Study/kotlin 2021.05.03
728x90
반응형