自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(90)
  • 收藏
  • 关注

原创 Linux 基础IO

本文系统介绍了文件操作的核心概念和技术要点。首先阐述了文件的狭义定义(磁盘存储)和广义理解(Linux下一切皆文件),并说明文件由属性和内容构成。重点解析了Linux系统调用(open、read、write、lseek、fcntl)的使用方法,包括标志位参数和权限设置。详细说明了文件描述符的分配规则、标准输入/输出/错误的文件描述符(0/1/2),以及通过dup2实现原子操作的输入输出重定向。最后讨论了文件缓冲区的优化机制,包括读写缓冲区的不同处理策略及其对系统调用的影响。全文涵盖了从基础概念到高级应用的文

2026-01-23 21:36:29 469

原创 C++ IO库

本文介绍了C++ IO流的基本概念和常用操作。主要内容包括:1. IO流状态管理(goodbit、failbit、badbit、eofbit)及其判断方法;2. 常用输入函数(peek、get、getline、read等)和输出函数(put、write等)的使用;3. 文件指针操作(tellg、seekg等);4. 缓冲区管理和性能优化技巧(sync_with_stdio、tie等);5. 文件打开模式说明及stringstream的使用注意事项。文章通过多个代码示例演示了IO流操作的正确用法,并对比了不同

2026-01-21 00:46:28 694

原创 Linux - 进程控制

本文介绍了进程管理相关的系统调用操作,包括进程创建、退出、等待和程序替换。重点讲解了fork()创建子进程的过程,子进程会继承父进程的地址空间但通过写时拷贝保持独立性。文章详细说明了进程退出的几种方式(_exit,exit,abort)及其区别,以及进程等待的必要性和wait/waitpid函数的使用方法。在程序替换部分,介绍了exec系列函数的功能和命名规则,并给出了实际应用示例。最后简要讨论了实现shell解释器时涉及的环境变量操作和工作路径修改问题,为开发简单shell提供了基础思路。

2026-01-18 19:49:25 611

原创 C++ 智能指针

摘要:本文探讨了手动管理堆内存的缺陷及智能指针解决方案。手动new/delete易导致内存泄漏,尤其在异常情况下更难处理。通过利用析构函数自动释放资源的特性,实现了autoptr模板类。随后分析了auto_ptr的缺陷(指针转移导致悬空)并介绍了更优方案:unique_ptr(独占所有权)、shared_ptr(引用计数)及其多线程安全实现。针对循环引用问题,引入weak_ptr作为观察者。最后讨论了删除器处理数组释放,以及强/弱引用计数器的工程实现,确保weak_ptr能安全检测指针有效性。这些智能指针有

2026-01-13 00:11:38 865

原创 C++ 异常

摘要:异常处理机制通过throw抛出异常对象,由catch捕获处理,实现问题检测与处理的分离。异常对象存储在独立区域,最多两次拷贝。栈展开过程中未被捕获的异常会终止程序。建议使用基类设计异常体系,通过多态实现统一处理。异常安全需注意资源释放问题,可使用智能指针和锁保护。noexcept修饰可优化性能,影响STL容器操作和编译器内联优化。自动添加noexcept的情况有限,需谨慎使用。

2026-01-11 02:41:47 561

原创 Linux - 缓存利用率

本文探讨了CPU多级缓存(L1-L3)的工作原理及其对程序性能的影响。L1缓存访问速度可达内存的百倍,L2为30-100倍,L3为10-30倍。缓存行通常为64字节,CPU会预加载邻近数据以提高命中率。数据结构缓存利用率排序为:紧凑数组>B+树/顺序表>跳表>平衡二叉树>哈希表>链表。优化建议包括:1)SOA/AOS数据布局选择;2)64字节对齐减少缓存行浪费;3)冷热数据分离;4)避免多线程伪共享;5)使用内存池提升局部性。这些方法能显著提升程序性能,特别是在大数据量场景下。

2026-01-04 18:41:42 864

原创 C++ 11

C++11标志着C++与C语言的显著区分,引入了众多重要特性。摘要重点介绍了:1)范围for循环简化容器遍历;2)using替代typedef,支持模板别名;3)列表初始化和initializer_list实现统一初始化语法;4)右值引用和移动语义优化对象传递效率;5)完美转发保持参数原始类型;6)lambda表达式简化匿名函数;7)function包装器统一可调用对象类型。这些特性显著提升了代码简洁性和运行效率,使C++成为更现代化的语言。后续将深入探讨并发支持、智能指针等其他C++11特性。

2026-01-01 21:25:52 762

原创 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 890

原创 C++ inline内联

inline不止于函数展开优化

2025-12-17 00:36:41 826

原创 C++ 哈希表

本文详细介绍了哈希表的原理与实现方法。首先解释了哈希表的基本概念,即通过哈希函数将键映射到数组下标来存储数据。文章分析了常见的哈希冲突处理方式,包括开放定址法(线性探测、二次探测)和链地址法,并提供了相应的C++实现代码。针对链地址法的优化,提出了当链表过长时转换为红黑树的方案。此外,还介绍了负载因子概念和扩容机制,以及除法散列法、乘法散列法等哈希函数设计方法。文章通过丰富的代码示例展示了如何实现一个高效的哈希表,包括使用C++17的variant处理不同类型容器,以及多种访问方式的比较。

2025-12-15 15:13:40 978

原创 Linux - 进程

