본문 바로가기

Programming137

java에는 없고 kotlin에만 있는 함수 : let, also, apply, run java에는 없고 kotlin에만 있는 함수로 let, also, apply, run 이 있다. 하나씩 살펴보자. let fun main() { // let val now : LocalDateTime?= null // 타입에 대한 제네릭을 받아서 리턴해줌 -> map이랑 비슷 /** * @kotlin.internal.InlineOnly * public inline fun T.let(block: (T) -> R): R { * contract { * callsInPlace(block, InvocationKind.EXACTLY_ONCE) * } * return block(this) * } */ val kst = now?.let{ // 엘비스 연산자를 통해 있을 때만 처리하도록 함 println(it) } //.. 2023. 10. 22.
Java와 Kotlin 비교: default value, when, 확장함수 Kotlin의 default value 사용하기 public class Exam08 { public static void main(String[] args) { var registerDto = new Store(); new Exam08(registerDto); } public Exam08(Store store){ // null point -> 터짐 var stringRegisteredAt = toLocalDateTimeString(store.getRegisteredAt()); } public String toLocalDateTimeString(LocalDateTime localDateTime){ // null을 방지하려고 이런식으로 방어 로직을 짬 LocalDateTime temp; if(localDat.. 2023. 10. 22.
Java와 Kotlin 비교 : map, 고차함수, 클래스 - 상속 인터페이스, 코틀린의 property 개념 map public class Exam04 { public Exam04(){ var hashMap = new HashMap(); hashMap.put("key", "value"); hashMap.put("key", 10); var map = Map.of( "key1","value1", "key2","value2", "key3","value3" ); hashMap.get("key"); } } fun Main() { // 코틀린에서도 마찬가지로 key value 형식으로 map을 만들 수 있다. -> 기본형태는 immutable // java의 Object -> 코틀린에서는 Any // pair라는 문법 val map = mapOf( Pair("", ""), "key" to "value" ) // 만약 mu.. 2023. 10. 22.
Java와 Kotlin 비교 : 변수, null 안정성, 엘비스 연산자, 가변/불변 컬렉션 변수 public class Exam01 { public Exam01(){ String name = "홍길동"; String format ="사용자의 이름은 : %s"; String result = String.format(format, name); System.out.println(result); int age = 10; Integer _age = 20; double d = 10d; Double _d = 20.0; float f = 20f; Float _f = 20f; long l = 10L; Long _l = 10L; } } fun main() { // var -> mutable, val -> final(불변) // : [타입] val name: String = "홍길동" var _name: Stri.. 2023. 10. 22.
Spring Webflux - 배경, 개념 Cpu bound vs I/O Bound, block vs non-block, mvc vs webflux Cpu bound vs I/O Bound 스프링 웹플럭스는 대량의 트래픽을 처리하는데 특화되어 있고 I/O 바운드에 가깝다. CPU Bound CPU를 중점적으로 다루는 작업들 암호화 압축화 주로 CPU 계산 능력에 따라 성능이 좌우되는 것들 단일 CPU 코어에 두 개의 작업을한다면 어떨까? 동시간 대에 하나의 명령만 실행하기 때문에 실제로는 app1과 app2가 번갈아가면서 실행하게 된다. 이렇게 실행되는 과정에서 Context Switing이 일어나고 성능 저하가 발생. 메모리 -> CPU : register 컨텍스트 스위칭은 Register 과정을 초기화한다. 즉, 2번 앱 정보를 가져와서 실행. -> 성능상 오버헤드 발생 해결 방법은 ? multi core를 활용 -> 병렬 처리를 한다. IO B.. 2023. 10. 16.