- 博客(328)
- 收藏
- 关注
原创 Linux 应用串口接收程序
本文基于C语言与Linux系统,通过termios API配置串口参数(如115200波特率、8N1),实现对/dev/ttyUSB0的串口初始化。程序使用read函数实时读取STM32单片机发送的温湿度数据,并在终端输出,完成MCU与Linux主机的跨设备通信。项目采用Makefile管理编译,涵盖异常处理与权限配置,掌握嵌入式串口通信与Linux应用开发调试全流程。
2026-09-21 16:29:46
89
原创 基于 STM32 的温湿度采集终端
基于STM32F103C8T6,使用STM32CubeMX配置HSE 8MHz晶振、I2C1(PB6/PB7)、USART1(PA9/PA10)及PA5 LED,生成HAL库工程。通过I2C驱动AHT20温湿度传感器,实现软件复位、就绪检测与数据读取,将温度(℃)和湿度(%RH)通过串口输出,每秒更新一次,并以LED闪烁指示运行状态。
2026-09-21 16:27:10
179
原创 熟悉进程虚拟地址空间、进程创建 / 销毁、基础文件 IO、管道 / 共享内存 / 消息队列等进程通信方式、信号处理机制
本文摘要: 文章系统讲解了Linux进程管理的核心机制,包括虚拟地址空间、进程创建与销毁、基础文件IO和进程间通信。虚拟地址空间通过分页映射和写时复制实现进程隔离与高效内存管理;进程创建涉及fork/vfork/clone及exec函数族,强调僵尸进程的回收;文件IO涵盖描述符、读写操作及重定向;进程通信对比了管道、共享内存、消息队列等方案的特性与适用场景。最后详述信号处理机制,包括信号生命周期、可靠捕获方法及可重入函数注意事项,为深入理解Linux系统编程提供全面基础。
2026-08-18 10:35:41
325
原创 熟练使用 Linux 开发环境,掌握 vim 高效编辑、gcc/g++ 编译链接、gdb 程序调试等核心开发工具
本文介绍了Linux下C/C++开发的五大核心工具链: Vim编辑器:详解三种模式切换、高频操作命令(光标移动、编辑、查找替换)及分屏、宏录制等进阶技巧,强调.vimrc配置文件的定制化。 GCC/G++编译器:解析预处理、编译、汇编、链接四阶段,列举常用编译选项(如优化等级、头文件路径),并演示静态库(.a)与动态库(.so)的制作方法。 Makefile:讲解规则语法、变量定义和伪目标,通过示例展示如何实现多文件项目的增量编译。 CMake:阐述跨平台构建流程,重点说明add_executable、ta
2026-08-18 10:29:39
354
原创 MySQL 核心知识体系:基础操作、索引原理与事务机制
本文系统介绍了SQL数据库操作的三大核心内容:1. 基础DML操作:包括增删改查四种基本操作,详细说明INSERT的三种语法、DELETE与TRUNCATE区别、UPDATE注意事项以及SELECT查询的完整执行流程和联表查询方式。2. 索引原理:重点分析B+树作为索引结构的优势,解释聚簇/二级索引的区别,介绍最左前缀原则、覆盖索引和索引下推等优化技术。3. 事务机制:阐述ACID四大特性及其实现原理,分析并发事务的三大问题,比较四种隔离级别的差异,特别说明MySQL在RR级别下通过MVCC和Next-Ke
2026-08-17 10:10:36
229
原创 校招必背:从红黑树到布隆过滤器的核心考点全梳理
本文系统梳理了后端面试高频数据结构,分为五类:1)平衡树类(AVL/红黑树对比),2)多路查找树(B树/B+树差异),3)跳表,4)位运算结构(位图/布隆过滤器),5)倒排索引。重点解析各类结构的核心原理、操作复杂度、优劣势及典型应用场景,如AVL严格平衡但维护成本高,B+树适合数据库索引,布隆过滤器用于缓存穿透防护等。通过对比表格突出关键特性差异,帮助理解不同场景下的技术选型依据,覆盖后端开发常见存储与检索需求。
2026-08-17 10:04:42
403
原创 STL 核心容器底层源码原理深度解析
本文解析了STL核心容器的底层实现原理。序列式容器中,vector采用动态数组实现,支持快速随机访问但扩容成本高;list基于双向循环链表,插入删除高效但无法随机访问。关联式容器中,map通过红黑树实现有序存储,保证O(logn)操作复杂度;unordered_map采用哈希表实现,提供平均O(1)的快速查找。文章详细对比了各容器的迭代器类型、时间复杂度及适用场景,并总结了迭代器失效规则。所有STL容器均通过空间配置器管理内存,SGI实现采用二级配置器优化小内存分配。
2026-08-17 09:59:00
519
原创 希尔排序 → 缩步插缝法 超详细讲解
希尔排序是插入排序的优化版本,通过"大步长预排序+精细排序"策略提升效率。其核心思想是:先以较大步长分组并执行插入排序,让元素快速跳跃到大致位置;逐步缩小步长直至1,最后进行一次标准插入排序完成收尾。这种分阶段处理方式有效解决了插入排序在小元素位于数组末尾时需多次移动的低效问题。C++实现中仅需在插入排序外套一层步长循环,空间复杂度保持O(1)。平均时间复杂度约O(n^1.3),适合中等规模数据,尤其适合对空间敏感的场景。虽然稳定性不如插入排序,但实现了效率与实现复杂度的良好平衡。
2026-08-14 17:14:08
170
原创 快速排序(标杆劈叉法)超详细深度解析
快速排序是高效的通用排序算法,基于分治思想,通过选取基准元素将数组分为小于和大于基准的两部分,并递归处理子数组。核心步骤包括霍尔分区(双指针法)和洛穆托分区(单指针法),前者效率更高但实现复杂。算法平均时间复杂度为O(nlogn),最坏情况(如数组已有序)退化为O(n²),可通过随机选基准、三数取中等优化避免。快排不稳定,但通过三路分区可优化重复元素处理。其他优化包括小区间改用插入排序、尾递归优化等。快排的分区思想还可高效解决TopK问题。
2026-08-14 15:49:12
374
原创 C++ 模板与特化、RAII 思想及智能指针底层深度解析
本文介绍了C++模板体系和RAII资源管理两大核心概念。首先详细解析了函数模板、类模板的定义和使用,以及针对特殊类型的模板特化机制。随后重点阐述了RAII思想,即通过对象生命周期自动管理资源的技术原理,并以智能指针为例说明其应用。文章深入剖析了unique_ptr、shared_ptr和weak_ptr三种智能指针的设计原理、底层实现及使用场景,包括引用计数机制、循环引用问题及解决方案。最后指出智能指针在多线程环境下的线程安全特性。这些技术构成了现代C++高效资源管理和泛型编程的基础。
2026-08-14 14:52:33
493
原创 《算法武林谱:四大排序神功与二分寻宝术全解》
本文生动介绍了五大经典算法,通过趣味名称形象展现原理:1.快速排序(标杆劈叉法)- 分治思想,选标杆分区排序,平均O(nlogn);2.堆排序(金字塔淘汰赛)- 大顶堆构建与调整,稳定O(nlogn);3.归并排序(百川归海法)- 分治合并有序子数组,稳定O(nlogn)但需额外空间;4.希尔排序(缩步插缝法)- 改进插入排序,按步长分组排序;5.二分查找(折半寻宝术)- 有序数组折半查找,O(logn)高效。各算法均提供核心思想、步骤、复杂度分析和C++实现代码,可直接编译运行。
2026-08-14 14:44:36
389
原创 Shape 变身记:C++ 多态底层原理与代码超详细拆解
本文通过C++代码示例详细讲解了动态多态的实现原理和应用场景。核心内容包括:1)多态的实现方式(父类定义虚函数接口,子类重写实现);2)关键语法(virtual、override关键字的作用);3)底层机制(虚函数表vtable和虚指针vptr的工作原理);4)使用场景(统一接口调用不同子类对象);5)注意事项(虚析构函数的重要性)。文章还分析了多态相对于非多态实现的优势,以及常见错误和使用误区,帮助读者深入理解C++多态编程的核心思想和实现细节。
2026-08-13 22:37:13
393
原创 面向对象中的组合、聚合与继承关系详解
本文系统分析了面向对象编程中继承、聚合和组合三种核心关系的区别与应用。继承体现"is-a"关系,用于类型层级和多态,但耦合度高;聚合是弱"has-a"关系,部分可独立存在;组合是强"contains-a"关系,部分与整体生命周期绑定。文章通过UML图示和C++代码示例说明三者差异,并提出设计原则:优先使用组合/聚合而非继承,仅在明确is-a关系时采用继承。最后指出常见设计陷阱,强调应根据业务语义精准选择关系类型,构建低耦合高内聚的系统架构。
2026-08-13 21:54:17
661
原创 《数据结构七剑客通关:从顺序表到哈希表,一篇全捋明白》
本文系统梳理了常见数据结构的核心原理与C++实现,涵盖线性结构(顺序表、链表、栈、队列)和非线性结构(二叉树、堆、哈希表)。从存储原理、时间复杂度、代码实现到应用场景进行多维对比,重点包括:顺序表的动态扩容机制与缓存优势;链表的指针操作与内存分布特性;栈/队列的LIFO/FIFO特性及实现方式;二叉树的遍历算法(递归/迭代);堆的完全二叉树特性与优先队列实现;哈希表的冲突解决策略。文末提供各结构操作复杂度对比表和选型指南,强调根据访问模式(随机访问、插入删除频率、有序性需求等)选择最优数据结构,为算法竞赛和
2026-08-12 14:41:08
455
原创 深入理解面向过程编程与面向对象封装、继承、多态三大核心特性
本文系统比较了面向过程编程(POP)和面向对象编程(OOP)的核心思想与实现方式。面向过程以函数为单元,采用"自顶向下"的线性流程设计,数据与操作分离,适合简单流程任务但维护性差;面向对象通过封装、继承、多态三大特性,将数据与行为绑定为对象,实现高内聚低耦合,尤其适合复杂业务系统。文章通过代码示例(C/C++)展示了两种范式在数据管理、代码复用和扩展性方面的差异,并给出对比表格和选型建议:性能优先的底层开发可选POP,而大型业务系统推荐OOP架构。二者本质是不同抽象层级的设计思维,实际开
2026-08-12 14:32:31
636
原创 TCP 与 UDP:传输层的 “靠谱老大哥” 与 “闪电跑腿员”
TCP和UDP是两种核心传输协议:TCP提供可靠的连接服务,通过三次握手建立连接、确认应答和重传机制保证数据完整,适合网页浏览、文件传输等场景;UDP则是无连接的轻量协议,传输速度快但不可靠,适用于视频通话、在线游戏等实时性要求高的应用。选择时需权衡可靠性与速度需求。
2026-08-10 10:28:29
690
原创 网络协议 “通关秘籍”:从物理信号到数据传输的 “层层解密”
本文基于 OSI 七层网络模型,由下至上逐层剖析网络各层核心职责、典型协议与实际业务案例。从物理层的信号传输、数据链路层的帧封装与 MAC 寻址,到网络层 IP 路由寻址、传输层 TCP/UDP 端到端数据分发,再到会话层会话管理、表示层编解码加密压缩,最后到应用层面向业务的各类应用协议,完整讲解数据从本机发送到对端的封装与解包逻辑。文中以发送邮件为实例,演示整套协议栈协同工作的完整流程,直观展示数据报文自上而下封装、自下而上解封装的全过程,帮助理解网络数据传输的底层原理,厘清各层协议分工与现实开发中的应
2026-08-10 10:25:44
194
原创 MySQL 数据类型 “全家桶” 详解:从入门到实战,每个类型都有 “身份证”
MySQL数据类型选择指南:数值型(整数/小数/位类型)、字符串型(短/长/二进制)、日期时间型(DATE/DATETIME等)和特殊类型(ENUM/SET)各有适用场景。关键点:手机号用CHAR(11),金额用DECIMAL避免精度问题,长文本单独存储,注意TIMESTAMP的2038年限制。合理选择类型可提升性能并避免数据存储问题。
2026-08-10 10:17:42
188
原创 #高并发内存池 — 详细讲解文档
本文介绍了一个基于Googletcmalloc思想设计的C++17内存池项目,采用三级缓存架构实现高性能内存分配。项目通过CMake构建,核心设计包含: 三级缓存架构: ThreadCache(线程本地无锁缓存) CentralCache(中央缓存,分桶锁) PageCache(页缓存,全局锁) 99%的分配在ThreadCache完成,实现高效无锁操作。 关键优化技术: 页对齐Span设计(ptr&~0xFFF快速定位) 侵入式链表(零额外内存开销) 批量传输(32对象/次摊销锁成本) 分桶锁(不
2026-08-09 15:28:15
376
原创 C/C++每日一练21
本文解析了三道编程题目。第一题要求对数组排序后输出前3个最小元素,使用sort函数实现。第二题求两个集合的交集,通过unordered_set存储元素并比较得出结果。第三题用动态规划求解最长回文子序列,构建二维dp数组,根据字符是否相同进行状态转移。三道题分别涉及排序、集合操作和动态规划等算法思想。
2026-08-08 21:11:43
368
原创 C/C++每日一练20
摘要:本文介绍了三个算法问题的解法。第一题利用异或运算特性找出数组中唯一出现奇数次的元素,遍历数组进行异或操作即可得到结果。第二题通过动态规划求解连续子数组的最大和,维护当前子数组和与全局最大值。第三题判断字符串是否为非对称(非回文),通过反转字符串后与原串比较实现。每个问题均提供C++代码示例,思路清晰,代码简洁。
2026-08-08 21:09:15
186
原创 # Mini OJ — 项目详解文档
本项目实现了一个轻量级在线判题系统MiniOJ,采用C++17后端和原生前端技术栈。系统核心特点包括:1) 纯C++实现,仅依赖MySQL和标准库,无Docker/Nginx等中间件;2) 基于fork+setrlimit的进程级沙箱隔离;3) 原生SPA前端实现路由和组件化;4) 完整的安全防护措施。关键技术点:判题引擎通过三层防护机制(CPU时间、内存、挂钟时间)确保安全性,使用生产者-消费者模型处理判题队列,实现纯C++的SHA-256加密。系统包含用户认证、题目管理、代码提交和实时判题等核心功能,部
2026-08-08 21:03:00
1179
原创 MySQL 基础用法(下):查询进阶与核心特性
本文是MySQL入门系列第二篇,重点介绍了数据库开发的核心知识点。主要内容包括:1)数据查询语法(SELECT基础查询、条件筛选、排序分页、分组聚合、联表查询和子查询);2)常用内置函数(字符串、数值和日期处理);3)索引原理与操作(创建/查看/删除索引及执行计划分析);4)事务特性与存储引擎对比(ACID特性、事务控制语句及InnoDB与MyISAM区别);5)用户权限管理(创建用户、授权和撤销权限)。通过具体SQL示例演示了各功能的实际应用,帮助开发者掌握MySQL日常开发中的关键操作。
2026-08-07 17:21:55
359
原创 MySQL 基础用法(上):库表管理与数据增删改
本文是MySQL入门指南,介绍了数据库基础操作与SQL语法。主要内容包括:1)MySQL连接方式及常用环境命令;2)数据库的创建、查看、切换和删除操作;3)数据表的创建、修改和删除,以及常用数据类型说明;4)数据的增删改操作(INSERT、UPDATE、DELETE),强调WHERE条件的重要性。文章提供了详细SQL示例,涵盖表结构设计、字段约束等核心概念,适合MySQL初学者快速掌握基础操作。特别注意:生产环境需谨慎执行删除和全表更新操作。
2026-08-07 17:19:35
474
原创 MySQL 硬核漫游指南:解锁数据存储界的 “顶流” 密码
MySQL是一款开源关系型数据库管理系统,由瑞典MySQL AB公司开发(现属Oracle旗下)。它采用结构化存储方式,支持标准SQL语言,具有开源免费、跨平台、高并发等特性,提供InnoDB、MyISAM等多种存储引擎选择。自1995年诞生以来,MySQL经历了Sun收购、Oracle接管等阶段,8.0版本成为当前主流。其分层架构包含连接层、服务层、存储引擎层和物理文件层,广泛应用于电商、社交网站、企业管理系统等场景。作为开发者必备技能,MySQL以"够用、好用、用得起"的优势持续领跑
2026-08-06 11:32:16
679
原创 C/C++每日一练19
本文介绍了三个算法问题及解法:1.小易打怪兽问题,通过排序怪兽防御力并贪心击败,逐步提升攻击力;2.网格礼物最大价值问题,使用动态规划(可优化为一维数组)计算路径最大和;3.回文串判断问题,采用双指针法比较首尾字符。每个问题均给出C++实现代码,展示了排序、动态规划和双指针等典型算法应用。
2026-08-06 11:28:50
328
原创 C/C++每日一练18
本文介绍了三个算法问题及解决方案:1. 字符串压缩算法,通过遍历统计连续字符出现次数并拼接结果;2. 选最大k个数求和问题,使用降序排序后取前k个元素;3. 01背包动态规划解法,通过倒序更新容量数组求最大价值。每个问题均提供了C++实现代码,包含输入处理、核心算法和输出结果。这些算法分别利用了遍历计数、排序和动态规划等典型计算机算法思想。
2026-08-06 11:26:43
218
原创 C/C++每日一练17
本文摘要: 数字修改:计算两个数字每位差的绝对值之和即为最少操作次数,如123改456需要9次操作(每位差3)。 十字爆破:在n×n网格中,爆破任一格子会使其行列数字归零,最大0的数量由原有0和新增行列决定,需遍历所有格子求最优解。 摘桃子:斐波那契数列问题,摘n个桃子的方法数为f(n)=f(n-1)+f(n-2),如n=2时有2种方法(1+1或2)。 各题均给出核心算法和C++实现代码,时间复杂度均为O(n)或O(n²)。
2026-08-06 11:24:46
239
原创 给 const “找座位”:C/C++ 中 const 的权限说明书
本文总结了const关键字的四种用法:1)修饰普通变量使值不可修改;2)修饰指针时有三种形式:指向内容不可改、指针不可改指向、两者都不可改;3)C++中修饰成员函数使其不能修改成员变量;4)通过思维导图归纳了不同位置的const对应的权限规则。全文通过代码示例和口诀("const跟着谁,谁就不能改")清晰展示了const的多重用法和限制逻辑。
2026-08-02 09:56:08
298
原创 类型转换 “变形记”:C 和 C++ 的显式与隐式转换详解
本文介绍了编程中的类型转换机制,分为隐式和显式两种方式。隐式转换由编译器自动完成,常见于赋值、运算和函数传参场景,如小数转整数、算术运算中的类型提升等。显式转换需要手动指定,C语言使用简单强制转换,而C++提供了四种更安全的转换运算符:static_cast用于常规类型转换,dynamic_cast用于多态类安全转换,const_cast用于移除const属性,reinterpret_cast用于底层二进制重解释。建议优先使用C++的类型安全转换,根据不同场景选择合适的转换方式以确保代码安全性和可读性。
2026-08-02 09:50:19
312
原创 C/C++每日一练16
本文摘要: 字符串替换:通过find和replace函数实现子串替换,关键点在于更新查找起点(pos += new_str.length())以避免重复替换,时间复杂度为O(n)。 神奇数判定:利用哈希表(unordered_set)记录迭代中间值,检测循环或到达1的情况,确保高效判断数字是否为“神奇数”,时间复杂度取决于循环次数。 DNA序列分析:采用滑动窗口算法,动态维护窗口内C/G的数量,通过一次遍历(O(n)时间)找到最大C/G数量的长度为k的子串,优于暴力法的O(nk)。 三题均通过合理设计避免重
2026-08-02 09:42:32
199
原创 算法技巧提升:从 “暴力破解” 到 “优雅解题” 的进阶之路
本文系统性地总结了提升算法能力的核心方法论,提出"思维方式+工具库+实战经验"的三维提升路径。在思维方式层面,强调拆解问题、抽象模型和逆向思考三大基本功;工具库部分详细解析双指针、哈希表、动态规划等10种高频算法技巧的应用场景和实现要点;实战环节则提供从基础刷题到面试模拟的渐进式训练策略。文章特别指出算法能力的提升是"理解-练习-复盘"的循环过程,建议优先掌握核心技巧而非追求偏题怪题,通过刻意练习将解题思路从"随机尝试"转化为"系统思考&
2026-08-01 10:23:03
189
原创 C++ 命名空间:给代码 “安家落户” 的智慧
C++命名空间:代码组织的利器(摘要) 命名空间是C++中解决命名冲突的重要机制,它通过为代码元素提供逻辑分组来实现模块化管理。本文系统介绍了: 命名空间的基本概念:通过namespace关键字定义代码容器,避免全局命名污染 三种访问方式:全限定名(::)、using声明和using指令,分析各自的适用场景 高级特性:嵌套命名空间、匿名命名空间和命名空间别名 最佳实践:避免头文件中使用using指令、控制嵌套深度等注意事项 命名空间如同代码的"户籍系统",能有效组织大型项目结构,是C++
2026-08-01 10:20:03
388
原创 C/C++每日一练15
平方数问题:给定一个正整数n,求最少删除多少位数字后,剩余数字能重排成完全平方数。解法是枚举1到31622的平方数,检查其数字频次是否不超过原数字频次,保留最长的可行长度。 分组问题:判断一组数字能否分成两个和相等的子集。若总和为奇数直接输出NO;否则用二进制枚举(n≤20)或01背包DP(n≤100)检查是否存在和为总和一半的子集。 拓扑排序:用Kahn算法(基于入度BFS)输出有向图的拓扑序列,若存在环则输出-1。通过维护入度队列,判断最终序列长度是否等于节点总数来检测环。
2026-08-01 10:16:29
224
原创 C/C++每日一练14
本文通过三个例题展示了枚举类型在算法解题中的应用:1. 乒乓球框问题:用枚举区分红球(R)和黑球(B),统计数量后比较判断包含关系。2. 组队竞赛问题:排序后利用贪心算法,通过枚举标记组内位置(第一/二/三高)求最大能力值和。3. 相邻数字删除问题:采用动态规划,枚举区间长度和中间点,结合状态转移求最大删除分数。枚举类型的使用增强了代码可读性,避免了数字标记的混淆,使逻辑更清晰。这些例题分别覆盖了基础统计、贪心策略和动态规划等典型算法场景。
2026-07-31 14:42:51
193
原创 《枚举算法 “翻译官”:用 enum class 给 “游游的礼盒” 算分》
本文探讨了在算法题中使用强类型枚举(enum class)提升代码可读性和安全性的方法。以"游游的礼盒"问题为例,传统使用0、1、2数字表示物品的方法易混淆,而通过定义Item枚举类型(Coin、Gem、Potion)及对应的getScore函数,使代码语义更清晰。文章展示了如何使用枚举变量替代数字循环来遍历所有组合,并指出强类型枚举的三大优势:逻辑可视化、编译器类型检查、扩展性强。最后强调枚举类型作为"语义化工具"的价值,既能提高代码可读性,又能通过类型系统保障正确
2026-07-31 14:37:24
342
原创 《枚举的 “变身记”:从 C 语言的 “野孩子” 到 C++ 的 “优雅绅士”》
本文系统介绍了C/C++中的枚举类型,重点对比了C语言基础枚举、C++传统无作用域枚举和C++11强类型枚举(enum class)的特性与差异。C语言枚举本质是整型常量,存在弱类型检查和作用域污染问题;C++11引入的enum class通过强作用域、禁止隐式转换和可指定底层类型等特性,显著提升了类型安全性和代码可维护性。文章详细阐述了枚举的定义语法、使用场景、进阶技巧(如位标志、遍历)以及常见陷阱,并给出最佳实践建议:现代C++应优先使用enum class,显式指定底层类型,用枚举替代魔数以提升代码质
2026-07-31 14:33:10
398
原创 别被 C++ 骗了!成员函数根本就是「穿马甲的 C 函数」
C++成员函数本质上是带有自动this指针的普通函数,通过将数据与操作绑定在类中实现面向对象封装。它解决了C语言中数据裸露和命名污染问题,通过访问控制保证数据安全,利用类作用域组织代码。设计上遵循"零开销抽象"原则,底层效率与C函数相同,同时为继承、多态等面向对象特性奠定基础。这种设计既保持了C语言的效率,又提供了更高层次的抽象能力,体现了C++兼容底层控制与高级范式的核心思想。
2026-07-30 16:44:26
444
原创 C/C++每日一练12
本文介绍了三个算法问题的解法:1. 删除公共字符:通过哈希集合存储第二个字符串的字符,然后遍历第一个字符串保留不在集合中的字符。2. 链表公共节点:使用双指针法,让两个指针分别遍历两条链表,最终在公共节点相遇。3. 子序列计数:线性DP方法统计"s"、"sh"和"shy"的出现次数,最终输出"shy"子序列的总数。三个问题均提供了C++代码实现和关键注意事项,如输入处理、溢出问题等。
2026-07-30 16:29:28
295
原创 C/C++《裸装初始号 & 全套装毕业号》
摘要: C++并非C的严格超集,二者虽有90%基础语法兼容(如内存模型、控制流),但存在关键差异:C99特性(如变长数组)在早期C++中不支持,而C++独有的类、模板等特性C无法使用。历史渊源上,C++从“带类的C”发展为独立多范式语言,底层仍与C共享系统级内核(手动内存管理、直接编译为机器码)。核心区别在于范式:C专注结构化编程,追求极致性能;C++融合面向对象、泛型等范式,适合复杂工程。生态上,C主导操作系统、嵌入式等底层领域,C++则统治游戏引擎、高性能服务器等场景。两者同源但定位互补,需根据需求选择
2026-07-30 16:21:12
718
图论算法基于BFS的拓扑排序实现:有向无环图的依赖关系解析与任务调度应用
2026-07-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