- 博客(18)
- 收藏
- 关注
原创 进程间通信
进程间通信简称IPC(Interprocess communication),进程间通信就是在不同进程之间传播或交换信息。进程间通信⽬的• 数据传输:⼀个进程需要将它的数据发送给另⼀个进程• 资源共享:多个进程之间共享同样的资源。• 通知事件:⼀个进程需要向另⼀个或⼀组进程发送消息,通知它(它们)发⽣了某种事件 (如进 程终⽌时要通知⽗进程)。
2025-08-28 15:50:11
885
原创 Linux之进程替换
参数:第一个参数是要执行程序的路径。第二个参数是一个命令行参数表。参数:第一个参数是要执行程序的名称。第二个参数是一个命令行参数表。参数:第一个参数是要执行程序的路径。第二个参数是一个指针数组,其中每个元素都是一个指向以 null 字符结尾的字符串的指针,这些字符串是传递给要执行程序的参数。第三个参数也是一个指针数组,每个元素指向一个以 null 字符结尾的字符串,这些字符串是环境变量的值。
2025-08-27 19:45:11
642
原创 Linux之程序地址空间
在物理地址层面,这些数据的存储位置相对较为灵活,因为只要有页表所提供的映射关系,就能准确地找到对应的物理地址,从而实现数据的访问和操作。例如,操作系统的内存分配器可以将进程的代码段、数据段、堆和栈等映射到物理内存的不同区域,而进程看到的虚拟地址空间是连续的,这使得内存管理更加灵活。:虚拟地址空间允许操作系统为每个进程提供一个统一的、连续的虚拟地址空间,而不需要考虑物理内存的碎片化问题。所以可解答2.1的问题,同⼀个变量,地址相同,其实是虚拟地址相同,内容不同其实是被映射到了不同的物理地址。
2025-08-27 19:19:25
1083
原创 Linux之基础IO
我们知道,当fopen以写入的方式打开一个文件时,若该文件不存在,则会自动在当前路径创建该文件,那么这里所说的当前路径指的是什么呢?例如,在test目录下运行可执行程序ssn2,那么该可执行程序创建的log.txt文件会出现在test目录下。这里所说的“当前路径”是指“当前可执行程序所处的路径”吗?
2025-08-17 13:11:08
758
原创 Linux系统之命令行参数和环境变量
通过学习命令行参数,我们就了解了一些linux命令的本质,已知我们之前学的一些Linux指令(ls,mv等)本质就是一段程序,与上图中的./ssn类似,而我们-l -a 等等这些命令选项,究其本质,就是一个一个的字符串,可以以一定的方式传递给你ls内部的main,在ls内部实现的时候,就可以根据不同的选项,实现类似功能的不同表现形式。是系统级别的全局变量,具备不同的用途。1.环境变量的来源大部分环境变量来自系统的配置文件(如)和用户的配置文件(如~/.bashrc。
2025-08-06 10:48:33
1070
原创 Linux系统之进程的优先级,调度与切换
1)优先级范围在Linux系统中,普通用户进程的优先级范围是60到99,一共40个级别。数值越小,表示进程的优先级越高。默认情况下,进程的优先级是80。2)原因这个范围限制是为了保持系统调度的公平性,防止用户随意将进程的优先级设置得过高或过低,从而避免进程饥饿问题。(这也是为什么NI值有范围的原因,那么为什么NI值的范围为【-20,19】之间,则在下述的系统调度展开说明)防止饥饿:通过限制普通进程的优先级范围,确保系统中的每个进程都有机会获得CPU资源,避免某些进程因优先级过低而长时间无法执行。
2025-08-06 09:27:03
1057
原创 Linux系统之进程的概念
此处通过fork函数,实质上是有两个进程的:父进程与子进程,而父进程与子进程是共享一份资源的,所以实质上fork函数在父子进程中都被调用了,所以此处的两个返回值是分别在父子进程中产生的,满足一个函数函数只能返回一个返回值。注:在上述我们知道进程的执行有优先级的,所以父子进程谁先谁后执行是不确定的,此处的谁先谁后不确定是当父进程先执行到fork产生子进程后的父子进程的执行顺序不确定。在子进程中,fork 返回 0。的进程(称为父进程)的一个副本,新创建的进程称为子进程,子进程继承父进程的几乎所有资源和状态。
2025-06-17 22:56:51
599
原创 力扣刷题实战:随机链表的赋值
此题的关键在于实现random的指向,由于原链表的random指向是随机的,所以对应的复制链表直接的random的实现是较为困难的,那么是否有方法可以通过参考原链表的random指向来实现复制链表random指向?有种方法是可以通过map容器将原链表结点与复制链表的结点紧密联系起来,这样通过原链表的random指向就可知道对应复制链表的random指向的相对位置。对应结点(即原链表结点的random指向的结点的复制链表对应结点),这样就可实现复制链表random的指向。
2025-03-09 22:48:02
264
原创 力扣刷题实战:盛最多水的容器
假设左指针为left,右指针为right,左指针指向的数为x,右指针指向的数为y,固定左指针,设x<y,则容量为v=(right-left)*min(x,y)=(right-left)*x,假设右指针左移,若右指针指向的数y1>x,则v1=(right-1-left)*min(x,y1)=(right-1-left)*x,显然v1<v,若指向的y1<x,则v2=(right-1-left)*min(x,y1)=(right-1-left)*y1,v2<v,同理固定右指针,对左指针右移,也是如此。
2025-03-06 19:40:26
248
原创 力扣刷题实战:快乐数
通过阅读题目,可知对于一个正整数有两种情况,一种为最终替换为1,不断循环;一种为永远不为1,不断循环,那么针对这两种情况,循环的停止条件应该设置为什么。此题可使用快慢指针,令快指针每次走两步,慢指针每次走一步,在循环中,快慢指针一定会最终相遇,所以可设置循环的停止条件为快慢指针相等。在做此题前,我们应该了解一个概念。
2025-03-04 21:34:53
251
原创 力扣刷题实战:复写零
因为可能是后指针还未遍历的数组元素被前指针覆盖掉,所以若从后向前使用前后指针,则可避免覆盖错误,但是从后向前使用前后指针,那么应该从哪个位置开始进行从后向前的前后指针操作,针对此问题,我们可以先从前向后使用前后指针对最后一个要复写的数进行定位,找到后,则再从后向前使用前后指针,进行复写操作。1.2.在pre向前移动后,注意此处不能先cur++,要先判断是否pre到达边界,若到达边界,则找到了最后一个要复写的数的位置cur,若pre未到达边界,则再cur++,否则会找到错误的cur。2.处理一下边界问题。
2025-03-04 20:46:55
224
原创 力扣刷题实战:移动零
在中间某状态时,此时数组是被分为三块区域的,在cur之前的区域是被遍历的区域,cur之后是还未进行遍历的区域,所以在[0,pre]是非0区域,[pre+1,cur-1]是0区域,[cur,n-1]是还未遍历的区域,当cur遍历完整个数组时,此时整个数组都是是被遍历的区域,所以此时被分为了[0,pre]的非0区域,[pre+1,cur-1]的0区域。1.定义快慢指针,cur=0,pre=-1,快指针遍历数组,慢指针标记数组。移动到数组的末尾,同时保持非零元素的相对顺序。leetcode题目:移动零。
2025-03-04 18:08:20
394
原创 数据库的约束
注:若将一个表中的自增的这几行删除,再次添加数据,则自增从被删除的下一个数字开始,不会再从一开始自增,因为自增的数字被使用了,另外在自增时,若手动设置一个标识符(注意设置在自增数字之后的数字,若下述图设置1标识符,则自增是从6开始自增),则之后的自增从手动标识符开始向后自增。在子表中输入/修改关于被外键联系的列的数据时,首先会判断所操作的被外键联系的列的数据是否在父表中被联系的该列中存在,若存在,则可成功进行操作,否则报错,对于输入/修改没被外键联系的列的数据时,则无影响。
2024-10-09 22:15:47
1745
原创 表中数据的操作(二)
若表中的数据量很大时,因为mysql是客户端--服务器结构的数据库,一次全部查询一方面会占据大量的服务器资源,另一方面占据大量网络资源,从而导致当其他客户端访问服务器时,可能会导致服务器无法响应等问题发生,进而引出分页查询的方法,通过分为多次,一次控制查询一定数量的行来减少服务器压力。因为在条件查询时,先遍历每行,把每行的数据带入条件进行判断,若符合条件,则成功筛选出来放到临时表中,而在临时表中方才进行设置别名操作,所以在进行条件判断时,还未进行别名操作,所以条件判断时无法识别别名。
2024-10-05 02:39:22
1750
原创 数据库中表的创建及对表中数据的操作(一)
在数据库中储存的数据,是由一个个的数据集的形式储存的,数据储存在数据集中,而数据集就是表,所以在mysql中有多个数据库,而每个数据库中又有多个表(数据集),每个表中储存着许多数据,表中储存着数据,意味着数据要存入表中,那么什么类型的数据可存入表中?DECIMAL(M,D) 该精度比DOUBLE(M,D)更高,浮点数在电脑中是以二进制的形式储存的,所以储存的值是有一定误差的,使用DECIMAL(M,D) 可使数据更加精确。BIT(M) 储存二进制数,M表示所要储存的位数,M的范围为1--64。
2024-10-04 23:08:00
1796
1
原创 数据库中库的创建
已知,在mysql中有多个数据库,而数据库的功能是用于组织/保存/管理数据的,所以通过use关键字可以指定所要使用的库,进而对指定的库进行操作,数据是在库中储存的,是储存在库中的表中的,所以对指定的库进行操作后,在对其中的表操作,进而操作数据。//注:在创建库时,在mysql中创建库时库名必须是唯一的,若已经创建了一个库,再创建相同的库时,会报错(上述已创建stn名字的库,再创建stn库,报错)进而引出查询库的操作?方框中即为mysql中的所有库,注:stn是我们创建的库,其余几个皆为mysql自带的库。
2024-10-04 20:06:19
486
原创 数据库的概念
常见的关系型数据库(Oracle,DB2,MySQL,SQL Server等),非关系型数据库(redis,MongoDB,HBase等),关系型数据库,是用‘表’这样的结构来组织数据的(此处的表形如excel,有很多行很多列;每一行的列数,列的含义都需要匹配)关系型数据库,对数据的格式的要求比较高;mysql的运行,已知mysql是“客户端-服务器”结构的软件,我们使用时打开的程序是客户端,通过SQL语句,进而在客户端上发起请求,进而mysql服务器接收请求,在储存数据的硬盘上管理数据,发出响应。
2024-10-04 18:57:12
447
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