본문 바로가기

gyub's 공부일기

(41)
[ JAVA ] Java의 특징 및 JVM, JDK, JRE 1. Java의 특징 1) JVM만 설치하면 컴퓨터의 운영체제에 상관없이 동작한다. 2) 가비지컬렉터(GC)가 메모리 관리를 해준다. 3) 객체지향 프로그래밍 언어이다, * 객체지향 프로그래밍이란? - 객체를 만들기 위한 설계도인 클래스를 작성하고 - 객체와 객체를 연결하여 목적에 맞는 프로그램을 만들어낸다. - Java는 객체지향 언어가 가져야 할 캡슐화, 상속, 다형성 기능을 완벽하게 지원한다. 4) 멀티스레드를 쉽게 구현할 수 있다. - 자바는 스레드 생성 및 제어와 관련된 라이브러리 API를 제공하고 있습니다. 5) 동적 로딩(Dynamic Loading)을 지원한다. - 애플리케이션이 실행 될 때 모든 객체가 생성되지 않고, 각 객체가 필요한 시점에 클래스를 동적 로딩해서 생성한다. - 또한, ..
[RxJava] RxAndroid 적용 예제 -1 원본 : https://www.raywenderlich.com/141980/rxandroid-tutorial RxJava를 공부하며 스케줄러, 함수 등 기본을 익히고 나서 바로 앱에 적용하려니 역시나,, 쉽지 않더라구요 그래서 참고할만한 예제를 찾아보던 중 RxAndroid의 기본 개념은 물론이고 사용법도 쉽게 나와있는 곳이 있어서 번역 및 수정을 해봤습니다! Reactive programming 은 그저 또하나의 API가 아니라, 완전히 새롭고 매우 유용한 패러다임이다. RxJava는 이 패러다임을 안드로이드에서 사용할 수 있게 구현한 것이다. 여기에 비동기 UI 이벤트를 RxJava 스럽게 구현한 RxAndroid를 이용하면 안드로이드는 reactive world를 시작하기에 더없이 완벽하다. 이 튜..
[RxJava] RxJava의 핵심 스케줄러 - 2 :트램펄린 스케줄러, 싱글 스레드 스케줄러, Executor 변환 스케줄러 1. 트램펄린 스케줄러 트램펄린 스케줄러는 새로운 스레드를 생성하지 않고 현재 스레드에 무한한 크기의 대기 행렬(Queue)을 생성하는 스케줄러입니다. 새로운 스레드를 생성하지 않는다는 것과 대기 행렬을 자동으로 만들어 주는 것이 뉴 스레드 스케줄러, 계산 스케줄러, IO 스케줄러와 다른 부분입니다! val orgs = arrayOf("1","3","5") Observable.fromArray(orgs).subscribeOn(Schedulers.trampoline()) .map{it-> ""} .subscribe(Log::i) Observable.fromArray(orgs).subscribeOn(Schedulers.trampoline()) .map{it-> "##$it##"} .subscribe(Log:..
[RxJava] RxJava의 핵심 스케줄러 - 1 :뉴 스레드 스케줄러 , 계산 스케줄러, IO 스케줄러 스케줄러는 RxJava의 핵심이라고 말할 수도 있을 만큼 중요한 요소인데요. 어떤 프로그램의 세부 일정을 주관하는 관리자로 생각하면 이해하기 쉽습니다! 이제 RxJava의 종류에 대해서 알아보겠습니다! [ RxJava 2.x 기준] - 뉴 스레드 스케줄러 = newThread() - 싱글 스레드 스케줄러 = single() - 계산 스케줄러 = computation() - IO 스케줄러 = io() - 트램펄린 스케줄러 = trampoline() 이렇게 다섯가지로 구분할 수 있어요. 이제 각 스케줄러를 보다 구체적으로 알아볼게요! 아! 들어가기 전에 함께 자주 쓰이는 메소드 몇 개를 간단하게 알아볼게요. (다음 글들에서 자세히 다룰 예정입니다!) - doOnNext(): Observable에서 onNex..
[RxJava] 조건 연산자, amb(), takeUntil(other), skipUntil(other), all() 1. 조건 연산자 조건 연산자는 Observable의 흐름을 제어하는 역할을 합니다. 필터 연산자가 발행된 앖을 채택하느냐 기각하느냐 여부에 초점을 맞춘다면, 조건 연산자는 지금까지의 흐름을 어떻게 제어할 것인지에 초점을 맞추죠! 조건 연산자에는 다음과 같은 함수들이 있습니다. - amb() 함수: 둘 중 어느 것이든 먼저 나오는 Observable을 채택 - takeUntil(other) 함수: other Observable에서 데이터가 발행되기 전까지만 현재 Observable을 채택 - skipUntil(other) 함수: takeUntil(other) 함수와는 반대로 other Observable에서 데이터가 발행될 때까지 현재 Observable에서 발행되는 값을 무시 - all() 함수: Ob..
[RxJava] 결합 연산자 zip(), combineLastest(),merge(), concat() 결합 연산자 1. zip() zip() 함수의 특징은 각각의 Observable을 모두 활용해 2개 혹은 그 이상의 Observable을 결합하는다는데 있습니다. 예를 들어 A,B 두 개의 Observable을 결합한다면 2개의 Observable에서 모두 데이터를 발행해야 결합할 수 있습니다. 그전까지는 발행을 기다려요. 그림으로 보시겠습니다! 이렇듯 두 개의 Observable이 발행될 때까지 기다렸다가 결합을 한 후 발행을 하는 애에요~~ 2. combineLatest() 이 함수는 2개 이상의 Observable을 기반으로 Observable 각각의 값이 변경되었을 때 갱신해주는 함수입니다! 예를 들면 첫 번째 Observable과 두 번째 Observable을 결합하는 기능을 만든다고 하면 첫 ..
[RxJava] 결합 연산자 zip(), combineLastest(),merge(), concat() 결합 연산자 1. zip() zip() 함수의 특징은 각각의 Observable을 모두 활용해 2개 혹은 그 이상의 Observable을 결합하는다는데 있습니다. 예를 들어 A,B 두 개의 Observable을 결합한다면 2개의 Observable에서 모두 데이터를 발행해야 결합할 수 있습니다. 그전까지는 발행을 기다려요. 그림으로 보시겠습니다! 이렇듯 두 개의 Observable이 발행될 때까지 기다렸다가 결합을 한 후 발행을 하는 애에요~~ 2. combineLatest() 이 함수는 2개 이상의 Observable을 기반으로 Observable 각각의 값이 변경되었을 때 갱신해주는 함수입니다! 예를 들면 첫 번째 Observable과 두 번째 Observable을 결합하는 기능을 만든다고 하면 첫 ..
[RxJava] 변환 연산자 concatMap(), switchMap(), groupBy(), scan() 1. 변환 연산자 변환 연산자는 데이터 흐름을 원하는 대로 변형할 수 있는 연산자입니다. 이번 글에서는 flatMap()과 동일한 계열인 concatMap()과 switchMap() 함수, reduce() 함수와 유사한 scan()함수, 색다른 groupBy() 함수를 다뤄보겠습니다. 2. concatMap() 함수 concatMap() 함수는 flatMap() 함수와 비슷합니다. flatMap()는 먼저 들어온 데이터를 처리하는 도중에 새로운 데이터가 들어오면 나중에 들어온 데이터의 처리 결과가 먼저 출력 될 수도 있습니다. 이것을 인터리빙(=끼어들기, interleaving)이라고 합니다. 이와 반대로 concatMap() 함수는 먼저 들어오는 데이터 순서대로 처리해서 결과를 낼 수 있도록 보장해줍니..