自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Linux进程间通信3-共享内存

系统V共享内存是进程间通信(IPC)中最快的方式,通过shmget创建、shmat映射、shmdt脱离,shmctl控制。需手动删除,使用ipcs -m和ipcrm -m管理。封装类实现创建、获取、映射与销毁共享内存。同时介绍命名管道(FIFO),通过mkfifo创建,open读写,析构时自动删除。两者均用于进程间数据共享,但共享内存效率更高,适合频繁通信场景。

2026-10-24 10:30:00 282

原创 Linux进程间通信1 -匿名管道

本文介绍了进程间通信的目的与分类,重点讲解匿名管道的创建与使用。通过pipe()系统调用建立管道,结合fork()创建子进程,实现父子进程间单向通信:子进程写入,父进程读取。代码演示了如何关闭无关文件描述符、使用write和read进行数据传输,并通过waitpid防止僵尸进程。最后简要提及进程池设计思路,为后续多进程任务处理奠定基础。

2026-09-29 14:30:07 330

原创 Linux进程间通信2 -命名管道

命名管道(FIFO)是用于不相关进程间通信的特殊文件,可通过mkfifo创建。与匿名管道不同,命名管道可在无亲缘关系的进程间使用,创建后通过open打开,读写操作遵循阻塞或非阻塞规则。本文实现了一个NamedFifo类用于创建和删除管道,并通过FileOper类封装读写操作,支持客户端与服务端的双向通信,代码结构清晰,具备良好的可扩展性。

2026-09-29 14:28:38 166

原创 Linux动静态库

本文介绍了静态库(.a/.lib)与动态库(.so/.dll)的基本概念及区别,详细演示了使用ar和gcc生成静态库的过程,并通过实例说明如何在不同路径下正确链接静态库。随后讲解了动态库的创建(-shared -fPIC)与使用问题,指出动态库需通过LD_LIBRARY_PATH环境变量指定路径才能正常运行,强调了库文件与头文件管理的重要性。

2026-09-13 21:39:21 180

原创 Linux inode概念 &软硬连接

本文详解Linux中inode的概念:文件数据与属性分离存储,inode保存文件元信息(如权限、所有者、大小等)并唯一标识文件。通过ls -li可查看inode号。硬链接允多个文件名指向同一inode,删除时仅减少链接数;软链接为独立文件,通过文件名指向目标,类似快捷方式。硬链接用于备份和目录.、..,软链接则便于快速访问。

2026-09-13 21:38:20 161

原创 Linux基础IO

本文解析了C语言中常用文件操作函数(如fopen、snprintf、fwrite、fgets等)及系统调用(如read、write、dup2),阐述文件的本质为进程对磁盘外设的I/O操作。通过实例演示如何将输出重定向至文件,并强调正确使用feof与读写函数返回值的重要性,揭示文件操作的核心是内容与属性的管理,体现“一切皆文件”的系统理念。

2026-09-10 15:01:16 80

原创 Linux shell命令解释器

本文实现了一个简易的自主Shell命令行解释器,具备处理普通命令与内建命令的能力。通过循环读取、解析命令行,创建子进程并使用execvp执行命令,父进程等待子进程结束,模拟了Shell的基本运行原理。代码展示了环境变量(如USER、PWD)的获取与命令提示符生成,帮助理解进程管理、命令执行及变量作用域等核心概念。

2026-09-10 15:00:02 158

原创 Linux 进程控制

介绍Linux进程创建与管理机制。通过fork函数实现进程复制,子进程返回0,父进程返回子进程ID,利用写时拷贝技术提升内存效率。进程可通过exit、_exit或return正常退出,wait和waitpid用于回收子进程资源并获取其退出状态。重点讲解了僵尸进程的危害及进程等待的必要性,结合实例演示如何通过WEXITSTATUS等宏提取退出码与信号信息,确保父进程能正确处理子进程生命周期,保障系统资源安全。

2026-09-09 15:11:13 295

原创 C++哈希表的实现

