일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 서비스스펙
- code refactoring
- test
- 단위테스트
- spring cloud netflix zuul
- java #jvm #reference #gc #strong reference
- container image #docker #layer #filesystem #content addressable
- netflix
- BFS
- Spring Data Redis
- reactive
- microservice architecture
- 설계
- netflix eureka
- 탐색
- docker
- forkandjoinpool #threadpool #jvm #async #non-blocking
- Eureka
- spring cloud netflix eureka
- Dynamic Routing
- spring cloud
- zuul
- unit
- Java
- unittest
- springcloud
- api-gateway
- spring cloud netflix
- dfs
- Today
- Total
목록Programming/Kotlin (12)
phantasmicmeans 기술 블로그
코틀린의 가장 큰 장점중에 하나인 Extension Function 구글링해보면 이 주제에 관련된 자료는 무궁무진하고.. 솔직히 내용이 쉬워서 아래 자료를 보고 이해하면 될 것 같다. https://medium.com/til-kotlin-ko/kotlin%EC%9D%98-extension%EC%9D%80-%EC%96%B4%EB%96%BB%EA%B2%8C-%EB%8F%99%EC%9E%91%ED%95%98%EB%8A%94%EA%B0%80-part-1-7badafa7524a https://codechacha.com/ko/kotlin-extension-functions/ https://dev.to/frevib/kotlin-extension-function-vs-function-literal-with-receiv..
Higher-Order Functions 코틀린의 함수는 1급 객체이다. 즉 인자로 전달 될 수 있고, 다른 함수의 리턴값으로도 사용될 수 있다. 또한 변수에 부여될 수 있다. 아래 2가지 조건 중 하나를 만족하는 함수를 Higher-Order-Function(고차원 함수)라 부른다. 함수를 인자로 받는 함수 리턴값으로 함수를 사용하는 함수 자바의 경우 Collections.sort()를 예로 들 수 있다. 첫 번째 인자로 list, 두번째 인자로 Comparator를 받는데 이는 Functional Interface이다. public static void sort(List list, Comparator
Functional (SAM) Interface SAM: Single Abstract Method 자바에서도 마찬가지로 하나의 abstract method를 가지는 인터페이스를 functional interface라 하고 코틀린도 마찬가지이다. functional interface 를 선언하려면 fun modifier를 사용하면 된다. fun interface KRunnable { fun invoke() } SAM Conversions 이것도 자바와 동일하게 람다식을 활용하면 된다. 자바 Functional Interface를 알고 있다면 아주 쉽게 이해 될 것이다. functional interface fun interface IntPredicate { fun accept(i: Int): Boolean..
Interfaces 코틀린의 인터페이스는 abstract method 뿐만 아니라 java의 default method 처럼 구현 된 메소드를 포함할 수 있고, 프로퍼티 또한 포함할 수 있다. 다만 이 프로퍼티는 state를 유지하진 못하기에 구현체에서 접근자를 통해 컨트롤해야한다. interface MyInterface { fun bar() fun foo() { // optional body } } Implementing Interfaces class Child : MyInterface { override fun bar() { // body } Properties in Interfaces 인터페이스에도 프로퍼티를 선언할 수 있다고 했다. 해당 프로퍼티는 abstract 이거나, 구현체에서 접근자를 통해..
field Keyword name 프로퍼티의 재 정의된 setter를 살펴보면 field 라는 키워드를 볼 수 있다. field에 값을 넣는 것을 보니 무언가 name의 대리자 느낌이 든다. class Test { var name: String = "" set(value) { field = if (value.isNotEmpty()) value else "" } } Backing Fields 코틀린은 Backing Field가 필요하면 알아서 제공한다. 또한 Backing field는 접근자 내에서 field 키워드로 참조할 수 있다. 바로 위 예제에서 setter 내에 field 라고 선언되어진 부분을 볼 수 있는데, 이 field가 Backing Field를 참조하고 있는 상태인 것이다. 그럼 코틀린에..
Kotlin Properties and Fields 코틀린 class의 프로퍼티들은 var or val 키워드로 선언된다. 이 프로퍼티들은 default로 접근자(get, set) method를 포함하기에 코틀린에서의 프로퍼티 란 필드와 접근자를 통칭하는 개념이다. class Address { var name: String = "Holmes, Sherlock" var street: String = "Baker" var city: String = "London" var state: String? = null var zip: String = "123456" } 프로퍼티는 아래와 같이 간단하게 프로퍼티 이름으로 접근할 수 있다. fun copyAddress(address: Address): Address { ..
Class Inheritance kotlin의 최상위 클래스는 Any 클래스에 상위타입을 선언하지 않으면 Any가 상속됨 Any는 java의 Object와 다른 클래스임.. equlas, hashcode, tostring만 있음 class Example1() // 암시적 Any 상속 class Example2() : Any() // 명시적 Any 상속 open open 은 java final과 반대임 open class는 다른 클래스가 상속할 수 있음 기본적으로 kotline의 모든 classs는 final 임 상속 명시적으로 상위타입을 선언하려면, 클래스 헤더의 콜론 뒤에 상위 타입을 선언하면 되며, 부모 클래스는 open keyword 필요 파생 클래스에 primary constructor가 있으면,..
Kotlin Classe 기본 생성자 클래스 헤더의 일부이자 클래스별로 최대 1개만 가질 수 있다. class Person constructor(firstName: String) { } 어노테이션이나 접근지정자가 없을 때는, 기본생성자의 constructor 키워드를 생략가능하다. class Person(firstName: String) { } Primary Constructor 기본생성자는 코드를 가질 수 없으며, 초기화는 초기봐 블록(init) 안에서 작성해야 한다. 기본생성자의 파라미터는 init 블록 안에서 사용 가능 class Customer(name: String) { init { logger.info("customer intialized with value ${name}") } } Secon..
Kotlin Loop Label 기본적으로는 3가지 jume expression이 있다. return: By default returns from the nearest enclosing function or anonymous function. break: Terminates the nearest enclosing loop. continue: Proceeds to the next step of the nearest enclosing loop. Break and Continue Labels Kotlin은 loop에 label을 지정해 break, continue 스코프를 정할 수 있다. label은 @ 식별자를 통해 지정할 수 있고, @abc, fooBar@ 처럼 사용할 수 있다. 아래는 내부 for문에서 ..
Control Flow: if, when, for, while 위 control flow의 항목들은 익숙한 것들이다보니 모든 내용을 다룰 필요는 없어보이니.. https://kotlinlang.org/docs/reference/control-flow.html If 코틀린에서 if는 expression으로 간주 될 수 있다. 즉 값을 반환할 수 있다는 말이다. 삼항 연산자를 대신할 수 있는 이유도 이 때문인데 아래 코드를 보자 // Traditional usage var max = a if (a b) { max = a } else { max = b } // As expression!! 값 반환 val max = if (a ..