RxJava反應式編程

RxJava反應式編程

《RxJava反應式編程》是2019年12月人民郵電出版社出版的圖書,作者是[波蘭]托馬什·努爾凱維茨、[美]本·克里斯滕森。

基本介紹

  • 中文名:RxJava反應式編程
  • 作者:[波蘭]托馬什·努爾凱維茨、[美]本·克里斯滕森
  • 出版時間:2019年12月
  • 出版社:人民郵電出版社
  • 頁數:306 頁
  • ISBN:9787115524003
  • 定價:99 元
  • 開本:16 開
  • 裝幀:平裝
內容簡介,目錄,

內容簡介

RxJava廣泛套用於Android應用程式的開發,得到了廣大開發人員的青睞。其語法簡潔,運行高效,未來有望成為主流的開發模式。本書主要內容包括:RxJava的基本概念,RxJava提供的諸多操作符,如何將RxJava用於自己的應用程式以及如何與它互動,如何將RxJava嵌入代碼庫的不同地方,如何從頭到尾實現反應式應用程式,流控制,回壓機制,基於Rx的應用程式的單元測試、維護以及問題排查等相關技術。本書還特別收錄了2.0版本和1.0版本的異同比較。

目錄

本書讚譽 xii
譯者序 xiii
序 xv
前言 xvii
第 1 章 使用RxJava實現反應式編程 1
1.1 反應式編程與RxJava 1
1.2 何時需要反應式編程 2
1.3 RxJava是如何運行的 3
1.3.1 推送與拉取 3
1.3.2 異步與同步 4
1.3.3 並發與並行 7
1.3.4 延遲執行與立即執行 9
1.3.5 雙重性 10
1.3.6 基數 11
1.4 阻塞I/O與非阻塞I/O 15
1.5 反應式抽象 20
第 2 章 Reactive Extensions 21
2.1 剖析rx.Observable 21
2.2 訂閱來自Observable的通知 24
2.3 使用Subscription和Subscriber控制監聽器 25
2.4 創建Observable 26
2.4.1 掌握Observable.create( ) 27
2.4.2 無窮流 30
2.4.3 計時:timer( ) 和interval( ) 34
2.4.4 hot和cold類型的Observable 34
2.5 用例:從回調API到Observable流 35
2.6 rx.subjects.Subject 40
2.7 ConnectableObservable 42
2.7.1 使用publish( ).refCount( )實現單次訂閱 43
2.7.2 ConnectableObservable 的生命周期 44
2.8 小結 47
第 3 章 操作符與轉換 48
3.1 核心的操作符:映射和過濾 48
3.1.1 使用map( )進行一對一轉換 50
3.1.2 使用flatMap( )進行包裝 53
3.1.3 使用delay( )操作符延遲事件 57
3.1.4 flatMap( )之後的事件順序 58
3.1.5 使用concatMap( )保證順序 60
3.2 多個Observable 61
3.2.1 使用merge( )將多個Observable合併為一個 62
3.2.2 使用zip( )和zipWith( )進行成對地組合 63
3.2.3 流之間不同步的情況:combineLatest( )、withLatestFrom( )和amb( ) 66
3.3 高級操作符:collect( )、reduce( )、scan( )、distinct( )和groupBy( ) 71
3.3.1 使用Scan和Reduce掃描整個序列 71
3.3.2 使用可變的累加器進行縮減:collect( ) 73
3.3.3 使用single( )斷言的Observable只有一個條目 74
3.3.4 使用distinct( )和distinctUntilChanged( )丟棄重複條目 74
3.4 使用skip( )、takeWhile( )等進行切片和切塊 76
3.4.1 組合流的方式:concat( )、merge( )和switchOnNext( ) 78
3.4.2 使用groupBy( )實現基於標準的切塊流 84
3.4.3 下一步要學習什麼 86
3.5 編寫自定義的操作符 87
3.5.1 藉助compose( )重用操作符 87
3.5.2 使用lift( )實現高級操作符 89
3.6 小結 93
第 4 章 將反應式編程套用於已有應用程式 94
4.1 從集合到Observable 94
4.2 BlockingObservable:脫離反應式的世界 95
4.3 擁抱延遲執行 97
4.4 組合Observable 98
4.5 命令式並發 101
4.6 flatMap( )作為異步連結操作符 105
4.7 使用Stream代替回調 109
4.8 定期輪詢以獲取變更 111
4.9 RxJava的多執行緒 113
4.9.1 調度器是什麼 113
4.9.2 使用subscribeOn( )進行聲明式訂閱 121
4.9.3 subscribeOn( )的並發性和行為 124
4.9.4 使用groupBy( )進行批量請求 128
4.9.5 使用observeOn( )聲明並發 129
4.9.6 調度器的其他用途 132
4.10 小結 133
第 5 章 實現完整的反應式應用程式 134
5.1 解決C10k問題 134
5.1.1 傳統的基於執行緒的HTTP伺服器 135
5.1.2 藉助Netty和RxNetty實現非阻塞的HTTP伺服器 137
5.1.3 阻塞式和反應式伺服器的基準測試 144
5.1.4 反應式HTTP伺服器之旅 149
5.2 HTTP客戶端代碼 149
5.3 關係資料庫訪問 152
5.4 CompletableFuture與Stream 156
5.4.1 CompletableFuture概述 157
5.4.2 與CompletableFuture進行互動 161
5.5 Observable與Single 164
5.5.1 創建和消費Single 165
5.5.2 使用zip、merge和concat組合回響 167
5.5.3 與Observable和CompletableFuture的互動 169
5.5.4 何時使用Single 170
5.6 小結 170
第 6 章 流控制和回壓 171
6.1 流控制 171
6.1.1 定期採樣和節流 171
6.1.2 將事件緩衝至列表中 174
6.1.3 視窗移動 179
6.1.4 藉助debounce( )跳過陳舊的事件 180
6.2 回壓 183
6.2.1 RxJava中的回壓 184
6.2.2 內置的回壓 187
6.2.3 Producer與缺失回壓場景 189
6.2.4 按照請求返回指定數量的數據 192
6.3 小結 196
第 7 章 測試和排錯 197
7.1 錯誤處理 197
7.1.1 我的異常在哪裡 198
7.1.2 替代聲明式的try-catch 200
7.1.3 事件沒有發生導致的逾時 203
7.1.4 失敗之後的重試 206
7.2 測試和調試 209
7.2.1 虛擬時間 209
7.2.2 單元測試中的調度器 211
7.3 單元測試 213
7.4 監控和調試 219
7.4.1 doOn...( )回調 220
7.4.2 測量和監控 221
7.5 小結 223
第 8 章 案例學習 224
8.1 使用RxJava進行Android開發 224
8.1.1 避免Activity中的記憶體泄漏 224
8.1.2 Retrofit對RxJava的原生支持 227
8.1.3 Android中的調度器 231
8.1.4 將UI事件作為流 233
8.2 使用Hystrix管理失敗 236
8.2.1 使用Hystrix的第 一步 236
8.2.2 使用HystrixObservableCommand的非阻塞命令 238
8.2.3 艙壁模式和快速失敗 239
8.2.4 批處理和合併命令 241
8.2.5 監控和儀錶盤 245
8.3 查詢NoSQL資料庫 248
8.3.1 Couchbase客戶端API 248
8.3.2 MongoDB客戶端API 249
8.4 Camel集成 251
8.4.1 通過Camel來消費檔案 251
8.4.2 接收來自Kafka的訊息 252
8.5 Java 8的Stream和CompletableFuture 252
8.5.1 並行流的用途 253
8.5.2 選擇恰當的並發抽象 255
8.5.3 何時使用Observable 255
8.6 記憶體耗費和泄漏 256
8.7 小結 260
第 9 章 未來的方向 261
9.1 反應式流 261
9.2 Observable和Flowable 261
9.3 性能 262
9.4 遷移 262
附錄A HTTP伺服器的更多樣例 263
附錄B Observable操作符的決策樹 269
附錄C RxJava 1.0至RxJava 2.0的遷移指南 272
關於作者 306
關於封面 306

相關詞條

熱門詞條

聯絡我們