- 博客(83)
- 收藏
- 关注
原创 C++ STL unordered_map/set 实现
本文实现了一个C++哈希表模板类Hash,支持键值对(K-V)和键(K)两种存储方式。通过GetK仿函数解决K-V查找问题,使用variant处理不同容器类型。实现了插入、查找、删除等基本操作,支持负载因子控制和扩容机制。在此基础上封装了unordered_map和unordered_set接口。迭代器实现采用桶指针+桶内迭代器的方式,支持遍历操作。最后通过variant解决了const迭代器构造问题。代码实现了哈希表的核心功能,包括冲突处理、动态扩容等特性,可作为STL容器的替代实现。
2025-12-22 15:25:10
873
原创 C++ 哈希表
本文详细介绍了哈希表的原理与实现方法。首先解释了哈希表的基本概念,即通过哈希函数将键映射到数组下标来存储数据。文章分析了常见的哈希冲突处理方式,包括开放定址法(线性探测、二次探测)和链地址法,并提供了相应的C++实现代码。针对链地址法的优化,提出了当链表过长时转换为红黑树的方案。此外,还介绍了负载因子概念和扩容机制,以及除法散列法、乘法散列法等哈希函数设计方法。文章通过丰富的代码示例展示了如何实现一个高效的哈希表,包括使用C++17的variant处理不同类型容器,以及多种访问方式的比较。
2025-12-15 15:13:40
930
原创 Linux - 进程
摘要:本文详细介绍了进程的基本概念和管理机制。进程是程序运行的实体,由内核数据结构(task_struct)和代码数据组成。操作系统通过进程控制块(PCB)管理进程,记录标识符、状态、优先级等信息。文章解析了进程创建(fork)、状态(R/S/D/T/Z/X)、优先级调整(nice值)等核心机制,并讨论了僵尸进程和孤儿进程的危害及处理方式。同时阐述了进程地址空间的虚拟内存管理机制,包括页表映射、写时拷贝和内存保护功能。最后介绍了环境变量的作用和管理方法,以及命令行参数的处理原理。
2025-09-14 16:26:54
1000
原创 高并发内存池项目
内存池池化技术是一种通过预先申请过量资源来提高程序运行效率的技术。它通过减少系统调用次数,有效解决了内存碎片问题(包括外碎片和内碎片)。典型的实现包括定长内存池、高并发内存池等。 高并发内存池采用三层架构: ThreadCache:线程独享,无需加锁 CentralCache:共享资源,采用桶锁 PageCache:以页为单位管理,可合并相邻页 该项目通过基数树优化了内存映射查询,相比哈希表减少了锁竞争。测试表明,在适度线程数下性能接近malloc,但在高并发时仍有优化空间。内存池技术能有效提升内存分配效率
2025-09-03 19:16:54
636
1
原创 linux - 权限的概念
本文介绍了Linux系统中的用户权限和文件权限管理。Linux用户主要分为超级用户(root)和普通用户,超级用户拥有最高权限,而普通用户权限受限。通过命令如su、sudo等,用户可以在不同权限间切换。此外,文章还详细讲解了用户和用户组的管理,包括创建、删除用户和用户组,以及如何将用户添加到用户组。文件权限部分,解释了文件类型、访问者类别和基本权限(读、写、执行),并介绍了如何通过chmod、chown、chgrp等命令修改文件权限和所有者。最后,提到了权限掩码和粘滞位的概念,以及目录权限的重要性。
2025-05-14 19:30:31
894
原创 Linux - 基础指令
学习Linux操作系统时,掌握命令行指令是至关重要的,因为许多工作环境可能不提供图形界面。指令的熟练使用可以显著提高操作效率,远超图形界面的鼠标操作。本文介绍了Linux命令的基本结构,如命令+选项+其他,并通过常用命令如ls、pwd、cd、touch、mkdir、rm、cp、mv、cat、more、less、head、tail、find、which、alias、grep、zip/unzip、rz/sz、tar等的使用示例,帮助读者理解并掌握这些基础命令。为深入学习Linux打下坚实基础。
2025-05-14 16:36:29
764
原创 C++ 继承
详细讲解继承(继承格式、父子兼容转换、作用域、切片、隐藏、子类默认成员函数、无法继承类、继承与友元、继承与静态成员、多继承、多继承指针偏移、多继承内部成员内存的分配、菱形继承问题、虚继承、虚继承解决菱形问题、io库菱形继承、继承和组合)
2024-09-08 17:27:41
1618
原创 C++ 适配器 priority_queue(优先级队列)
优先级队列(堆)的详细介绍。包括堆介绍,优先级队列函数的介绍,建堆算法分析,优先级队列的实现
2024-08-25 12:00:00
771
原创 c++ 内存管理(new&delete&delete[])
new,delete,delete[]的用法,底层逻辑,和delete、delete[]区别说明;然后是内存申请失败的处理方案
2024-07-25 23:56:38
483
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