일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 클라우드 네이티브 자바
- 코틀린
- Kotlin
- cloud native
- 쿠버네티스
- kubernetes
- 자바
- 클라우드 네이티브
- 머신러닝
- 익명클래스
- Adapter 패턴
- MSA
- CRD
- 마이크로서비스
- Spring
- MySQL
- ansible
- spring microservice
- cloud native java
- devops
- Microservice
- 동기화
- Stress test
- Semaphore
- 헬름
- decorator 패턴
- java
- ingress
- nGrinder
- Algorithm
- Today
- Total
목록코틀린 (12)
카샤의 만개시기
Sealed클래스는 enum 클래스를 확장한 개념을 가진 클래스로써, 제한된 집합의 유형 중 하나를 가질 수 있지만 다른 유형은 가질 수 없는 제한된 계층 구조를 나타낼때 사용합니다. Enum 상수는 단일 인스턴스로 존재하는 반면, Sealed 클래스의 서브 클래스는 포함 할 수 있는 여러 인스턴스를 가질 수 있습니다. 일반 클래스와의 차이 Sealed를 이용하지 않아도 일반 클래스 내에 서브 클래스를 선언할 수 있고, 준비된 서브 클래스 중 하나를 대입하게 하여 프로그래밍 할 수 있습니다. 하지만 일반 클래스는 그 클래스 자체가 객체 생성이 가능하지만 sealed 클래스는 기본으로 abstract를 내장하고 있으므로 객체 생성이 불가능합니다. sealed class Shape { class Circle..
코틀린에서는 데이터와 관계 없이 특수 상황을 표현하기 위하여 Unit과 Nothing이라는 타입을 제공합니다. Unit Unit은 자바에서 void에 해당하는 예약어로써 아무것도 반환하지 않는 것을 의미합니다. 또한 Unit 예약어는 아래와 같이 생략이 가능합니다. fun func1() {} fun func2(): Unit {}자바에서 void는 존재하지 않음을 뜻하지만 코틀린에서 Unit은 아무것도 반환하지 않는 타입을 의미하기 때문에 약간의 차이가 있습니다. 자바에서 void 타입을 출력 할 수 없지만, 코틀린에서는 Unit이라는 타입은 출력이 가능합니다. val myVal: Unit = Unit fun main(args: Array) { println(myVal) } 출력결과 kotlin.Unit제..
Java에서 재귀함수를 사용하게되면 함수가 함수를 호출하면서 콜스택이 계속 적재되어 stack overflow 현상이 일어나기도 하고, 콜 스택 생성에 따른 성능 저하를 경험하기도 합니다. 꼬리 재귀 재귀 함수를 구현할 때 마지막(Tail)에 자기 자신을 호출(Recursion)하는 형태의 함수 kotlin에서 꼬리 재귀를 사용하게 되면 자바에서 있었던 이런 문제들을 해결할 수 있으며 적절하지 않은 코드가 작성이 되었을때 warning도 받을 수 있습니다. 다음과 같은 재귀함수를 작성하였고, 함수의 앞 부분에는 tailrec 예약어를 붙였습니다. tailrec fun tailrecPrint(no: Int = 1, count: Int = 1) { println("tailrecPrint") return if..
코틀린은 null 처리가 매우 엄격한데, null이 사용되지 않는 프로퍼티에 초기화 시점을 미룸으로써 null 허용으로 선언할 필요가 없습니다. lateinit class User { lateinit var lateData: String } fun main(args: Array) { val user = User() user.lateData = "hello world" println(user.lateData) } 실행결과 hello world사용 규칙 var로 선언한 프로퍼티에만 사용할 수 있다. 클래스 몸체에 선언한 프로퍼티에만 사용할 수 있다. 주 생성자에는 사용할 수 없다. 사용자 정의 getter/setter를 사용하지 않은 프로퍼티에만 사용할 수 있다. null 허용 프로퍼티에는 사용할 수 없다...