反应式应用开发

反应式应用开发
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者: , [美] (Duncan DeVore) , [美] (Sean Walsh) , [美] (Brian Hanafee)
2020-10
版次: 1
ISBN: 9787302563563
定价: 69.80
装帧: 其他
开本: 16开
纸张: 胶版纸
2人买过
  • 关键任务型应用必须立即响应负载的变化、从故障中优雅地恢复并满足对性能、成本和可靠性的严格要求。这可不是什么小任务!反应式设计能够通过模块化、消息驱动的架构、创新的工具和基于云的基础设施更容易地满足这些需求。
      
       《反应式应用开发》介绍如何使用反应式设计模式构建可靠的企业级应用。本书首先介绍了反应式思维模型以及对Akka参与者框架等核心技术的审视。然后使用Scala构建了一个概念验证系统,并讲解CQRS和事件溯源等模式的应用。在实现伸缩性和回弹性、与传统架构集成以及理解强大的测试技术的同时,读者将掌握反应式设计原则。 主要内容 设计可伸缩的领域模型 构建可容错的系统 高效应对海量数据 可以用Scala或Java构建的示例         Sean Walsh已经在技术行业工作了20多年。在此期间,他从一开始使用Microsoft技术体系的语言和框架进行编程,转变到在20世纪90年代中期成为Java的早期使用者。Sean为许多垂直领域(特别是金融、能源和零售行业)的初创公司和企业提供咨询。自1996年以来,他一直是曼哈顿一家成功的中型咨询公司的首席技术官和联合创始人。他还是SOA Software的服务副总裁,以及一家利润丰厚的软件咨询公司的所有者。

           在卖掉上一家公司并休息了一段时间后,Sean决定再次扬帆起航,并且再次开始在能源行业从事实践咨询工作,最初使用的是Java和Spring,但在看到它们的局限性后,Sean开始使用Akka和Scala。Sean在使用Lightbend开源技术栈构建分布式应用方面积累了多年的经验,其中包括Weight Watchers的数字化转型。

    Sean现在是Lightbend的现场CTO,负责帮助Lightbend的客户实现反应式架构。

           Duncan Devore是Lightbend的首席系统工程师,并且多年来一直是Scala、Akka和反应式应用的坚定支持者,他开发了第一批投入生产使用的反应式应用之一。他还是Martin Krasser最初的事件溯源项目的提交者,该项目后来发展成为Akka Persistence,同时他还维护着Akka Persistence Mongo Journal。

           Brian Hanafee首次涉足书籍编写是作为《反应式设计模式》(Reactive Design Patterns,该书已由清华大学出版社引进并出版)的合著者。他是富国银行(Wells Fargo Bank)的首席系统架构师,负责各种不同的开发活动,并一直提倡提高技术水平。此前,Brian就职于Oracle公司,致力于互动电视和文本处理的新产品及系统的研发。1994年,他在一辆行驶的汽车上发出了第一封电子邮件。在此之前,Brian曾在Booz、Allen & Hamilton和Advanced Decision Systems担任助理,并将人工智能技术应用于军事规划系统。他还为其中的首批弹射安全头盔式显示系统编写了软件。

           Brian在加州大学伯克利分校获得了电子工程和计算机科学学士学位。 第Ⅰ部分 基础知识

    第1章 什么是反应式应用 3

    1.1 为何需要反应式应用 5

    1.1.1 分布式计算 5

    1.1.2 云计算 6

    1.2 网上购物车:表象之下的复杂性 7

    1.2.1 单体式架构:难以分布 7

    1.2.2 反应式架构:默认就是分布式的 13

    1.2.3 理解反应式架构 15

    1.2.4 单体式购物车:创建订单 17

    1.2.5 事件溯源:银行账户登记 19

    1.2.6 反应式购物车:使用事件溯源创建订单 20

    1.3 反应式应用能对哪些对象做出反应 23

    1.4 通过本书能学到什么 24

    1.4.1 使用松耦合设计的异步通信 24

    1.4.2 伸缩性 24

    1.4.3 回弹性 25

    1.4.4 响应性 25

    1.4.5 测试 25

    1.5 本章小结 26

    第2章 初识Akka 27

    2.1 理解消息和参与者 28

    2.1.1 从函数转向参与者 28

    2.1.2 使用参与者和消息进行领域建模 30

    2.1.3 定义消息 31

    2.1.4 定义参与者 32

    2.2 安装示例项目 34

    2.3 启动参与者系统 36

    2.3.1 创建驱动 37

    2.3.2 运行驱动程序 37

    2.4 跨多个系统分布参与者 38

    2.4.1 分布到两个JVM 38

    2.4.2 为远程参与者进行配置 39

    2.4.3 设置驱动程序 40

    2.4.4 运行分布式参与者 42

    2.5 使用多个参与者进行扩展 43

    2.5.1 传统方案 43

    2.5.2 像参与者函数那样路由 44

    2.6 创建参与者池 45

    2.6.1 添加池路由器 46

    2.6.2 运行池化的参与者系统 47

    2.7 使用多参与者系统进行扩展 48

    2.7.1 添加分组路由器 49

    2.7.2 运行多个参与者系统 51

    2.8 应用反应式原则 51

    2.9 本章小结 52

    第3章 理解Akka 53

    3.1 Akka是什么 54

    3.2 Akka现状 55

    3.2.1 变得可响应 56

    3.2.2 可靠地保留数据 56

    3.2.3 需求越来越大的回弹性和易伸缩性 57

    3.2.4 使用Spark支持大数据 58

    3.3 Akka专用术语 58

    3.3.1 并发和并行 58

    3.3.2 异步和同步 59

    3.3.3 竞争 62

    3.3.4 完全无共享 63

    3.4 参与者 65

    3.4.1 状态 66

    3.4.2 参与者引用 66

    3.4.3 异步消息传递 66

    3.4.4 邮箱 68

    3.4.5 行为和receive循环 69

    3.4.6 监管 75

    3.5 参与者系统 76

    3.5.1 层级结构 76

    3.5.2 监管 78

    3.5.3 参与者路径 79

    3.5.4 参与者生命周期 80

    3.5.5 微内核容器 81

    3.6 本章小结 82

    第Ⅱ部分 构建反应式应用

    第4章 从领域映射到工具集 85

    4.1 基于领域模型进行设计 86

    4.1.1 一种更好的解决方案 86

    4.1.2 从类比转向应用 86

    4.1.3 创建卡片目录 88

    4.2 转变为消息驱动 89

    4.3 使用消息控制参与者状态 91

    4.3.1 向自己发送消息 91

    4.3.2 使用状态改变行为 93

    4.3.3 管理更多的复杂交互 95

    4.3.4 保持简单性 99

    4.3.5 运行应用 102

    4.3.6 进展回顾 102

    4.4 增大伸缩性 103

    4.4.1 Akka路由 103

    4.4.2 调度器 106

    4.4.3 运行具有路由器的应用 108

    4.5 回弹性 109

    4.5.1 故障的Librarian参与者 109

    4.5.2 运行故障应用 111

    4.5.3 Librarian监管 111

    4.5.4 运行具有回弹监管的应用 113

    4.6 本章小结 113

    第5章 领域驱动设计 115

    5.1 什么是领域驱动设计 116

    5.1.1 大泥球 117

    5.1.2 限界上下文 121

    5.1.3 通用语言 122

    5.1.4 实体、聚合与值对象 123

    5.1.5 服务、仓储和工厂 126

    5.1.6 防腐层 128

    5.1.7 分层架构 129

    5.1.8 Saga 130

    5.1.9 共享内核 130

    5.2 基于参与者的领域 131

    5.2.1 简单的Akka航班领域 131

    5.2.2 Aircraft参与者 132

    5.2.3 Akka Process Manager 133

    5.3 本章小结 135

    第6章 使用远程参与者 137

    6.1 重构为分布式系统 138

    6.1.1 划分成多个参与者系统 138

    6.1.2 使用sbt进行结构化 139

    6.2 配置应用 140

    6.2.1 创建第一个驱动程序 141

    6.2.2 引入application.conf 142

    6.2.3 使用HOCON 143

    6.2.4 配置应用 144

    6.3 使用Akka进行远程通信 145

    6.3.1 构造远程引用 145

    6.3.2 解析引用 146

    6.3.3 在客户端之间进行替换 148

    6.3.4 创建另一个驱动程序 151

    6.4 运行分布式示例 153

    6.4.1 启动Customer驱动程序 154

    6.4.2 启动RareBooks驱动程序 155

    6.4.3 创建一些顾客 155

    6.4.4 检查结果 155

    6.5 分布式系统中的可靠性 156

    6.5.1 将可靠性作为一种设计规范 157

    6.5.2 Akka提供的保障方法 159

    6.6 本章小结 163

    第7章 反应式流 165

    7.1 缓存过多的消息 166

    7.2 使用背压进行防护 167

    7.2.1 停止和等待 167

    7.2.2 表明多条消息的信号 170

    7.2.3 流的控制 171

    7.3 使用Akka进行流处理 172

    7.3.1 将流添加到项目 173

    7.3.2 从文件创建流的源 174

    7.3.3 转换流 175

    7.3.4 将流转换成参与者消息 176

    7.3.5 小结 178

    7.4 Reactive Streams介绍 179

    7.4.1 创建反应式流 179

    7.4.2 消费反应式流 180

    7.4.3 构建使用流处理的应用 181

    7.5 本章小结 181

    第8章 CQRS与事件溯源 183

    8.1 面向CQRS/ES的驱动因素 184

    8.1.1 ACID事务 184

    8.1.2 传统的RDBMS缺乏分片 185

    8.1.3 CRUD 185

    8.2 CQRS的起源:命令、查询以及两条不同的路径 186

    8.3 CQRS中的C 189

    8.3.1 什么是命令 189

    8.3.2 拒绝 190

    8.3.3 原子性 190

    8.3.4 杂而不精 191

    8.3.5 行为的欠缺 192

    8.3.6 订单示例:订单命令 192

    8.3.7 不间断命令验证 193

    8.3.8 冲突解决 196

    8.4 CQRS中的Q 197

    8.4.1 阻抗不匹配 197

    8.4.2 什么是查询 199

    8.4.3 不必动态查询 201

    8.4.4 对比SQL与NoSQL数据库 201

    8.5 事件溯源 202

    8.5.1 什么是事件 202

    8.5.2 所有一切都与行为有关 204

    8.5.3 分布式事务之外的考虑事项 204

    8.5.4 订单示例 204

    8.5.5 再谈一致性 208

    8.5.6 重试模式 209

    8.5.7 对比命令溯源与事件溯源 210

    8.6 本章小结 210

    第9章 反应式接口 211

    9.1 什么是反应式接口 212

    9.1.1 API层 212

    9.1.2 无头API 212

    9.2 表述性RESTful接口 213

    9.2.1 对比JSON与XML 214

    9.2.2 表述性RESTful接口URL 214

    9.2.3 Location 215

    9.3 选择反应式API库 216

    9.3.1 Play 216

    9.3.2 专断 217

    9.3.3 Play应用的结构 217

    9.3.4 简单路由 219

    9.3.5 非阻塞服务接口 220

    9.4 Akka HTTP:一个简单的CQRS式的服务 223

    9.5 Lagom:订单示例 227

    9.6 Play、Akka HTTP和Lagom之间的对比 228

    9.7 本章小结 229

    第10章 生产上线准备 231

    10.1 测试反应式应用 232

    10.1.1 识别测试模式 232

    10.1.2 测试并发行为 233

    10.2 应用安全防护 234

    10.2.1 认识STRIDE中定义的威胁 235

    10.2.2 御敌于国门之外 236

    10.2.3 添加HTTPS 237

    10.3 对参与者进行日志记录 238

    10.3.1 可堆叠日志 239

    10.3.2 配置日志系统 240

    10.4 跟踪消息 242

    10.4.1 使用Dapper模式收集跟踪数据 243

    10.4.2 减少对OpenTracing的依赖 245

    10.4.3 集成OpenTracing与Akka 246

    10.4.4 使用Spider模式找出路径 253

    10.5 监控反应式应用 254

    10.5.1 使用Lightbend Monitoring监控核心指标 254

    10.5.2 使用Kamon创建自定义指标 255

    10.6 应对故障 255

    10.6.1 决定要重启的对象 256

    10.6.2 路由考量 256

    10.6.3 某种程度上的恢复 257

    10.7 部署到云端 258

    10.7.1 要素隔离 258

    10.7.2 将参与者Docker化 259

    10.7.3 其他打包选项 261

    10.8 本章小结 261
  • 内容简介:
    关键任务型应用必须立即响应负载的变化、从故障中优雅地恢复并满足对性能、成本和可靠性的严格要求。这可不是什么小任务!反应式设计能够通过模块化、消息驱动的架构、创新的工具和基于云的基础设施更容易地满足这些需求。
      
       《反应式应用开发》介绍如何使用反应式设计模式构建可靠的企业级应用。本书首先介绍了反应式思维模型以及对Akka参与者框架等核心技术的审视。然后使用Scala构建了一个概念验证系统,并讲解CQRS和事件溯源等模式的应用。在实现伸缩性和回弹性、与传统架构集成以及理解强大的测试技术的同时,读者将掌握反应式设计原则。 主要内容 设计可伸缩的领域模型 构建可容错的系统 高效应对海量数据 可以用Scala或Java构建的示例
  • 作者简介:
            Sean Walsh已经在技术行业工作了20多年。在此期间,他从一开始使用Microsoft技术体系的语言和框架进行编程,转变到在20世纪90年代中期成为Java的早期使用者。Sean为许多垂直领域(特别是金融、能源和零售行业)的初创公司和企业提供咨询。自1996年以来,他一直是曼哈顿一家成功的中型咨询公司的首席技术官和联合创始人。他还是SOA Software的服务副总裁,以及一家利润丰厚的软件咨询公司的所有者。

           在卖掉上一家公司并休息了一段时间后,Sean决定再次扬帆起航,并且再次开始在能源行业从事实践咨询工作,最初使用的是Java和Spring,但在看到它们的局限性后,Sean开始使用Akka和Scala。Sean在使用Lightbend开源技术栈构建分布式应用方面积累了多年的经验,其中包括Weight Watchers的数字化转型。

    Sean现在是Lightbend的现场CTO,负责帮助Lightbend的客户实现反应式架构。

           Duncan Devore是Lightbend的首席系统工程师,并且多年来一直是Scala、Akka和反应式应用的坚定支持者,他开发了第一批投入生产使用的反应式应用之一。他还是Martin Krasser最初的事件溯源项目的提交者,该项目后来发展成为Akka Persistence,同时他还维护着Akka Persistence Mongo Journal。

           Brian Hanafee首次涉足书籍编写是作为《反应式设计模式》(Reactive Design Patterns,该书已由清华大学出版社引进并出版)的合著者。他是富国银行(Wells Fargo Bank)的首席系统架构师,负责各种不同的开发活动,并一直提倡提高技术水平。此前,Brian就职于Oracle公司,致力于互动电视和文本处理的新产品及系统的研发。1994年,他在一辆行驶的汽车上发出了第一封电子邮件。在此之前,Brian曾在Booz、Allen & Hamilton和Advanced Decision Systems担任助理,并将人工智能技术应用于军事规划系统。他还为其中的首批弹射安全头盔式显示系统编写了软件。

           Brian在加州大学伯克利分校获得了电子工程和计算机科学学士学位。
  • 目录:
    第Ⅰ部分 基础知识

    第1章 什么是反应式应用 3

    1.1 为何需要反应式应用 5

    1.1.1 分布式计算 5

    1.1.2 云计算 6

    1.2 网上购物车:表象之下的复杂性 7

    1.2.1 单体式架构:难以分布 7

    1.2.2 反应式架构:默认就是分布式的 13

    1.2.3 理解反应式架构 15

    1.2.4 单体式购物车:创建订单 17

    1.2.5 事件溯源:银行账户登记 19

    1.2.6 反应式购物车:使用事件溯源创建订单 20

    1.3 反应式应用能对哪些对象做出反应 23

    1.4 通过本书能学到什么 24

    1.4.1 使用松耦合设计的异步通信 24

    1.4.2 伸缩性 24

    1.4.3 回弹性 25

    1.4.4 响应性 25

    1.4.5 测试 25

    1.5 本章小结 26

    第2章 初识Akka 27

    2.1 理解消息和参与者 28

    2.1.1 从函数转向参与者 28

    2.1.2 使用参与者和消息进行领域建模 30

    2.1.3 定义消息 31

    2.1.4 定义参与者 32

    2.2 安装示例项目 34

    2.3 启动参与者系统 36

    2.3.1 创建驱动 37

    2.3.2 运行驱动程序 37

    2.4 跨多个系统分布参与者 38

    2.4.1 分布到两个JVM 38

    2.4.2 为远程参与者进行配置 39

    2.4.3 设置驱动程序 40

    2.4.4 运行分布式参与者 42

    2.5 使用多个参与者进行扩展 43

    2.5.1 传统方案 43

    2.5.2 像参与者函数那样路由 44

    2.6 创建参与者池 45

    2.6.1 添加池路由器 46

    2.6.2 运行池化的参与者系统 47

    2.7 使用多参与者系统进行扩展 48

    2.7.1 添加分组路由器 49

    2.7.2 运行多个参与者系统 51

    2.8 应用反应式原则 51

    2.9 本章小结 52

    第3章 理解Akka 53

    3.1 Akka是什么 54

    3.2 Akka现状 55

    3.2.1 变得可响应 56

    3.2.2 可靠地保留数据 56

    3.2.3 需求越来越大的回弹性和易伸缩性 57

    3.2.4 使用Spark支持大数据 58

    3.3 Akka专用术语 58

    3.3.1 并发和并行 58

    3.3.2 异步和同步 59

    3.3.3 竞争 62

    3.3.4 完全无共享 63

    3.4 参与者 65

    3.4.1 状态 66

    3.4.2 参与者引用 66

    3.4.3 异步消息传递 66

    3.4.4 邮箱 68

    3.4.5 行为和receive循环 69

    3.4.6 监管 75

    3.5 参与者系统 76

    3.5.1 层级结构 76

    3.5.2 监管 78

    3.5.3 参与者路径 79

    3.5.4 参与者生命周期 80

    3.5.5 微内核容器 81

    3.6 本章小结 82

    第Ⅱ部分 构建反应式应用

    第4章 从领域映射到工具集 85

    4.1 基于领域模型进行设计 86

    4.1.1 一种更好的解决方案 86

    4.1.2 从类比转向应用 86

    4.1.3 创建卡片目录 88

    4.2 转变为消息驱动 89

    4.3 使用消息控制参与者状态 91

    4.3.1 向自己发送消息 91

    4.3.2 使用状态改变行为 93

    4.3.3 管理更多的复杂交互 95

    4.3.4 保持简单性 99

    4.3.5 运行应用 102

    4.3.6 进展回顾 102

    4.4 增大伸缩性 103

    4.4.1 Akka路由 103

    4.4.2 调度器 106

    4.4.3 运行具有路由器的应用 108

    4.5 回弹性 109

    4.5.1 故障的Librarian参与者 109

    4.5.2 运行故障应用 111

    4.5.3 Librarian监管 111

    4.5.4 运行具有回弹监管的应用 113

    4.6 本章小结 113

    第5章 领域驱动设计 115

    5.1 什么是领域驱动设计 116

    5.1.1 大泥球 117

    5.1.2 限界上下文 121

    5.1.3 通用语言 122

    5.1.4 实体、聚合与值对象 123

    5.1.5 服务、仓储和工厂 126

    5.1.6 防腐层 128

    5.1.7 分层架构 129

    5.1.8 Saga 130

    5.1.9 共享内核 130

    5.2 基于参与者的领域 131

    5.2.1 简单的Akka航班领域 131

    5.2.2 Aircraft参与者 132

    5.2.3 Akka Process Manager 133

    5.3 本章小结 135

    第6章 使用远程参与者 137

    6.1 重构为分布式系统 138

    6.1.1 划分成多个参与者系统 138

    6.1.2 使用sbt进行结构化 139

    6.2 配置应用 140

    6.2.1 创建第一个驱动程序 141

    6.2.2 引入application.conf 142

    6.2.3 使用HOCON 143

    6.2.4 配置应用 144

    6.3 使用Akka进行远程通信 145

    6.3.1 构造远程引用 145

    6.3.2 解析引用 146

    6.3.3 在客户端之间进行替换 148

    6.3.4 创建另一个驱动程序 151

    6.4 运行分布式示例 153

    6.4.1 启动Customer驱动程序 154

    6.4.2 启动RareBooks驱动程序 155

    6.4.3 创建一些顾客 155

    6.4.4 检查结果 155

    6.5 分布式系统中的可靠性 156

    6.5.1 将可靠性作为一种设计规范 157

    6.5.2 Akka提供的保障方法 159

    6.6 本章小结 163

    第7章 反应式流 165

    7.1 缓存过多的消息 166

    7.2 使用背压进行防护 167

    7.2.1 停止和等待 167

    7.2.2 表明多条消息的信号 170

    7.2.3 流的控制 171

    7.3 使用Akka进行流处理 172

    7.3.1 将流添加到项目 173

    7.3.2 从文件创建流的源 174

    7.3.3 转换流 175

    7.3.4 将流转换成参与者消息 176

    7.3.5 小结 178

    7.4 Reactive Streams介绍 179

    7.4.1 创建反应式流 179

    7.4.2 消费反应式流 180

    7.4.3 构建使用流处理的应用 181

    7.5 本章小结 181

    第8章 CQRS与事件溯源 183

    8.1 面向CQRS/ES的驱动因素 184

    8.1.1 ACID事务 184

    8.1.2 传统的RDBMS缺乏分片 185

    8.1.3 CRUD 185

    8.2 CQRS的起源:命令、查询以及两条不同的路径 186

    8.3 CQRS中的C 189

    8.3.1 什么是命令 189

    8.3.2 拒绝 190

    8.3.3 原子性 190

    8.3.4 杂而不精 191

    8.3.5 行为的欠缺 192

    8.3.6 订单示例:订单命令 192

    8.3.7 不间断命令验证 193

    8.3.8 冲突解决 196

    8.4 CQRS中的Q 197

    8.4.1 阻抗不匹配 197

    8.4.2 什么是查询 199

    8.4.3 不必动态查询 201

    8.4.4 对比SQL与NoSQL数据库 201

    8.5 事件溯源 202

    8.5.1 什么是事件 202

    8.5.2 所有一切都与行为有关 204

    8.5.3 分布式事务之外的考虑事项 204

    8.5.4 订单示例 204

    8.5.5 再谈一致性 208

    8.5.6 重试模式 209

    8.5.7 对比命令溯源与事件溯源 210

    8.6 本章小结 210

    第9章 反应式接口 211

    9.1 什么是反应式接口 212

    9.1.1 API层 212

    9.1.2 无头API 212

    9.2 表述性RESTful接口 213

    9.2.1 对比JSON与XML 214

    9.2.2 表述性RESTful接口URL 214

    9.2.3 Location 215

    9.3 选择反应式API库 216

    9.3.1 Play 216

    9.3.2 专断 217

    9.3.3 Play应用的结构 217

    9.3.4 简单路由 219

    9.3.5 非阻塞服务接口 220

    9.4 Akka HTTP:一个简单的CQRS式的服务 223

    9.5 Lagom:订单示例 227

    9.6 Play、Akka HTTP和Lagom之间的对比 228

    9.7 本章小结 229

    第10章 生产上线准备 231

    10.1 测试反应式应用 232

    10.1.1 识别测试模式 232

    10.1.2 测试并发行为 233

    10.2 应用安全防护 234

    10.2.1 认识STRIDE中定义的威胁 235

    10.2.2 御敌于国门之外 236

    10.2.3 添加HTTPS 237

    10.3 对参与者进行日志记录 238

    10.3.1 可堆叠日志 239

    10.3.2 配置日志系统 240

    10.4 跟踪消息 242

    10.4.1 使用Dapper模式收集跟踪数据 243

    10.4.2 减少对OpenTracing的依赖 245

    10.4.3 集成OpenTracing与Akka 246

    10.4.4 使用Spider模式找出路径 253

    10.5 监控反应式应用 254

    10.5.1 使用Lightbend Monitoring监控核心指标 254

    10.5.2 使用Kamon创建自定义指标 255

    10.6 应对故障 255

    10.6.1 决定要重启的对象 256

    10.6.2 路由考量 256

    10.6.3 某种程度上的恢复 257

    10.7 部署到云端 258

    10.7.1 要素隔离 258

    10.7.2 将参与者Docker化 259

    10.7.3 其他打包选项 261

    10.8 本章小结 261
