- 博客(24)
- 收藏
- 关注
原创 网络编程——三次握手和四次挥手
第二次握手:服务器向客户端发送 ACK应答数据包,同时向客户端发送新的SYN待确认数 据包,服务器进入SYN_RECV状态(待接收)第二次挥手:被动方向主动方发送 ACK应答数据包,此时处于半关闭状态(关闭缓冲区), 不能进行读写操作,可以发送数据包。发生在服务器和客户端断开连接时,可以是客户端先断开连接,也可以是服务器先断开连接,所以用主动方和被动方来进行表示。
2022-10-10 22:52:57
211
1
原创 网络编程——cs架构及tcp编程
等待连接-----accept() 发起连接-------connect()接发数据----read()/write() 接发数据-------read()/write()关闭套接字-----close() 关闭套接字------close()addrlen: 客户端地址结构的长度的首地址。
2022-10-10 20:24:36
821
1
原创 网络编程——网络协议模型
应用层:HTTP(超文本传输协议)、FTP(文件传输协议)、NSF(网络挂载协议)、SSH(远 程登录协议)物理与网络接口层:以太网协议、ARP协议(IP -->MAC)、RARP协议(MAC --> IP)、PPP 协议(点对点)面向连接,是一种安全、可靠、有序的传输通信,保证传输数据准确无误不丢失、不失序;网络层:IP协议,ICMP协议、IGMP协议(组播、广播)数据链路层:将数据封装成对应的帧格式,纠错、流控。
2022-10-07 19:49:30
588
原创 IO——静态库与动态库
3.sudo vi /etc/ld.so.conf.d/mylib.conf (如果mylib.conf没有就创建一个)在该conf文件当 中加上自定义库的绝对路径,在终端输入命令sudo ldconfig 进行刷新,就可以使用了。linux下的库有两种:静态库和共享库(动态库)。如果动态库和静态库在一起,且同名时,系统会优先链接动态库,如果要使用静态库,那么加上一个-static选项。gcc -c func1.c func2.c 编译成func1.o func2.o。
2022-10-06 17:12:01
192
原创 IO——文件IO
系统默认打开的文件描述符: 0 (标准输入stdin)、1 (标准输出stdout) 、2 (标准错误stderr)遵循ANSIC标准 有缓冲区(标准错误stderr没有) 高级IO 通过流进行操作 适用于普通文件(.c/.h/.sh等)返回值: 成功返回实际写入的字节数,失败返回-1,并设置错误号;返回值:打开成功返回一个文件描述符,失败返回-1,并设置错误号;返回值:打开成功返回一个文件描述符,失败返回-1,并设置错误号;功能:如果文件存在就打开这个文件,不存在就创建并打开这个文件;
2022-10-06 12:51:40
183
原创 IO——标准IO
当输入的个数大于等于size的时候,在size-1的时候结束,因为须有'\0'结尾;c库下面定义的一些相关接口 例如:printf() fprintf() fopen() fclose() fread() fwrite()注意: 当用"a+"打开一个文件,当指针被定义到某个位置的时候,那么遵循一个规则:从指针当前位置读,从末尾写;a 只写, 追加写,即从末尾读写,不清空原内容 ,文件不存在则创建。流指针的打开个数是由限制的,对于linux能打开的流的个数是1024个,s:需要读取数据的内存块的首地址。
2022-10-05 20:44:42
77
原创 IO——相关概念及流的定义和分类
l 链接文件(软链接,相当于windows下的快捷方式 /dev/stdin(标准输入) 、 /dev/stdout(标准 输出)、 /dev/stderr(标准错误) 硬链接,相当于文件重命名(一个文件被改动, 另一个文件也会随之而改动))全缓冲:只有当缓冲区满或者无数据的时候才进行IO操作,缓冲区满的时候才进行写操作, 缓冲区空的时候进行读数据(针对程序来说);
2022-10-05 17:47:38
107
原创 数据结构——树型结构
二叉树(Binary Tree)是n(n≥0)个节点的有限集合,它或者是空集(n=0),或者是由一个根节点以及两棵互不相交的、分别称为左子树和右子树的二叉树组成。总节点数为各类节点之和:n = n0 + n1 + n2 总节点数为所有子节点数加一:n = n1 + 2*n2 + 1 故得:n0 = n2 + 1。完全二叉树节点的编号方法是从上到下,从左到右,根节点为1号节点。①:二叉树第i(i≥1)层上的节点最多为2^(i-1)个。①当i>1(不是根节点)时,有父节点,其父亲编号为i/2;
2022-10-03 13:26:22
143
原创 数据结构——线型关系
一、定义:逻辑关系:首元素没有直接前驱,尾元素没有直接后继,其余元素有且只是一个直接前驱和直接后继。具体分类:表,栈(先进后出),队列(先进先出)。存储关系:顺序表,链表,顺序栈,链式栈,顺序队列,链式队列。二、顺序表和链表:顺序表:以数组形式保存的线性表。以下标进行引用。链表:链式存储,以节点方式链接,节点中保存当前节点的数据和下一节点的位置。 增加:分为头插和尾插两种方式 头插:从头部插入,头插可以在
2022-09-15 20:29:13
430
1
原创 数据结构——研究数据和数据关系
树型:根节点没有前驱,叶子节点没有后继,其他节点有一个前驱和一个或多个后继。线型:首元素没有前驱,尾元素没有后继,其他元素都有一个前驱和后继。数据项:组成数据元素的,具有独立意义的,不可分割的最小单位。数据元素:数据的基本单位,用于完整的描述一个对象。数据对象:性质相同的数据元素的集合,是数据的子集。数据:所有能输入到计算机中并被计算机处理的符号。集合:拥有某种相同属性,彼此之间没有直接关系。1.根据算法中的表达式列出关于n的频率表达式。特性:输入,输出,具有确定性和有穷性。算法优劣的判断:两个方面。
2022-09-11 18:46:50
1532
原创 数据结构——结构体,共用体,枚举
对于64位操作系统,char name[9],9个char占9个字节,大于默认8,所以分配两个8个字节的空间存储。int占4字节,小于8,但char的第二个空间还有7个字符的空间,所以存在里面,不另外分配空间,double占4个字节,char的第二个空间此时还余3个字节,不能把整体存下,所以另外分配一个8个字节空间,所以该结构体共占用 8+8+8=24个字节。int占4字节,分配一个4个字节空间,double占4个字节,也分配一个4个字节空间,所以该结构体共占用 4+4+4+4+4=20个字节。
2022-09-11 16:50:19
202
原创 C语言——存储
static修饰全局变量,其生命周期不变,作用域限制在本文件内,其他.c文件无法访问该变量,其他文件定义同名变量时,也不会提示重复定义变量。注意:static修饰局部变量,其作用域不变,还是原来{}内有效,但其生命周期会延续到整个程序结束。存储类型:const,register,static,extern。①栈区:存储局部变量,定义时自动开辟,生命周期结束后自动释放。③堆区:手动开辟手动释放,malloc开辟,free释放。typedef是给类型取别名——便于简化,维护,扩展。宏定义是给常量取别名。
2022-09-11 15:46:36
320
原创 linux——shell脚本的基本操作
for 值 in 条件 for A in `seq 0 2 100` 表示A=0,A小于等于100执行do语句,每次A累加2。$0-$9命令行参数,表示在执行该文件时,在执行命令后面进行占位传值,$0表示执行命令的位置,所以对程序内的预定义变量是从$1开始的。eg:A=10 B=$A (所有语句都不需要加分号结束) 表示A=10,把A的值赋值给B,B=10。运行:方式一: chmod u+x,添加执行权限后,./文件名.sh运行。=s2 判断s1与s2是否不相等。
2022-09-11 00:27:32
117
原创 linux——shell命令行解释器
到另一文件 ls noexistingfile.txt 2> err.log,使用ls命令,查看一个不存在的文件时,将系统错误提示保存在err.log文件中。模式 ls /usr > Lsoutput.txt,将ls /usr的执行结果,写到Lsoutput.txt文件中,若有同名文件将被删除。find *.c 打印1.c 2.c 3.c file-1.c file-2.c。.c 打印file-1.c file-2.c。find[1-3] 打印1.c 2.c 3.c。
2022-09-10 20:51:26
283
原创 Linux系统——基本操作命令
chmod 修改权限: chmod u/g/o+r/w/x添加权限 chmod u/g/o-r/w/x减权限。/etc/passwd 该路径下保存用户的信息,用户名,用户密码(不会显示),用户简述等。eg :rwxr-xr--,表示自己有duxie执行权限,同组用户有读执行权限,其他用户只有读权限。(需要绝对路径),依靠文件路径连接,所以不能改名,否则失效,类似于windos的。/var/lib/apt/lists/ 该路径是update创建的表格。
2022-09-10 20:21:56
215
原创 C语言——指针函数和函数指针
指针函数:返回值为指针的函数 (不要返回局部变量的指针,局部变量在调用结束后会释放空间,返回的地址无意义)一、定义 存储类型 数据类型 *函数名(形参类型 形参1,形参类型 形参2,......) { 函数体; return 指针; } eg: void int *func(int *p,int *q) { 函数体; return 指针; }函数指针:指向函数的指针,本质是一个指针
2022-09-09 22:36:10
130
原创 C语言——函数
函数的意义:将函数封装,使用时进行调用,减少代码重复,增强主函数可读性和逻辑性 一、定义: 存储类型 返回值类型 函数名(形式参数1类型 形式参数1,形式参数2类型 形式参数2,.....) { 函数体; return 返回值; //返回值可以是基本数据类型,指针,与定义的返回值类型保持一致 } 函数名:为标识符,需满足以下条件 (1)由数字、字母、下划线组成 (2)不能以数字开头
2022-09-09 19:25:09
159
原创 C语言——指针数组和数组指针
数组指针:指向多个数组的指针,本质是指针。 一、定义:存储类型 数据类型 (*变量名)[数组大小] int (*p)[5]二、初始化: char ch1[]="hello"; char ch2[]="world"; int (*p)[2]={ch1,ch2}; //数组名是一个地址 p[0][0] //表示取p数组的第一个元素ch1数组的第一个元素,即取'h'。 =*(p[0]+0) //p[0]地址偏移0个数据单位,并对其取
2022-09-09 18:21:21
352
原创 C语言——指针
存储类型 数据类型 *指针变量名存储类型:auto(默认),register,static,extern数据类型:由基本数据类型(int,char,short,long,float,double)+ *构成,代表指针所指向 的数据的数据类型 eg:int *p表示p指针指向的是一个int型的数据。指针变量名:标识符(由字母,数字,下划线组成,不能以数字开头,不能与关键字重名)指针变量:是一个变量,存放的是一个地址常量。二、初始化:(1)指向整型:int a=0;int *p=&
2022-09-08 18:57:36
171
原创 C语言——字符数组
函数声明:char *strstr(const char *haystack, const char *needle);函数声明:char *strcat(char *dest, const char *src)函数声明:char *strcpy(char *dest, const char *src);char ch[5] = {'h','c'}//其他默认为'\0'参数:s1(字符串一的起始地址),s2(字符串2的起始地址)
2022-09-07 23:04:21
1195
原创 C语言——二维数组
一:定义:存储类型 数据类型 二维数组名[行大小][列大小]存储类型:auto(默认),register,static,extern数据类型:char,short,int,long,float,double数组名:标识符,数组名是地址常量,是数组的起始地址,代表数组整片空间[]:偏移符 arr[0][0]不等于arr[0],前者代表第0行的第0个元素的首地址,后者代表第0行的首地址,其值相等,但其偏移量不同,若同时偏移一个单位,前者偏移一个元素,后者偏移一行元素。
2022-09-07 22:17:53
647
原创 C语言——一维数组
一维数组: 同种类型数据元素的有序集合一、定义:储存类型 数据类型 数组名[数组大小] 存储类型:auto(默认),register,static,extern,数据类型:char,short,int,long,float,double数组名:标识符,数组名是一个地址常量,不能对其进行赋值(即不能为=的左值),是数组空间的起始地址,代表整片数组。标识符:由数字,字母,下划线组成,不能以数字开头,不能与关键字重名[]:偏移符,偏移引用,eg:arr[n]n为常数,是数组的下标,代表
2022-09-07 21:43:30
2497
2
原创 c语言三大语句结构:顺序结构、选择结构、循环结构
c语言三大语句结构:顺序结构、选择结构、循环结构1.顺序结构:按语句出现的先后顺序,依次执行。2.选择结构(也叫分支结构):根据所给定的条件选择是否执行。选择结构分为单分支:if(条件表达式)//表达式为真(非零),执行语句块1{语句块1;//若语句块只有一句,其前后{}可省略。若为多句不加{},只有第一句属于if}else //else前必须要有if与之对应,且遵循就近原则(与最近的if配对),但if不一定有else{语句块2;//表达式为假,执行语句块2}
2022-09-07 19:22:50
1770
1
TA创建的收藏夹 TA关注的收藏夹
TA关注的人