自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 收藏
  • 关注

原创 TCP网络协议

1. TCP在接收数据时,多包数据粘在了一起2. 原因:1. TCP发送数据时,没有及时发走,会根据缓冲区数据的情况进行重新组包;2. TCP接收方,没有及时读走缓冲区数据,导致缓冲区大量数据缓存。3. 如何解决TCP粘包:1. 发指定大小字节(结构体)int id;float tmp;xxx;指定在相同平台上使用,注意结构体对其齐问题。2. 发送具有指定分隔符的数据3. 封装自定义数据帧。

2025-03-13 20:47:58 1996 4

原创 LINUX下的tcp协议

1. 面向数据流(流式套接字)2. 建立连接3. 安全可靠的传输协议应用场景:三次握手:TCP建立连接时,需要进行三次握手,确保收发数据前,双方都已准备就绪。四次挥手:TCP断开连接时,需要进行四次挥手,从而确保通信双发都已收发数据结束。C/S模型:功能:从tcp套接字接收数据参数:sockfd:套接字buf:保存接收数据内容的首地址len:期待接收到的字节数flags:0:默认方式返回值:成功:实际收到的字节数失败:-1。

2025-03-13 20:43:51 594

原创 LINUX下的UDP协议

B/S模型:browser/server 通用的客户端(浏览器)----专用服务器。C/S模型:client/server 专用的客户端---专用的服务器。src_addr:保存发送方地址信息的首地址。

2025-03-07 09:00:00 249

原创 LINUX网络编程

物理层:定义物理设备标准,比如网线,光纤等传输介质 比特流 bit 0 1。数据链路层:封装成帧,点对点通信(局域网内通信),差错检测 交换机 ARP。2. 编辑---》虚拟网络编辑器---》更改设置---》VMnet0---》桥接至---》PC正在上网的网卡-----》应用-----》确定。MQTT:消息队列遥测传输协议(物联网协议)应用层:要传输的数据信息,如文件传输,电子邮件等。1. 虚拟机--》设置---》网络适配器----》桥接模式。表示层:数据加密,解密操作,压缩,解压缩。

2025-03-06 21:01:49 385

原创 LINUX进程间通信

同一主机进程间通信:1. 无名管道2. 有名管道3. 信号4. 共享内存5. 消息队列6. 信号灯不同主机进程间通信:7. 网络套接字。

2025-03-06 20:41:00 810

原创 Linux线程

1. 线程轻量级的进程2. 线程的创建线程由某个进程创建,从属于某个进程内存:由所在进程为其分配独立的栈区空间(默认8M)与其他线程和所在的进程共用堆区,数据区,文本去。内核存储线程控制块。线程是cpu任务调度的最小单位进程是操作系统资源分配的最小单位进程和线程的区别 :1. 线程是cpu任务调度的最小单位进程是操作系统资源分配的最小单位2. 线程是一个轻量级的进程,所在进程为其分配独立的栈区空间。3. 资源消耗进程资源消耗> 线程。

2025-02-26 12:00:00 738

原创 exec函数族

在一个进程中执行外部的一段程序原因:exec会将外部程序的指令替换到进程的文本区。

2025-02-26 08:00:00 289

原创 Linux进程

1. ps -aux查看系统中所有进程的信息和状态PID:进程的id号PPID:父进程ID号父进程:创建新进程的进程称父进程子进程:创建出来的新进程组合命令:| 管道:将前面的输出作为后面的输入grep : 查找匹配2. top动态查看当前系统进程状态及CPU/内存占有率3. ps -ef查看进程状态信息和父子进程ID号4. pstree查看进程间的关系pstree -p查看进程间的关系(带ID号)pstree -sp 进程ID。

2025-02-25 19:42:18 412

原创 linux学习(多任务)进程基础概念

源程序 可执行程序 进程。.程序运行可以产生多个进程,一个进程可以运行一个或多个程序。每个进程被创建时,操作系统会为该进程分配4G的虚拟内存空间。正在执行的程序,需要消耗内存和cpu, 一个动态执行的过程。.概念:进程动态执行过程,程序静态的数据集合。.进程需要消耗cpu,进程间会资源竞争。创建----》调度------》消亡。.存储位置:内存---硬盘。让系统具备同时处理多个任务的能力。1. 时间片轮询算法。Linux进程的七态图。

2025-02-25 19:23:35 299

原创 LINUX目录IO

name:需要打开的目录名称。chmod 八进制值(0777) 文件名。成功:读到的文件的信息的地址。功能:打开一个目录并获得一个目录流指针。dirp:目录流指针。3. 关闭目录:closedir。chmod +/-r 文件名。chmod +/-w 文件名。chmod +/-x 文件名。1. 打开目录:opendir。功能:读取目录中的一个文件信息。2. 读目录:readdir。

2025-02-25 13:37:27 464

原创 Linux文件IO

