- 博客(16)
- 收藏
- 关注
原创 自制简易SHELL
在这个环节中,我们调用了getenv来获取环境变量USER和PWD。因为debian版本的环境变量中没有hostname环境变量,我们调用gethostname函数来获取hostname。
2025-08-04 12:15:08
228
3
原创 Linux进程控制
在Linux操作系统中,fork是一个非常重要的函数,它从已经存在的进程中创建一个新的进程,该新进程是原进程的子进程,原进程是父进程。进程调用fork,当控制转移到内核中的fork代码后,内核会做:1.分配内存块和内核数据结构给子进程2.将父进程部分数据结构内容拷贝至子进程3.添加子进程到系统进程列表中4.fork返回,开始调度器调度当一个进程调用fork之后,就有两个二进制代码相同的进程。而且它们都运行到相同的地方。但每个进程都将可以 开始它们自己的旅程,看如下程序。
2025-07-29 12:49:31
702
4
原创 C++的类型转换
在C语言中,如果赋值运算符左右两侧类型不同,或者形参与实参类型不匹配,或者返回值类型与 接收返回值类型不一致时,就需要发生类型转化,C语言中总共有两种形式的类型转换:隐式类型 转换和显式类型转换。1. 隐式类型转化:编译器在编译阶段自动进行,能转就转,不能转就编译失败2. 显式类型转化:需要用户自己处理。
2025-07-16 12:05:25
785
1
原创 C++11之智能指针
为什么C++需要智能指针,我们new出来的资源用delete及时释放不就好了吗?为什么要去研究智能指针这种东西,当你看完下面的例子你就能有所感受了。为什么我们明明写了delete p1,但是在第二种情况下还是发生了内存泄漏呢?这是因为异常会改变执行流,这种不当的设计就会导致内存泄漏。当然我们可以对上面的代码进行些许更改,捕获异常释放管理的资源然后再将异常向外抛出,这样就不会内存泄漏了。尽管上述代码不太美观,但还是能处理以上的问题,但如果是像下面这样,我们就不太好处理了。
2025-07-11 18:41:37
813
2
原创 AVL树概念知识及其实现思路
我们实现的是KV模型的AVL树,像二叉搜索树一样我们需要定义左右指针方便我们指向左右子树,此外我们还需要一个parent指针方便我们后续进行翻转操作和一个bf(balance factor)变量记录左右子树的高度差,从而判断哪一个节点出现了问题,需要我们进行调整。最后,我们需要编写一个构造函数来方便我们后续完成新节点的创建工作。int _bf;
2025-02-01 19:44:22
906
2
原创 Linux权限
1.超级用户(root):拥有最高权限,可以再Linux系统下做任何事情,不受限制。2.普通用户(user):在Linux系统下做有限的事情值得注意的是普通用户和超级用户的命令提示符是不一样的,普通用户为”$“,而超级用户为”#“。在命令行使用whoami可以查看当前用户身份,同时可以使用su来从普通用户切换为超级用户(也可以su 用户名的方式切到普通用户,此时不需要密码),ctrl+d可以退回普通用户。普通用户之间的su需要输入对应账户的密码。以上说明了超级用户在用户切换上不受权限约束。
2024-09-09 19:18:06
877
1
原创 栈和队列基础知识和实现
首先我们需要定义一个结构体并将其命名为栈,我们需要从栈顶插入元素并且还要知道该栈的容积以方便后面空间不够完成扩容(如果我们一次开辟较多的空间就浪费了)。int top;}Stack;我们需要定义一个结构体QueueNode来让一个队列元素链接到下一个队列元素。同时我们定义一个Queue来包含一个队头和队尾来方便我们插入和删除。}QNode;int size;}Queue;
2024-09-04 21:50:26
1486
1
原创 二叉树基础知识和代码实现
节点:包含一个数据元素及若干指向子树分支的信息。节点的度:一个节点拥有子树的数目称为节点的度。叶子节点:也称为终端节点,没有子树的节点或者度为零的节点。分支节点:也称为非终端节点,度不为零的节点称为非终端节点。树的度:树中所有节点的度的最大值。节点的层次:从根开始定义起,根为第1层,根的子节点为第2层,以此类推。树的深度(高度):树中所有节点的层次最大值称为树的深度。父节点:若一个节点含有子节点,则这个节点称为其子节点的父节点。子节点:一个节点含有的子树的根节点称为该节点的子节点。
2024-08-21 23:47:16
826
4
原创 快速排序之三路递归
快速排序在针对有大量重复数据的情况,时间效率不是非常理想,时间复杂度甚至可以接近N^2这个量级,因此就出现了三路递归这种优化。
2024-08-16 12:46:05
352
2
原创 常见的排序算法介绍(思路+代码+讲解时间复杂度+稳定性+一些可能出现的小错误小细节)
排序:排序是计算机内经常进行的一种操作,其目的是将一组“无序”的记录序列调整为“有序”的记录序列。稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次 序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排 序算法是稳定的;否则称为不稳定的。常见的排序分类。
2024-08-14 19:27:31
1724
10
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人