哈希表通过哈希函数将关键字映射到数组位置,实现快速查找。解决冲突常用开放定址法(如线性探测),并引入负载因子控制扩容。为支持删除操作,采用标记状态(EXIST、EMPTY、DELETE)机制,避免查找中断。整体结构基于链地址或开放定址,兼顾效率与正确性。

2026-09-09 15:07:28 363

原创 Linux中gcc/g++/Makefile

介绍了GCC编译的四个阶段(预处理、编译、汇编、链接)及选项,对比动态与静态链接;讲解了Makefile的依赖关系、执行逻辑和自动化构建;最后通过缓冲区演示实现Linux进度条程序。内容涵盖编译工具链与构建自动化核心概念。

2026-09-08 18:59:26 296

原创 Linux中调式器gbd/cgdb

介绍Linux下使用gdb/cgdb调试程序的方法:需加-g选项编译,进入调试后可用list查看源码、break设断点、next/step单步执行、print查看变量等常用命令,并列出断点管理、跟踪显示及调用栈查看功能。

2026-09-08 18:58:03 178

原创 Linux进程概念

进程的基本概念、PCB与task_struct,进程状态(运行、睡眠、僵尸、孤儿),以及进程优先级、nice值和进程切换机制,涵盖fork创建进程、查看与调整优先级等操作。

2026-09-07 22:26:30 962

原创 Linux 程序地址空间

讲程序地址空间,虚拟地址,fork父子进程相同虚拟地址不同物理地址,mm_struct管理,vm_area_struct等。需简洁概括。程序地址空间与虚拟地址概念:父子进程变量地址相同但内容不同,说明地址为虚拟地址,由OS映射到物理内存。详细阐述了Linux内核通过mm_struct和vm_area_struct管理进程虚拟内存空间的组织方式(链表与红黑树)。

2026-09-07 22:24:45 185

原创 C++封装红黑树实现mymap和myset

本文详细介绍了红黑树的实现原理,主要包括三部分内容: 红黑树的基本结构定义,包括节点颜色枚举和RBTreeNode模板类的实现,包含数据、左右子树指针、父节点指针和颜色标记。 迭代器RBTreeIterator的实现,重点阐述了operator++和operator--的逻辑: ++操作通过判断右子树是否存在决定访问右子树最左节点或向上查找祖先节点 --操作逻辑与++相反,处理左子树最右节点或向上查找祖先节点的情况 完整的RBTree模板类框架。

2026-04-22 20:17:05 245 1

原创 C++ 红黑树

手动进行红黑树的实现

2026-04-22 20:16:14 529

原创 C++ AVL树

AVL树是一种高度平衡的二叉搜索树,通过平衡因子控制左右子树高度差不超过1。本文详细介绍了AVL树的结构实现和插入操作的核心逻辑。插入时需要更新平衡因子,当出现不平衡时通过旋转调整:右单旋处理左子树过高的情况,左单旋处理右子树过高的情况。文中给出了旋转的具体代码实现,包括结点关系调整和平衡因子更新。AVL树通过这种机制将时间复杂度控制在O(logN),相比普通二叉搜索树有显著性能提升。

2026-04-20 16:44:26 354

原创 Linux vim编辑器详见

本文介绍了Vim编辑器的基本概念和操作指南。主要内容包括:1) Vim的三种模式:命令模式、插入模式和底行模式;2) 基本操作如文件打开、模式切换(i/a/o插入、Esc返回命令模式、:进入底行模式)和保存退出命令;3) 命令模式下的高效操作:光标移动(hjkl/G/$/^等)、文本编辑(删除x/dd、复制yy/p、替换r/R、撤销u)、查找跳转(/、?、nG)等;4) 底行模式功能:设置行号(set nu)、分屏操作(vs)等;5) 最后提供了Vim配置参考地址。

2026-04-20 16:43:52 598

原创 Linux 权限

