- 博客(143)
- 收藏
- 关注
原创 【linux】进程信号(三)信号的处理,信号的捕捉,sigaction,可重入函数,volatile,SIGCHLD信号
一、浅度理解信号的处理二、重谈地址空间3三、理解操作系统四、深度理解信号的处理五、信号的捕捉,sigaction六、可重入函数七、volatile八、SIGCHLD信号
2025-09-27 01:00:59
615
20
原创 【linux】进程信号(二)信号的发送,信号的保存,sigset_t,sigprocmask,sigpending
一、信号的发送二、信号保存概念介绍hanlder表的理解sigset_t信号集内核中的表示sigprocmasksigpending四、编码实现五、是否可以将所有的信号进行屏蔽/阻塞?六、概括
2025-09-22 23:37:58
648
17
原创 【linux】进程信号(一)信号的产生,signal,kill,raise,abort,alarm,core dump功能
一、场景引入二、预备工作生活场景引入信号结论ctrl + c的现象ctrl + c的理解signal键盘数据如何输入给内核,ctrl + c如何变为信号的——谈谈硬件三、信号的产生键盘组合键kill命令系统调用killraiseabort异常除零错误野指针的访问软件条件alarm四、core dump标志
2025-09-20 22:44:49
1501
39
原创 【linux】进程间通信(四)消息队列、信号量原理讲解,IPC在内核中的数据结构设计
一、消息队列原理二、消息队列的接口认识msggetmsgsndmsgrcvmsgctlipcs -q,ipcrm -q msqid三、IPC在内核中的数据结构设计四、信号量原理铺垫五、信号量原理实例一原理实例二原理思考问题六、总结归纳一下
2025-09-17 21:35:39
742
30
原创 【linux】进程间通信(三)systemV共享内存,ftok,shmget,shmat,shmdt,shmctl,ipcs,ipcrm
一、共享内存的原理二、建立源文件三、接口介绍shmget,创建/获取共享内存 六个问题问题五 问题二问题一 谈谈keyftok命令行中查看共享内存,删除共享内存四、编码实现创建共享内存 问题四问题六 给共享内存设置权限共享内存挂接到进程地址空间上shmat,共享内存在地址空间上去挂接shmdt关闭共享内存 shmctl封装 创建/获取 共享内存通信五、共享内存的特性六、看看共享内存的属性 shmctl七、如何给共享内存添加同步机制comm.hppprocessa.cc
2025-09-16 11:21:07
1119
21
原创 【linux】实现一个简单的日志插件
一、日志介绍二、初始化工作1. operator()测试2. operator()测试3. operator()printLogprintOneFileprintClassFile三、测试测试一测试二测试三四、源代码test.ccLog.hpp
2025-09-14 15:17:50
1480
44
原创 【linux】进程间通信(二)命名管道,mkfifo
一、命名管道原理二、命名管道的特征三、命名管道的情况四、接口mkfifo五、命名管道编码实现函数接口mkpipe介绍框架介绍makefilecomm.hppserver.ccclient.cc测试
2025-09-13 17:30:23
1016
41
原创 【linux】进程池小程序
函数参数规范一、进程池简要介绍二、父进程管理子进程,先描述,再组织三、建立信道、初始化工作Debug测试四、任务五、子进程slaver六、控制子进程七、清理收尾测试八、完善一九、Bug?测试十、完善二十一、完善三十二、源代码makefileTask.hppProcessPool.cc
2025-09-13 00:08:49
2296
32
原创 【linux】进程间通信(一)匿名管道,pipe
一、进程间通信是什么为什么怎么办二、什么是管道三、管道的原理浅谈原理深谈原理四、接口pipe五、编码实现框架读写方法实现测试一测试二测试三测试四测试五六、管道的特征七、管道的四种情况八、管道的应用场景命令行中的匿名管道 |简易版本的进程池
2025-09-12 11:49:16
949
35
原创 【linux】linux基础IO(九)动态库是如何被加载的
一、动态库是如何被加载的二、进程地址空间的第二讲程序没有被加载前的地址程序加载后的地址三、动态库如何被加载的详情
2025-09-09 10:43:55
1178
24
原创 【linux】linux基础IO(六)软硬链接(软链接,硬链接)
一、如何建立文件之间的软硬链接建立文件之间的软链接建立文件之间的硬链接二、深入理解软硬链接如何理解软链接软链接的应用场景如何理解硬链接硬链接的应用场景硬链接能否链接目录,为什么?
2025-08-30 17:26:00
1120
44
原创 【linux】linux基础IO(五)深入理解文件系统
一、共识原理二、认识硬件——磁盘(物理结构)三、磁盘的存储构成四、磁盘的逻辑结构五、回归到硬件六、文件系统七、如何理解文件的增删查改八、如何理解目录
2025-08-29 16:54:53
797
42
原创 【linux】linux基础IO(四)(模拟实现c语言文件标准库fopen,fclose,fwrite,fflush)
【linux】linux基础IO(三)(用户缓冲区概念与深刻理解)——书接上文详情请点击<——,本文会在上文的基础上进行讲解,所以对上文不了解的读者友友请点击前方的蓝字链接进行学习本文由小编为大家介绍——【linux】linux基础IO(四)(模拟实现c语言文件标准库fopen,fclose,fwrite,fflush)
2025-08-25 17:30:26
1309
49
原创 【linux】linux基础IO(三)(用户缓冲区概念与深刻理解)
一、现象——解释现象一补充一下关于fwrite和write的返回值的区别现象二现象三现象四现象五现象六二、用户缓冲区深刻理解+现象五解释几个问题缓冲区什么时候刷新为什么要有这个缓冲区那么这个用户缓冲区存在于哪里?现象六解释现象四解释
2025-08-25 17:21:21
898
32
原创 【linux】linux基础IO(二)(文件的重定向,dup2的使用,给shell程序添加重定向,如何理解一切皆文件)
一、重定向文件描述符的分配规则文件的重定向系统调用dup2二、给shell程序添加重定向准备工作铺垫添加重定向源文件思考:程序替换会不会影响文件的重定向三、标准输出1和标准错误2的区别四、如何理解一切皆文件
2025-08-20 12:53:39
1158
40
原创 【linux】linux基础IO(一)(c语言文件接口、文件系统调用open,write,close、文件fd)
一、共识原理二、c语言文件接口fopen fclosefwritefprintf>输出重定向 >>追加重定向三、文件系统调用过渡到系统比特位方式传递标志位open closewrite得出结论使用一下stdin,stdout,stderr对应的文件描述符0,1,2read四、访问文件的本质
2025-08-15 21:19:17
924
44
原创 【linux】自定义shell——bash命令行解释器小程序
前言一、交互问题,获取命令行二、字串的分隔问题,解析命令行三、普通命令的执行四、内建命令五、源代码makefilemyshell.c六、给shell程序添加重定向总结
2025-08-13 00:38:30
5451
46
原创 【linux】linux进程控制(三)(进程程序替换,exec系列函数)
前言一、单进程版——最简单的看程序替换execl二、谈进程替换的原理三、多进程版——验证各种程序替换接口execlpexecvexecvpexecle如何给子进程传递环境变量putenvexecle自定义环境变量传参execvpeexecve四、拓展进程替换shell脚本进程替换python语言总结
2025-08-11 19:54:56
1161
45
原创 【linux】linux进程控制(二)(进程等待wait/waitpid)
前言一、进程等待的重要性二、进程等待三个问题进程等待是什么为什么要有进程等待进程等待是怎么做的三、先看僵尸进程现象四、wait概念讲解wait的使用阻塞状态五、waitpid概念讲解waitpid的使用waitpid获取子进程的退出信息waitpid等待指定的子进程waitpid等待多个子进程六、非阻塞轮询总结
2025-08-08 20:37:45
1202
54
原创 【linux】linux进程控制(一)(fork进程创建,exit进程终止)
前言一、进程创建fork函数概念讲解使用for循环同时创建多个进程写时拷贝二、进程终止进程退出场景代码运行完毕,结果正确或不正确代码异常终止总结进程退出方法正常退出return和exit的区别exit和_exit的区别异常退出总结
2025-08-05 13:27:53
1185
39
原创 【linux】linux进程概念(五)——进程地址空间
前言一、程序地址空间讲解引入二、进程地址空间概念理解三、地址空间什么是地址空间如何理解地址空间上的区域划分再次理解地址空间四、进程及进程地址空间什么叫做进程为什么要有进程地址空间五、页表页表地址为什么代码区,字符常量区是只读的如何知道进程的代码和数据是否在内存中?总结
2025-08-03 00:19:51
1281
36
原创 【c++】c++的IO流
一、c语言的输入输出二、流是什么?三、c++的三种IO流c++标准IO流c++的文件IO流二进制读写文本读写c++的字符串流总结
2025-07-31 11:17:23
763
51
原创 【c++】c++的四种类型转换(static_cast,reinterpret_cast,const_cast,dynamic_cast)
前言一、c语言中的类型转换隐式类型转换强制类型转换const常变量的强制类型转换总结二、c++的四种类型转换static_castreinterpret_castconst_castdynamic_cast三、RTTI总结
2025-07-28 16:24:47
953
55
原创 【c++】特殊类的设计(不能拷贝的类,只能在堆/栈上创建对象的类,不能被继承的类,单例模式——饿汉模式、懒汉模式)
前言一、设计一个不能被拷贝的类c++98c++11二、设计一个只能在堆上创建对象的类方法一方法二三、设计一个类只能在栈上创建对象四、设计一个不能被继承的类c++98c++11五、单例模式饿汉模式概念讲解模拟实现测试懒汉模式概念讲解模拟实现测试一优化测试二优化测试三六、源代码test.cpp总结
2025-07-27 00:16:38
1257
53
原创 【c++】智能指针(auto_ptr, unique_ptr, shared_ptr, weak_ptr)
前言一、为什么需要智能指针二、智能指针RAII像指针一样使用三、auto_ptr概念讲解模拟实现测试四、unique_ptr概念讲解模拟实现测试五、shared_ptr概念讲解模拟实现测试六、shared_ptr的循环引用场景引入如何解决循环引用问题七、weak_ptr概念讲解模拟实现测试八、shared_ptr的定制删除器概念讲解模拟实现测试一测试二测试三测试四九、智能指针的总结十、内存泄漏概念讲解内存泄漏分类如何检测内存泄漏如何避免
2025-07-24 23:44:31
1021
49
原创 【c++】c++11新特性(function包装器,bind包装器)
前言一、function包装器铺垫function应用场景二、bind包装器概念使用普通函数静态成员函数成员函数总结
2025-07-20 11:05:54
1114
43
原创 【c++】c++11新特性(lambda表达式,可变参数模板,emplace系列接口测试,新增的默认成员函数)
前言一、lambda表达式c++98的两个例子c++11的lambda表达式的简单使用lambda表达式的语法lambda表达式的使用lambda表达式的底层二、可变模板参数可变参数可变参数模板基本概念通过函数递归的方式展开参数包方式一方式二逗号表达式展开参数包方式一方式二三、emplace系列接口测试铺垫emplace_back节点中存储浅拷贝类型节点中存储深拷贝的自定义类型四、新增的默认成员函数移动构造函数,移动赋值运算符重载default、delete
2025-07-18 14:13:08
1272
47
原创 【c++】c++11新特性(右值引用的移动构造,右值引用的移动赋值)
前言一、左值引用和右值引用什么是左值?什么是左值引用什么是右值,什么是右值引用二、左值引用与右值的比较左值引用总结右值引用总结三、右值引用的使用场景和意义左值引用的使用场景和意义右值引用的移动构造右值引用的移动赋值容器新增的右值引用的插入接口四、完美转发模板&&万能引用深入讲解右值引用的属性是左值完美转发五、实际应用完美转发六、源代码List.hTest.cpp总结
2025-07-15 20:07:10
531
47
原创 【c++】c++11新特性(列表初始化,initializer_list,auto和decltype,STL中的一些变化)
前言一、c++11简介背景介绍二、统一的列表初始化三、initializer_list四、auto和decltypeautodecltype五、nullptr六、范围for七、STL中的一些变化新容器新接口总结
2025-07-13 12:45:30
1003
48
原创 【c++】布隆过滤器、海量数据处理的应用
一、概念引入二、布隆过滤器概念介绍布隆过滤器的应用三、布隆过滤器的模拟实现为什么布隆过滤器不轻易支持reset铺垫settest测试一测试二四、海量数据处理的应用题目一精确算法近似算法题目二
2025-07-10 17:07:03
1174
32
原创 【c++】STL容器-位图、位图关于海量数据处理的应用
前言一、概念引入二、位图概念介绍三、位图的模拟实现铺垫setresettest测试四、海量数据处理题目一twobitset模拟测试题目二模拟测试题目三twoset1模拟测试五、源代码BitSet.htest.cpp总结
2025-07-08 22:28:06
1490
44
原创 【c++】STL容器-unordered_map/unordered_set的封装(逐步完善讲解)
一、哈希表模板参数以及节点的改造二、哈希表的普通迭代器普通迭代器哈希表的普通迭代器三、unordered_set基本框架测试四、unordered_map基本框架测试五、如何限制unordered_set的key值不被修改测试给哈希表添加const迭代器const迭代器哈希表的const迭代器修改unordered_set测试测试修改迭代器测试六、如何限制unordered_map的key值不被修改修改unordered_map测试七、给unordered_map添
2025-07-05 22:46:46
812
30
原创 【c++】STL容器-哈希概念介绍、哈希冲突的解决——闭散列和开散列
一、哈希概念介绍二、哈希冲突三、闭散列闭散列(开放定址法)的模拟实现铺垫插入删除、查找测试一测试二四、开散列开散列(链地址法/哈希桶)的模拟实现铺垫插入查找删除析构函数测试一测试二五、源代码open_addresshash_buckettest.cpp
2025-07-03 23:58:31
1272
34
原创 【c++】STL容器——使用红黑树模拟实现map和set(由浅入深逐步完善3w字详解)
一、了解STL库中的map/set的底层二、红黑树的迭代器三、红黑树的插入四、map/set的封装set的封装map的封装五、测试测试一测试二六、学习STL库中的实现set如何保证key不被修改map如何保证key不被修改八、set的改进红黑树的const迭代器改进set测试一测试二测试三九、map的改进测试一测试二operator[]Insert继续完善operaotr[]测试一十、完善set的Insert十一、源代码MyMap.hMyset.hR
2025-06-12 11:35:19
1315
51
原创 【c++】红黑树的概念讲解与模拟实现、红黑树与AVL树的比对(2万字详解)
一、红黑树的概念讲解二、红黑树的模拟实现铺垫insertIsBalanceHeight三、验证我们的代码是否可以构建出红黑树验证一验证二验证三四、红黑树与AVL树的比对比对一比对结果分析比对二比对结果分析总结红黑树和AVL树五、源代码RBTree.htest.cpp
2025-06-09 11:24:03
937
38
原创 【c++】AVL树(平衡搜索树)的概念讲解与模拟实现(万字详解)
一、AVL树的概念讲解二、AVL树的模拟实现铺垫平衡因子插入四种旋转左单旋右单旋右左双旋左右双旋IsBalance三、验证我们的代码是否可以构建出AVL树简单验证更严格更随机更大量的数据进行验证四、源代码AVLTree.htest.cpp总结
2025-06-05 10:24:21
1173
56
原创 【c++】c++异常
一、c语言传统的处理错误方式:处理方式一处理方式二二、c++异常概念三、异常的使用异常的抛出和捕获异常的重新抛出异常安全异常规范四、自定义异常体系五、c++标准库的异常体系六、异常的优缺点异常的优点异常的缺点
2025-05-29 21:33:35
480
49
原创 【c++】STL容器-map和set、multimap和multiset的使用和介绍(2.3w字详情解析)
一、关联式容器二、键值对(key-value pair)--- pairpair的介绍pair的使用构造函数make_pair(c++98)三、setset的介绍set的使用构造函数、赋值运算符重载迭代器的使用begin、end 范围forempty、sizeinserteraseswap、clearfindcountlower_bound 下界upper_bound 上界equal_range四、multisetmultiset的介绍multiset的使用in
2025-05-28 21:28:57
1297
49
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人