Java编程方法论:响应式RxJava与代码设计实战
  • 推荐1
  • 收藏5
  • 浏览646

Java编程方法论:响应式RxJava与代码设计实战

知秋(李飞) , 李飞 (作者) 

  • 丛  书:Java编程方法论系列丛书
  • 书  号:978-7-121-36417-4
  • 出版日期:2019-06-01
  • 页  数:296
  • 开  本:16(185*235)
  • 出版状态:正在印刷
  • 维护人:付睿

相关图书

读故事学编程——Python王国历险记(双色)

李伟 (作者)

这是一本故事书,也是一本编程书。<br>小男孩派森无意中闯入神秘国度—Python 王国,恰好遇到了国王的鹦鹉,于是他们开始了奇幻的冒险之旅。在这个过程中,他们...

¥69.00

21天学通HTML5+CSS3(第2版)

张启玉 刘刚 (作者)

本书全面、系统、深入地讲解了HTML5+CSS3网页设计与编程的基础知识与高级应用。在讲解过程中,通过大量取自实际操作的案例,将网页开发知识全面、系统、深入地呈...

¥89.90

Scratch 3.0趣味编程

王晓辉 (作者)

本书是一本编程故事书,以Scratch 3.0作为编程设计工具,围绕一只小猫“喵喵呱” 找回叫声的故事展开全书内容。  <br>本书包含9章共27节,通篇注重情...

¥69.00

零基础学Kotlin之Android项目开发实战

郭宝利 (作者)

系统介绍Kotlin语言基础,从零基础介绍起,并给出相关知识点的简介和网上学习资料索引;围绕程序员学习时关心的话题介绍一些专题应用,以便程序员将基础知识点运用好...

¥79.00

程序员代码面试指南:IT名企算法与数据结构题目最优解(第2版)

左程云 (作者)

《程序员代码面试指南:IT名企算法与数据结构题目最优解(第2版)》是一本程序员代码面试宝典!书中对IT名企代码面试各类题目的最优解进行了总结,并提供了相关代码实...

¥109.00

EOS区块链应用开发指南

虞家男 (作者)

EOS被称为区块链3.0,是下一代区块链技术,本书将向读者展示EOS区块链技术的众多概念和特性。全书共分为7章,分别是初识EOS、EOS的工作原理、开发工具和环...

¥39.00
本书对RxJava 2的源码进行了深入解读,让读者可以从设计到实现细节上全面了解它,从而达到不仅会用而且可以进行RxJava 2源码库组件级别的拓展的程度。本书的目的不仅是介绍RxJava 2,而且更希望通过一个成熟、优秀的代码库来向读者展示阅读源码的思路及编程方面的技巧,其中包含了并发编程的实战技巧、数据结构的设计方法、设计模式的使用方法、函数式编程的各种技巧等,希望读者可以深入思考并获得属于自己的一套编程方法论。这也是“Java编程方法论系列丛书”的初衷,授之以鱼不如授之以渔。
本书适合有Java编程基础的中高级Java开发工程师、想要学习代码设计思路与技巧的读者、对响应式编程感兴趣的读者阅读。
响应式是未来的编程趋势,本书是讲解响应式技术RxJava 2的书籍,在进行源码导读的同时,也引导读者对代码设计进行思考。包含大量案例,并配有相关视频。
知秋,本名李飞,长期致力于基础代码库的研发工作,通过博客与视频平台bilibili,结合自己的经验做了大量源码解读的分享。对JDK、Spring、RxJava、Spring Reactor、Netty、Reactor-Netty等有很深刻的研究和独到的见解,并以此打造“Java编程方法论系列丛书”。基于开源精神,与志同道合的伙伴们一起创建了simviso开源分享团队,为开源社区服务。
前 言

本书是“Java编程方法论系列丛书”的第一本书,“Java编程方法论系列丛书”将我多年的代码经验通过讲述优秀的RxJava 2、Reactor 3、Reactor-Netty与Spring WebFlux等框架库的源码细节展现出来,目的是让大家可以学习一种读源码的方式。也就是说,看源码不仅要看懂它干了什么,而且更应该看相关源码的设计思路以及技巧。这就好比研读一篇好文章一样,要揣摩作者的行文方式。
与理解代码相比,我更愿意带给大家的是一种生活态度。Java的第一个身份是语言,语言是用于描述我们的思想和生活的,所以带着生活中的理念来读源码,你就会发现情况大为不同:各种编程技巧和实现思路通通摆在了你的眼前。本系列丛书就是从这个角度出发的,所以针对的读者是那些想要提高自己对于基础代码掌控能力的中高级程序员。
下面具体介绍一下本书内容。本书主要讲解了到底什么是响应式,从代码设计层面将JDK 9+中的Flow API、RxJava 2中关于源的创建,以及调度与背压等相关核心操作娓娓道来,并通过实战案例帮助大家更好地理解和使用相关的API。本书涉及了大量并发编程方面的技巧,以及从基础代码角度介绍了各种接口、设计模式和与之相关的基础知识点,并将它们融会贯通。这就好比我们上学的时候,老师向我们传授基础知识,然后通过习题让我们掌握这些基础知识的运用技巧。本书也遵循了这个思路,同时这也符合我写书的初衷。
限于篇幅,有些内容没能完全在书中呈现,为了降低图书的阅读理解难度,我专门录制了相关的分享视频,可以更直观地带领大家走进源码世界。视频可以说是图书的有益补充,欢迎大家观看、学习。另外,希望读者通过学习本书了解响应式编程如何带来程序性能的提升以及其正确的使用方式。在录制本系列丛书的另一本书《Java编程方法论:响应式Reactor 3、Reactor-Netty和Spring WebFlux》(后续出版)的相关视频时,使我感到很荣幸的是,视频得到了Spring官方的肯定,并在Spring官方推特和博客上进行了宣传、推广,这增加了我对本系列丛书的信心。
最后,感谢尹相宇同学,没有你听我啰啰唆唆地讲代码,我估计自己的这份激情难以维持,当然,这本书的顺利出版也离不开你的审阅。另外,需要感谢的还有付睿编辑,她帮助我修正了很多表达细节上的错误。最后,感谢我的家人对我的理解和默默付出。

