본문 바로가기

java & kotlin6

[RxKotlin] 2. Observable (콜드 옵저버블, 핫 옵저버블, Subject) 간결함을 위해 생략한 내용이 있으니 RxKotlin 을 처음 접한다면 지난 글을 먼저 읽는 것이 좋다. [RxKotlin] 기본 개념 (Observable 과 Observer) [RxKotlin] Observable (콜드 옵저버블, 핫 옵저버블) [RxKotlin] Single, Maybe (작성 예정) [RxKotlin] Flowable, Subscriber, 백프레셔 [RxKotlin] 연산자 [RxKotlin] 스레드 [RxKotlin] 안드로이드에 적용 1. Cold observable 우리가 지난 글에서 다루었던 Observable 은 콜드 옵저버블이다. 핫 옵저버블은 ConnectableObservable 타입을 갖는다. 그렇다면 콜드 옵저버블과 핫 옵저버블의 차이점은 무엇일까? 그것은 이미.. 2022. 2. 20.
[RxKotlin] 1. 기본 개념 (Observable 과 Observer) RxXX 는 ReactiveX 라이브러리의 각 언어별 라이브러리 이름이다. 나는 RxKotlin 을 Intelij 에서 연습하고 있다. 아래와 같이 RxKotlin 과 Coroutine 의존성을 추가하고 있다. implementation("io.reactivex.rxjava2:rxkotlin:2.4.0") implementation('org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.0') RxKotlin 에 관련한 내용은 시리즈로 작성할 예정이다. RxKotlin 에 대한 글은 그래도 조금 있는 편이라 생각하지만 러닝커브가 있는 편이라 양질의 글을 찾아보기 어렵다. 영어로 공부하거나, 여러 한글자료를 읽어보고 종합시켜서 이해하거나 책을 읽어야 한다. 이 시리.. 2022. 2. 11.
[kotlin] 람다와 invoke ※ 람다를 사용하는 방법에 대해서는 자세히 다루지 않습니다. 람다를 받는 함수를 정의하는 방법 fun main(args: Array) { doSomething{ a, b -> println("a + b = ${a + b}") } // 파라미터를 사용하지 않는 경우 doSomething{ _, b -> println("b = ${b}") } } fun doSomething(action: (a: Int, b: Int)->(Unit)) { action(2, 3) } 람다 파라미터의 타입은 (파라미터: 타입)->(반환 타입) 형식이다. 위 코드와 같이 정의하고 사용할 수 있다. 만약 사용하지 않는 파라미터가 있다면 _ 기호를 사용해 명시할 수 있다. 인스턴스를 함수처럼 사용하는 방법 fun main(args: .. 2021. 12. 24.
[kotlin] 고차함수와 람다 ※ 이 글은 고차함수와 람다에 대한 기본 개념을 설명하지는 않습니다. inline 과 람다 고차함수 return inline 과 람다 람다가 변수를 포획하면 람다가 생성되는 시점마다 새로운 무영 클래스 객체가 생성된다. 이는 람다 사용에 따른 부가 비용이다. inline 함수와 람다를 함께 사용하면 람다로 받은 부분을 컴파일 시점에 대치한다. 따라서 런타임에 더 빠르게 동작한다. 다음 코드를 보자. fun main(args: Array) { doSomething { println("action") } } inline fun doSomething(action : () -> Unit) { println("before action") action() println("after action") } 람다를 파라미.. 2021. 12. 13.
[kotlin] 구조 분해 선언 JavaScript 를 별로 안 좋아하지만 JavaScript 에서는 다음과 같은 편리한 문법이 가능하다. // 함수 반환 function func() { return [10, 20]; } // 사용 const [a, b] = func(); // React hooks const [value, setValue] = useState(); 함수에서는 배열을 반환하고, 그 값을 한 번에 초기화할 수 있다. 코틀린에서도 조금 불편하긴 비슷한 문법이 가능하다. fun main(args: Array) { val person = Person("algosketch", 24) val (name, age) = person println("이름 : $name, 나이 : $age") } data class Person(val .. 2021. 12. 11.
thread safe vs thread unsafe SW마에스트로 면접 준비하면서 찾아본 내용으로 java에서 ArrayList 와 Vector 의 차이가 있다. 나는 java에서 ArrayList만 써봤고 vector는 C++ 컨테이너로 사용해봤다. java의 vector는 안 써봤지만 C++에서의 개념을 생각해 보면 ArrayList와 Vector의 사용 방법은 동일할 것 같았다. 그럼 무슨 차이가 있는걸까? 결론부터 말하자면 Vector는 thread safe 하고 ArrayList는 thread unsafe 하다. 속도는 당연히 ArrayList가 빠르기 때문에 스레드 프로그래밍을 하지 않는다면 ArrayList를 사용하는 것이 바람직해 보인다. 근데 스레드라는 게 명시적으로 thread를 만들 수도 있지만 이벤트나 네트워크, 데이터베이스 등을 쓰.. 2021. 3. 30.