舉報(bào)

會員
Learning RxJava
最新章節(jié):
Understanding Schedulers
TheprimaryaudienceforthisbookisdeveloperswithatleastafundamentalmasteryofJava.SomereaderswilllikelybeinterestedinRxJavatomakeprogramsmoreresilient,concurrent,andscalable.Othersmaybecheckingoutreactiveprogrammingjusttoseewhatitisallabout,andtojudgewhetheritcansolveanyproblemstheymayhave.
目錄(257章)
倒序
- coverpage
- Title Page
- Credits
- About the Author
- Acknowledgements
- About the Reviewers
- www.PacktPub.com
- Customer Feedback
- Preface
- What this book covers
- What you need for this book
- Who this book is for
- Conventions
- Reader feedback
- Customer support
- Downloading the example code
- Errata
- Piracy
- Questions
- Thinking Reactively
- A brief history of ReactiveX and RxJava
- Thinking reactively
- Why should I learn RxJava?
- What we will learn in this book?
- Setting up
- Navigating the Central Repository
- Using Gradle
- Using Maven
- A quick exposure to RxJava
- RxJava 1.0 versus RxJava 2.0 - which one do I use?
- When to use RxJava
- Summary
- Observables and Subscribers
- The Observable
- How Observables work
- Using Observable.create()
- Using Observable.just()
- The Observer interface
- Implementing and subscribing to an Observer
- Shorthand Observers with lambdas
- Cold versus hot Observables
- Cold Observables
- Hot Observables
- ConnectableObservable
- Other Observable sources
- Observable.range()
- Observable.interval()
- Observable.future()
- Observable.empty()
- Observable.never()
- Observable.error()
- Observable.defer()
- Observable.fromCallable()
- Single Completable and Maybe
- Single
- Maybe
- Completable
- Disposing
- Handling a Disposable within an Observer
- Using CompositeDisposable
- Handling Disposal with Observable.create()
- Summary
- Basic Operators
- Suppressing operators
- filter()
- take()
- skip()
- takeWhile() and skipWhile()
- distinct()
- distinctUntilChanged()
- elementAt()
- Transforming operators
- map()
- cast()
- startWith()
- defaultIfEmpty()
- switchIfEmpty()
- sorted()
- delay()
- repeat()
- scan()
- Reducing operators
- count()
- reduce()
- all()
- any()
- contains()
- Collection operators
- toList()
- toSortedList()
- toMap() and toMultiMap()
- collect()
- Error recovery operators
- onErrorReturn() and onErrorReturnItem()
- onErrorResumeNext()
- retry()
- Action operators
- doOnNext() doOnComplete() and doOnError()
- doOnSubscribe() and doOnDispose()
- doOnSuccess()
- Summary
- Combining Observables
- Merging
- Observable.merge() and mergeWith()
- flatMap()
- Concatenation
- Observable.concat() and concatWith()
- concatMap()
- Ambiguous
- Zipping
- Combine latest
- withLatestFrom()
- Grouping
- Summary
- Multicasting Replaying and Caching
- Understanding multicasting
- Multicasting with operators
- When to multicast
- Automatic connection
- autoConnect()
- refCount() and share()
- Replaying and caching
- Replaying
- Caching
- Subjects
- PublishSubject
- When to use Subjects
- When Subjects go wrong
- Serializing Subjects
- BehaviorSubject
- ReplaySubject
- AsyncSubject
- UnicastSubject
- Summary
- Concurrency and Parallelization
- Why concurrency is necessary
- Concurrency in a nutshell
- Understanding parallelization
- Introducing RxJava concurrency
- Keeping an application alive
- Understanding Schedulers
- Computation
- IO
- New thread
- Single
- Trampoline
- ExecutorService
- Starting and shutting down Schedulers
- Understanding subscribeOn()
- Nuances of subscribeOn()
- Understanding observeOn()
- Using observeOn() for UI event threads
- Nuances of observeOn()
- Parallelization
- unsubscribeOn()
- Summary
- Switching Throttling Windowing and Buffering
- Buffering
- Fixed-size buffering
- Time-based buffering
- Boundary-based buffering
- Windowing
- Fixed-size windowing
- Time-based windowing
- Boundary-based windowing
- Throttling
- throttleLast() / sample()
- throttleFirst()
- throttleWithTimeout() / debounce()
- Switching
- Grouping keystrokes
- Summary
- Flowables and Backpressure
- Understanding backpressure
- An example that needs backpressure
- Introducing the Flowable
- When to use Flowables and backpressure
- Use an Observable If...
- Use a Flowable If...
- Understanding the Flowable and Subscriber
- The Subscriber
- Creating a Flowable
- Using Flowable.create() and BackpressureStrategy
- Turning an Observable into a Flowable (and vice-versa)
- Using onBackpressureXXX() operators
- onBackPressureBuffer()
- onBackPressureLatest()
- onBackPressureDrop()
- Using Flowable.generate()
- Summary
- Transformers and Custom Operators
- Transformers
- ObservableTransformer
- FlowableTransformer
- Avoiding shared state with Transformers
- Using to() for fluent conversion
- Operators
- Implementing an ObservableOperator
- FlowableOperator
- Custom Transformers and operators for Singles Maybes and Completables
- Using RxJava2-Extras and RxJava2Extensions
- Summary
- Testing and Debugging
- Configuring JUnit
- Blocking subscribers
- Blocking operators
- blockingFirst()
- blockingGet()
- blockingLast()
- blockingIterable()
- blockingForEach()
- blockingNext()
- blockingLatest()
- blockingMostRecent()
- Using TestObserver and TestSubscriber
- Manipulating time with the TestScheduler
- Debugging RxJava code
- Summary
- RxJava on Android
- Creating the Android project
- Configuring Retrolambda
- Configuring RxJava and friends
- Using RxJava and RxAndroid
- Using RxBinding
- Other RxAndroid bindings libraries
- Life cycles and cautions using RxJava with Android
- Summary
- Using RxJava for Kotlin New
- Why Kotlin?
- Configuring Kotlin
- Configuring Kotlin for Gradle
- Configuring Kotlin for Maven
- Configuring RxJava and RxKotlin
- Kotlin basics
- Creating a Kotlin file
- Assigning properties and variables
- Extension functions
- Kotlin lambdas
- Extension operators
- Using RxKotlin
- Dealing with SAM ambiguity
- Using let() and apply()
- Using let()
- Using apply()
- Tuples and data classes
- Future of ReactiveX and Kotlin
- Summary
- Appendix
- Introducing lambda expressions
- Making a Runnable a lambda
- Making a Supplier a lambda
- Making a Consumer a lambda
- Making a Function a lambda
- Functional types
- Mixing object-oriented and reactive programming
- Materializing and Dematerializing
- Understanding Schedulers 更新時間:2021-07-02 22:23:29
推薦閱讀
- Java程序設(shè)計(jì)(慕課版)
- Python數(shù)據(jù)可視化:基于Bokeh的可視化繪圖
- INSTANT CakePHP Starter
- VMware虛擬化技術(shù)
- Windows內(nèi)核編程
- Instant Nancy Web Development
- NoSQL數(shù)據(jù)庫原理
- Learning Unreal Engine Android Game Development
- Mastering Web Application Development with AngularJS
- Android應(yīng)用開發(fā)實(shí)戰(zhàn)
- 零基礎(chǔ)學(xué)HTML+CSS
- PHP Microservices
- HikariCP數(shù)據(jù)庫連接池實(shí)戰(zhàn)
- 從零開始學(xué)UI設(shè)計(jì)·基礎(chǔ)篇
- 數(shù)據(jù)庫技術(shù)及應(yīng)用教程上機(jī)指導(dǎo)與習(xí)題(第2版)
- Hands-On Game Development Patterns with Unity 2019
- 數(shù)據(jù)科學(xué)之編程技術(shù):使用R進(jìn)行數(shù)據(jù)清理、分析與可視化
- 正則指引(第2版)
- OpenACC并行編程實(shí)戰(zhàn)
- 架構(gòu)真意:企業(yè)級應(yīng)用架構(gòu)設(shè)計(jì)方法論與實(shí)踐
- 程序設(shè)計(jì)基礎(chǔ)(C語言)實(shí)驗(yàn)指導(dǎo)與測試(第2版)
- 跨平臺的移動Web開發(fā)實(shí)戰(zhàn)(HTML5+CSS3)
- 用Go語言自制解釋器
- 基于YANG的可編程網(wǎng)絡(luò):用YANG、NETCONF、RESTCONF和gNMI實(shí)現(xiàn)網(wǎng)絡(luò)自動化架構(gòu)
- Kali Linux 2:Assuring Security by Penetration Testing(Third Edition)
- Spring Cloud Alibaba 微服務(wù)原理與實(shí)戰(zhàn)
- Learning iPhone Game Development with Cocos2D 3.0
- Python科學(xué)計(jì)算入門與實(shí)戰(zhàn):視頻教學(xué)版
- C++程序設(shè)計(jì)(第2版)
- WiX Cookbook