本文介绍了Linux系统中的权限管理机制,主要包括用户分类、文件权限和常用命令。Linux用户分为超级用户(root)和普通用户,超级用户拥有所有权限,普通用户权限受限。文件权限分为读(r)、写(w)、执行(x)三种,分别对应不同操作权限。文章详细讲解了chmod(修改权限)、chown(修改所有者)、chgrp(修改所属组)、umask(设置默认权限)等关键命令的使用方法,并特别说明了目录权限的重要性:目录的可执行权限(x)是进入目录和执行命令的基础,没有x权限即使有r权限也无法查看目录内容。

2026-03-13 13:31:40 421

原创 Linux基础指令

Linux常用命令摘要 本文介绍了Linux系统中常用的基础命令及其选项: 文件目录操作 ls:列出目录内容(-a显示隐藏文件,-l详细信息,-t按时间排序) pwd:显示当前目录 cd:切换目录(支持绝对/相对路径) mkdir/rmdir:创建/删除目录(-p递归操作) rm:删除文件(-r递归删除,-f强制删除) 文件操作 touch:创建文件或修改时间戳(-a/-c修改时间) cp/mv:复制/移动文件(-r递归操作,-f强制覆盖) cat:查看文件内容(-n显示行号) echo:输出内容

2026-03-13 13:30:56 479

原创 C++二叉搜索树

二叉搜索树是一种特殊的二叉树结构,具有以下特性:左子树所有节点值小于等于根节点,右子树所有节点值大于等于根节点。其查找、插入和删除操作的时间复杂度取决于树的高度,最优为O(logN),最差为O(N)。插入操作需根据节点值大小关系找到合适位置;查找操作从根节点开始比较,最多查找高度次;删除操作需处理四种情况:无子节点、仅左/右子节点、以及有两个子节点时采用替换法。文中还提供了二叉搜索树的C++实现代码,包括节点结构定义和基本操作函数。

2026-02-21 18:01:28 630

原创 C++ 多态

本文通过一个多态选择题引入,探讨了C++多态的实现原理。选择题展示了父类指针调用虚函数时,函数参数默认值的绑定规则(以声明时默认值为准)和函数实现的重写规则(以实际对象类型为准)。文章详细讲解了虚函数、多态构成条件(基类指针/引用+虚函数重写)、虚函数重写规则(三同原则)以及特殊情况(协变、析构函数重写)。同时介绍了C++11的override和final关键字,对比了重载、重写和隐藏的区别。最后简要说明了纯虚函数和抽象类的概念,为理解多态底层原理奠定基础。

2026-02-21 18:00:48 711

原创 C++继承

本文介绍了C++继承的基本概念和应用。首先通过学生类和教师类的例子展示了如何通过继承Person类来避免代码重复,提高代码复用性。然后详细说明了继承的定义方式、访问权限变化规则(public/protected/private继承对成员访问权限的影响),并强调了public继承的推荐使用。文章还介绍了继承类模板的实现方法,父类与子类间的转换规则,继承中的作用域问题(特别是同名成员的隐藏机制),以及子类默认成员函数(构造、拷贝构造、赋值运算符、析构)的实现要点。最后通过具体代码示例展示了继承的实际应用场景

2026-02-07 13:53:20 667

原创 C++ 模板特化

本文主要讨论了C++模板中的非类型模板参数和模板特化。非类型模板参数是指用常量作为模板参数,但限制浮点数、类对象和字符串不能作为非类型参数。通过Stack和array类的示例展示了非类型参数的应用。在模板特化部分,重点分析了函数模板特化和类模板特化。函数模板特化针对Date*类型比较的特殊处理,推荐使用函数重载而非特化。类模板特化包括全特化和偏特化,后者可针对指针或引用类型进行特殊处理。最后指出模板分离编译可能导致链接错误,因为模板定义需要在头文件中完整可见。

2026-02-07 13:52:08 643

原创 C++ stack/queue/prioriyt_queue

