- 博客(19)
- 收藏
- 关注
原创 Linux进程控制
fork之后,子进程是没有代码和数据的,他和父进程共享代码和数据。这运用到了写时拷贝,如果数据值是一样的,那我就不做处理,如果数据不一样,那我子进程要想办法深拷贝一份数据,当子进程的值覆盖上去,这就完成了父子进程数据各自一份。对于父进程来说,它可能有很多子进程,所以要记录它不同的子进程,就给父进程返回子进程的pid,而对于子进程来说,它的父进程一定唯一,所以返回0.首先,fork创建完成子进程,这仅仅是一个开始,创建完成后,系统的其他进程,还有当前的父进程和子进程,是要被CPU调度执行的。
2024-07-23 20:52:22
834
原创 操作系统理解与Linux进程概念
为了保护操作系统和方便用户使用操作系统,操作系统不允许用户直接接触它管理的软硬件,并对位提供系统调用接口,用户只需要告诉操作系统要进行什么操作,操作系统对用户发出的指令进行操作,只把结果返回给用户,不会让用户看到具体实现,这样就既保护了自己,也满足了用户的需求,但通常系统调用接口是用户很难看懂的,需要用户对操作系统有所了解,在这种背景下,由产生了shell外壳和库函数等等,用户只需要在他们上面操作就行,他们会把用户的需求转化为调用系统接口,然后把结果反馈给用户。该信号将使进程处于停止状态。
2024-07-22 22:28:43
614
原创 Linux环境基础开发工具
(last line mode):文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。在命令模式下,shift+: 即可进入该模式。因为当文件属性或内容修改了,文件一定被访问了,所以linux系统为了避免access时间不断修改,访问多次或一定时间才会修改access时间。控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode。还有,linux下默认生成动态链接属性的可执行程序,如果需要生成静态链接的,可以加上-static。
2024-07-19 20:13:10
998
原创 常用比较排序和计数排序(总结)
稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排序算法是稳定的;第一次需要将一个数据插入1个已经排好序的数据,最多需要比较1次,最少也是一次,第二次需要将一个数据插入前两个已经排好序的数据,最多需要比较两次,最少比较一次,所以,以此类推,第n次需要把一个数据插入前n - 1个有序数据,最多需要比较n -1次,最少一次。
2024-07-06 18:22:01
963
原创 二叉树层序遍历及完全二叉树问题问题
思路:和遍历二叉树相似,也是用队列解决,先把树根入队,然后标记队头并把队头删除,把队头的左右结点依次入队列,但是当队列为空的时候,停止操作,检查队列剩余结点,如果结点都是空是则是完全二叉树,否则不是完全二叉树。建立一个队列,把树根入队列,然后把队头元素打印并删掉,然后把它的左右结点依次入队,如果结点为空的话就不入队,依次这样操作,当队列为空时,就完成层序遍历了。然后把队头A删掉,把队头的左右BC结点依次入队。然后把队头D删掉,它的左右结点为空,不用入队。然后把队头E删掉,它的左右结点为空,不用入队。
2024-06-05 18:07:00
196
原创 c++模板
类模板实例化与函数模板实例化不同,类模板实例化需要在类模板名字后跟,然后将实例化的类型放在中即可,类模板名字不是真正的类,而实例化的结果才是真正的类。调用模板函数时,不是调用模板本身,其实是调用它生成的模板函数,所以不同参数类型调用的函数的地址不同,相同参数类型调用函数地址相同。如果非模板函数和模板函数可以实现同一功能,编译器会优先使用非模板函数,但是使用显示调用时候,就只能使用模板函数了。实例化时候用声明实例化类型,如果类型不匹配,编译器会尝试进行隐式转化,如果转化不成功编译器会报错。
2024-05-31 11:42:30
386
原创 循环队列实现
队列概念:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表队列具有先进出的特点。入队列:进行插入操作的一端称为队尾出队列:进行删除操作的一端称为队头而循环队列是指队头和队尾相连的队列,而且队列的长度一定,满了就无法入队了。看到这个循环队列图例,你可以首先想到的是用链表实现,但是由于循环队列的长度一定,所以其实使用顺序表更加方便。
2024-05-29 16:01:53
292
原创 大数的运算——c语言版
/因为c语言不支持变长数组(c99除外),所以我们使用malloc在堆区开辟一个数组空间来存储相加的结果,因为两个数字相加又可能进位,所以数组的大小因为他们位数的最大值加一。//结果数组索引标记,因为两个数相加可能进位也可能不进位,所以不能确定结果的位数,即不知道最大索引的大小,所以我们可以先倒着存,然后再将数组转置这很容易实现。//如果数组的长度没有数的位数多,那么访问num[i]可能越界访问,为了避免这种情况,可以先定义一个变量为0,判断索引合法后才能赋值,不合法则为原来定义的1.
2024-03-25 22:59:01
943
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人