- 博客(131)
- 收藏
- 关注
原创 【linux】linux基础IO(六)软硬链接(软链接,硬链接)
一、如何建立文件之间的软硬链接建立文件之间的软链接建立文件之间的软链接二、深入理解软硬链接如何理解软链接软链接的应用场景如何理解硬链接硬链接的应用场景硬链接能否链接目录,为什么?
2025-08-30 17:26:00
655
20
原创 【linux】linux基础IO(五)深入理解文件系统
一、共识原理二、认识硬件——磁盘(物理结构)三、磁盘的存储构成四、磁盘的逻辑结构五、回归到硬件六、文件系统七、如何理解文件的增删查改八、如何理解目录
2025-08-29 16:54:53
485
35
原创 【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
1161
45
原创 【linux】linux基础IO(三)(用户缓冲区概念与深刻理解)
一、现象——解释现象一补充一下关于fwrite和write的返回值的区别现象二现象三现象四现象五现象六二、用户缓冲区深刻理解+现象五解释几个问题缓冲区什么时候刷新为什么要有这个缓冲区那么这个用户缓冲区存在于哪里?现象六解释现象四解释
2025-08-25 17:21:21
755
29
原创 【linux】linux基础IO(二)(文件的重定向,dup2的使用,给shell程序添加重定向,如何理解一切皆文件)
一、重定向文件描述符的分配规则文件的重定向系统调用dup2二、给shell程序添加重定向准备工作铺垫添加重定向源文件思考:程序替换会不会影响文件的重定向三、标准输出1和标准错误2的区别四、如何理解一切皆文件
2025-08-20 12:53:39
1041
39
原创 【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
796
44
原创 【linux】自定义shell——bash命令行解释器小程序
前言一、交互问题,获取命令行二、字串的分隔问题,解析命令行三、普通命令的执行四、内建命令五、源代码makefilemyshell.c六、给shell程序添加重定向总结
2025-08-13 00:38:30
2967
44
原创 【linux】linux进程控制(三)(进程程序替换,exec系列函数)
前言一、单进程版——最简单的看程序替换execl二、谈进程替换的原理三、多进程版——验证各种程序替换接口execlpexecvexecvpexecle如何给子进程传递环境变量putenvexecle自定义环境变量传参execvpeexecve四、拓展进程替换shell脚本进程替换python语言总结
2025-08-11 19:54:56
1087
45
原创 【linux】linux进程控制(二)(进程等待wait/waitpid)
前言一、进程等待的重要性二、进程等待三个问题进程等待是什么为什么要有进程等待进程等待是怎么做的三、先看僵尸进程现象四、wait概念讲解wait的使用阻塞状态五、waitpid概念讲解waitpid的使用waitpid获取子进程的退出信息waitpid等待指定的子进程waitpid等待多个子进程六、非阻塞轮询总结
2025-08-08 20:37:45
1073
54
原创 【linux】linux进程控制(一)(fork进程创建,exit进程终止)
前言一、进程创建fork函数概念讲解使用for循环同时创建多个进程写时拷贝二、进程终止进程退出场景代码运行完毕,结果正确或不正确代码异常终止总结进程退出方法正常退出return和exit的区别exit和_exit的区别异常退出总结
2025-08-05 13:27:53
1099
39
原创 【linux】linux进程概念(五)——进程地址空间
前言一、程序地址空间讲解引入二、进程地址空间概念理解三、地址空间什么是地址空间如何理解地址空间上的区域划分再次理解地址空间四、进程及进程地址空间什么叫做进程为什么要有进程地址空间五、页表页表地址为什么代码区,字符常量区是只读的如何知道进程的代码和数据是否在内存中?总结
2025-08-03 00:19:51
1203
35
原创 【c++】c++的IO流
一、c语言的输入输出二、流是什么?三、c++的三种IO流c++标准IO流c++的文件IO流二进制读写文本读写c++的字符串流总结
2025-07-31 11:17:23
738
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
904
55
原创 【c++】特殊类的设计(不能拷贝的类,只能在堆/栈上创建对象的类,不能被继承的类,单例模式——饿汉模式、懒汉模式)
前言一、设计一个不能被拷贝的类c++98c++11二、设计一个只能在堆上创建对象的类方法一方法二三、设计一个类只能在栈上创建对象四、设计一个不能被继承的类c++98c++11五、单例模式饿汉模式概念讲解模拟实现测试懒汉模式概念讲解模拟实现测试一优化测试二优化测试三六、源代码test.cpp总结
2025-07-27 00:16:38
1243
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
962
49
原创 【c++】c++11新特性(function包装器,bind包装器)
前言一、function包装器铺垫function应用场景二、bind包装器概念使用普通函数静态成员函数成员函数总结
2025-07-20 11:05:54
1093
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
1228
47
原创 【c++】c++11新特性(右值引用的移动构造,右值引用的移动赋值)
前言一、左值引用和右值引用什么是左值?什么是左值引用什么是右值,什么是右值引用二、左值引用与右值的比较左值引用总结右值引用总结三、右值引用的使用场景和意义左值引用的使用场景和意义右值引用的移动构造右值引用的移动赋值容器新增的右值引用的插入接口四、完美转发模板&&万能引用深入讲解右值引用的属性是左值完美转发五、实际应用完美转发六、源代码List.hTest.cpp总结
2025-07-15 20:07:10
494
46
原创 【c++】c++11新特性(列表初始化,initializer_list,auto和decltype,STL中的一些变化)
前言一、c++11简介背景介绍二、统一的列表初始化三、initializer_list四、auto和decltypeautodecltype五、nullptr六、范围for七、STL中的一些变化新容器新接口总结
2025-07-13 12:45:30
977
48
原创 【c++】布隆过滤器、海量数据处理的应用
一、概念引入二、布隆过滤器概念介绍布隆过滤器的应用三、布隆过滤器的模拟实现为什么布隆过滤器不轻易支持reset铺垫settest测试一测试二四、海量数据处理的应用题目一精确算法近似算法题目二
2025-07-10 17:07:03
1164
32
原创 【c++】STL容器-位图、位图关于海量数据处理的应用
前言一、概念引入二、位图概念介绍三、位图的模拟实现铺垫setresettest测试四、海量数据处理题目一twobitset模拟测试题目二模拟测试题目三twoset1模拟测试五、源代码BitSet.htest.cpp总结
2025-07-08 22:28:06
1451
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
767
30
原创 【c++】STL容器-哈希概念介绍、哈希冲突的解决——闭散列和开散列
一、哈希概念介绍二、哈希冲突三、闭散列闭散列(开放定址法)的模拟实现铺垫插入删除、查找测试一测试二四、开散列开散列(链地址法/哈希桶)的模拟实现铺垫插入查找删除析构函数测试一测试二五、源代码open_addresshash_buckettest.cpp
2025-07-03 23:58:31
1228
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
1244
51
原创 【c++】红黑树的概念讲解与模拟实现、红黑树与AVL树的比对(2万字详解)
一、红黑树的概念讲解二、红黑树的模拟实现铺垫insertIsBalanceHeight三、验证我们的代码是否可以构建出红黑树验证一验证二验证三四、红黑树与AVL树的比对比对一比对结果分析比对二比对结果分析总结红黑树和AVL树五、源代码RBTree.htest.cpp
2025-06-09 11:24:03
895
38
原创 【c++】AVL树(平衡搜索树)的概念讲解与模拟实现(万字详解)
一、AVL树的概念讲解二、AVL树的模拟实现铺垫平衡因子插入四种旋转左单旋右单旋右左双旋左右双旋IsBalance三、验证我们的代码是否可以构建出AVL树简单验证更严格更随机更大量的数据进行验证四、源代码AVLTree.htest.cpp总结
2025-06-05 10:24:21
1135
56
原创 【c++】c++异常
一、c语言传统的处理错误方式:处理方式一处理方式二二、c++异常概念三、异常的使用异常的抛出和捕获异常的重新抛出异常安全异常规范四、自定义异常体系五、c++标准库的异常体系六、异常的优缺点异常的优点异常的缺点
2025-05-29 21:33:35
454
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
1256
49
原创 【linux】linux进程概念(四)(环境变量)超详细版
一、基本概念二、认识常见的几个环境变量echo $ 查看某个环境变量env 显示所有环境变量/dev/pts/0 字符设备HISTSIZE 默认保存的历史指令条数OLDPWD 保存上一次所处路径三、测试PATH四、测试HOME和USER五、getenv 通过系统调用获取环境变量六、命令行参数指令的原型打印命令行参数表使用命令行第三个参数获取环境变量,打印环境变量表八、命令分为常规命令和内建命令内建命令的引出模拟内建命令九、通过第三方变量environ获取环境变量
2025-05-25 12:03:53
1948
61
原创 【c++】二叉搜索树的模拟实现——由浅入深2.4w字详细讲解(key结构的非递归,key结构的递归,key_value结构的递归)
一、概念讲解二、key结构非递归的模拟实现铺垫插入函数中序遍历函数查找函数删除函数测试三、key结构的递归的模拟实现铺垫插入函数查找函数删除函数测试四、key结构的默认成员函数拷贝构造函数赋值运算符重载函数析构函数测试五、key模型和key_value模型的二叉搜索树的应用key模型的二叉搜索树的应用key_value模型的二叉搜索树的应用六、key_value结构的递归的模拟实现铺垫拷贝构造函数赋值运算符重载函数析构函数不需要修改中序遍历函数不需要修改
2025-05-21 22:51:41
1347
44
原创 【linux】linux进程概念(三)(进程状态,僵尸进程,孤儿进程,进程优先级)
一、操作系统学科上的进程状态运行状态阻塞状态挂起状态二、linux中对应的进程状态R运行状态S睡眠状态D磁盘休眠状态T停止状态三、僵尸进程(Z僵尸状态)四、孤儿进程查看1号进程五、批量化操作六、进程优先级基本概念如何调整优先级PRI和NI具体调整优先级使用nice和renice使用top
2025-05-19 12:24:44
1503
28
原创 【linux】linux进程概念(二)(fork的介绍与使用)
一、通过系统调用创建进程——fork初识fork的介绍观察代码运行结果1观察代码运行结果2通过系统调用getpid和getppid获取进程标识符为什么fork要给子进程返回0,给父进程返回子进程的pid?fork函数做了什么?一个函数如何做到返回两次的?二、bash的子进程
2025-05-17 21:11:28
1372
39
原创 【c++】面向对象三大特性之——多态
一、多态的概念二、多态的定义及实现多态的构成条件虚函数虚函数的重写虚函数的重写,两个例外协变(基类与派生类虚函数的返回值类型不同)析构函数的重写(基类与派生类的析构函数的函数名不同)为什么要完成析构函数的重写?析构函数虚函数的进行重写的原理c++11 override和finaloverridefinal如何禁掉类的继承c++98做法要被继承的类的构造函数私有化优化方案要被继承的类的析构函数私有化优化方案c++11的做法重载,重写(覆盖),重定义(隐藏)的对比三、抽
2025-05-14 12:37:29
1420
42
原创 【c++】面向对象三大特性之——继承(菱形继承详细讲解)
一、继承的概念及定义继承的概念继承定义定义格式继承方式和访问限定符继承基类访问方式的变化派生类进行公有继承派生类进行保护继承或私有继承二、基类和派生类对象的赋值转换三、继承中的作用域四、派生类的默认成员函数五、继承与友元六、继承与静态成员七、菱形继承和菱形虚拟继承单继承多继承菱形继承缓解办法解决办法菱形虚拟继承的底层
2025-05-11 11:13:54
1678
49
原创 【c++】模板进阶,模板的分离编译重点讲解
一、class和typename作为模板参数的关键字的区别二、非类型模板参数介绍使用array容器的使用array容器与c语言数组的对比三、模板的特化概念引入四、函数模板特化五、类模板特化全特化偏特化部分特化参数更进一步限制测试类模板特化的应用举例六、模板的分离编译什么是分离编译通常来讲模板为什么不能声明和定义分离怎么样模板才能进行分离编译方法一方法二七、模板的总结
2025-05-09 11:45:39
1706
53
原创 【c++】STL容器-list和vector的反向迭代器的模拟实现
一、介绍与铺垫介绍铺垫二、模拟实现泛型的反向迭代器构造函数ReverseIteratoroperator*operator->operator++operator++(int)operator- -operator- -(int)operator!=operator==三、模拟实现的list中的反向迭代器typedefrbegin和rend测试四、vector模拟实现的反向迭代器测试源代码ReverseIterator.h模拟实现的模板类中应该编写的typedef和
2025-05-08 12:02:43
1092
37
原创 【c++】STL容器-priority_queue优先级队列的使用与模拟实现,仿函数讲解(由浅入深讲解实现)
一、介绍二、模拟实现铺垫priority_queue构造函数pushpoptopemptysize测试三、仿函数/函数对象介绍仿函数自定义控制比较指针指向的对象四、改进模拟实现讲解测试五、源代码PriorityQueue.htest.cpp
2025-05-07 16:09:35
1179
44
原创 【c++】STL容器-stack和queue的使用与模拟实现(附加deque的简单讲解)
一、stack的介绍二、stack的模拟实现铺垫pushpoptopemptysize测试三、queue的介绍四、queue的模拟实现铺垫pushpopfrontbackemptysize测试五、deque的简单介绍六、为什么deque不能替代vector和list相比于vector相比于list作为stack和queue容器适配器deque的迭代器七、deque的简单使用八、stack和queue实现的源代码stack.hqueue.htest.c
2025-05-05 00:40:50
1228
44
原创 【c++】STL容器-list的模拟实现(迭代器由浅入深逐步完善2w字讲解)
一、基本框架二、模拟实现铺垫构造函数push_backiterator迭代器对应的 begin end(浅度讲解)测试const_iterator迭代器对应的begin和end测试迭代器中重载运算符->测试迭代器运算符重载- -和==的完善迭代器拷贝构造的完善测试迭代器完整版本的源代码inserterasepush_backpop_backpush_frontpop_front测试拷贝构造函数swapoperator=测试clear析构函数empty
2025-05-03 00:38:33
1119
44
原创 【c++】STL容器-list的使用
一、list的介绍二、list的使用构造函数和拷贝构造函数 list析构函数 ~list赋值运算符重载 operator=迭代器 begin end rbegin rendemptysizefrontbackassignpush_frontpop_frontpush_backpop_backinserteraseswapclearresizereversesortmergeuniqueremovesplice
2025-04-29 14:45:13
1282
35
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人