理解 C++ 的六种 Memory Order
今天上午的分布式系统课程内容中包含了可线性化(Linearizability)和序列一致(Sequential Consistent)的内容,不知不觉联想到了 C++11 中新引入的六种 memory… 阅读更多 »理解 C++ 的六种 Memory Order
今天上午的分布式系统课程内容中包含了可线性化(Linearizability)和序列一致(Sequential Consistent)的内容,不知不觉联想到了 C++11 中新引入的六种 memory… 阅读更多 »理解 C++ 的六种 Memory Order
C++20添加了两个declaration specifier:consteval 与 constinit 。前者只能参与函数的声明,后者只能参与变量的声明。 在介绍 consteval 与 cons… 阅读更多 »C++20: consteval & constinit
程序中常需要一次性传递多个同质对象。我们一般通过传递两个迭代器的方式来传递多个对象,这两个迭代器按约定一般称为首迭代器和尾迭代器。首迭代器指向被引用的多个对象中的第一个对象,尾迭代器指向被引用的多个对… 阅读更多 »C++20: Ranges
Peach fuzzer 是一款著名的通用黑盒模糊测试工具,被广泛地应用于真实世界的软件测试中。本文将简要介绍 peach 模糊测试工具的实现原理。 简介 Peach 是一款基于生成的模糊测试工具。P… 阅读更多 »Peach Fuzzer 实现原理介绍
Constraints 和 concepts 是 C++20 引入的两个非常受欢迎的特性。Constraints 和 concepts 的引入使得原本许多只能依靠 SFINAE 等模板黑魔法的写法变得… 阅读更多 »C++20: Constriants & Concepts
Three-Way Comparison C++20新增了一个运算符 <=>,称为 three way comparison operator,或三路比较运算符。这个运算符是一个二元运算符… 阅读更多 »C++20: Three-way Comparison
经过多年的标准化进程,在 C++ 开发者社区中呼声极高的 Modules 特性终于被收入 C++20 标准中。本文将对这一特性进行介绍和探讨。 编译器支持 在正式介绍前,我们首先看一看现有的编译器对 … 阅读更多 »C++20: Modules
在 C++20 之前,C++ 的格式化字符串相关设施一直饱受诟病。具体来说,在不依赖第三方库的情况下,有两种方式实现格式化字符串: 使用从 C 语言沿袭过来的 sprin… 阅读更多 »C++20: std::format
Coroutines(协程)是 C++20 引入的几个重要的语言级新特性之一。C++20 引入的协程机制与其他语言的异步(async)或类似机制有相似的地方,但也有很大的不同:C++20 的协程机制能… 阅读更多 »C++20: Coroutines
问题 实验室的 L 同学最近在进行对多线程程序进行模糊测试的研究工作。在实验阶段,L 同学发现了一个有趣的现象:在使用著名的模糊测试工具 AFL 对一个多线程程序进行测试时,被测试程序的性能大约只有直… 阅读更多 »由一个性能下降问题引发的对 CPU 缓存一致性协议性能开销的度量