RxJava 反应式编程 PDF 文档

发布于 2024-02-26 20:43:40 字数 5157 浏览 18 评论 0

RxJava 广泛应用于 Android 应用程序的开发,得到了广大开发人员的青睐。其语法简洁,运行高效,未来有望成为主流的开发模式。本书主要内容包括:RxJava 的基本概念,RxJava 提供的诸多操作符,如何将 RxJava 用于自己的应用程序以及如何与它交互,如何将 RxJava 嵌入代码库的不同地方,如何从头到尾实现反应式应用程序,流控制,回压机制,基于 Rx 的应用程序的单元测试、维护以及问题排查等相关技术。本书还特别收录了 2.0 版本和 1.0 版本的异同比较。

本书适合中高级 Java 程序员和软件架构师阅读。

前言
第 1 章 使用 RxJava 实现反应式编程
1.1 反应式编程与 RxJava
1.2 何时需要反应式编程
1.3 RxJava 是如何运行的
1.3.1 推送与拉取
1.3.2 异步与同步
1.3.3 并发与并行
1.3.4 延迟执行与立即执行
1.3.5 双重性
1.3.6 基数
1.4 阻塞 I/O 与非阻塞 I/O
1.5 反应式抽象
第 2 章 Reactive 扩展
2.1 剖析 rx.Observable
2.2 订阅来自 Observable 的通知
使用 Observer<T>捕获所有的通知
2.3 使用 Subscription 和 Subscriber<T>控制监听器
2.4 创建 Observable
2.4.1 掌握 Observable.create()
2.4.2 无穷流
2.4.3 计时:timer() 和 interval()
2.4.4 hot 和 cold 类型的 Observable
2.5 用例:从回调 API 到 Observable 流
手动管理订阅者
2.6 rx.subjects.Subject
2.7 ConnectableObservable
2.7.1 使用 publish().refCount() 实现单次订阅
2.7.2 ConnectableObservable 的生命周期
2.8 小结
第 3 章 操作符与转换
3.1 核心的操作符:映射和过滤
3.1.1 使用 map() 进行一对一转换
3.1.2 使用 flatMap() 进行包装
3.1.3 使用 delay() 操作符延迟事件
3.1.4 flatMap() 之后的事件顺序
3.1.5 使用 concatMap() 保证顺序
3.2 多个 Observable
3.2.1 使用 merge() 将多个 Observable 合并为一个
3.2.2 使用 zip() 和 zipWith() 进行成对地组合
3.2.3 流之间不同步的情况:combineLatest()、withLatest- From() 和 amb()
3.3 高级操作符:collect()、reduce()、scan()、distinct() 和 groupBy()
3.3.1 使用 Scan 和 Reduce 扫描整个序列
3.3.2 使用可变的累加器进行缩减:collect()
3.3.3 使用 single() 断言的 Observable 只有一个条目
3.3.4 使用 distinct() 和 distinctUntilChanged() 丢弃重复条目
3.4 使用 skip()、takeWhile() 等进行切片和切块
3.4.1 组合流的方式:concat()、merge() 和 switchOnNext()
3.4.2 使用 groupBy() 实现基于标准的切块流
3.4.3 下一步要学习什么
3.5 编写自定义的操作符
3.5.1 借助 compose() 重用操作符
3.5.2 使用 lift() 实现高级操作符
3.6 小结
第 4 章 将反应式编程应用于已有应用程序
4.1 从集合到 Observable
4.2 BlockingObservable:脱离反应式的世界
4.3 拥抱延迟执行
4.4 组合 Observable
延迟分页和连结
4.5 命令式并发
4.6 flatMap() 作为异步链接操作符
4.7 使用 Stream 代替回调
4.8 定期轮询以获取变更
4.9 RxJava 的多线程
4.9.1 调度器是什么
4.9.2 使用 subscribeOn() 进行声明式订阅
4.9.3 subscribeOn() 的并发性和行为
4.9.4 使用 groupBy() 进行批量请求
4.9.5 使用 observeOn() 声明并发
4.9.6 调度器的其他用途
4.10 小结
第 5 章 实现完整的反应式应用程序
5.1 解决 C10k 问题
5.1.1 传统的基于线程的 HTTP 服务器
5.1.2 借助 Netty 和 RxNetty 实现非阻塞的 HTTP 服务器
5.1.3 阻塞式和反应式服务器的基准测试
5.1.4 反应式 HTTP 服务器之旅
5.2 HTTP 客户端代码
使用 RxNetty 实现非阻塞的 HTTP 客户端
5.3 关系数据库访问
在 PostgreSQL 中使用 NOTIFY 和 LISTEN 的案例
5.4 CompletableFuture 与 Stream
5.4.1 CompletableFuture 概述
5.4.2 与 CompletableFuture 进行交互
5.5 Observable 与 Single
5.5.1 创建和消费 Single
5.5.2 使用 zip、merge 和 concat 组合响应
5.5.3 与 Observable 和 CompletableFuture 的交互
5.5.4 何时使用 Single
5.6 小结
第 6 章 流控制和回压
6.1 流控制
6.1.1 定期采样和节流
6.1.2 将事件缓冲至列表中
6.1.3 窗口移动
6.1.4 借助 debounce() 跳过陈旧的事件
6.2 回压
6.2.1 RxJava 中的回压
6.2.2 内置的回压
6.2.3 Producer 与缺失回压场景
6.2.4 按照请求返回指定数量的数据
6.3 小结
第 7 章 测试和排错
7.1 错误处理
7.1.1 我的异常在哪里
7.1.2 替代声明式的 try-catch
7.1.3 事件没有发生导致的超时
7.1.4 失败之后的重试
7.2 测试和调试
7.2.1 虚拟时间
7.2.2 单元测试中的调度器
7.3 单元测试
校验已发布的事件
7.4 监控和调试
7.4.1 doOn...() 回调
7.4.2 测量和监控
7.5 小结
第 8 章 案例学习
8.1 使用 RxJava 进行 Android 开发
8.1.1 避免 Activity 中的内存泄露
8.1.2 Retrofit 对 RxJava 的原生支持
8.1.3 Android 中的调度器
8.1.4 将 UI 事件作为流
8.2 使用 Hystrix 管理失败
8.2.1 使用 Hystrix 的第一步
8.2.2 使用 HystrixObservableCommand 的非阻塞命令
8.2.3 舱壁模式和快速失败
8.2.4 批处理和合并命令
8.2.5 监控和仪表盘
8.3 查询 NoSQL 数据库
8.3.1 Couchbase 客户端 API
8.3.2 MongoDB 客户端 API
8.4 Camel 集成
8.4.1 通过 Camel 来消费文件
8.4.2 接收来自 Kafka 的消息
8.5 Java 8 的 Stream 和 CompletableFuture
8.5.1 并行流的用途
8.5.2 选择恰当的并发抽象
8.5.3 何时使用 Observable
8.6 内存耗费和泄露
没有内存资源消耗限制的操作符
8.7 小结
第 9 章 未来的方向
9.1 反应式流
9.2 Observable 和 Flowable
9.3 性能
9.4 迁移
附录 A HTTP 服务器的更多样例
A.1 C 语言中的 fork() 程序
A.2 每个连接对应一个线程
A.3 连接的线程池
附录 B Observable 操作符的决策树
附录 C RxJava 1 至 RxJava 2 的迁移指南
C.1 RxJava 2.0 版本的变化
C.1.1 Maven 地址和基础包
C.1.2 Javadoc
C.1.3 关于 null
C.1.4 Observable 和 Flowable
C.1.5 Single
C.1.6 Completable
C.1.7 Maybe
C.1.8 基础的反应式接口
C.1.9 Subject 和 Processor
C.1.10 其他的类
C.1.11 函数式接口
C.1.12 Subscriber
C.1.13 Subscription
C.1.14 回压
C.1.15 遵循反应式流协议
C.1.16 运行时挂钩
C.1.17 错误处理
C.1.18 Scheduler
C.1.19 进入反应式的世界
C.1.20 脱离反应式的世界
C.1.21 测试
C.1.22 操作符的差异
C.1.23 杂项变更
C.2 RxJava 2.0 版本中的回压
C.2.1 回压概述
C.2.2 onBackpressureXXX 操作符
C.2.3 创建支持回压的数据源
关于作者
关于封面

下载地址:https://www.wenjiangs.com/wp-content/uploads/2024/01/ChPd9RV03xWt96eH.zip

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

JSmiles

生命进入颠沛而奔忙的本质状态,并将以不断告别和相遇的陈旧方式继续下去。

0 文章
0 评论
84961 人气
更多

推荐作者

醉城メ夜风

文章 0 评论 0

远昼

文章 0 评论 0

平生欢

文章 0 评论 0

微凉

文章 0 评论 0

Honwey

文章 0 评论 0

qq_ikhFfg

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文