https://mp.weixin.qq.com/s/9QXKRVDiNPHBs2XFzP_Dnw
前言
第一部分:介绍C++ concepts并探索重要的低延迟应用
第1章:C++中的低延迟应用开发入门
-
理解对延迟敏感型应用的要求 -
理解延迟敏感型与延迟关键型应用 -
测量延迟 -
区分延迟指标 -
对延迟敏感型应用程序的要求
-
-
理解为何C++是首选编程语言 -
编译型语言 -
更贴近硬件——低级语言 -
资源的确定性使用 -
速度与高性能 -
语言结构和特性 -
成熟且庞大的社区支持 -
持续积极发展的语言
-
-
介绍一些重要的低延迟应用 -
低级低延迟应用 -
高级低延迟应用 -
物联网和机器对机器应用
-
-
总结
第2章:用C++设计常见的低延迟应用
-
理解实时视频流应用中的低延迟性能 -
定义低延迟流中的重要概念 -
理解视频流中的延迟来源 -
测量低延迟视频流中的延迟 -
理解高延迟的影响 -
探索低延迟视频流技术 -
探索低延迟流的解决方案和平台
-
-
理解在游戏应用中低延迟的关键限制 -
低延迟游戏应用中的概念 -
提升游戏应用性能
-
-
讨论物联网和零售分析系统的设计 -
确保物联网设备的低延迟
-
-
探索低延迟电子交易 -
理解现代电子交易对低延迟的需求 -
在电子交易中实现最低延迟
-
-
总结
第3章:从低延迟应用的角度探索C++概念
-
技术要求 -
用C++进行低延迟应用开发的方法 -
先保证代码正确性,再进行优化 -
设计最优的数据结构和算法
-
-
关注处理器 -
理解缓存和内存访问成本 -
理解C++特性的底层原理 -
利用C++编译器 -
测量和提升性能 -
避免陷阱并利用C++特性最小化应用延迟 -
选择存储方式 -
选择数据类型 -
使用类型转换操作 -
优化数值运算 -
优化布尔和位运算 -
对象的初始化、销毁、复制和移动 -
使用引用和指针 -
优化跳转和分支 -
高效调用函数 -
使用位域 -
使用运行时多态 -
使用编译时多态 -
使用额外的编译时处理 -
处理异常 -
访问缓存和内存 -
动态分配内存 -
多线程
-
-
最大化C++编译器优化参数 -
理解编译器如何优化 -
理解编译器何时无法优化 -
了解编译器优化标志
-
-
总结
第4章:构建低延迟应用的C++基础模块
-
技术要求 -
C++线程处理在多线程低延迟应用中的应用 -
定义一些有用的宏和函数 -
创建并启动新线程 -
设置线程亲和性 -
构建示例
-
-
设计C++内存池以避免动态内存分配 -
理解内存池的定义 -
理解内存池的使用场景 -
设计内存池存储 -
初始化内存池 -
处理新的分配请求 -
处理内存释放 -
结合示例使用内存池
-
-
使用无锁队列传输数据 -
线程和进程间通信 -
设计无锁队列存储 -
初始化无锁队列 -
向队列添加元素 -
从队列消费元素 -
使用无锁队列
-
-
构建低延迟日志框架 -
设计时间相关的实用方法 -
设计低延迟日志记录器 -
定义一些日志记录器结构 -
初始化日志记录器数据结构 -
创建日志记录器并启动日志记录器线程 -
将数据推送到日志记录器队列 -
添加一个实用的通用日志函数 -
学习如何结合示例使用日志记录器
-
-
使用套接字进行C++网络编程 -
构建基本的套接字API -
实现发送/接收TCP套接字 -
构建TCP服务器组件 -
构建TCP服务器和客户端示例
-
-
总结
第二部分:用C++构建实时交易所
第5章:设计我们的交易生态系统
-
理解电子交易生态系统的布局 -
定义电子交易生态系统的拓扑结构 -
介绍电子交易生态系统的组件 -
设计交易所中的C++撮合引擎 -
理解撮合引擎的目的 -
理解交易所订单簿 -
匹配参与者订单 -
设计我们的撮合引擎
-
-
理解交易所如何向参与者发布信息 -
通过市场数据传达市场事件 -
设计市场数据发布者 -
通过订单网关接口通知市场参与者 -
设计订单网关服务器
-
-
构建市场参与者与交易所的接口 -
理解市场数据消费者基础设施 -
设计市场数据消费者 -
理解订单网关客户端基础设施 -
设计订单网关客户端基础设施
-
-
设计低延迟C++交易算法框架 -
构建订单簿 -
构建特征引擎 -
开发执行逻辑 -
理解风险管理系统 -
设计我们的交易策略框架
-
-
总结
第6章:构建C++撮合引擎
-
技术要求 -
定义撮合引擎中的操作和交互 -
定义一些类型和常量 -
设计撮合引擎 -
设计订单簿
-
-
构建撮合引擎并交换外部数据 -
构建撮合引擎 -
从订单网关队列消费数据并向其发布数据 -
向市场数据发布者队列发布数据 -
构建交易所应用程序二进制文件 -
运行交易所应用程序二进制文件
-
-
构建订单簿并进行订单撮合 -
构建内部数据结构 -
处理新的被动订单 -
处理订单取消请求 -
撮合主动订单并更新订单簿
-
-
总结
第7章:与市场参与者通信
-
技术要求 -
定义市场数据协议和订单数据协议 -
设计市场数据协议 -
设计订单数据协议
-
-
构建订单网关服务器 -
定义订单网关服务器中的数据成员 -
初始化订单网关服务器 -
处理传入的客户请求 -
使用先进先出(FIFO)排序器公平处理请求 -
发送客户响应
-
-
构建市场数据发布者 -
定义市场数据发布者中的数据成员 -
初始化市场数据发布者 -
发布订单簿更新 -
合成并发布快照
-
-
构建主交易所应用程序 -
总结
第三部分:构建实时C++算法交易系统
第8章:用C++处理市场数据并向交易所发送订单
-
技术要求 -
订阅市场数据并解码市场数据协议 -
定义市场数据消费者中的数据成员 -
初始化市场数据消费者 -
运行市场数据消费者主循环 -
处理市场数据更新并处理数据包丢失 -
与快照流同步
-
-
从市场数据构建订单簿 -
定义市场订单簿的结构 -
定义订单簿中的数据成员 -
初始化订单簿 -
处理市场更新并更新订单簿 -
回顾订单簿管理的通用实用方法
-
-
连接到交易所并发送和接收订单流 -
定义订单网关客户端中的数据成员 -
初始化订单网关客户端 -
向交易所发送订单请求 -
处理来自交易所的订单响应
-
-
总结
第9章:构建C++交易算法的基础模块
-
技术要求 -
对交易执行做出反应并管理仓位、盈亏(PnL)和风险 -
构建特征并计算复杂特征 -
定义特征引擎中的数据成员 -
初始化特征引擎 -
根据订单簿变化计算特征 -
根据交易事件计算特征
-
-
利用成交情况更新仓位和盈亏 -
声明PositionInfo中的数据成员 -
在PositionInfo中处理订单执行 -
在PositionInfo中处理订单簿变化 -
设计PositionKeeper -
初始化PositionKeeper -
在PositionKeeper中处理订单执行和市场更新
-
-
发送和管理订单 -
定义OMOrder结构体及其相关类型 -
设计OrderManager类 -
定义OrderManager中的数据成员 -
初始化OrderManager -
从OrderManager发送新订单 -
从OrderManager取消订单 -
添加简化订单管理的方法 -
处理订单更新并更新订单
-
-
计算并管理风险 -
定义RiskCfg结构 -
定义TradeEngineCfg结构 -
声明RiskCheckResult枚举 -
定义RiskInfo结构 -
在RiskInfo中执行风险检查 -
设计RiskManager中的数据成员 -
初始化我们的RiskManager类 -
在RiskManager中执行风险检查
-
-
总结
第10章:构建C++做市和流动性获取算法
-
技术要求 -
理解我们交易算法的行为 -
理解做市交易算法 -
通过示例研究做市机制 -
理解流动性获取交易算法 -
添加枚举以定义算法类型
-
-
管理订单簿中提供的被动流动性 -
定义做市(MarketMaker)算法中的数据成员 -
初始化做市算法 -
处理订单簿更新和交易事件 -
在做市算法中处理订单更新
-
-
激进地开仓和平仓 -
定义流动性获取(LiquidityTaker)算法中的数据成员 -
初始化流动性获取交易算法 -
处理交易事件和订单簿更新 -
在流动性获取算法中处理订单更新
-
-
构建交易引擎框架 -
定义交易引擎中的数据成员 -
初始化交易引擎 -
发送客户请求 -
处理市场数据更新和客户响应 -
处理订单簿、交易和订单响应更新 -
添加一些杂项方法
-
-
构建并运行主交易应用程序 -
构建主交易应用程序 -
运行最终的交易生态系统 -
检查运行输出
-
-
总结
第四部分:分析和提升性能
第11章:添加检测工具并测量性能
-
技术要求 -
添加检测系统以测量系统性能 -
使用RDTSC添加性能测量实用工具 -
更新我们之前的时间实用工具 -
理解实际测量系统中的一些问题
-
-
测量交易所的延迟 -
理解交易所的关键环节 -
测量市场数据发布者内部的延迟 -
测量订单服务器内部的延迟 -
测量撮合引擎和订单簿内部的延迟
-
-
测量交易引擎内部的延迟 -
理解内部测量方法 -
理解交易客户端系统中的关键节点 -
测量市场数据消费者内部的延迟 -
测量订单网关内部的延迟 -
测量交易引擎内部的延迟
-
-
使用新的检测系统运行整个生态系统 -
总结
第12章:分析和优化C++系统的性能
-
技术要求 -
分析我们交易生态系统的性能 -
回顾我们测量的延迟 -
分析性能 -
理解分析结果
-
-
探讨优化C++交易系统的技巧和方法 -
优化发布版本构建 -
正确设置线程亲和性 -
优化日志记录器对字符串的处理 -
避免使用 std::function
实例 -
检查这些优化的效果
-
-
思考我们交易生态系统的未来发展 -
动态扩展容器 -
扩展和增强哈希映射 -
优化快照消息 -
在订单协议中添加认证和拒绝消息 -
在订单协议中支持修改消息 -
增强交易引擎组件
-
-
总结
https://blog.csdn.net/gitblog_00035/article/details/139285309
探索超低延迟编程的艺术:《使用C++构建低延迟应用程序》
项目地址:https://gitcode.com/gh_mirrors/bu/Building-Low-Latency-Applications-with-CPP
在现代计算领域,速度是王道。《使用C++构建低延迟应用程序》 这本书正是为那些追求极致性能的开发者而生。这本书由经验丰富的专家 Sourav Ghosh 撰写,它将带你深入了解如何利用C++这一强大工具开发实时低延迟应用,尤其是在高频交易领域的实践。
项目简介
这个项目包含了书中的所有示例代码,按照章节结构组织,方便读者边学边练。通过这些实际案例,你将有机会亲自动手打造一个完整的低延迟交易平台,以提升你的编程技巧和理解深度。
技术分析
作者引导你深入探讨C++的设计原则和特性,教你如何明智地选择并运用C++的各种功能来实现低延迟目标。从理解低延迟应用的本质到避开可能影响性能的因素,每一部分都旨在提高你的编程效率和系统的响应速度。
应用场景
这本书不仅限于理论教学,更注重实战应用。特别是在金融交易领域,如高频交易(HFT),书中详尽讲解了如何设计和优化超低延迟系统。但其理念和方法同样适用于任何对响应时间有严格要求的行业,如云计算、物联网(IoT)以及实时数据分析等。
项目特点
实用性强:所有示例代码都是为了解决实际问题,你可以直接在Linux环境中运行,并根据需要进行修改。
深挖C++:特别关注C++中对性能影响深远的语言特性,既指出哪些应避免,又强调哪些应充分利用。
面向未来:涵盖最新的C++20标准,让你跟上时代的步伐。
详尽指导:从性能测量到系统优化,提供了一整套策略和最佳实践。
如果你是一名C++开发者,渴望提升你的低延迟应用开发技能,或者你正处在寻找有效优化高频交易系统的道路上,那么这本书无疑是你的理想之选。现在就行动起来,购买你的电子版或纸质版图书,开启你的低延迟编程之旅吧!
探索更多高质量的技术书籍,可以访问Packt Publishing 的官方网址。
Building-Low-Latency-Applications-with-CPP Building Low Latency Applications with CPP by Packt Publishing 项目地址: https://gitcode.com/gh_mirrors/bu/Building-Low-Latency-
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/gitblog_00035/article/details/139285309
使用C++构建低延迟应用程序
Building Low Latency Applications with C++
这是《使用C++构建低延迟应用程序》一书的代码仓库,由Packt出版社出版。
利用现代C++从零开始开发完整的低延迟交易生态系统
这本书关于什么?
C++的设计初衷是效率、性能和灵活性为核心,但在实时低延迟应用领域,则需要一套特定于性能延迟要求的技术栈。
本书包含以下精彩特性:
深入了解不同行业中的低延迟应用的本质
掌握设计与实现低延迟应用的方法
探索适用于低延迟开发的C++设计模式与特性
发现低延迟开发中应避免使用的C++特性
实施低延迟的最佳实践与C++特性
测量性能并优化交易系统中的延迟
如果你认为这本书适合你,今天就获取你的副本吧!
Packt Publishing
指南与导航
所有代码都组织在不同的文件夹中。例如,Chapter02。
代码示例如下所示:
main:
.LFB1
Movl $100, %edi
Call _Z9factorialj
本书所需前提条件: 本书面向希望掌握低延迟应用技术及有效设计与开发策略的C++开发者。对于希望建立高速交易系统(如HFT)知识的C++软件工程师,以及想要深入了解哪些C++特性在低延迟实施中至关重要、哪些应当避免的量化交易行业的研究人员来说,本书非常有用。读者需要具备Linux操作系统和C++编程语言的基础知识。
软件与硬件列表
章节 必需的软件 需要的操作系统
1 C++ 20 Linux
2 GCC 11.3.0 Linux
我们也提供了一份PDF文件,其中包含了书中使用的所有截图和图表的彩色版。点击这里下载。
相关产品 <你可能也会喜欢的其他书籍>
《C++中的软件架构》[Packt][亚马逊]
《开发高频交易系统》[Packt][亚马逊]
认识作者
Sourav Ghosh 过去十年里在多家专营高频算法交易公司工作过,他构建并部署了极高低延迟、高吞吐量的自动化交易系统,这些系统用于全球各地的交易交易所,涵盖多种资产类别。他在统计套利市场制造和配对交易策略方面具有专长,专注于全球最流动的期货合约。目前他在芝加哥的一家交易公司担任高级定量开发人员。他拥有南加州大学计算机科学硕士学位,兴趣领域包括计算机架构、金融科技、概率论与随机过程、统计学习与推理方法以及自然语言处理。