Kotlin

· Language.
Unit Java의 void와 동일하다. 함수가 유용한 것을 반환하지 않거나 리턴해줄 값이 아무것도 없으면 암시적으로 Unit을 반환한다고 말합니다. 그리고 이러한 기능은 부작용이 있는 작업을 수행할 수 있습니다. 무언가 기록/인쇄하거나 반환 값 없이 조작을 수행합니다. fun printHelloUnit(name: String?): Unit { if (name != null) println("Hello $name") else println("Hi there!") } //The Unit return type declaration is also optional. The above code is equivalent to: fun printHello(name: String?) { if (name != null)..
스프링 부트 내장 웹 서버 설정 스프링 부트 프로젝트를 생성할 시 스프링부트에서는 내장 서블릿 컨테이너인 톰캣(tomcat)이 자동으로 설정됩니다. 스프링부트에서는 ServletWebFactoryAutoConfiguration 클래스에서 자동적으로 Tomcat, Jetty 같은 내장 웹서버에 대한 설정을 자동적으로 처리하며 스프링부트 사용자가 쉽게 웹 서버 관련 설정을 하지 않아도 웹 서버 프로젝트를 안에 포함되게 합니다. @Configuration @AutoConfigureOrder(Ordered.HIGHEST_PRECEDENCE) @ConditionalOnClass(ServletRequest.class) @ConditionalOnWebApplication(type = Type.SERVLET) @Ena..
개요 Spring, Spring Boot 환경에서 개발을 하고계신 개발자 분들은 모두 JDBC라는 것을 들어보셨을 것이며, JPA와 같은 ORM 기술도 사용하시면서 개발을 하고계실 것이라고 생각합니다 😃 제가 생각하기에 데이터베이스와 함께 협력하는 우리 개발자들은 JDBC라는 개념을 무조건 알고가야 하지 않을까 하고 생각을 해봅니다. JDBC 등장 이유 애플리케이션을 개발할 때 데이터들은 대부분 데이터베이스에 보관합니다. 클라이언트가 애플리케이션 서버를 통해 데이터를 저장하거나 조회하면, 애플리케이션 서버는 다음과 같은 과정을 통해 데이터베이스를 사용합니다. 1. 커넥션 연결 - 주로 TCP/IP를 사용해 커넥션을 연결한다. 2. SQL 전달 - 애플리케이션 서버는 DB가 이해할 수 있는 SQL을 연결된..
· Language.
Kotlin Delegation으로 결합도 낮추기 Delegation Delegation은 interface의 구현이나 Property의 Accessor의 구현을 다른 객체에 위임하도록 해주는 패턴이다. Delegator -> Delegate 형태로 책임이나 처리를 넘긴다. Composition + Forwarding 이라고도 할 수 있다. Composition Composition은 상속 대신 객체를 내부 private 변수로 두어 구성요소로써 동작하게 하는 것을 의미한다. Forwarding 부모 메서드의 전달을 의미한다. 상속과 비슷하게 한 객체의 기능 일부를 다른 객체에 넘겨서 대신 수행하도록 한다. 위임을 활용하면 결합도를 낮출 수 있다. 코틀린에서는 기본적으로 클래스가 final을 붙이기 때문..
· Language.
kapt kapt는 Kotlin언어를 사용해 annotaion processor를 실행하기 위한 Gradle 플러그인이다. annotation processor annotation processor는 컴파일 타임에 소스 코드에 있는 주석을 읽어들이고, 그에 따라 추가적인 코드를 생성하거나 변형할 수 있다. 이를 통해서 자동화된 코드 생성이나 런타임에서 퍼포먼스 향상 등 다양한 이점을 얻을 수 있다. kapt 플러그인은 kotlin-gradle-plugin 플러그인을 사용하는 코틀린 프로젝트에서만 사용할 수 있으며, kapt를 사용하기 위해서는 먼저 kotlin-kapt 라이브러리를 프로젝트 의존성이 추가해야한다. plugins { id("org.jetbrains.kotlin.jvm") version "1..
· Language.
스코프 함수 스코프함수란 객체의 범위를 지정하는 데 사용되는 특수한 함수로, 객체 지향 프로그래밍에서 객체의 메서드와 유사하게 작동하지만, 스코프 함수는 객체의 범위를 한정하는 것이 목적이다. 코틀린에서는 다음 5가지의 스코프 함수를 제공한다. let, apply, run, als, with 이 그림을 참고하며 보도록 하자. let let 함수는 객체를 인자로 받아 람다식을 실행하고 결과를 반환한다. 예를 들어, 아래의 코드는 nullableVariable이 null이 아닌 경우 println을 실행한다. nullableVariable?.let { value -> println(value) } let 함수는 null 값 처리에 유용하며, 예를 들어, 아래의 코드는 nullableVariable이 null..
· Language.
고차 함수 코틀린은 함수형 프로그래밍을 지원하기 위해서 고차 함수를 지원한다. 고차함수는 다른 함수를 매개변수로 받거나 함수를 반환하는 함수를 말한다. 이를 통해 코드의 재사용성과 추상화 수준을 높일 수 있다. 오늘은 고차 함수 중 map, filter, reduce, fold, forEach, any, all, groupBy, sortedBy, zip, flatmap, takeWhile, dropWhile까지 알아보겠다. map() map()은 컬렉션의 각 요소에 대해 주어진 함수를 적용하여 새로운 컬렉션을 반환한다. val numbers = listOf(1, 2, 3, 4, 5) val doubled = numbers.map { it * 2 } // [2, 4, 6, 8, 10] filter() fi..
· Language.
개요 코틀린 인 액션 책 내용중 람다 파트에서 함수를 인자로 사용했을때, 무명객체를 사용했을때 차이와 여러 중요해보이는 지식들이 많아 글을 정리해보려고 한다. 람다 Lambda 람다는 함수형 프로그래밍에서 함수를 간결하게 표현하는 방법 중 하나다. 보통 함수를 정의하고 호출하는 과정을 생략하고, 함수의 내용만을 직접 표현한다. 람다는 함수형 인터페이스를 구현하는 익명 함수다. 즉, 람다는 함수형 인터페이스를 구현하기 위한 구현체로서, 람다 식을 사용해 구현된 함수형 인터페이스는 일반적인 인터페이스를 구현한 클래스와 같이 사용될 수 있다. 무명 객체 자바에서는 과거 클릭과 같은 이벤트 처리를 위해서는 인자로 무명객체를 생성해 받아야했다. button.setOnClickListener(new View.OnC..
· Language.
개요 코틀린 인 액션을 읽으면서 sequences를 사용해 연산 성능을 향상시키는 것을 보고 백엔드 서버개발이나 알고리즘 문제를 풀 때 유용하게 사용되지 않을까하는 생각이 들어 개념을 더 잡기위해 공부를 해본다. 지연 계산 Lazy Evaluation 지연 계산은 값이 필요할 때까지 계산을 미루는 방식으로 코드에서 값이 필요한 시점에서 계산을 수행하며, 그 이전에는 계산을 수행하지 않는다. 이는 컴퓨팅 자원을 효율적으로 사용할 수 있도록 도와준다. 만약 모든 계산을 미리 수행한다면, 그 중 일부는 실제로 사용되지 않을 수 있다. 따라서 필요한 계산만 수행한다면 자원을 절약할 수 있다. 지연 계산은 대개 함수형 프로그래밍에서 사용되고, 함수형 프로그래밍에서는 값 자체보다는 값을 생성하는 함수를 중심으로 프..
khope
'Kotlin' 태그의 글 목록