1.打开文件:open2.读写文件:read/write3.关闭文件:close。

2025-02-17 22:23:34 672

原创 linux文件操作(标准IO)

linux一些函数对文件的操作:fgetc fputc fgets fputs fread fwritefgetc 可用于处理文本文件和二进制文件它是一个字符一个字符的读取int fgetc(FILE *stream);参数为FILE *型文件流指针他的返回值是int型,当他读取文件返回EOF为读取结束标志fputcint fputc(int c, FILE *stream);它的参数是一个int型,一个FILE *型文件流指针返回值是int型 结束标志为EOF使用fgetc和

2025-02-16 17:12:32 412

原创 标准IO学习

p -- pipe -- 管道文件 --- 实现操作系统中 进程间的一些 信息交换(通信)l -- link -- 软连接文件 --- 类似windows的快捷方式。s -- socket -- 套接字文件 --- 网络的时候 (进程间的通信)2.文件IO --- 系统调用-------Linux内核为用户提供的函数接口。c -- character -- 字符设备文件 --- 鼠标。1.标准IO --- 库函数 -------标准c库函数,

2025-02-16 15:56:10 453

原创 Linux内核链表

内核链表是将链表放在数据里去,可以处理任何数据类型。以下是一个存放了乘客信息和航班信息的内核链表代码。普通链表是将数据存放在链表中只能放一种数据类型。进行链表处理的.c文件。存放链表信息的头文件。

2025-02-11 15:09:02 262

原创 双向链表学习

单向链表只能往下一个找。双向链表可以找上一个。

2025-02-07 21:11:27 67

原创 数据结构学习

顺序表访问数据较为方便,但是插入、删除数据需要移动大量元素,需要预分配内存空间,数据波动不能太大(容易造成内存浪费和越界访问),易产生内存碎片。数据结构决定数据的存储方式和组织形式,算法利用数据结构实现功能。线性结构:元素与元素之间存在一对一的关系(数组、链表、队列、栈)数据与数据之间的物理关注关系(元素在内存中的存储方式)图形结构:元素与元素之间存在多对多的关系(复杂算法)树状结构:元素与元素之间存在一对多的关系(二叉树)数据与数据之间的逻辑关系(元素之间的关系)数据结构:组织和存储内存中的数据。

2025-02-06 21:39:32 134

原创 存放指针的数组,指针的指针,结构体,内存对齐

通过控制总线、地址总线和数据总线进行信息的交互,数据的传输依靠数据总线,在32位操作系统中,单次传输的大小是4字节,64位操作系统中这个值是8字节。用户可以通过结构体自定义数据类型,将几种不同的数据类型联系起来,编程规范建议将结构体的标识符首字母大写,其次’{}‘末尾要加‘;先声明结构体再定义。关于结构体的运算符分别是指向结构体成员运算符和结构体成员运算符,均为一级,结合方向自左向右。type是存放指针指向的对象的类型,p是数组名,size是数组的大小。同理,指针数组的类型也是数组名去掉后的剩余部分。

2025-01-22 22:11:41 171

原创 指针的学习

对指针型数据进行算术运算大部分情况是没有意义的,指针指向数组元素时,可以进行加减的运算操作,它表示对n个sizeof(基类型)进行加减。指针函数是指返回值是指针的函数,该函数不得返回局部变量的地址,因为局部变量的内存空间随随着该函数的运行结束被销毁。函数指针是指向函数的指针变量,函数指针就是指向函数入口地址的指针。函数名即是入口地址,函数名就是该函数的函数指针。realloc 函数:在之前分配的内存块的基础上,将内存重新分配为更大的部分。定义函数指针类型,它与所指向的函数具有相同的参数类型和返回类型。

2025-01-21 21:30:03 324

原创 指针函数123

使用万能指针时需特别注意以下几点:万能指针不支持指针运算,因为它没有类型信息;在函数中,万能指针常用于处理不同类型的参数,通过额外的类型标志参数区分数据类型。char * const p不能修改指针指的位置,可以修改指针指向的内容。const int *const p不能修改指针指的位置也不能修改内容。const int *p在指针前的话无法修改指针指向的内容。万能指针是一种特殊类型的指针,可以指向任何数据类型。指针函数:返回值为指针,指针可以相减,不可以相加。字符串常量区不能修改!

2025-01-20 20:12:41 136

原创 指针的基础

4.指针变量:是一个变量,占8个字节空间,存放指针(地址)的变量,有时也会简称为指针。地址传递:将实参的地址给了形参,形参是指向实参的指针,可以利用形参修改实参的值。1.未经初始化的指针,或指向一段被释放过空间的指针称为野指针。3.数组的数组名类型理解为int*型,除以下两种情况。3.数组的数组名类型理解为int*型,除以下两种情况。2.指针[下标]==*(指针+下标)2.指针[下标]==*(指针+下标)数组的数组名是指向数组第一个元素的指针常量。

