- 博客(60)
- 收藏
- 关注
原创 C++ 基础之 命名空间
我们在C++代码中总能看到 std:: 的身影,这就是所谓的命名空间。今天我们来剖析一下C++命名空间(namespace)
2026-02-13 11:07:43
335
原创 Linux 内存管理单元 MMU
内存管理单元(MMU)是中央处理器(CPU)与主内存之间的关键桥梁,它负责将程序所使用的虚拟地址(逻辑地址)转换为实际的物理地址。虚拟地址:在 Linux 上,每个进程拿到的都是“虚拟地址空间”(比如 0–4GB(32位),64 位更大)。物理地址:内存条上真实的地址叫做“物理地址”。
2026-02-12 11:24:30
606
原创 C语言 指针数组与数组指针
为了方便大家记忆,可以这样理解:“指针数组”:指针的数组,定语是“数组”,所以它是一个数组。“数组指针”:数组的指针,定语是“指针”,所以它是一个指针。
2026-02-10 13:41:34
638
原创 介绍两个管理工具 — 时间管理与PDCA
如今,我们生活在快节奏、高强度的时代,如何高效地管理自己的事情或项目,如何充分利用好我们有限的时间,变的尤为重要。今天,给大家介绍两个管理工具,时间管理四象限与PDCA。希望能够帮助童鞋们提升工作学习效率。
2026-02-09 11:52:51
631
原创 void*真的是万能指针吗?
摘要:本文探讨了C/C++中void指针的特性与应用。无类型指针void能够指向任意数据类型,常用于内存操作函数(memcpy/memset)、通用参数传递及底层系统交互。然而其存在明显缺陷:不能直接解引用、不支持算术运算、缺乏类型安全,且可能导致内存管理问题(如析构函数未被调用)。现代C++推荐使用模板、智能指针(std::unique_ptr等)或std::any作为更安全的替代方案。文章通过典型错误案例,警示开发者需谨慎使用void*指针以避免潜在风险。
2026-02-05 11:27:05
1186
原创 new与malloc区别
目录一、new与malloc基本概念二、主要区别2.1 自由存储区 vs 堆2.2 指定类型指针 vs void* 指针2.3 构造函数与析构函数2.4 抛出异常 vs 返回NULL三、代码示例new 和 malloc 都是用于在运行时动态分配内存的机制,但它们有着本质的区别。new 是 C++ 语言中的关键字(操作符),专门用于在自由存储区(free store)上分配内存并构造对象。它不仅负责分配内存,还会调用对象的构造函数来完成对象的初始化,从而确保对象在使用前处于正确状态。delete 是与之配套的
2026-02-04 11:32:59
1077
原创 Next AI Draw.io 自动绘制流程图、时序图、架构图、UML等
Next AI Draw.io是Github一个开源项目,它将AI模型与draw.io深度融合,只需要在对话框中输入描述,即可帮你生成流程图、时序图、架构图、UML图等,告别手动绘图的烦恼。
2026-02-03 09:09:03
1025
原创 静态初始化顺序灾难(Static Initialization Order Fiasco)
童鞋们有没有遇到过程序已启动就莫名地崩溃了?很多时候SIOF(Static Initialization Order Fiasco)是罪魁祸首。今天来讲讲静态初始化顺序问题。
2026-02-02 11:48:19
303
原创 C++ this指针 解读
this指针是C++中的一个重要且独特的概念。理解this指针的原理及应用,对于编写健壮、高效的C++代码至关重要。本文对此进行一些介绍。
2026-01-29 09:35:43
570
原创 AI新技术 —— 智谱清言 学习搭子
智谱清言最近推出了一个新功能:学习搭子。目录一、背景 — 从工具到伙伴二、学习搭子有哪些作用2.1 计划定制2.2 监督员2.3 辅导老师2.4 知心姐姐三、如何使用“学习搭子”如今,我们被数不清的AI工具充斥着,随着AI技术的发展,很多平台不再满足于仅仅做一个“问答机器”,更希望能成为人们成长路上的长期伙伴。“学习搭子”正是在这个背景下诞生的,它旨在解决用户在学习过程中面临的“孤独感”、“缺乏计划”和“难以坚持”等痛点。在平时学习工作中,用户使用AI往往只是为了查一个知识点、解一道题。这种交互是碎片化的、
2026-01-27 11:16:13
592
原创 C++ 模板编程
C++ 模板是泛型编程的基础,它允许程序员编写与类型无关的通用代码。我们通过模板,可以创建函数或类的蓝图,在不同类型需求时由编译器自动生成相应的代码,提高了代码的复用性。函数模板与类模板函数模板:用于定义通用的函数,其行为类似于生成一系列重载函数。函数模板可以根据调用时传入的参数类型,自动生成对应类型的函数实现,避免了为每种类型重复编写相同逻辑的函数。类模板:用于定义通用的类。类模板可以根据实例化时提供的类型参数,生成针对特定类型优化的类定义。(举个简单的例子,如:标准库中的。
2026-01-23 15:46:20
619
原创 C语言 弱定义机制 解读
C语言弱定义是通过特定修饰符声明函数或变量的技术,本质是上是一套链接期的符号决议规则:同一个全局符号(函数或变量)允许出现多份定义,其中最多只有一份“强定义”,其余都是“弱定义”。在链接过程中优先选择强定义的符号,而弱定义仅在没有强定义时被使用。弱定义特点允许符号在链接时被覆盖提供默认实现,可被强定义替换常用于库函数的可覆盖实现在gcc中通过声明特性强定义弱定义符号类型W (Weak)可覆盖性不可被覆盖可被强定义覆盖多重定义导致链接错误允许存在多个定义内存占用。
2026-01-20 11:43:18
541
原创 AI Code Review工具
CodeAnt AI是一个面向快速迭代团队的AI代码健康平台,它将AI代码审查、代码质量分析和安全扫描整合于一体。它专为高速发展的开发环境设计,旨在帮助团队在保持代码整洁和安全的同时加速代码交付。1)核心功能AI驱动的代码审查:CodeAnt AI利用机器学习模型分析代码变更,能够识别逻辑错误和安全风险,并为开发者提供可操作的建议。自动生成PR摘要:当开发者提交PR(Pull Request)时,CodeAnt AI可以自动生成代码变更的摘要和说明,帮助审查者快速了解改动内容,不必逐行去阅读代码。
2026-01-16 15:20:47
708
原创 C/C++ Assert断言 详解
assert(断言)本质是宏,由C/C++标准库提供的一个调试工具。它以一种简洁的形式在代码中嵌入“安全检查”机制。在程序运行时,assert会对一个指定的条件表达式进行求值,并根据结果决定程序是否继续执行。如果条件不成立,则立即终止程序并报错,帮助开发者快速定位由于事先没有考虑周到或外部异常输入等原因造成的各种bug。
2026-01-14 14:08:44
808
原创 Linux 系统调用
简单来说,系统调用是操作系统为用户或应用程序提供访问内核的接口。为便于理解,举个生活中的例子:订阅鲜牛奶有一些家庭会每天订阅新鲜牛奶,每天早上都会有专门的人送鲜牛奶上门。但,家是比较私密/隐秘的空间,很多人不希望陌生人进入或打扰,以免泄露隐私或是担心破坏家里环境。所以门口都会设置一个上锁的小箱子,每天送牛奶的人不需要进入买家家里,直接将牛奶放在指定箱子中即可。买家再从箱子里取出。这个小箱子就可以理解为系统调用。同理,操作系统也不希望用户直接进入内核做一些操作,容易破坏内核的稳定性与安全性。
2026-01-09 14:33:56
551
原创 类AI技巧 —— 文字描述+draw.io 自动生成图表
首先介绍一下draw.io工具。draw.io(现官方更名为diagrams)是一款免费开源、跨平台、安全优先的专业绘图工具,支持网页与桌面端,覆盖从流程图到系统架构图的全场景可视化。可在线使用或下载Mermaid 代码,本质是一套类 Markdown 的文本语法规则—— 通过简洁的文本指令定义图形的结构、元素、样式和关系,最终由渲染引擎自动转换成可视化图形。
2026-01-06 11:33:07
1306
原创 C++11新特性总结
目前C++23版本已问世,但尚未普及,只在前沿技术验证应用居多。我们平时项目开发中仍然以主流的C++11为主,C++11可以说是现代C++的“分水岭”,引入了许多新特性,大大提高了编程效率和代码性能。本文就C++11的新特性做一些分析与总结。
2026-01-05 16:56:09
459
原创 CPU、Cache、内存的交互关系
Cache也叫做高速缓存,是CPU与主内存之间的中间介质,目的是解决 CPU 运算速度和主内存读写速度不匹配的问题。程序运行起来之后,实际上只有一部分少数数据在频繁进行读写,为了加快这些数据的访问速度,是不是可以将这些频繁访问的内存空间集中起来呢,如下图:将这些内存空间集中起来之后,存放在哪里?那就需要存储介质,这个存储介质就是我们常说的SRAM(静态随机存储器,普通内存一般叫做DRAM),这就形成了Cache(高速缓存)。
2026-01-04 10:13:52
1003
原创 AI 工具辅助软件开发
使用Copilot最常见的方式是通过VS Code。在VS Code中安装相关插件即可(Copilot、Copilot Chat)如上图所示,右下角可进行Copilot聊天对话,输入你的提示词即可。(自动识别所对应的操作系统)b.需要注册一个账号:c.账号注册完成:d.打开cursor:(用过VS Code的同学会发现,操作界面与VS Code基本一致)e.可与Git Repo进行关联:cursor编辑器还有很多功能 这里不一一展开了。
2025-12-30 15:05:42
1133
原创 C/C++ 自定义段 介绍
在默认情况下,编译器会把代码放到.text段,把未初始化的数据或初始值为0的数据放到.bss段,把已初始化(非0)的数据放到.data段。自定义段是开发者脱离编译器默认的内存分段规则,手动为函数、变量(数据)创建的【专属内存分区】自定义段的核心价值是方便开发者精细化控制内存布局。嵌入式系统内存分区:比如 MCU 有【片内 RAM】【片外 RAM】【Flash】,需把高频函数放到片内 RAM(提高速度),把配置数据放到 Flash(掉电不丢);原子操作 / 中断保护。
2025-12-29 10:16:03
865
原创 为何全局变量和函数地址在编译期间可以“确定”
可能很多人跟我一样,有这样的疑惑,为什么在C/C++编译阶段,我们就可以确定全局变量和函数的内存地址了(不需要等程序运行起来)。本文将跟大家一起来学习和探索这个”困惑“。
2025-12-26 11:09:10
578
原创 C语言 指针用法与区别(指针常量、常量指针、指针函数、函数指针、二级指针)
简单来说,指针就是地址。int a = 10;//p就是变量a的地址我们上述代码进行图解:可以清晰地看到,指针p实际上就是变量a的地址。
2025-12-25 10:09:26
997
原创 Automotive SPICE简要概述
(Automotive Software Process Improvement and Capability dEtermination)是一套针对汽车行业软件研发流程的过程改进与能力评估模型,它基于经典的 SPICE 模型(ISO/IEC 15504),结合汽车电子的功能安全(如ISO 26262)、信息安全(如 ISO/SAE 21434)等特殊需求定制,是汽车行业供应链中衡量软件研发能力的核心标准。
2025-12-24 10:42:35
321
原创 浅谈系统coredump
coredump可以理解为系统“死机”程序崩溃或进程异常退出。它是系统进行自我保护的一种机制,防止一些非预期的异常导致系统产生安全风险。
2025-12-23 16:59:11
710
原创 C++编程入门介绍
C++ 是一门静态类型、编译型、多范式的编程语言,由 C 语言扩展而来,既支持 C 语言的面向过程编程,又支持面向对象编程(类、对象、继承、多态),还支持泛型编程(模板)。特点:运行速度快、功能强大、应用广泛(操作系统、游戏、嵌入式、高性能服务器等)。学习逻辑:先掌握面向过程基础(变量、循环、函数),再学面向对象核心(类、对象),最后扩展进阶内容。
2025-12-22 17:03:09
936
原创 C++常用设计模式
C++代码设计模式总共有23种,分为创建型模式、结构型模式和行为模式。本文针对常用的单例模式、简单工厂模式、工厂方法模式和抽象工厂模式进行介绍。
2025-12-18 16:59:07
877
原创 SOLID软件设计原则 解析
在平时coding过程中,大部分程序员可能把更多精力和时间花在功能的实现和完成上面,对于代码的可读性、可读性及可扩展性没有过多的关注,这可能会造成后期功能扩展困难、新人无法理解等问题。这里介绍一些软件代码设计原则,帮助大家提升代码质量。
2025-12-17 17:27:06
769
原创 MCU 锁步(Lockstep)
Lockstep直译为“紧密步调”,意思是步调一致,一开始用来表示行军队伍步伐一致,后被引入计算机行业。锁步是为MCU设计的一种硬件级冗余容错架构,大概思想是:通过两个或多个CPU同步执行相同指令并实时对比结果,实现故障的实时检测,是汽车电子、工业控制行业实现安全保障的核心技术之一。
2025-12-16 16:50:40
404
原创 C++ 互斥锁、读写锁、原子操作、条件变量
在多线程的实现中,对临界资源的访问容易产生冲突与竞争。C++提供了一些方法来解决这种资源冲突,如,互斥锁、读写锁、原子操作、条件变量。本文将对这四种方式进行一一介绍。
2025-12-15 17:20:50
746
原创 Linux系统常用命令集合
我们平时若在Linux操作系统中进行开发或测试时,需要涉及一些终端Linux 操作命令使用,为帮助读者提高效率,了解更详细的命令,这里对常用的Linux系统操作命令进行了简单汇总。
2025-12-12 17:14:15
507
原创 常用通信协议介绍(CAN、RS232、RS485、IIC、SPI、TCP/IP)
在汽车电子和嵌入式系统中,我们会涉及到众多的总线通信协议,主要包括:CAN(CAN FD)、RS-232、RS-485、IIC、SPI、TCP/IP等。这里我们会进行逐个介绍。
2025-12-11 17:25:07
771
C++ void*使用与避坑指南
2026-02-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
2