- 博客(15)
- 收藏
- 关注
原创 Linux系统:进程状态与僵尸、孤儿进程
在这里我们称当进程处于运行队列中时进程就处于运行状态,也就是说当进程处于运行队列等待被调度和占用CPU都可以称为运行状态。即:运行状态=进程占用CPU+进程处于运行队列在操作系统中,阻塞状态是进程生命周期中的一个重要阶段,表示进程因等待某种资源(如I/O操作、锁、信号等)而暂时无法执行,此时即使CPU空闲,进程也无法运行,因为所需资源尚未就绪。操作系统会保存其上下文(如寄存器状态),待事件发生后恢复执行。
2025-03-30 17:07:54
870
12
原创 数据结构:探秘AVL树
AVL树的实现引入一个平衡因子的概念(balance factor)的概念,每个节点都有一个平衡因子,任何节点的平衡因子等于右子树高度减去左子树高度,也就是说任何节点的平衡因子等于0/1/-1,AVL树并不是必须要平衡因子,但是有了平衡因子可以更方便我们去进行观察和控制树是否平衡,就像一个风向标一样。说明更新之前parent节点平衡因子为1或-1也就是左右子树一边高一边低,节点插入在低的一边,插入后左右平衡不会影响上一级节点的平衡因子。它的左右子树都是AVL树,且左右子树的高度差的绝对值不超过1。
2025-03-29 19:41:29
701
11
原创 Linux系统之美:环境变量的概念以及基本操作
我们以往的Linux编程经验告诉我们,我们在对一段代码编译形成可执行文件后执行可执行文件必须声明可执行文件所在的路径,路径可以是相对路径也可以是绝对路径:而如果我们不加上./也就是不加上可执行文件的完整路径,系统就会出现以下报错:表示命令行解释器(bash)无法找到该命令的可执行文件和该命令的实现方法。系统命令的实现与上述别无二致,其主要步骤如下:a、开发者使用编程语言(如C、C++、Shell等)编写命令的源代码。源代码包含了实现命令功能的逻辑和算法。
2025-03-22 10:16:44
1216
15
原创 Linux系统之美:进程初识
Bash进程是当用户登录到Linux系统并启动Bash Shell时创建的一个进程。它是用户与系统交互的主要界面,允许用户通过命令行输入命令来执行各种任务。
2025-03-15 10:12:01
1089
13
原创 逻辑的诗:类与对象(下)
内部类是一个独立的类,跟定义在全局相比,他只是受外部类类域限制和访问限定符限制,所以外部类定义的对象中不包含内部类。内部类默认是外部类的友元类。
2024-12-24 16:28:56
1115
16
原创 C++的诗行:类与对象(中)
默认成员函数就是用户没有显式实现,编译器会自动生成的成员函数称为默认成员函数。⼀个类,我们不写的情况下编译器会默认生成以下6个默认成员函数,需要注意的是这6个中最重要的是前4个,最后的取地址重载不重要我们稍微了解一下即可。默认成员函数很重要,也比较复杂,我们要从两个方面去学习:构造函数是特殊的成员函数,需要注意的是,构造函数虽然名称叫构造,但是构造函数的主要任务并不是开空间创建对象(我们常使用的局部对象是栈帧创建时,空间就开好了)而是对象实例化时初始化对象。构造函数的本质是要替代我们以前Stack和Date
2024-12-18 10:23:58
892
13
原创 linux项目自动化构建工具-make/makefile
这里需要注意的是:要执行clean直接make是不行的,make默认会执行makefile文件中的第一条指令也就是编译工作,要执行clean我们需要写 make clean 指定。此时我们进行make,就会自动执行四条指令生成我们指定的四个文件(day.i、day.s、day.o、day.exe)。$@ 相当于$(BIN),$^相当于$(SRC)两者分别指代的就是day和day1.c,语法不做解释。因此有了变量只要改变变量的指向我们就可以完成大量代码中相关代码的替换,提高了我们的工作效率。
2024-12-01 12:08:28
1015
3
原创 C++入门基础
C++的第一个程序,命名空间的定义与使用,C++的输入与输出,缺省参数的定义与注意事项,什么是函数重载,引用的定义与使用以及注意事项,inline函数,nullptr
2024-11-26 10:33:37
751
9
原创 类和对象(上)
class为定义类的关键字,Stack为类的名字,{ }中为类的主体,注意类定义结束时后面分号不能省略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的方法或者成员函数。为了区分成员变量,⼀般习惯上成员变量会加⼀个特殊标识,如成员变量前⾯或者后⾯加_ 或者m但这也不是强制性的,具体看要求。C++中struct 也可以定义类,C++兼容C中struct的⽤法,同时struct升级成了类,明显的变化是struct中可以定义函数,但是一般情况下我们还是推荐用class定义类。
2024-11-13 13:43:02
1073
2
原创 顺序结构二叉树——堆
树是一种非线性的数据结构,它是由有限个节点组成的一个具有层次关系的集合。把它叫做树是因为它看起来像一颗倒挂的树,也就是说他是根朝上而叶子朝下的,如图:树的相关描述:节点的度: 一个节点含有的子树的个数称为该节点的度树的度: 树的所有节点的度中最大的称为该树的度叶节点或终端节点: 度为0的节点称为叶节点非终端节点或分支节点: 度不为0的节点双亲节点或父节点: 若一个节点含有子节点,则称这个节点为其子节点的父节点或双亲节点孩子节点或子节点: 一个节点含有的子树的根节点称为该节点的子节点兄弟节点: 具有相同父
2024-10-30 17:16:55
747
3
原创 linux权限与相关指令
学习了文件掩码便给我们设置新文件(夹)的默认权限提供了思路,这样我们可以根据不同的具体需求设置不同的umask值,以满足不同的使用场景提高我们代码的灵活性与可控性,例如开发人员可能需要更宽松的权限以便于调试,而生产环境中可能需要更严格的权限以确保安全性。首先系统会判断用户是否是该文件(夹)的拥有者,若是则返回拥有者所对应的权限,若不是拥有者则判断用户是否是或在该文件(夹)的所属组,若是则返回所属组所对应的权限,若不是所属组则用户只能是其他用户,返回other的相应权限。答
2024-10-18 12:21:38
764
2
原创 C语言数组学习总结
因为数组的元素都是内置类型的,所以如果把一维数组作为数组的元素,这个数组就是二维数组,将二维数组作为数组的元素就会得到三维数组,二维数组以上的数组统称为多维数组。在C99标准之前,C语言在创建数组的时候,数组大小指定时只能用常量和常量表达式,或者在初始化数组的时候可以省略数组的大小。此时,arr就是一个变长数组,数组的大小取决于变量n的值,编译器没法事先确定,只有运行时才可确定数组的大小,这就使得。二维数组的访问也是使用下标的形式,二维数组是有行和列的,只要确定了行和列就可以唯一确定数组中的一个元素。
2024-02-10 11:27:04
1985
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人