RxJava反应式编程

RxJava反应式编程
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者: , [波兰】 托马什·努尔凯维茨【美] (Tomasz,Nurkiewicz)【美】本·克里斯滕森() ,
2019-12
版次: 1
ISBN: 9787115524003
定价: 99.00
装帧: 平装
开本: 16开
纸张: 胶版纸
页数: 306页
13人买过
  • RxJava广泛应用于Android应用程序的开发,得到了广大开发人员的青睐。其语法简洁,运行高效,未来有望成为主流的开发模式。本书主要内容包括:RxJava的基本概念,RxJava提供的诸多操作符,如何将RxJava用于自己的应用程序以及如何与它交互,如何将RxJava嵌入代码库的不同地方,如何从头到尾实现反应式应用程序,流控制,回压机制,基于Rx的应用程序的单元测试、维护以及问题排查等相关技术。本书还特别收录了2.0版本和1.0版本的异同比较。 托马什·努尔凯维茨(Tomasz Nurkiewicz), 软件工程师,热爱JVM语言和开源技术,经常为DZone网站撰写博客,并在世界各地的Java会议上发表演讲。

    本·克里斯滕森(Ben Christensen),软件工程师,曾在苹果、Netflix和Facebook公司工作,专注于弹性、扩展性和分布式系统,为Hystrix和RxJava等开源项目做出了贡献。

    【译者介绍】

    张卫滨,毕业于天津大学,软件开发工程师,拥有十余年相关经验。热爱马拉松和摇滚乐,喜欢探究和钻研新技术,译作包括《Spring实战》《Spring Data实战》《反应式Web应用开发》等。 本书赞誉 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
  • 内容简介:
    RxJava广泛应用于Android应用程序的开发,得到了广大开发人员的青睐。其语法简洁,运行高效,未来有望成为主流的开发模式。本书主要内容包括:RxJava的基本概念,RxJava提供的诸多操作符,如何将RxJava用于自己的应用程序以及如何与它交互,如何将RxJava嵌入代码库的不同地方,如何从头到尾实现反应式应用程序,流控制,回压机制,基于Rx的应用程序的单元测试、维护以及问题排查等相关技术。本书还特别收录了2.0版本和1.0版本的异同比较。
  • 作者简介:
    托马什·努尔凯维茨(Tomasz Nurkiewicz), 软件工程师,热爱JVM语言和开源技术,经常为DZone网站撰写博客,并在世界各地的Java会议上发表演讲。

    本·克里斯滕森(Ben Christensen),软件工程师,曾在苹果、Netflix和Facebook公司工作,专注于弹性、扩展性和分布式系统,为Hystrix和RxJava等开源项目做出了贡献。

    【译者介绍】

    张卫滨,毕业于天津大学,软件开发工程师,拥有十余年相关经验。热爱马拉松和摇滚乐,喜欢探究和钻研新技术,译作包括《Spring实战》《Spring Data实战》《反应式Web应用开发》等。
  • 目录:
    本书赞誉 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
查看详情
相关图书 / 更多
RxJava反应式编程
RxJava 2.x 实战
沈哲 著
RxJava反应式编程
RxJava响应式编程
李衍顺
RxJava反应式编程
RxJava反应式编程(影印版 英文版)
[美]托马什·勒克威茨本·克斯藤森 著
您可能感兴趣 / 更多
RxJava反应式编程
经济人类学——学科史、民族志与批判(人类学视野译丛)
Chris Hann
RxJava反应式编程
弄假成真(平装本)(阿加莎·克里斯蒂经典侦探作品集)
Christie 著;[英]阿加莎·克里斯蒂(Agatha
RxJava反应式编程
均衡失业理论(汉译名著18)
Christopher A. Pissarides
RxJava反应式编程
挑选缪斯——大都会艺术博物馆奇幻故事集
Christine Coulson
RxJava反应式编程
The Cambridge History of Music Criticism
Christopher Dingle
RxJava反应式编程
我的第一本英语阅读书
Christina 编
RxJava反应式编程
我的第一本英语会话书
Christina 编
RxJava反应式编程
我的第一本英语日记书
Christina 编
RxJava反应式编程
我的第一本英语作文书
Christina 编
RxJava反应式编程
Literature and the Law of Nations, 1580-1680
Christopher N. Warren
RxJava反应式编程
DarkFire
Chris D'Lacey(克里斯·德莱西) 著
RxJava反应式编程
Arthur Miller
Christopher Bigsby