- 博客(24)
- 收藏
- 关注
原创 【高并发内存池:高效解决多线程内存管理】
本项目实现了一个高并发内存池,其核心框架参考了Google的tcmalloc。该内存池由三个层级组成:线程独享的thread cache用于快速分配小内存(<256KB),共享的central cache作为中间层通过桶锁平衡线程间内存分配,以及page cache负责以页为单位管理大内存并合并碎片。采用定长内存池作为基础组件,通过预分配和自由链表管理显著提升了内存分配效率。测试表明,相比传统new/delete操作,该内存池在并发场景下性能提升显著,同时有效减少了内存碎片问题。
2025-10-20 13:13:34
665
原创 【智能指针:原理、使用与实现】
本文介绍了C++智能指针的核心概念与实现原理。智能指针通过RAII技术自动管理资源释放,解决了内存泄漏和异常安全问题。重点分析了三类智能指针:auto_ptr(已废弃,采用资源转移策略)、unique_ptr(禁止拷贝,仅支持移动)和shared_ptr(引用计数实现共享资源)。文章详细探讨了shared_ptr的底层实现机制,包括引用计数的动态管理。同时指出循环引用问题及其解决方案weak_ptr。通过代码示例展示了智能指针在异常处理、资源管理等方面的优势,以及如何重载运算符使其具备指针行为。
2025-09-03 22:53:40
962
原创 【深入理解异常处理机制】
本文介绍了异常处理机制的基本概念和使用方法。异常处理允许程序在运行时检测问题并将问题处理任务传递给其他部分,实现检测与处理的分离。异常通过throw抛出对象,由最近的匹配catch捕获处理,期间会进行栈展开和对象销毁。异常匹配允许类型转换和继承体系中的派生类到基类转换。文章还展示了异常重新抛出的应用场景,如在网络不稳定时需要多次重试发送消息。通过继承体系设计异常类和使用基类捕获,可以构建更灵活的异常处理系统。
2025-08-29 13:57:58
884
原创 C++11新特性全解析
【C++11核心特性解析】 C++11作为里程碑式更新,通过列表初始化、右值引用等140+新特性重构了语言核心能力。列表初始化实现统一初始化方式,支持内置/自定义类型,并引入initializer_list类简化容器构造。右值引用区分左值/右值,通过move语义实现高效资源转移,解决深拷贝性能问题。重点掌握列表初始化、右值引用、移动语义、lambda等特性,这些改进显著提升了内存安全性和代码简洁性。注:智能指针等部分内容因篇幅限制未展开。(149字) 摘要聚焦三个核心点: 版本意义:强调C++11的里程碑地
2025-08-22 12:00:00
667
原创 【哈希表原理与实现:从冲突解决到性能优化】
哈希表是一种高效的数据结构,通过哈希函数将键映射到存储位置,实现快速查找、插入和删除。本文介绍了哈希表的基本概念、哈希函数(如除法散列法、乘法散列法)以及冲突解决方法(开放定址法和链地址法)。重点分析了线性探测、二次探测和双重散列等开放定址法的实现原理,并讨论了负载因子对性能的影响。文章还提供了直接定址法的代码示例和哈希表实现的关键技术细节,帮助读者深入理解哈希表的工作原理和优化方法。
2025-08-20 19:52:32
1437
原创 【揭秘红黑树:高效数据结构解析】
红黑树是一种自平衡二叉搜索树,通过颜色约束规则确保树的高度近似平衡。每个节点标记为红或黑,遵循以下规则:根节点为黑;红节点的子节点必须为黑;从任意节点到叶子的路径包含相同数量的黑节点。红黑树通过旋转和变色保持平衡,插入节点时需处理三种情况:叔节点为红、叔节点为黑且插入边缘、叔节点为黑且插入内部。其增删查改操作时间复杂度为O(logN),相比AVL树旋转次数更少,适合频繁插入删除的场景。红黑树在STL map/set等数据结构中广泛应用。
2025-08-15 19:40:06
1110
原创 【二叉搜索树:高效查找与增删】
二叉搜索树是一种高效的数据结构,具有左子树值小于等于根节点、右子树值大于等于根节点的特性。其查找、插入和删除操作的时间复杂度为O(N),最优情况下可达O(logN)。文章详细介绍了二叉搜索树的概念、性能分析及实现方法,包括节点构造、插入、查找、删除和中序遍历等接口。其中删除操作最为复杂,需处理三种不同情况。二叉搜索树适用于key和key/value两种场景,是map/set等容器的基础实现。为提高效率,后续可学习平衡二叉搜索树如AVL树和红黑树。
2025-08-12 12:00:00
1187
原创 【探秘C++多态:虚函数与重写】
本文主要介绍了面向对象编程中的重要概念——多态。多态分为编译时多态(静态多态)和运行时多态(动态多态),重点讲解了运行时多态的实现机制。实现多态需要满足两个必要条件:必须通过基类的指针或引用调用虚函数,且被调用函数必须是虚函数并完成重写。文章详细阐述了虚函数的重写规则、析构函数的重写特性,以及协变、override和final关键字的使用。此外,还介绍了纯虚函数和抽象类的概念,并通过虚函数表指针解释了多态的实现原理。
2025-08-11 12:00:00
1219
原创 【面向对象:继承与组合】
摘要: 继承是面向对象程序设计的重要机制,允许派生类复用基类特性并扩展新功能。继承方式分为public、protected和private,基类私有成员在派生类中不可见。派生类与基类间可进行类型转换(切片),但不能反向转换。继承中存在作用域隐藏规则,派生类默认成员函数需显式调用基类对应函数。多继承可能引发菱形继承问题(数据冗余和二义性),可通过虚继承解决。相比继承,组合(has-a关系)耦合度更低,更推荐使用,但继承(is-a关系)在实现多态时仍必不可少。
2025-08-10 12:00:00
900
原创 【C++模板:从入门到精通】
本文介绍了C++模板编程的基础与进阶知识。基础部分涵盖泛型编程概念、函数模板的定义与使用(包括隐式/显式实例化及匹配原则),以及类模板的定义与实例化。进阶部分探讨了非类型模板参数和模板特化技术,包括函数模板特化的步骤和类模板的全特化与偏特化(部分特化和参数限制)。通过具体代码示例展示了模板如何提高代码复用性,并针对特殊类型进行定制化处理,为C++泛型编程提供了重要技术支撑。
2025-08-09 16:33:29
1087
原创 【论坛系统自动化功能测试报告】
基于 Selenium 进行论坛系统UI自动化测试,覆盖用户注册登录、帖子发布与管理、评论互动等核心功能,旨在提升测试效率,降低人工成本。
2025-08-07 13:20:52
982
4
原创 【博客系统UI自动化测试报告】
本文介绍了基于SSM框架的个人博客系统UI自动化测试过程。测试主要针对博客系统的核心功能模块,包括登录、主页展示、博客创作、修改、查看、删除和退出等功能。使用Selenium工具进行Web自动化测试,搭建了Edge浏览器(138.0.3351.121版本)与Selenium 4.0.0、webdriver-manager 4.0.2的测试环境。报告详细展示了登录模块的测试用例设计,包括7种失败场景和2种成功场景的测试代码实现,通过元素定位、输入操作和断言验证等功能测试。
2025-08-06 11:31:14
1125
原创 【深入解析vector类:深拷贝与迭代器失效】
本文主要探讨了C++ vector类学习中的两个关键问题:深拷贝问题和迭代器失效问题。在深拷贝方面,文章指出当类对象包含指针成员时,浅拷贝会导致析构问题和数据修改冲突,需要通过自定义拷贝构造实现深拷贝。在迭代器失效方面,文章分析了底层空间改变导致迭代器失效的多种情况(如resize、insert等操作),并给出了具体示例。最后,文章提供了vector类的完整模拟实现代码,包含常用接口如push_back、insert、erase等,并附有测试代码。这些内容对深入理解vector底层实现机制具有重要参考价值。
2025-07-30 13:44:29
1074
原创 深入解析C++ string类核心原理
本文主要介绍了C++标准库中的string类及其常用接口,包括构造函数、析构函数、运算符重载、空间管理、迭代器、输入输出等功能,并给出了string类的模拟实现代码。string类用于处理字符串操作,涉及内存管理、迭代器遍历等核心概念。通过理解string类的底层原理和实现方式,可以加深对C++类和对象、内存管理等内容的理解。文章还提供了自定义mystring类的实现代码,包含构造函数、赋值运算符、迭代器等功能,可作为学习string类内部实现机制的参考。
2025-07-28 14:13:06
1304
原创 【C++类和对象核心要点解析】
本文摘要: C++中的类和对象是面向对象编程的核心概念,主要分为上、中、下三部分。文章重点介绍了类和对象的上、中部分内容,包括class定义、访问限定符、内存对齐、this指针等基础概念,以及构造函数、析构函数、拷贝构造函数等默认成员函数的使用要点。其中,构造函数用于初始化对象,析构函数负责资源清理,拷贝构造函数实现对象复制。编译器会为这些函数提供默认实现,但在需要特殊处理(如深拷贝)时必须自定义实现。文章通过代码示例详细说明了这些关键概念的实际应用和注意事项。
2025-07-24 19:51:17
1197
原创 【C++入门基础:从零到精通】
本文介绍了C++入门基础的核心概念,包括命名空间的作用与使用方法、输入输出流cin/cout、缺省参数、函数重载、引用及其特性、内联函数inline以及nullptr替代NULL等。重点讲解了命名空间解决命名冲突的原理,引用作为变量别名的特性与指针的区别,以及内联函数提高效率的机制。这些概念是C++区别于C语言的重要特性,需要重点理解掌握,特别是引用部分在实际编程中的应用价值。文章通过代码示例帮助理解这些基础概念的实际使用场景。
2025-07-23 13:54:41
855
原创 【排序算法精解】
本文介绍了常见的排序算法分类,包括交换排序、插入排序、选择排序和归并排序等。重点讲解了选择排序、冒泡排序、直接插入排序、堆排序和快速排序这五种算法的原理和C语言实现。其中快速排序详细说明了hoare版本和前后指针两种实现方式,并给出了三数取中和小区间优化等改进方法。文章通过代码示例和图示相结合的方式,清晰展示了各排序算法的工作原理,为读者理解排序算法提供了实用参考。
2025-07-21 18:13:12
1059
原创 【二叉树与堆:数据结构基础精讲】
本文介绍了二叉树和堆的基本概念、特性及实现方法。首先阐述了树的基本术语和概念,包括结点度、高度等。重点讲解了二叉树的定义、性质(如结点数量关系)和两种特殊形式:满二叉树和完全二叉树。随后详细介绍了堆的概念,包括其作为完全二叉树的数组表示形式,以及大堆/小堆的特性。文章提供了堆的核心实现代码,包括向上/向下调整算法等关键操作。最后探讨了堆在排序和TopK问题中的应用,并简要提及二叉树的四种遍历方式。这些数据结构为后续更复杂的数据结构学习奠定了基础。
2025-07-19 16:26:49
910
原创 【数组与链表OJ题精解】
本文整理了数组和单链表的常见OJ题解,包括原地移除元素、有序数组合并、链表的反转、中间节点查找等12道经典题目。每道题提供了清晰的解题思路和C语言实现代码,如双指针法处理数组问题、三指针法反转链表等。重点考察了时间/空间复杂度优化技巧,适合算法初学者参考练习。摘要不超过150字。
2025-07-13 19:32:25
1206
原创 【C语言文件操作解析】
文件操作是编程中存储和读取数据的重要手段,主要分为程序文件(如.c、.obj、.exe)和数据文件(如.txt)。数据文件按存储方式分为文本文件(ASCII码)和二进制文件(直接二进制存储)。 C语言通过FILE*指针管理文件流,使用fopen打开文件(需指定模式如"r"读、"w"写等),fclose关闭文件。同时介绍了常见读写函数等内容。
2025-07-07 21:02:38
1039
原创 【自定义类型:结构体】
本文介绍了C语言中结构体的基本概念和使用方法。主要内容包括:结构体类型的声明(完全声明和不完全声明)、结构体自引用的正确方式、结构体内存对齐规则及其原因分析、修改默认对齐数的方法、结构体传参的优化策略、以及位段的概念和应用。文章通过代码示例和内存分析,详细讲解了结构体的存储特性,并指出位段虽能节省空间但存在跨平台问题。最后总结了结构体使用的注意事项,强调合理设计结构体以平衡空间和时间效率。
2025-07-06 21:45:39
1167
原创 【内存中的整数与浮点数存储奥秘】
本文介绍了整数和浮点数在内存中的存储方式。整数存储涉及大小端字节序的概念,小端模式将低位字节存于低地址,大端模式反之。通过判断int变量的第一个字节可以确定存储模式。整数存储采用补码形式,CPU能统一处理加减法。浮点数根据IEEE 754标准存储为(-1)^SM2^E,其中S为符号位,M为有效数字(1≤M<2),E为指数。32位浮点数分别用1位、8位和23位存储S、E和M的小数部分。文章还通过代码示例演示了char类型变量在不同情况下的存储和打印结果。
2025-07-05 22:22:53
1156
原创 【C语言库函数详解及模拟实现】
本文介绍了C语言中常用字符串处理库函数的使用方法和模拟实现,包括strlen、strcpy、strcat、strcmp、strncpy、strncat、strstr和memcpy。对于每个函数,详细说明了其功能、参数要求和使用注意事项,并提供了多种实现方案(如计数法、指针相减法、递归法等)。通过代码示例展示了函数的具体应用场景,并给出了模拟实现的核心思路和完整代码。这些内容有助于深入理解字符串处理函数的底层原理,提高编程能力。文中所有函数都强调了对空指针的断言检查,确保程序健壮性。
2025-07-04 20:08:12
728
原创 【sizeof与strlen:内存计算与字符串长度的奥秘】
本文对比了C语言中sizeof和strlen的区别及应用场景。补充了数组名的三种含义(整个数组、首元素地址、数组地址),并通过练习,分析不同表达式下两者的返回值差异。
2025-07-04 12:00:08
985
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