Skip to content

Latest commit

 

History

History
117 lines (67 loc) · 8.48 KB

File metadata and controls

117 lines (67 loc) · 8.48 KB

零、前言

这本书将帮助你学习如何用 C++ 实现反应式编程范式,并构建异步和并发应用。这本书包括真实世界的问题,你将使用反应式编程模型来解决。它强调了事件处理在编程世界中的发展方式。您将学习 C++ 中的语言级并发和函数式反应式编程。函数式编程和面向对象编程中的构造将使您能够编写高效的程序。之后,您将在 C++ 中学习微服务,并为RxCpp创建自定义操作符。

这本书是给谁的

如果你是一个对使用反应式编程来构建异步和并发应用感兴趣的 C++ 开发人员,你会发现这本书非常有用。这本书没有假设任何以前的反应式编程知识。

这本书涵盖了什么

第 1 章反应式编程模型–概述和历史,介绍了 Rx 编程模型的一些关键数据结构。它还包括图形用户界面事件处理、反应式编程概述,以及在 MFC 上实现不同界面的图形用户界面版本。

第 2 章现代 C++ 及其关键习惯用法之旅,涵盖 C++ 特性、类型推断、变量模板、右值引用和移动语义、lambda 函数、初等函数编程、可移植运算符以及迭代器和观察器的实现。

第 3 章、*C++*中的语言级并发和并行,讨论了 c++ 标准中可用的线程库。您将学习如何启动和管理线程,并讨论线程库的不同方面。本章为现代 C++ 中引入的并发支持奠定了良好的基础。

第 4 章c++ 中的异步和无锁编程,讨论了标准库为编写基于任务的并行性提供的设施。它还讨论了现代 C++ 语言提供的新的多线程感知内存模型。

第 5 章可观测物介绍,讲述了 GoF 观察者模式,并说明了其不足。您将在表达式树建模的上下文中了解 GoF 复合/访问者模式。

第六章使用 C++ 的事件流编程介绍,重点介绍事件流编程的话题。我们还将查看 Streamulus 库,它提供了一种 DSEL 方法来处理事件流,后面还有几个程序。

第 7 章数据流计算和 RxCpp 库的介绍,从数据流计算范式的概念概述开始,快速进入编写一些基本的RxCpp程序。您将了解RxCpp库支持的一组操作符。

第 8 章RxCPP–关键元素,让您了解 Rx 编程模型的各个部分是如何结合在一起的。本章从 Observables 开始,接下来将介绍订阅机制和调度器实现。

第 9 章使用 Qt/C++ 进行反应式图形用户界面编程,涉及使用 Qt 进行反应式图形用户界面编程的主题。您将了解 Qt 框架中的概念,例如 Qt 对象层次结构、元对象系统以及信号和槽。然后,您将编写一个应用来处理鼠标事件并过滤它们。在此之后,你还将学习如何在RxCpp中创建自定义反应操作符的高级主题,如果现有的一组操作符不足以满足目的的话。本主题还通过组合现有运算符来帮助您创建复合运算符。本书中没有这个主题,但可以在https://www . packtpub . com/sites/default/files/downloads/Creating _ Custom _ Operators _ in _ rxcpp . pdf下载。

第十章c++ Rx 编程的设计模式和习惯用法,深究设计模式和习惯用法的奇妙世界。从 GOF 设计模式开始,我们将转向反应式编程模式。

第 11 章使用 C++ 的反应式微服务,讲述了如何使用 Rx 编程模型使用 C++ 编写反应式微服务。它向您介绍了微软 C++ REST SDK 及其编程模型。

第 12 章高级流和处理错误讨论了RxCpp中的错误处理,以及处理RxCpp库中流的一些高级构造和操作符。我们将讨论当错误出现时如何继续流,如何等待流的生产者纠正错误并继续序列,以及如何执行适用于成功和错误路径的常见操作。

充分利用这本书

为了跟上这本书的主题,你需要有 C++ 编程的知识。

下载示例代码文件

你可以从你在www.packtpub.com的账户下载这本书的示例代码文件。如果您在其他地方购买了这本书,您可以访问www.packtpub.com/support并注册将文件直接通过电子邮件发送给您。

您可以按照以下步骤下载代码文件:

  1. 登录或注册www.packtpub.com
  2. 选择“支持”选项卡。
  3. 点击代码下载和勘误表。
  4. 在搜索框中输入图书的名称,并按照屏幕指示进行操作。

下载文件后,请确保使用最新版本的解压缩文件夹:

  • 视窗系统的 WinRAR/7-Zip
  • zipeg/izp/un ARX for MAC
  • 适用于 Linux 的 7-Zip/PeaZip

这本书的代码包也托管在 https://github.com/PacktPublishing/CPP-Reactive-Programming 的 GitHub 上。如果代码有更新,它将在现有的 GitHub 存储库中更新。

我们还有来自丰富的图书和视频目录的其他代码包,可在**【https://github.com/PacktPublishing/】**获得。看看他们!

下载彩色图像

我们还提供了一个 PDF 文件,其中包含本书中使用的截图/图表的彩色图像。你可以在这里下载:https://www . packtpub . com/sites/default/files/downloads/CPPReactiveProgramming _ color images . pdf

使用的约定

本书通篇使用了许多文本约定。

CodeInText:表示文本中的码字、数据库表名、文件夹名、文件名、文件扩展名、路径名、虚拟网址、用户输入和推特句柄。这里有一个例子:“前面的代码片段用窗口的必要模板初始化了一个名为WNDCLASS(或者现代系统中的WNDCLASSEX)的结构。”

代码块设置如下:

/* close connection to server */
XCloseDisplay(display);

return 0;
}

当我们希望将您的注意力吸引到代码块的特定部分时,相关的行或项目以粗体显示:

/* close connection to server */
XCloseDisplay(display);

return 0;
}

任何命令行输入或输出都编写如下:

$ mkdir css
$ cd css

粗体:表示一个新的术语、一个重要的单词或者你在屏幕上看到的单词。例如,菜单或对话框中的单词像这样出现在文本中。这里有一个例子:“用开窗的说法,它被称为消息循环。”

Warnings or important notes appear like this. Tips and tricks appear like this.

取得联系

我们随时欢迎读者的反馈。

综合反馈:发邮件feedback@packtpub.com并在邮件主题中提及书名。如果您对本书的任何方面有疑问,请发电子邮件至questions@packtpub.com

勘误表:虽然我们已经尽了最大的努力来保证内容的准确性,但是错误还是会发生。如果你在这本书里发现了一个错误,如果你能向我们报告,我们将不胜感激。请访问www.packtpub.com/submit-errata,选择您的图书,点击勘误表提交链接,并输入详细信息。

盗版:如果您在互联网上遇到任何形式的我们作品的非法拷贝,如果您能提供我们的位置地址或网站名称,我们将不胜感激。请通过copyright@packtpub.com联系我们,并提供材料链接。

如果你有兴趣成为一名作者:如果有一个你有专长的话题,你有兴趣写或者投稿一本书,请访问authors.packtpub.com

复习

请留下评论。一旦你阅读并使用了这本书,为什么不在你购买它的网站上留下评论呢?然后,潜在的读者可以看到并使用您不带偏见的意见来做出购买决定,我们在 Packt 可以了解您对我们产品的看法,我们的作者可以看到您对他们的书的反馈。谢谢大家!

更多关于 Packt 的信息,请访问packtpub.com