
源码分析
文章平均质量分 96
学习优秀开源项目的源码
Once-Day
长路漫漫,一人太孤单,无人理解,独自前行,给世界留下一点微不足道的痕迹,稍微弥补曾经的遗憾。
展开
-
C++之fmt库介绍和使用(2)
本文介绍了C++中fmt库的格式化API及其使用。fmt/format.h提供了丰富的格式化功能,包括字符串格式化、指针和枚举值的处理、数字分组、系统错误处理以及自定义内存分配器。文章详细讲解了fmt::format、fmt::ptr、fmt::underlying等实用函数,并展示了如何通过fmt::memory_buffer进行动态内存管理。此外,还介绍了如何通过'L'格式说明符实现区域设置相关的数字格式化,并支持自定义分配器以满足特定需求。fmt库以其高效、灵活的特性,成为C++中处理格式化的强大工具原创 2025-05-20 21:14:22 · 347 阅读 · 10 评论 -
c++(6)function与成员函数
本文介绍了C++中的std::function及其与成员函数的使用。std::function是C++11引入的通用多态函数封装器,能够封装各种可调用对象(如普通函数、lambda表达式、仿函数、成员函数等),提供统一的调用接口,增强代码的灵活性和泛用性。通过std::function,不同类型的可调用对象可以用相同的方式调用,简化了代码设计。文章还探讨了std::function的实现原理,即通过类型擦除技术将不同类型的可调用对象抽象为统一的调用接口,并介绍了其与函数指针、lambda表达式、仿函数等的区原创 2025-05-18 20:47:31 · 656 阅读 · 7 评论 -
C++之fmt库介绍和使用(1)
本文介绍了C++中的fmt库,一个现代化的格式化库,旨在替代传统的iostream和printf方法。fmt库由Victor Zverovich开发,具有安全性、可扩展性、高性能、Unicode支持、快速编译、小二进制体积、可移植性和开源等特点。文章详细列举了fmt库的主要特性,并提供了性能对比数据,显示fmt库在速度和效率上优于其他常见格式化方法。此外,文章还介绍了fmt库的编译时间和代码膨胀测试结果,进一步证明了其高效性。通过简单的代码示例,展示了如何使用fmt库进行文本格式化输出。原创 2025-05-14 20:57:00 · 1935 阅读 · 43 评论 -
编码风格之(8)C++语言规范(Google风格)3.md
**最重要的一致性规则是那些控制命名的规则**。名称的风格会立即告诉我们命名实体是什么类型:类型、变量、函数、常量、宏等,而无需我们搜索该实体的声明。我们大脑中的模式匹配引擎很大程度上依赖于这些命名规则。命名规则相当随意,但我们认为一致性比个人偏好更重要,因此无论您是否认为它们合理,规则就是规则(遵循一致性)。原创 2024-10-17 21:24:52 · 1210 阅读 · 18 评论 -
编码风格之(7)C++语言规范(Google风格)2
返回类型与函数名称在同一行,参数在同一行(如果合适)。将无法放在一行的参数列表换行,就像在函数调用中换行参数一样。.........需要注意的几点:选择好的参数名称。仅当函数定义中未使用该参数时,才可以省略参数名称。如果无法将返回类型和函数名称放在一行中,请在它们之间换行。如果在函数声明或定义的返回类型后换行,请不要缩进。左括号始终与函数名称在同一行。函数名称和左括号之间永远没有空格。括号和参数之间永远没有空格。左花括号始终位于函数声明最后一行的末尾,而不是下一行的开头。原创 2024-10-11 21:01:25 · 1261 阅读 · 23 评论 -
Rust(2)进阶语法
可以使用 trait 关键字来定义一个 Trait。Trait 内部可以包含方法签名、关联类型、常量等。原创 2024-10-06 21:17:22 · 1848 阅读 · 25 评论 -
Rust(1)基础语法
Rust 是一门由 Mozilla 研究院开发的系统编程语言,于 2010 年首次对外发布。经过多年的迭代和社区的共同努力,Rust 已经发展成为一门成熟、高效、安全的现代编程语言。Rust 的设计目标是提供一种兼顾安全性和性能的系统级编程语言。它引入了一些创新的概念,如所有权系统(Ownership)、借用检查(Borrow Checker)和生命周期(Lifetime),从根本上避免了常见的内存安全问题,如空指针引用、缓冲区溢出等。原创 2024-10-01 17:23:58 · 2022 阅读 · 16 评论 -
编码风格之(6)C++语言规范(Google风格)(1)
C++ 是 Google 许多开源项目使用的主要开发语言之一。每个 C++ 程序员都知道,该语言具有许多强大的功能,但这种功能也带来了复杂性,这反过来又会使代码更容易出现错误,并且更难以阅读和维护。本指南的目标是通过详细描述编写 C++ 代码的注意事项来管理这种复杂性。这些规则的存在是为了保持代码库的可管理性,同时仍然允许编码人员高效地使用 C++ 语言功能。风格,也称为可读性,是我们所说的管理 C++ 代码的约定。术语"样式”有点用词不当,因为这些约定涵盖的不仅仅是源文件格式。原创 2024-10-01 13:43:04 · 2000 阅读 · 47 评论 -
C++(2)进阶语法
模板 (C++) | Microsoft Learn类模板 | Microsoft LearnC++类模板(class template)是一种通用的类定义,允许对类的成员类型进行参数化。通过使用模板,我们可以编写独立于具体数据类型的代码,提高代码的复用性和灵活性。(1)定义类模板,类模板的定义以关键字template开头,后跟尖括号,括号内包含一个或多个类型参数。类型参数可以是类类型、内置类型或其他模板类型。在这个例子中,MyClass。原创 2024-09-21 21:49:50 · 2581 阅读 · 54 评论 -
C++(1)基础语法
C++是一种通用编程语言,由Bjarne Stroustrup在贝尔实验室工作时于1979年开始开发。C++最初被命名为"C with Classes",旨在扩展C语言以支持面向对象编程。随着时间的推移,C++不断发展,引入了许多新特性,如异常处理、模板、标准模板库(STL)等。1998年,C++第一个国际标准ISO/IEC 14882:1998发布,使其成为一种成熟、稳定且广泛使用的编程语言。原创 2024-08-31 15:59:22 · 3414 阅读 · 64 评论 -
C++(11)类语法分析(2)
Author:Once Day Date:2024年8月17日漫漫长路,才刚刚开始…全系列文章请查看专栏: 源码分析_Once-Day的博客-CSDN博客参考文档:基础类的介绍请参考文章:C++(10)类语法分析(1)-CSDN博客运算符重载是C++的一个强大特性,它允许为用户定义的类型自定义运算符的行为。通过运算符重载,我们可以使自定义类型的对象支持各种运算符,如算术运算符、比较运算符、输入输出运算符等,从而提高代码的可读性和表现力。运算符重载的语法,运算符重载的实现方式是定义一个特殊的成员函数或全局函数原创 2024-08-17 23:59:05 · 1484 阅读 · 24 评论 -
C++(10)类语法分析(1)
在C++中,类(Class)是一种用户自定义的数据类型,它将数据成员(属性)和成员函数(方法)组合在一起,形成一个逻辑上相关的实体。通过使用类,我们可以创建出具有特定行为和状态的对象。类名,类的名称。通常以大写字母开头,使用驼峰命名法。访问修饰符,控制类的成员对外部的可见性,包括public(公有)、protected(保护)和private(私有)三种。数据成员,类的属性,描述了类的状态。可以是基本数据类型、数组、指针、对象等。成员函数,类的方法,定义了类的行为。包括构造函数、析构函数、普通成员函数等。原创 2024-08-17 20:15:21 · 2602 阅读 · 101 评论 -
DPDK源码分析之(1)libmbuf模块补充
dpdk libmbuf源码分析原创 2024-07-10 23:35:20 · 1776 阅读 · 22 评论 -
DPDK源码分析之(1)libmbuf模块
mbuf(消息缓冲区)库提供了分配和释放缓冲区(mbufs)的功能,这些缓冲区可以被DPDK应用程序用来存储消息。消息缓冲区存储在一个称为mempool(内存池)的结构中,而这个内存池是通过Mempool库来管理的。通常情况下,rte_mbuf结构体用于承载网络数据包缓冲区,但实际上它可以存储任何类型的数据(例如控制数据、事件等)。为了提高性能,rte_mbuf头部结构被设计得尽可能小,目前只使用了两个缓存行(cache line),并且最常用的字段被放在第一个缓存行中。内存池(Mempool)管理。原创 2024-07-07 21:38:32 · 1333 阅读 · 13 评论 -
chrome-base源码分析(1)macros模块
chrome-base源码中macros模块是一个比较简单的模块,定义了一些简单的宏,有五个源文件,下面一一介绍。原创 2024-06-30 22:44:16 · 5693 阅读 · 52 评论