2025-01-20 09:02:20 280

原创 C语言学习

2.动态生存区:只有在用的时候开辟空间,用完销毁空间栈区(局部变量)1.静态生存区:与程序运行周期相同主函数结束静态区(全局变量)2.在全局变量和函数值之前限制他只能在本.c文件中使用。1.放在某个局部变量前,将他的生存期从动态修改为静态。register:建议存在寄存器,不能取地址。#endif来处理重复包含的问题。局部变量只在他所在的{}内有效。全局变量未初始化为“0”;extern:声明外部变量。全局变量可作用多个{};宏定义为编译之前的预处理。宏定义和调用函数不同。<>表示标准方式查找。

2025-01-17 21:55:42 211

原创 C语言函数

二维数组名作为函数的参数;a[可省略][不可省略]一维数组名作为函数的参数;

2025-01-16 22:15:29 135

原创 二维数组,函数

标准函数:系统提供的函数用户直接调用。函数返回值类型 函数名(参数)函数传参无法在被调函数中更改。

2025-01-15 22:04:49 86

原创 字符串数组的统计,拷贝,链接,比大小

字符串数组的统计,拷贝,链接,比大小。

2025-01-14 20:52:54 109

原创 数组的逆序,排序

选择排序冒泡排序插入排序二分查找法字符数组字符串数组getsputs。

2025-01-13 22:10:45 74

原创 c语言学习(break,continue,一维数组)

终止循环,跳出循环,如果出现循环嵌套,那么只会终止他所在的循环;1.有序性:数组是按顺序a[0]→a[1]→a[2]存储的;类型名 数组名[ 常量表达式 ]数组的个数是从0开始数的。数组a 和 &a[0]一样都是数组第一个元素的地址。2.单一性:数组的每一个元素占相同的字节大小;第⼀个元素初始化为1,剩余的元素默认初始化为0。3.有序性:数组的元素之间挨着没有空出字节;只会终止本次循环的结果,循环继续;数组中常量为3,二初始化个数为4。错误的初始化 - 初始化项太多。求数组的元素个数n;

2025-01-11 20:08:44 126

原创 c语言学习

逻辑表达式的值也是一个逻辑值真输出1,假输出0;注意:if语句后面不能加分号,写完写{}规范书写。关系表达式的值是一个逻辑值真输出1,假输出0;如果出现可以判断真假的,则直接截断;

2025-01-10 20:54:39 127

原创 c语言学习——3

scanf中的%d要按十进制整形输入为占位符也可以用tab,回车,输入要输1空格2空格3;%m.nf(m为最终输出小数总宽度,n为小数点位数不足补0);%o%u%x分别为八进制十进制十六进制所对应的ASCII码。%md m为输出的宽度,不足的前面补0,超过的按原本输出;实现换行功能要重新写一个putchar('\n')%(8)ld 输出为长整型,8为输出的字段宽度。scanf中怎么写的就要怎么输入;putchar 输出单个字符。输入数字则是对应的ASCII码。%u用来输出无符号整型;%s输出一个字符串;

2025-01-09 20:43:26 103

原创 C语言基础

不同类型数据之间运算float必转为double,char,short必转为int。赋值运算符“=”两边类型要一致,不一致需要转换;字节少的到字节多的要看原本的正负正数补0负数补1。字符型:字节多的到字节少的直接省去高8位。2.各类数值型数据间的混合运算。强制转换符(类型)(要转换的)左值:变量 右值:常量;3.算数运算符和算数表达式。+ - * / %(取余)4.赋值运算符和赋值表达式。5.逗号运算符和逗号表达式。运算结果为最高级别类型。所有的临时变量都是右值。如果是无符号型则直接。

2025-01-08 18:26:59 186

原创 c语言学习

整形 (unsigned-无符号)int 4字节;变为2进制为1010.01科学计数法1.01001*2的2次方00001为尾数。浮点型(unsigned-无符号) float单精度 double双精度。阶码为3+127=130 130的2进制为10000010。存放方式整数原码等于补码,负数补码等于绝对值按位取反+1。所以存储为0 10000010 01001 补齐23位。存放方式分为符号位(1)阶码(8)尾数(23)字符型 (unsigned-无符号)10.25符号位为1。

2025-01-07 20:52:30 215

原创 Linux学习

rm,touch,mkdir可同时创建或删除多个。esc→:w保存,:q退出,:wq保存并退出。文件名称相同会覆盖,文件夹名称相同会报错。绝对路径/home/linux...cp 原 目标 (文件夹-r)拷贝。相对路径相对于现在位置的路径。进入命令模式,输入i进行输入。rm 删除 (文件夹-r)mv 原 目标 剪切。touch 创建文件。mkdir 创建文件夹。pwd 显示当前路径。

2025-01-06 19:06:35 115

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除