查看详情
12
相关图书 / 更多
反应式应用开发
反应-反常扩散过程与连续时间随机游走
李国华、张红 著
反应式应用开发
反应式Web应用开发
[奥地利]曼努埃尔·伯恩哈特(Manuel Bernhardt)
反应式应用开发
反应型含磷阻燃固化剂合成工艺及阻燃环氧树脂材料研发
张宏坤 著
反应式应用开发
反应工程(张贻亮)
张贻亮 主编
反应式应用开发
反应堆结构材料辐照效应高性能计算
胡长军;杨文;贺新福
反应式应用开发
反应器操作与控制(左丹)(第二版)
左丹 主编;何秀娟 副主编
反应式应用开发
反应器操作与控制(左丹)
左丹 著
反应式应用开发
反应性气体等离子体理论及应用研究
刘相梅 著
反应式应用开发
反应堆物理中的共振自屏计算
张乾、吴宏春、曹良志 著
反应式应用开发
反应流:理论与应用
[美]罗伯特·J. 基(Robert J. Kee)
反应式应用开发
反应式编程实战 使用RxJava 2.x开发Android应用
[芬兰]蒂莫·图奥米宁(Timo Tuominen)著 韩义波 译
反应式应用开发
反应式设计模式
[美]罗兰·库恩(Roland Kuhn)布赖恩·哈纳菲
您可能感兴趣 / 更多
反应式应用开发
Git软件开发实战
蒲成 译