- 博客(29)
- 收藏
- 关注
原创 io模型-poll函数应用
客户端要监视服务器是否发来消息以及客户端自己的标准输入流 在不开线程的情况下,实现互相聊天。服务器要监视2个客户端是否连接,2个客户端是否发来消息以及服务器自己的标准输入流。服务器和2个客户端互相聊天,服务器和客户端都需要使用select模型去实现。运行1个服务器和2个客户端。
2024-08-22 00:15:55 191
原创 进程间通信(IPC
作业1:使用有名管道实现,一个进程用于给另一个进程发消息,另一个进程收到消息后,展示到终端上,并且将消息保存到文件上一份。作业2:使用有名管道实现两个进程间相互通信。
2024-08-07 00:27:22 218
原创 IO-文件IO
1> 文件描述符本质上是一个整数,当文件存储在本地磁盘时,属于静态文件。当使用open函数打开文件时,该文件就属于动态文件,后期需要对文件进行操作的话,需要基于一个句柄来完成。这个句柄就是文件描述符,用一个整数表示。2> 文件描述符是一个非负整数,一个进程能够使用的文件描述符默认为1024个。【0,1023】,可以通过指令 ulimit -a查看,并且可以通过ulimit -n进行修改进程能够打开的文件描述符个数3> 使用原则:最小未分配原则。
2024-07-30 20:34:22 656
原创 IO 学习
1> IO:(inout output) 所谓IO,就是程序与外部设备进行信息交换的过程2> IO的分类:标准IO和文件IO3> 标准IO:调用封装好的相关库函数,来实现数据的输入输出4> 文件IO:调用系统(内核)提供的相关函数,来实现数据的输入输出5> 标准IO和文件IO的区别:6> 阻塞IO和非阻塞IO7> 目前所接触过的IO函数:printf、scanf、putchar、getchar、puts、gets8> 常用的IO接口函数标准IO:fprint、fscanf、fputc、fgetc、fputs
2024-07-30 02:06:16 421
原创 树形结构相关概念
1> 树形结构:表示数据元素之间存在一对多的关系2> 树:是由一个根结点个多个子树构成的树形结构3> 节点:就是树中的数据元素4> 父亲结点:当前结点的直接上级节点5> 孩子节点:当前结点的直接下级节点6> 祖先结点:当前结点的直接或间接上级节点7> 子孙节点:当前结点的直接或间接下级节点8> 兄弟节点:拥有相同父结点的所有节点互称为兄弟节点9> 堂兄弟节点:其父结点在同一层的所有节点,互为堂兄弟节点10> 根结点:没有父结点的节点11> 叶子节点:没有子节点的节点称为叶子节点。
2024-07-24 20:23:26 666
原创 栈 与 队列
1> 在之前的内容,无论是顺序表还是链表,都是详细处理的线性表,既可以在端点处进行操作,也可以在中间位置操作2> 现实生活中,有很多并不需要在中间进行操作的序列,只在端点处进行操作,这样的线性表,我们称为操作受限的线性表3> 根据不同的受限情况,线性表分为:栈、队列4> 栈:插入和删除操作都只允许在同一端进行。队列:插入和删除操作都只允许在异端进行。
2024-07-23 01:20:28 289
原创 链表 学习
1> 所谓双向链表,就是从任意一个节点既能存储其前驱节点信息也能存储后继节点信息2> 节点结构体中增加一个指向前驱节点的指针3> 头结点没有前驱,最后一个节点没有后继。
2024-07-23 01:13:02 271
原创 linux 学习day15
/定义数据类型//定义结点类型unionint len;//头结点数据域//普通结点数据域//指针域//创建链表//申请结点封装数据函数//链表判空//头插//链表遍历函数//通过位置查找结点//任意位置插入//链表头删//链表任意位置删除//链表按值查找返回位置//链表按位置进行修改//按值进行修改//将链表进行翻转//释放链表#endif。
2024-07-19 20:39:08 733
原创 linux学习day14
1> 数据:是能够被计算机识别、存储、处理的用于描述客观事实的符号2> 数据的基本单位:数据元素数据元素:所谓数据元素就是能够完成描述事物的基本单位。例如24061班的一个学生的信息3> 数据的最小单位:数据项数据项:用于组成数据元素的不可分割的最小单位。例如一个学生的学号、性别、成绩...4> 数据对象:由多个数据元素组成的一个集合称为数据对象。例如:24061整个班级5> 数据之间的关系:数据项 ==> 数据元素 ==> 数据对象 ==> 数据。
2024-07-18 17:30:07 891
原创 linux学习day13
由相同数据类型或不同数据类型构成的集合,但是,该集合中的成员共享同一块内存空间union 结构体名称成员类型1 成员变量1;成员类型2 成员变量2;。。。成员类型n 成员变量n;当程序员写程序时,可能会因为数据类型的问题,在定义变量时,导致该程序比较晦涩难懂,例如:unsigned long int ,struct Stu为了提高代码的简洁性,以及为了更加方便理解使得代码更加优雅,我们可以将这些类型重新起一个简洁好记的名字int a;//定义一个普通变量,变量名为 aint arr[5];
2024-07-17 20:21:39 543
原创 linux学习day12
struct 结构体名称成员类型1 成员变量1;成员类型2 成员变量2;。。。成员类型n 成员变量n;注意事项:1、struct是定义结构体类型的关键字,不能省略2、结构体名称:标识符,符合命名规则,一般建议首字母大写3、成员属性使用一对花括号包裹起来 、4、成员类型可以是基本数据类型,也可以是构造数据类型、指针类型5、定义结束后,必须加上 分号结尾6、举个例子:struct Stu//姓名int age;//年龄//成绩1、定义格式 struct 结构体名称 变量名;
2024-07-16 20:26:31 673
原创 linux学习day10
1> 一维数组的数组名,本质上是一个该数组的第一个元素的地址int arr[5];2> 数组名是一个地址常量,不能被重新赋值,但是,数组名可以进行偏移3> 二维数组的数组名,从数值上来说也是一个该数组第一个元素的地址。
2024-07-13 08:58:26 368
原创 linux 学习day8
char 数组名[常量1][常量2];常量1:表示的是定义的字符串的个数常量2:表示的是每个字符串的最大长度+11.函数:执行特定功能的一段代码段2.定义格式:返回值类型 函数名(参数列表){函数体代码}1、返回值类型:函数执行后,向外界返回的一个结果值,可以有结果(非void),也可以没有结果(void)定义函数时:有返无返看主调函数,主调函数想要数据,就定义有返回值函数,主调函数要什么类型的结果,就定义什么数据类型主调函数不要数据,就定义void类型。
2024-07-10 20:10:26 959
原创 linux 学习day7
一维数组:数组名[行标]:表示下标为"行号"的那个一维数组的数组名二维数组:数组名[行标][列标]:表示下标为 [行标][列标] 的一个变量arr[0][0]: 表示第一行第一列的一个变量无论是行标还是列表,都是从0开始,到对应数据减1的位置例如:int arr[M][N];行标范围:【0,M-1】 列标范围:【0,N-1】
2024-07-09 20:53:56 1003
原创 linux学习day6
数组是连续存储多个相同数据类型的变量的集合,数组于构造数据类型数据类型 数据名[数据长度]定义了一个长度为40的整型数组scoreint arr[5];//整形数组//字符数组//小数数组//arr[0]=610876056 brr[0]={ brr[0]=0.000000 随机值//全部初始化//部分初始化//特殊初始化//20//5return 0;对于没有赋值的数组,他的值是随机的。
2024-07-08 17:32:38 856
原创 linux学习day4
局部变量和全局变量扩展局部变量和全局变量可以重名;作用域遵循就近原则例子:int a=10;void fun();int a=8;fun();void fun()最后在main函数中,输出8在void函数中,输出10输入与输出功能:向终端输入一个字符参数无返回值终端输入的字符的ASCII码值(返回数值,所以可以用返回)
2024-07-04 18:09:13 785
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人