- 博客(50)
- 收藏
- 关注
原创 【知识讲解】 Linux动静态链接认识
Linux下对于动静态链接的过程的了解是非常重要的,接下来来跟随小编的视角来看看吧。let's go!!!!!!!!Part1. ELF 各段基础认知我们使用可以读取ELF 文件各个段的信息。ELF 将程序信息划分到不同的 section(段)中:段名作用.text 代码段存放编译后的机器指令(函数代码).data 数据段已经初始化的全局变量,例如 int a = 10;.bss 未初始化全局变量段,例如 int a;。
2026-10-11 00:48:19
292
11
原创 【知识讲解】 Linux之动静态库的了解
Linux下对于动静态库的认识是非常重要的,接下来来跟随小编的视角来看看吧。let's go!!!!!!!!Part1. 库的意义在工程开发中,我们会把可复用的功能封装成库,不需要每次都重新编译源码。• 源码不需要对外交付,只需要交付头文件(.h,用于给用户声明函数) +库文件(.a / .so,存放编译好的机器指令)•多个项目可以复用同一套库,大幅减少重复编译的成本• 版本迭代时,只需要更新库文件,业务代码无需改动。
2026-10-11 00:48:05
128
4
原创 【知识讲解】 Linux文件系统的深入认识
Linux下一切皆文件,对于文件的认识是非常重要的,接下来来跟随小编的视角来看看吧。let's go!!!!!!!!Part1. 分区与文件系统基础概念一块物理磁盘可以划分多个分区,例如 300G、300G、200G。不同分区可以使用不同的文件系统,一个分区可以格式化为 Ext4,另一个分区可以是 XFS。分区是磁盘的空间划分;文件系统是写在分区内部的空间管理规则。当执行 mkfs.ext4 格式化分区,操作系统会把整个分区切分成大量块组(Block Group),每个块组内部结构完全相同。
2026-10-04 16:40:45
874
28
原创 【知识讲解】 Linux磁盘与文件系统认识
Linux下一切皆文件,对于文件与储存文件的磁盘的认识是非常重要的,接下来来跟随小编的视角来看看吧。let's go!!!!!!!!
2026-10-04 14:07:33
592
7
原创 【知识讲解】 Linux文件系统底层认识
Linux下一切皆文件,对于文件底层的认识是非常重要的,接下来来跟随小编的视角来看看吧。let's go!!!!!!!!
2026-09-27 15:15:03
331
22
原创 【知识讲解】 Linux文件系统相关接口认识
Linux下一切皆文件,认识文件系统无疑是非常重要的,接下来来跟随小编的视角来看看吧。let's go!!!!!!!!
2026-09-27 14:09:04
460
11
原创 【项目实现】 C++ vector实现(空间配置器+异常处理)
最近在复习C++,复习的方式就是实现STL,结合后面异常的知识,接下来来跟随小编的视角来看看吧。let's go!!!!!!!!Part1. 整体架构概述Part1.1 核心成员变量手写Vector完全对标STL原生实现,核心依靠三个指针管控内存:_start:指向容器内存起始位置_end:指向有效元素末尾的下一位,用于记录当前元素个数_end_of_storage:指向总内存容量末尾的下一位,用于记录内存总大小三者的关系直接决定了Vector的两大核心属性:除此之外,保留。
2026-09-20 22:23:34
785
60
原创 【项目实现】 Linux自定义shell实现
前面学了这么多知识,我们可以写一个简易的自定义myshell来复习一波,接下来来跟随小编的视角来看看吧。let's go!!!!!!!!Part1. Shell 核心原理前置知识Shell 本质就是运行在用户态的命令行解释程序,它的核心工作流程固定:打印提示符,读取用户输入一行命令;解析命令字符串,切割成 argv 参数数组;识别特殊语法:重定向> >> <;识别别名 alias,替换原始命令;
2026-09-20 21:24:07
312
52
原创 【知识讲解】 Linux程序替换相关接口讲解
Linux系统中,我们可以进行程序的替换,对于他的理解是非常重要的,接下来来跟随小编的视角来看看吧。let's go!!!!!!!!在 Linux 中,fork() 只能创建一个和父进程代码相同的子进程。如果想让子进程去运行另一个全新的程序,就需要使用 exec 系列函数。exec 的作用不是创建新进程,而是:把当前进程的代码段、数据段、堆、栈替换成新程序,让这个进程转而运行另一个程序。
2026-09-13 16:19:52
519
56
原创 【知识讲解】 Linux进程的回收相关接口了解
Linux系统中,进程的回收就相当于C语言的free,为了避免资源的浪费,对于他的理解是非常重要的,接下来来跟随小编的视角来看看吧。let's go!!!!!!!!
2026-09-13 15:46:17
556
50
原创 【知识讲解】 Linux进程认识及深度理解
Linux系统中,执行任务的基本是进程,对于他的理解是非常重要的,接下来来跟随小编的视角来看看吧。let's go!!!!!!!!1. fork失败两大原因:系统进程数上限、内存不足。shell内置命令不创建子进程。2. 进程退出分正常退出(return/exit)、信号异常崩溃。退出码保存在内核task_struct。3. 僵尸进程:子进程退出,父进程没有wait回收,残留task_struct。4. wait:阻塞等待任意子进程;waitpid可以指定子进程,支持WNOHANG非阻塞轮询。
2026-09-06 23:59:04
417
50
原创 【知识讲解】 Linux虚拟地址空间认识
在Linux操作系统中,认识虚拟地址空间是认识Linux内存管理非常重要的一部分,接下来来跟随小编的视角来看看吧。let's go!!!!!!!!Part1. 虚拟地址空间基础一个进程对应一份虚拟地址空间。• 32位机器:虚拟地址总空间 2^{32},大小4GB。0~3G;3G~4G。◦ 注意:内核空间,本质也是拿用户空间的虚拟地址去访问。• 64位机器:拥有巨大的虚拟地址范围。对于一个变量:1. 变量拥有物理地址;同时,在所属进程的虚拟地址空间内,拥有虚拟地址。2. 每个进程。
2026-09-06 21:23:38
1073
49
原创 【知识讲解】 Linux环境变量的认识与使用
在Linux中环境变量是非常重要的存在,接下来来跟随小编的视角来理解一下吧。let's go!!!!!!!!Part1. main函数命令行参数i < argc;//argc:argument count,命令行参数个数。//argv:argument vector,字符串数组,存放每一个命令参数。示例:./exe a b• argc = 3• argv[0] = "./exe",永远是程序本身名字• argv[3] = NULL,数组末尾以NULL结尾。
2026-09-06 17:53:51
524
55
原创 【知识讲解】 Linux孤儿进程与进程优先级切换调度
这篇文章我们来认识一下孤儿进程与进程优先级切换调度,接下来来跟随小编的视角来学习一下吧let's go!!!!!!!!Part1. 孤儿进程父进程先于子进程死亡子进程就变成孤儿进程。1.孤儿进程会被pid=1的init/systemd进程领养,成为init的子进程。2. 为什么需要领养?如果不领养,当子进程退出之后,没有父进程回收,孤儿进程就会变成僵尸进程,持续占用PCB资源。3. 领养之后,init进程作为父进程,会自动回收孤儿进程退出后的资源。4. 孤儿进程会自动变为后台进程。
2026-08-30 13:07:46
765
70
原创 【知识讲解】 Linux进程的状态及其之间的转化
这篇文章我们来进一步认识进程的状态以及之间的转化,接下来来跟随小编的视角来认识一下进程的概念吧。let's go!!!!!!!!Part1. 进程状态进程状态是PCB中的属性,用来表征进程当前的情况,状态之间可以相互转化。Part1.1.运行状态只要进程在调度队列中,就属于运行状态。不一定正在CPU上跑,只要被放进CPU调度队列,就标记为R运行态。Part1.2. 阻塞状态进程等待某种外部条件/硬件资源就绪,例如键盘输入、磁盘IO、网卡数据。scanf / cin等待用户输入。
2026-08-30 01:23:56
732
49
原创 【知识讲解】 Linux进程的认识与创建
在Linux的学习中认识进程是至关重要的一环,所以接下来来跟随小编的视角来认识一下进程的概念吧。let's go!!!!!!!!Part1. 进程概念正在运行的程序磁盘上存放的是可执行程序,当程序被加载到内存之后,就变成进程。操作系统中会同时运行大量进程操作系统维护一个结构体,存放进程全部信息:代码地址、数据地址、pid等。:Linux下的进程控制块。PCB + 代码和数据= 进程PCB(task_struct)是内核用来管理进程的结构体,PCB是对进程的描述,进程真正的代码、数据在内存当中。
2026-08-30 00:00:27
363
52
原创 【项目分享-知识讲解】 Linux第一个项目--进度条的实现与解析
进度条相信大家都不陌生,在下载资源的时候经常会见到,所以我们也来模拟实现一下进度条的表现吧。let's go!!!!!!!!Part1. 效果展示Part2. 效果分析<1>:模拟实现下载完后的流程,也就是显示下载完毕和下载了多少资源,也可以显示速度。<2>:随着下载的进行,显示符号,表示下载进度。<3>:显示下载了多少资源,以百分比的形式呈现。<4>: 用一根斜杠不断旋转表示下载的不断进行。也就是我们要用代码来实现各个模块。Part3. 代码解析。
2026-08-23 17:56:09
866
62
原创 【Linux】 开发工具(Makefile、git、cgdb)解析与对于操作系统的基础认识
对于开发工具的熟练使用和Linux操作系统的理解是非常重要的,来跟随小编的视角来看看吧。let's go!!!!!!!!Part1.1. 基础语法目标: 依赖命令示例:逻辑:如果code.c修改过,则执行gcc编译,生成可执行文件code。clean:rm -f code<1>.PHONY声明这是伪目标直接执行命令。<2> 执行清理:make cleanPart1.3. Make增量编译原理make依靠文件修改时间戳判断要不要执行规则:<1>
2026-08-22 01:53:00
1168
58
原创 【Linux】 编译与动静态库相关
在Linux中对于编译以及动静态库的理解是非常重要的,因此来跟随小编的视角来看看吧。let's go!!!!!!!!Part1. GCC四个编译阶段Part1.1. 预处理对x.c执行预处理,输出预处理结果保存到y.i。头文件展开宏替换条件编译处理删除注释。Part1.2. 编译将C代码翻译成汇编代码,汇编结果保存到y.s。Part1.3. 汇编汇编完成,生成.o目标文件,内容为二进制机器指令,但还不能直接运行,缺少链接步骤。先生成.o目标文件,再通过链接生成可执行程序exe。。
2026-08-22 00:45:45
395
47
原创 【知识讲解】 Linux中vim编辑器的学习与使用
vim编辑器的使用是非常重要的,来跟随小编的视角来看看吧。let's go!!!!!!!!Part1. Linux软件安装方式Linux软件主要三类安装方式<1>源码安装:下载源代码本地编译<2>软件包安装:deb/rpm包,手动安装<3>包管理器(apt):自动处理依赖,从软件源服务器批量下载安装,把文件部署到系统各个目录。系统目录分工:有的存放可执行程序,有的存放库文件,各自有默认权限。•系统级安装:放到系统公共目录,所有用户都可以使用。•用户级安装。
2026-08-16 01:42:57
752
52
原创 【知识讲解】 Linux权限相关知识讲解
在Linux中对于权限的理解是非常重要的,因此来跟随小编的视角来看看吧。let's go!!!!!!!!Part1. Shell、用户与内核交互Part1.1. Shell介绍用户 → shell → 操作系统内核>>Shell接收用户输入指令,把请求交给内核;内核完成处理,再将结果返回Shell,展示给用户。Shell的两个核心作用:<1>给人类提供便捷的操作交互接口;<2>隔离保护内核,用户不能直接操作内核,全部请求经过Shell转发。Shell只是外层交互程序。
2026-08-15 00:06:14
732
47
原创 【知识讲解】 Linux文件、命令与系统
Linux相关知识非常的繁杂,想要系统的了解它们还是比较吃力的,接下来跟队小编的视角来理解一下吧。let's go!!!!!!!!Part1. 文件操作命令<1> mv 移动/重命名mv x y1.如果y是已存在目录:把x移动进y目录内2.如果y不存在:将x重命名为y<2> cat 输出文件全部内容cat -n x# 显示并且打印行号tac x# 反向打印文件,倒序输出<3> history 查看历史命令history系统会记录你执行过的全部终端命令。
2026-08-13 23:27:53
2554
64
原创 【知识讲解】 Linux基础指令的了解
Linux相关知识非常庞大,要想掌握他们,我们可以先从基础的指令开始了解,我们来看看吧。let's go!!!!!!!!Part1. cp 拷贝命令<1>cp x y:把文件 x 拷贝到 y,如果 y 不存在则自动创建;支持绝对路径、相对路径。<2>cp -r x y:拷贝目录必须加 -r(递归拷贝),因为目录是树形递归结构。<3>cp -f:强制覆盖已存在的目标文件,不弹出询问确认。Part2. 编辑器nano、vim。
2026-08-09 14:14:28
1787
60
原创 【知识讲解】 Linux漫漫长路的起始--基础命令的了解
cp mycmd /usr/bin/,把自制程序放到系统命令目录,全局任意目录都能直接输入名字运行(相当于自制系统命令)这篇文章我们认识到了Linux命令相关知识,接下来,小编还会带来更多有关的知识,敬请期待~从根目录 / 开始写完整路径,配置文件、脚本里优先使用,保证路径永远不会出错。临时生效,系统重启/重新登录后别名会消失,想要永久生效需要写入配置文件。Linux 路径分隔符是 /,Windows 是 \,不要混用。
2026-08-09 02:11:57
410
49
原创 【知识讲解】 让指针拥有“自我意识”?--C++智能指针相关内容讲解
原始shared_ptr全部析构,控制块不会立刻销毁,weak_ptr仍然可以读取计数,判断资源是否存活。需要自定义释放逻辑,只能使用shared_ptr<T>(rawptr, deleter)形式。A、B互相持有对方shared_ptr,双方引用计数永远无法减至0,内存永久泄漏。函数参数接收shared_ptr<T>,直接传入裸指针会发生临时对象构造。额外分配控制块,存在内存开销,不要滥用。
2026-08-03 01:55:32
327
65
原创 【知识讲解】 究查错误的源头--C++异常机制讲解
正如C语言中有perror等错误处理函数一样,C++也有其独特的错误处理函数,那就是C++的异常处理机制,我们来看看吧。let's go!!!!!!!!
2026-08-02 15:52:41
484
57
原创 【知识讲解】 用一行代码接纳千姿百态的类型--C++11可变模板参数的使用
C++11中可变模板参数和lambda表达式是非常重要的知识,在项目的实现和竞赛中都有所体现,我们来了解一下吧。let's go!!!!!!!!// Args 代表一包类型,Args...代表展开所有类型// ...//class ...Args:模板参数包//Args&& ...args:函数参数包编译器根据传入实参数量、类型,实例化对应函数。这篇文章我们认识到了可变模板参数和lambda表达式相关知识,接下来,小编还会带来更多关于C++11的知识,敬请期待~春风得意马蹄疾,一日看尽长安花!
2026-07-30 01:40:24
591
64
原创 【知识讲解】 C语言函数指针的摇身一变--C++11包装器的介绍与其在算法题目中的使用
C++11包装器,lambda表达式以及bind的知识是非常重要的。在项目实践,算法题的实现中都有所体现,我们来看看吧。let's go!!!!!!!!
2026-07-30 01:39:20
598
63
原创 【知识讲解】 C++11相关知识点讲解 深究C++性能强大背后的秘密
这篇文章我们认识到了C++11相关知识,接下来,小编还会带来更多关于C++11的知识,敬请期待~春风得意马蹄疾,一日看尽长安花!
2026-07-24 02:56:40
748
60
原创 【知识讲解】 C++11相关知识点讲解 让你代码的性能更上一层楼
C++11是现代 C++ 的分水岭,引入大量语法与语义优化,其中统一列表初始化、右值引用、移动语义三块是重中之重,我们来看看吧。let's go!!!!!!!!这篇文章我们认识到了C++11相关知识,接下来,小编还会带来更多关于C++11的知识,敬请期待~春风得意马蹄疾,一日看尽长安花!
2026-07-24 02:14:32
263
44
原创 【知识讲解】 链式哈希表的实现与unordered_map和unordered_set的封装
【知识讲解】 哈希表的介绍与实现-CSDN博客在上篇文章我们讲述了哈希表的开放寻址法,也谈到了他的一些缺点,今天我们来讲一讲链式哈希表的实现,他相比较于开放寻址法有着许多的优势,我们来看看吧。let's go!!!!!!!!这篇文章我们认识到了unordered_map和unordered_set的封装,接下来,小编还会带来C++11的知识,敬请期待~春风得意马蹄疾,一日看尽长安花!
2026-07-20 13:11:13
507
51
原创 【知识讲解】 哈希表的介绍与实现
哈希表无论是在应用还是在算法中都有非常多的体现,接下来,跟随小编的视角来了解一下哈希表和他的实现吧。let's go!!!!!!!!<1>不同的Key经过哈希计算后,映射到同一个数组下标,该现象称为哈希冲突。<2> 示例:3\%200 与 203\%200 结果均为3,两个键会争夺同一个位置。:存储键值对pair<K,V>,附带节点状态标识;:内部维护HashDate类型数组,记录当前有效数据个数_n。这篇文章我们认识到了哈希表的实现,接下来,小编还会带来哈希表的的更多知识,敬请期待~
2026-07-14 19:33:07
711
60
原创 【知识讲解】 map和set的模拟实现
了解STL容器最好的方法就是亲自去实现它,接下来跟随小编的视角来看看在实现map和set容器中会遇到的问题与困难吧。let's go!!!!!!!!!这篇文章我们认识到了map和set的实现,接下来,小编会带来哈希表的相关知识,敬请期待~春风得意马蹄疾,一日看尽长安花!
2026-07-13 01:53:39
433
56
原创 【知识讲解】 红黑树的删除讲解
之前我们讲了关于红黑树的插入,判断操作。接下来,我们来看看红黑树最复杂的接口--删除吧。let's go!!!!!!!!!这篇文章我们认识到了红黑树删除的实现,接下来,小编会带来map和set的模拟实现,敬请期待~春风得意马蹄疾,一日看尽长安花!
2026-07-11 22:06:24
518
52
原创 【知识讲解】 红黑树的基本接口讲解(插入、判断等等)
红黑树作为经典的数据结构之一,他的接口比较复杂,接下来跟随小编的视角来剖析一下它的全部吧。let's go!!!!!!!!!红黑树插入的关键就在于维护规则,利用好两个推论,和认清楚会发生什么情况,适当调整,这里的u的状态就像AVL树的平衡因子,靠这个区分情况解决问题。这篇文章我们认识到了红黑树插入的实现,接下来,小编会带来红黑树删除的讲解,敬请期待~春风得意马蹄疾,一日看尽长安花!
2026-07-11 00:58:10
471
52
原创 【知识讲解】 AVL树从基本成员的介绍到核心接口的实现(插入、判断、删除等等)
【知识讲解】 二叉搜索树的相关知识与实现-CSDN博客AVL树作为经典的数据结构之一,他的有些接口会稍显复杂,接下来跟随小编的视角来剖析一下它的全部吧。let's go!!!!!!!!!通过上面的一系列过程,其实可以认识到一个结论,那就是整个调整的过程就是依靠平衡因子来实现的,建立模型是为了具象化平衡因子带来的影响,以及在调整后高度是否改变从而来影响是否继续向上调整。所以平衡因子是全局的关键。这篇文章我们认识到了AVL树的实现,接下来,小编也会带来更复杂的红黑树的讲解,敬请期待~
2026-07-06 19:45:32
370
47
原创 【知识讲解】 C++容器map+AVL树的介绍与使用
map作为C++很重要的容器,同时AVL树也是经典的数据结构,了解他们的构成是必要的,接下来,跟随小编的视角来看看这两个的介绍和基本的使用吧。let's go!!!!!!!!!任意节点左右子树高度差绝对值 ≤ 1平衡因子 = 右子树高度 - 左子树高度-1、0、1。
2026-07-03 15:35:18
415
53
原创 【知识讲解】 C++容器map和set的介绍以及使用
map和set作为C++很重要的容器,了解他们是很必要的。接下来,跟随小编的视角来看看这两个容器的介绍和基本的使用吧。let's go!!!!!!!!!<1> Set的模板参数为这三个元素:template(存放元素的类型、比较器(仿函数)、空间配置器)O(logN)(高度次)双向迭代器,支持++、--。不支持直接修改元素值,修改会破坏二叉搜索树的有序性。如果要修改,只能先删除旧值,再插入新值。(同set)。其中他的两个成员,first:对应键key,const 不可修改。second。
2026-07-01 02:20:21
364
46
原创 【知识讲解】 二叉搜索树的相关知识与实现
二叉搜索树作为二叉树的特化升级版,在查找上有着很大的优势,但同时也有着不小的问题,接下来让我们来看看吧。let's go!!!!!!!!!规则<1>:节点左子树所有节点值 ≤ 当前根节点值。节点右子树所有节点值 ≥ 当前根节点值。左右子树本身也必须是二叉搜索树。二叉搜索树作为未来学习AVL数、红黑树的基石,了解它的删除、插入等的逻辑还是非常有必要的。春风得意马蹄疾,一日看尽长安花!
2026-06-27 23:00:00
639
62
原创 【题目讲解】 算法系列之定长类滑动窗口解析(上)
滑动窗口作为经典的算法之一,他可以有效地简化遍历这个操作的时间复杂度。接下来,跟随小编的步伐来看看这个算法具体使用吧。let's go!!!!!!!!!滑动窗口本质上还是一个工具,主要就是帮我们解决在连续的条件下直接遍历的时间复杂度过高的场景。它可以大大简化时间复杂度,用一句话总结就是拆东墙补西墙”,保留之前花费时间得来的成果,改变需要改变的。int main();//定义变量;//初始化变量(将窗口展开);//看条件是否初始化全局类型的值while(){;//去除左边;//新增右边;
2026-06-25 22:13:21
1137
62
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