本文介绍了三种常用数据结构(栈、队列和优先队列)的基本操作及其实现方式。对于栈,展示了初始化、判空、获取大小、访问栈顶、压栈和弹栈操作,并给出基于vector容器的实现代码。队列部分同样介绍了基本操作,并提供了基于deque的实现方案。优先队列部分重点讲解了仿函数的使用、向上/向下调整算法,以及如何基于vector实现大/小顶堆功能,包括插入、删除、访问堆顶等核心操作。全文通过代码示例详细说明了这些数据结构的内部实现机制,为理解和使用这些容器提供了实用参考。

2026-02-05 09:59:03 848

原创 C++自写list类

本文介绍了C++中list双向链表的实现细节。主要包括:1)使用模板节点结构存储数据,包含前后指针;2)通过迭代器模板实现普通和const迭代器,重载相关操作符;3)list类的主要函数实现,如构造/析构、插入删除、拷贝赋值等操作,维护哨兵头节点和大小计数;4)支持初始化列表构造和容器打印函数。重点讲解了迭代器失效处理、深拷贝实现和swap优化技巧,展示了STL风格链表的完整实现方案。

2026-02-05 09:58:05 420

原创 C++ 自写vector类

本文实现了一个简易的vector容器模板类,主要包含以下功能:1. 定义了迭代器类型(iterator和const_iterator);2. 使用三个指针成员变量管理存储空间;3. 实现了构造函数、拷贝构造、析构函数等基本操作;4. 提供了size()、capacity()等容量查询方法;5. 实现了push_back、pop_back、insert、erase等元素操作;6. 支持operator[]下标访问;7. 包含reserve和resize等空间管理方法。该实现重点解决了迭代器失效、深浅拷贝等问题

2026-01-20 14:30:48 754

原创 C++ list类容器常用操作

本文介绍了C++ STL中list链表的基本操作和使用方法。主要内容包括:初始化list对象、空间管理(size/empty)、元素存取(front/back)、常用操作函数(push_front/pop_front、push_back/pop_back、insert/erase等)、特殊操作(sort/reverse/merge/unique/remove/splice)以及emplace_back构造优化。其中重点展示了链表特有的排序、逆置、合并等操作,并比较了链表与vector的性能差异。文章通过大量

2026-01-20 14:29:44 568

原创 c++ vector容器常用操作

