RxJava反应式编程
Tomasz Nurkiewicz, Ben Christensen
张卫滨 译
出版时间:2019年12月
页数:306
如今,移动App驱动着我们的生活,程序的异步性和响应式至关重要。反应式编程技术能够帮助我们编写易于扩展、性能良好且可靠性强的代码。在这本注重实战的图书中,Java开发人员首先将会学习如何以反应式的方式看待问题,然后再借助这一令人兴奋的编程范式的优秀特性构建程序。
本书包含了一些使用RxJava的具体样例,用来解决Android设备和服务器端的实际性能问题。你将会学到RxJava如何借助并行和并发解决当前的问题。本书还特别收录了2.0版本的基本情况。
● 编写对多个异步源输入进行响应的程序,避免陷入“回调地狱”
● 理解如何以反应式的方式解决问题
● 处理Observable生产数据太快的问题
● 探索调试和测试反应式程序的策略
● 在程序中高效利用并行和并发
● 学习如何迁移至RxJava 2.0版本
  1. 本书赞誉
  2. 译者序
  3. 前言
  4. 第 1 章 使用RxJava实现反应式编程
  5. 1.1 反应式编程与RxJava
  6. 1.2 何时需要反应式编程
  7. 1.3 RxJava是如何运行的
  8. 1.3.1 推送与拉取
  9. 1.3.2 异步与同步
  10. 1.3.3 并发与并行
  11. 1.3.4 延迟执行与立即执行
  12. 1.3.5 双重性
  13. 1.3.6 基数
  14. 1.4 阻塞I O与非阻塞I O
  15. 1.5 反应式抽象
  16. 第2章 Reactive Extensions
  17. 2.1 剖析rx.Observable
  18. 2.2 订阅来自Observable的通知
  19. 2.3 使用Subscription和Subscriber控制监听器
  20. 2.4 创建Observable
  21. 2.4.1 掌握Observable.create()
  22. 2.4.2 无穷流
  23. 2.4.3 计时:timer() 和interval()
  24. 2.4.4 hot和cold类型的Observable
  25. 2.5 用例:从回调API到Observable流
  26. 2.6 rx.subjects.Subject
  27. 2.7 ConnectableObservable
  28. 2.7.1 使用publish().refCount()实现单次订阅
  29. 2.7.2 ConnectableObservable 的生命周期
  30. 2.8 小结
  31. 第3章 操作符与转换
  32. 3.1 核心的操作符:映射和过滤
  33. 3.1.1 使用map()进行一对一转换
  34. 3.1.2 使用flatMap()进行包装
  35. 3.1.3 使用delay()操作符延迟事件
  36. 3.1.4 flatMap()之后的事件顺序
  37. 3.1.5 使用concatMap()保证顺序
  38. 3.2 多个Observable
  39. 3.2.1 使用merge()将多个Observable合并为一个
  40. 3.2.2 使用zip()和zipWith()进行成对地组合
  41. 3.2.3 流之间不同步的情况:combineLatest()、withLatestFrom()和amb()
  42. 3.3 高级操作符:collect()、reduce()、scan()、distinct()和groupBy()
  43. 3.3.1 使用Scan和Reduce扫描整个序列
  44. 3.3.2 使用可变的累加器进行缩减:collect()
  45. 3.3.3 使用single()断言的Observable只有一个条目
  46. 3.3.4 使用distinct()和distinctUntilChanged()丢弃重复条目
  47. 3.4 使用skip()、takeWhile()等进行切片和切块
  48. 3.4.1 组合流的方式:concat()、merge()和switchOnNext()
  49. 3.4.2 使用groupBy()实现基于标准的切块流
  50. 3.4.3 下一步要学习什么
  51. 3.5 编写自定义的操作符
  52. 3.5.1 借助compose()重用操作符
  53. 3.5.2 使用lift()实现高级操作符
  54. 3.6 小结
  55. 第4章 将反应式编程应用于已有应用程序
  56. 4.1 从集合到Observable
  57. 4.2 BlockingObservable:脱离反应式的世界
  58. 4.3 拥抱延迟执行
  59. 4.4 组合Observable
  60. 4.5 命令式并发
  61. 4.6 flatMap()作为异步链接操作符
  62. 4.7 使用Stream代替回调
  63. 4.8 定期轮询以获取变更
  64. 4.9 RxJava的多线程
  65. 4.9.1 调度器是什么
  66. 4.9.2 使用subscribeOn()进行声明式订阅
  67. 4.9.3 subscribeOn()的并发性和行为
  68. 4.9.4 使用groupBy()进行批量请求
  69. 4.9.5 使用observeOn()声明并发
  70. 4.9.6 调度器的其他用途
  71. 4.10 小结
  72. 第5章 实现完整的反应式应用程序
  73. 5.1 解决C10k问题
  74. 5.1.1 传统的基于线程的HTTP服务器
  75. 5.1.2 借助Netty和RxNetty实现非阻塞的HTTP服务器
  76. 5.1.3 阻塞式和反应式服务器的基准测试
  77. 5.1.4 反应式HTTP服务器之旅
  78. 5.2 HTTP客户端代码
  79. 5.3 关系数据库访问
  80. 5.4 CompletableFuture与Stream
  81. 5.4.1 CompletableFuture概述
  82. 5.4.2 与CompletableFuture进行交互
  83. 5.5 Observable与Single
  84. 5.5.1 创建和消费Single
  85. 5.5.2 使用zip、merge和concat组合响应
  86. 5.5.3 与Observable和CompletableFuture的交互
  87. 5.5.4 何时使用Single
  88. 5.6 小结
  89. 第6章 流控制和回压
  90. 6.1 流控制
  91. 6.1.1 定期采样和节流
  92. 6.1.2 将事件缓冲至列表中
  93. 6.1.3 窗口移动
  94. 6.1.4 借助debounce()跳过陈旧的事件
  95. 6.2 回压
  96. 6.2.1 RxJava中的回压
  97. 6.2.2 内置的回压
  98. 6.2.3 Producer与缺失回压场景
  99. 6.2.4 按照请求返回指定数量的数据
  100. 6.3 小结
  101. 第7章 测试和排错
  102. 7.1 错误处理
  103. 7.1.1 我的异常在哪里
  104. 7.1.2 替代声明式的try-catch
  105. 7.1.3 事件没有发生导致的超时
  106. 7.1.4 失败之后的重试
  107. 7.2 测试和调试
  108. 7.2.1 虚拟时间
  109. 7.2.2 单元测试中的调度器
  110. 7.3 单元测试
  111. 7.4 监控和调试
  112. 7.4.1 doOn...()回调
  113. 7.4.2 测量和监控
  114. 7.5 小结
  115. 第8章 案例学习
  116. 8.1 使用RxJava进行Android开发
  117. 8.1.1 避免Activity中的内存泄漏
  118. 8.1.2 Retrofit对RxJava的原生支持
  119. 8.1.3 Android中的调度器
  120. 8.1.4 将UI事件作为流
  121. 8.2 使用Hystrix管理失败
  122. 8.2.1 使用Hystrix的第一步
  123. 8.2.2 使用HystrixObservableCommand的非阻塞命令
  124. 8.2.3 舱壁模式和快速失败
  125. 8.2.4 批处理和合并命令
  126. 8.2.5 监控和仪表盘
  127. 8.3 查询NoSQL数据库
  128. 8.3.1 Couchbase客户端API
  129. 8.3.2 MongoDB客户端API
  130. 8.4 Camel集成
  131. 8.4.1 通过Camel来消费文件
  132. 8.4.2 接收来自Kafka的消息
  133. 8.5 Java 8的Stream和CompletableFuture
  134. 8.5.1 并行流的用途
  135. 8.5.2 选择恰当的并发抽象
  136. 8.5.3 何时使用Observable
  137. 8.6 内存耗费和泄漏
  138. 8.7 小结
  139. 第9章 未来的方向
  140. 9.1 反应式流
  141. 9.2 Observable和Flowable
  142. 9.3 性能
  143. 9.4 迁移
  144. 附录A HTTP服务器的更多样例
  145. 附录B Observable操作符的决策树
  146. 附录C RxJava 1.0至RxJava 2.0的迁移指南
书名:RxJava反应式编程
译者:张卫滨 译
国内出版社:人民邮电出版社
出版时间:2019年12月
页数:306
书号:978-7-115-52400-3
原版书书名:Reactive Programming with RxJava
原版书出版商:O'Reilly Media
Tomasz Nurkiewicz
 
Tomasz Nurkiewicz,软件工程师,热爱JVM语言和开源技术,经常为DZone网站撰写博客,并在世界各地的Java会议上发表演讲。
 
 
Ben Christensen
 
Ben Christensen,软件工程师,曾在苹果、Netflix和Facebook公司工作,专注于弹性、扩展性和分布式系统,为Hystrix和RxJava等开源项目做出了贡献。
 
 
购买选项
定价:99.00元
书号:978-7-115-52400-3
出版社:人民邮电出版社