摘要: 类型擦除与部分异步编程: 消除差别,统一使用 C++ 中类型擦除最典型的实现思路分为两类——模板(编译期擦除)与多态(运行时擦除),这两种方式大家都比较熟悉。而标准库为我们封装了更易用的类型擦除工具,核心包括 std::function、std::any、std::span 和 std::varia 阅读全文
posted @ 2026-02-11 20:16 suiyuan129 阅读(89) 评论(0) 推荐(0)
摘要: 程序的编译与链接 程序从源代码到可执行文件,需经过预处理→编译→汇编→链接 四个核心阶段;其中前三个阶段生成“可重定位文件”,最终通过链接实现“生成库”或“生成可执行文件”两种用途,具体流程如下: 一、前三个阶段:从源码到可重定位文件(.o/.obj) 可重定位文件是单个源文件编译后的二进制文件,包 阅读全文
posted @ 2026-02-10 14:24 suiyuan129 阅读(6) 评论(0) 推荐(0)
摘要: C++中constexpr与const的核心区别与使用准则 在C++编程中,constexpr和const都围绕“只读”语义设计,但二者的设计目标、底层行为和适用场景差异显著。之前我总是混淆二者,甚至误将const等同于“编译期常量”——事实上,二者的核心差异恰恰体现在编译期/运行期的求值阶段和符号 阅读全文
posted @ 2026-02-09 12:36 suiyuan129 阅读(27) 评论(0) 推荐(0)
摘要: 对《深入理解计算机系统》第七章“链接”的学习随笔 学习《深入理解计算机系统》第七章“链接”后,我对程序从代码到可执行文件的最后一步关键流程有了清晰认知。链接本质上是由链接器负责,将多个独立的代码段、数据段组合成一个可加载、可执行单元文件的过程,是构造大型程序不可或缺的环节。 理解链接的核心意义,不仅 阅读全文
posted @ 2026-02-08 20:17 suiyuan129 阅读(12) 评论(0) 推荐(0)
摘要: CRTP与虚函数 理解CRTP与虚函数的逻辑,始于比喻:CRTP是从自己走到公共路口再折返,虚函数是从公共路口奔赴不同远方。它们让我对编译时与运行时的取舍有了更直观的认知。 CRTP的路径是精准往返:“自己”是具体派生类,“公共路口”是承载通用逻辑的CRTP基类模板。调用派生类接口时,从自身出发抵达 阅读全文
posted @ 2026-02-02 15:37 suiyuan129 阅读(2) 评论(0) 推荐(0)
摘要: 对流的错误想法与纠正 起初我对 “流” 存在较大误解,将其神化并当作独立视角来判断数据传输:误以为数据 “从流中出去” 是写入流,数据 “进入流中” 是读取流。 事实上,C++ 中的 “流” 并非独立的判断视角,也不是具备复杂功能的 “万能工具”,判断其是 “写入” 还是 “读取”,核心应围绕 「程 阅读全文
posted @ 2026-01-27 20:58 suiyuan129 阅读(5) 评论(0) 推荐(0)
摘要: 程序内存分区知识图谱 程序内存分区详解 深入理解计算机程序的内存布局与管理机制 程序内存分区详解 1. 指令存放区 (.text段) 存储内容:可执行机器指令 权限:只读 + 可执行 管理:编译器生成,操作系统加载 生命周期:程序运行期 2. 数据存放区 A. 栈区 (Stack) 核心标志:局部变 阅读全文
posted @ 2026-01-15 18:27 suiyuan129 阅读(6) 评论(0) 推荐(0)
摘要: Linux文件I/O知识结构树 Linux文件I/O知识结构树 Linux文件I/O 核心概念 文件描述符(fd):非负整数,内核标识打开文件的索引 分配规则:从最小未使用fd开始(0/1/2默认对应stdin/stdout/stderr) 常用操作:dup/dup2(复制fd)、fcntl(修改f 阅读全文
posted @ 2026-01-15 14:14 suiyuan129 阅读(2) 评论(0) 推荐(0)
摘要: Dijkstra 算法详解(边权非负) Dijkstra 算法详解(边权非负) 单源最短路径经典算法 · 贪心策略 · 堆优化实现 Dijkstra 算法(边权非负) 核心原则 进入堆修改候选距离:发现更短路径时更新并入堆 弹出堆结算最短距离:堆顶元素即为当前未结算节点中距离最小者,一旦弹出即确定最 阅读全文
posted @ 2026-01-13 17:37 suiyuan129 阅读(9) 评论(0) 推荐(0)