本文介绍了C++中vector容器的常用操作,包括初始化、空间管理、增删查改、二维数组实现以及遍历方式。主要内容涵盖:三种初始化方法(默认初始化、指定大小和值、迭代器范围);获取大小(size)、容量(capacity)和判空(empty)的方法;调整空间(resize/reserve)的注意事项;常用操作如尾部插入(push_back)、删除(pop_back)、查找(find)、插入(insert)、删除(erase)和交换(swap);二维vector的实现方式;以及三种遍历方法(下标、迭代器和范围f

2025-10-24 13:00:00 436

原创 C++自写string类(附带源码)

本文介绍了C++中string类的设计与实现。主要包括私有成员变量(字符指针_str、长度_size和容量_capacity)、主要成员函数(构造函数、拷贝构造函数、赋值运算符和析构函数)以及常用功能函数(如c_str()、clear()、size()等)。重点讲解了字符串扩容(reserve)、追加字符/字符串(push_back/append)和插入操作(insert)的实现细节,包括内存管理、边界条件处理和效率优化等内容。文章通过代码示例展示了如何实现一个完整的string类,涵盖了字符串操作核心功能

2025-09-30 22:33:08 422

原创 C++ string类常用操作

本文介绍了C++中string类的使用方法和相关特性。主要内容包括:1.使用string类必须包含头文件<string>;2.auto关键字的使用规则和限制;3.范围for循环的语法特点及其本质是迭代器的替换;4.string类的常用接口,包括构造方法、修改操作、容量操作和访问遍历操作等。特别详细说明了size()/length()、capacity()、clear()、reserve()等容量操作方法,以及正向/反向迭代器的使用。通过代码示例展示了string类的基本操作和注意事项。

2025-09-30 22:29:13 851

原创 C++内存管理,模板初阶(泛型编程)

本文分析了变量在内存中的存储位置,包括栈、堆、数据段和代码段,并通过代码示例具体说明。介绍了C++内存管理方式,重点讲解new/delete与malloc/free的区别:new/delete会调用构造/析构函数,支持初始化,且是操作符而非函数。此外还探讨了operator new/delete底层实现原理,以及定位new表达式的用法。最后总结了两者的共同点和主要差异,如malloc需要手动计算空间大小,而new通过类型自动确定。

2025-09-02 11:00:22 890

原创 C++初始化列表,类型转换,static成员,友元,内部类,匿名对象

本文介绍了C++中初始化列表、类型转换、static成员和友元四个重要概念。初始化列表是构造函数中初始化成员变量的高效方式,尤其适用于引用、const成员和没有默认构造的类类型变量。类型转换部分讲解了内置类型与类类型之间的隐式转换机制,以及explicit关键字的作用。static成员则包括静态变量和静态函数,它们属于类而非对象,需在类外初始化。友元机制提供了一种突破访问限定符限制的方法,分为友元函数和友元类。这些特性共同构成了C++类设计中灵活而强大的工具集。

2025-09-02 10:59:18 1090

原创 从自定义日期类角度解析运算符重载,友元函数(friend)

本文介绍了C++中日期类的运算符重载实现,主要包括: 重载加减运算符(+,-,+=,-=)实现日期与天数的运算 重载比较运算符(<;,<=;,>;>=,==,!=)实现日期比较 重载自增自减运算符(++,--)区分前置和后置形式 重载流运算符(<<,>>)实现日期的输入输出 实现日期减日期得到天数差的功能 使用内联函数优化获取每月天数的操作 通过运算符重载使日期类的使用更加直观自然,符合用户习惯。

2025-08-29 20:03:53 883

原创 C++中类,this指针,构造函数,析构函数。拷贝构造函数,初步理解运算符重载,初步理解赋值运算符重载

本文介绍了C++中类和对象的核心概念,主要内容包括: 类的定义格式及访问修饰限定符(public/private/protected)的作用; this指针的原理及其在成员函数调用中的作用; 构造函数的特性(函数名与类名相同、无返回值、自动调用等)及其重载规则; 析构函数的功能(资源清理)和调用时机; 拷贝构造函数的定义方式、参数要求(必须为引用)和自动生成的规则。 文章通过代码示例展示了这些概念的实际应用,并解释了相关语法规则和底层原理,帮助理解C++面向对象编程的基本机制。

2025-08-29 11:38:39 1198

原创 初始MATLAB

本文介绍了MATLAB的基础知识,包括注释符号、变量命名规则、数据类型(数字、字符/字符串、矩阵、元胞数组、结构体)、逻辑与流程控制(if/else、for/while循环)、函数文件创建以及二维图形绘制。重点讲解了矩阵操作(转置、逆矩阵、三维矩阵)、随机数生成函数区别(rand/randi/randn),并通过示例代码演示了各种功能的使用方法,如结构体创建、阶乘计算、sin函数绘图等基础操作,适合MATLAB初学者快速入门。

2025-08-11 14:37:16 926

原创 C++中的命名空间域;缺省参数;引用;inline;宏函数;nullptr

本文介绍了C++中namespace、缺省参数、引用和inline关键字的核心概念及用法.

2025-08-11 12:01:46 955

原创 Clonable浅拷贝和深拷贝的区别(配图)

深浅拷贝的区别在与重写clone()方法中的代码不同

2025-01-12 16:15:25 506

原创 从迷宫问题理解dfs

从迷宫问题理解dfsC/C++

2024-04-21 16:45:41 1326

原创 排序之归并排序

排序之归并排序C/C++

2024-04-21 16:43:08 742

原创 排序之堆排序

排序之堆排序C/C++

2024-04-21 16:42:08 1120

空空如也

空空如也

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

TA关注的人

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