摘要:本文详细介绍了进程的基本概念和管理机制。进程是程序运行的实体,由内核数据结构(task_struct)和代码数据组成。操作系统通过进程控制块(PCB)管理进程,记录标识符、状态、优先级等信息。文章解析了进程创建(fork)、状态(R/S/D/T/Z/X)、优先级调整(nice值)等核心机制,并讨论了僵尸进程和孤儿进程的危害及处理方式。同时阐述了进程地址空间的虚拟内存管理机制,包括页表映射、写时拷贝和内存保护功能。最后介绍了环境变量的作用和管理方法,以及命令行参数的处理原理。

2025-09-14 16:26:54 1009

原创 Linux - 基础开发工具

本博客会讲解yum/apt、vim、gcc/g++、Makefile这几个常用的基础开发工具。

2025-09-08 17:03:28 956

原创 高并发内存池项目

内存池池化技术是一种通过预先申请过量资源来提高程序运行效率的技术。它通过减少系统调用次数,有效解决了内存碎片问题(包括外碎片和内碎片)。典型的实现包括定长内存池、高并发内存池等。 高并发内存池采用三层架构: ThreadCache:线程独享,无需加锁 CentralCache:共享资源,采用桶锁 PageCache:以页为单位管理,可合并相邻页 该项目通过基数树优化了内存映射查询,相比哈希表减少了锁竞争。测试表明,在适度线程数下性能接近malloc,但在高并发时仍有优化空间。内存池技术能有效提升内存分配效率

2025-09-03 19:16:54 652 1

原创 linux - 权限的概念

本文介绍了Linux系统中的用户权限和文件权限管理。Linux用户主要分为超级用户(root)和普通用户,超级用户拥有最高权限,而普通用户权限受限。通过命令如su、sudo等,用户可以在不同权限间切换。此外,文章还详细讲解了用户和用户组的管理,包括创建、删除用户和用户组,以及如何将用户添加到用户组。文件权限部分,解释了文件类型、访问者类别和基本权限(读、写、执行),并介绍了如何通过chmod、chown、chgrp等命令修改文件权限和所有者。最后,提到了权限掩码和粘滞位的概念,以及目录权限的重要性。

2025-05-14 19:30:31 916

原创 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 773

原创 封装红黑树实现map和set

对map和set的实现,详细讲解

2025-01-10 17:42:20 928 3

原创 C++ 红黑树

红黑树详解

2025-01-09 17:29:48 624

原创 C++ STL map和set的使用

详解c++stl的map系列和set系列

2025-01-08 22:24:56 922

原创 AVL搜索树

细节十分多的AVL树

2025-01-07 10:15:00 1847

原创 二叉搜索树(Binary Search Tree)

对搜索二叉树进行详细的讲解

2025-01-03 09:00:00 1061

原创 二叉树的一些题目

二叉树的一些题

2024-10-22 09:53:41 792 1

原创 c++ 多态

对多态进行详细讲解

2024-10-22 09:42:18 1116

原创 Linux操作系统 初识

那么在最开始的时候,计算机的运算速度慢,科学家需要排队一个一个来操作计算机并等待计算结果,然后轮到下一个人。但随着。

2024-09-08 23:09:36 1542

原创 C++ 继承

详细讲解继承(继承格式、父子兼容转换、作用域、切片、隐藏、子类默认成员函数、无法继承类、继承与友元、继承与静态成员、多继承、多继承指针偏移、多继承内部成员内存的分配、菱形继承问题、虚继承、虚继承解决菱形问题、io库菱形继承、继承和组合)

2024-09-08 17:27:41 1636

原创 C++ 模板进阶

模板非模板参数,特化以及模板只能写在.h里面的原因介绍

2024-08-25 23:43:02 923

原创 C++ 适配器 priority_queue(优先级队列)

优先级队列(堆)的详细介绍。包括堆介绍,优先级队列函数的介绍,建堆算法分析,优先级队列的实现

2024-08-25 12:00:00 774

原创 C++ 适配器 queue

queue的结构讲解,函数讲解,和queue的实现

2024-08-17 17:47:05 533

原创 C++ 容器 deque(双端队列)

deque的结构讲解,函数讲解,自我实现

2024-08-17 16:26:37 977 2

原创 C++ 适配器 stack

适配器stack的讲解和实现

2024-08-13 22:26:45 525

原创 C++ 适配器

适配器的讲解,举例,总结

2024-08-13 17:06:11 356

原创 C++ 容器 list

从list结构简单讲解,list的相关函数介绍及使用,list的简单实现来讲解list。

2024-08-11 23:21:53 958

原创 C++ 仿函数

仿函数的优点和使用

2024-08-11 17:16:55 349

原创 c++ 容器 vector

vector的原理,函数使用及实现

2024-08-04 23:27:41 1022

原创 c++ 初始值设定项列表(initializer_list)

initializer_list的介绍,使用。

2024-08-04 17:28:10 1245

原创 c++ string解析及其实现

string 的使用,string内外函数的讲解,string的实现

2024-08-02 16:20:13 960

原创 c++迭代器的介绍

讲解迭代器使用,分类,和大致底层的实现。

2024-07-31 12:00:00 894

原创 c++ 类模版初阶

模板初阶

2024-07-28 16:39:45 941

原创 c++ 内存管理(new&delete&delete[])

new,delete,delete[]的用法,底层逻辑,和delete、delete[]区别说明;然后是内存申请失败的处理方案

2024-07-25 23:56:38 489 1

原创 c++ 类 (要学习类这一篇就够了 )

用 9159 个字详细讲解c++的类。值得一看。

2024-07-25 18:18:36 7493 7

原创 c++ 之引用

c++在指针的基础上添加了引用,祖师爷本贾尼博士既然要创建这个语法,说明指针一定有不足之处。

2024-07-24 12:00:00 471

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除