知秋(李飞)
2019年2月15日

目录

第1章 响应式编程总览(Reactive Programming) 1
1.1 异步编程模式 1
1.1.1 并发 2
1.1.2 并行开发初探 3
1.2 流(Stream) 3
1.3 响应式流(Reactive Stream) 4
1.3.1 响应式流的特性 4
1.3.2 响应式开发的设计原则 5
1.3.3 响应式开发的好处 6
1.4 响应式开发工具库 6
1.4.1 RxJava简介 6
1.4.2 Reactor简介 7
1.4.3 MongoDB简介 8
1.4.4 响应式项目用例 8
1.5 Java 9中的响应式编程 10
1.5.1 响应式编程接口 10
1.5.2 Java 9响应式编程入门Demo 12
1.5.3 SubmissionPublisher类的源码解读 18
1.5.4 响应式编程整合Spring实战案例 23
1.6 小结 29
第2章 在RxJava中创建Observable 30
2.1 响应式编程所涉及的设计模式 30
2.1.1 观察者模式 30
2.1.2 迭代器模式 30
2.2 解读reactivex.Observable 31
2.2.1 从Flow.Publisher到Observable 33
2.2.2 subscribe的二三事 33
2.2.3 create方法的设计思想 36
2.2.4 各式各样的Observable 40
2.2.5 Observable.cache 43
2.2.6 无限流 49
2.2.7 在Observable内处理错误 54
2.2.8 定时控制Observable发送数据 56
2.2.9 Disposable延伸 59
2.2.10 ConnectableObservable解读 67
2.2.11 Observable中的publish.refCount解读 76
2.2.12 RxJava中的Subject解读 79
2.3 小结 89
第3章 RxJava 2中的操作 90
3.1 核心操作 90
3.1.1 使用filter进行条件过滤 90
3.1.2 使用map进行元素转换 96
3.1.3 使用flatMap进行扁平化转换 98
3.1.4 使用scan累加器 112
3.1.5 使用groupBy进行分组 114
3.2 多个Observable的合并操作 122
3.2.1 使用merge对Observable进行合并 122
3.2.2 使用zip方法进行合并 124
3.2.3 combineLatest操作 135
3.2.4 withLatestFrom操作 141
3.2.5 amb操作 142
3.3 高级操作 143
3.3.1 再谈累加器scan 143
3.3.2 聚合操作reduce 144
3.3.3 收集操作collect 146
3.3.4 使用distinct去重 148
3.3.5 使用distinctUntilChanged过滤重复数据 152
3.3.6 其他操作 152
3.3.7 自定义操作 153
3.4 小结 159
第4章 对RxJava 2的设计探索 160
4.1 源的创建设计思路 160
4.2 中间操作的转承 162
4.3 小结 166
第5章 Observable实战 167
5.1 初版架子实现 167
5.1.1 DAO层面的处理工作 167
5.1.2 控制层的响应式实现 172
5.2 基于架子实现一个汇率查询的服务 175
5.3 rxjava-web-spring-boot-starter的抽取设计 179
5.4 ObservableSseEmitter的设计实现 188
5.5 小结 196
第6章 RxJava 2中的多线程操作 197
6.1 初探RxJava并发编程 197
6.2 subscribeOn操作 211
6.3 observeOn操作 216
6.4 unsubscribeOn操作 220
6.5 调度器Scheduler 226
6.5.1 Schedulers.newThread方式 227
6.5.2 Schedulers.io方式 227
6.5.3 Schedulers.computation方式 228
6.5.4 Schedulers.from(Executor executor)自定义方式 228
6.6 小结 230
第7章 Flowable与背压 231
7.1 回顾背压 231
7.2 引入Flowable 233
7.3 探索Flowable.create 234
7.3.1 BackpressureStrategy.BUFFER策略 239
7.3.2 BackpressureStrategy.LATEST策略 246
7.3.3 BackpressureStrategy.DROP策略 249
7.4 将一个Observable转化为一个Flowable 251
7.5 通过onBackpressureXXX操作来实现背压策略 252
7.5.1 onBackPressureBuffer操作 255
7.5.2 onBackpressureLatest与onBackpressureDrop操作 256
7.6 Flowable.generate操作 257
7.7 小结 262
第8章 Flowable实战 263
8.1 使用Flowable封装JDBC 263
8.1.1 封装部分查询逻辑 263
8.1.2 封装update逻辑 265
8.2 结合Spring Web应用使用Flowable 268
8.2.1 接口数据的获取 269
8.2.2 响应式服务的源设计 271
8.3 单元测试 274
8.3.1 使用Mock Service Server进行测试 274
8.3.2 使用@Mock来进行一些服务测试 277
8.4 controller层的实现逻辑改造 279
8.5 小结 282

本书勘误

印次
  • 页码:14  •  行数:22  •  印次: 20190601
    public void subscribe(...) {
           subscriber.onSubscribe(new okcerXDemoSubscription(subscriber, executor));
    }
    

    在 有字的22行中,new 对象 的时候,少一个字母 D,请查验。

    小猎人 提交于 2019/6/23 16:40:43
    付睿 确认于 2019/7/26 14:52:20

读者评论

推荐用户

同系列书