2025 - C++
文章平均质量分 81
C++ 语言
DBWG
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
线程 与 内核态
线程创建和切换需要内核态支持的原因包括:线程需在内核调度器中注册,内核才能直接管理CPU资源;线程栈空间设置涉及特权指令操作MMU,必须在内核态完成;线程切换需要保存和恢复完整的硬件上下文,这些操作都需内核权限。此外,内核还需管理系统资源,防止线程耗尽CPU时间和内存空间。这些核心功能决定了线程管理必须依赖操作系统内核的特权能力。原创 2025-07-25 15:22:14 · 244 阅读 · 0 评论 -
缓存与内存;缺页中断;缓存映射:组相联
缓存: CPU 内部或非常靠近的高速存储超快,比内存快原创 2025-04-22 22:58:06 · 970 阅读 · 0 评论 -
中文编码,GB系列,UTF
UTF-8:全球使用最广泛的编码方式,支持所有语言字符,兼容ASCII。中文在UTF-8中通常用3个字节表示一个汉字。UTF-16:每个字符使用2个字节(或者4个字节)表示,空间效率高但不兼容ASCII。UTF-32:每个字符固定使用4个字节,使用简单但空间占用大。一个字节,但其实只用了一半: 128个字符。和ASCII是兼容的。原创 2025-04-13 19:39:52 · 497 阅读 · 0 评论 -
【c++比较器】 priority_queue初始化设置比较器 ; unordered_map 自定义哈希函数
往往算法可能需要自定义比较逻辑(如 dijkstra需要比较对应路径的长度)重写方法:注意都是子节点跟父节点比(堆一般是二叉树)template<class T,这里的 Compare 是一个类型(class),而模板本来也是类型STL是这样使用他的// 默认构造一个比较器对象if (comp(a, b)) { ... } // 用这个对象来比较像 std::pair<int, int> 这样的类型标准库没有默认的 std::hash 特化,因此需要自己提供一个哈希函数。原创 2025-04-10 00:00:08 · 666 阅读 · 0 评论 -
c++11新特性
类内成员初始值“委托构造函数”:允许一个构造函数在其初始化列表中调用同类中的另一个构造函数int x = 0;// 成员初始化MyClass() : MyClass(42) {} // 委托构造函数。原创 2025-04-08 20:28:58 · 1114 阅读 · 0 评论 -
c编译和c++编译有什么区别?
Z 是 GCC 名称修饰的前缀,3 表示函数名的长度,foo 是函数名,i 表示一个 int 类型的参数。关闭 C++ 的 name mangling,让编译器用 C 的方式处理符号名。iostream 类型安全,重载 <<, >> 运算符,无需格式字符串.C++ 程序除了链接 C 标准库外,还需要链接到 C++ 标准库。C++更严格, 不允许隐式把 void* 转成 int*尽管是运行时多态,也需要编译时生成 虚函数表和指针。C++ 支持多个同名函数(参数不同),这是。编译的符号名需要进行。原创 2025-04-08 18:22:41 · 343 阅读 · 0 评论 -
io_uring 异步 socket 编程
(仅通过完成队列项中的结果信息(如 cqe->res)可能无法明确这个请求对应的具体上下文;标记一个完成队列项已经被应用程序处理,允许内核回收该 CQE 所占用的资源。网络IO时,数据拷贝并不是CPU在工作,所以我们可以不阻塞recv。对于提交队列,我们想三次握手和接收数据,都要提交信息给 提交队列。获取到这个关联的信息,从而知道该请求信息(自己设计结构体)。编程中往往是去获取 entry ,即sqe和cqe。首先定义 io_uring,之后都通过其交互。两个队列位于用户态和内核态之间的共享内存区域。原创 2025-04-06 15:30:56 · 594 阅读 · 0 评论 -
c++项目 网络聊天服务器 实现;TPS测试
设计细节和实现细节,以及测试迭代原创 2025-04-04 00:46:02 · 1230 阅读 · 0 评论 -
动静态库;gcc 链接顺序,循环依赖问题
链接过程由链接器ld负责。通常 GCC 间接驱动之。越底层的库,在链接命令行中的位置应越靠后。原创 2025-04-02 22:21:44 · 917 阅读 · 0 评论 -
protobuf编码官方文档 部分摘取翻译
读文档可知,序列化后不保存字段名 key ,解析方也必须有对应 protoc 协议才能知道字段名。易知该序列化后大小小。以及无符号整数,通过编码舍去前导0,数字占的空间就小了,如 1 本身就只需要 8个比特位,而非 int 4个比特位。原创 2025-04-01 19:23:22 · 1211 阅读 · 0 评论 -
协程 Coroutine;Awaiter
通俗地说,cpp协程就是我函数执行一半我不执行了,一会谁觉得可以执行,就由谁接着执行如果你在做异步编程(如网络 I/O、文件 I/O),用 co_await如果你在实现生成器(如迭代器、流式数据处理),用 co_yield原创 2025-03-30 21:39:53 · 1313 阅读 · 0 评论 -
【RTTI】 Run-Time Type Information
当 dynamic_cast 进行向下转型(基类→派生类)或 横向转型(多重继承中的基类间转换)时,它必须检查当前对象的基类是否与目标类型匹配。指针调整:若目标类型是实际对象的其他基类(非源类型所在分支),dynamic_cast 会根据 RTTI 中存储的偏移信息调整指针,指向正确的子对象。如果类有虚函数,编译器会在内存中为每个多态类型(包含虚函数的类)生成一个 虚表,RTTI 信息通常存储在这个虚表中。在 C++ 中,只有虚函数才会生成 RTTI 信息,因为虚函数机制提供了运行时的多态支持。原创 2025-03-28 20:02:05 · 936 阅读 · 0 评论 -
C++类型转换
cast 铸造。只有 dynamic_cast 是运行时检查,底层用到 RTTI原创 2025-03-28 14:55:38 · 650 阅读 · 0 评论 -
const 底层 , 顶层/底层 const
如果 const 变量是全局/静态变量,且未涉及指针,编译器可能会将其存入 .rodata 段,禁止修改。Top-level const 顶层const, 顶层 const 直接作用于变量本身.。Low-level const 底层const: 底层 const 作用于指针指向的对象或引用。编译器会进行 const 类型检查,若有修改const变量,编译错误。顶层 + 底层 const,p3 既不能修改指向,也不能修改值。顶层 const ,p2 不能被修改,但可以修改其指向的值。原创 2025-03-28 14:45:32 · 550 阅读 · 0 评论 -
C++锁: 读锁,递归锁,超时锁
面试聊到锁,只知道数据库的读锁,不了解编程中的读锁,也没谈,遂败北。原创 2025-03-21 11:06:29 · 573 阅读 · 0 评论
分享