自定义博客皮肤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)
  • 收藏
  • 关注

原创 Linux下常用的IO模型

Linux下常用的IO模型:1. 阻塞IOfgetsreadgetcharfreadfgetcrecvrecvfrom1. 让多个IO事件以同步方式处理,2. 多个IO事件之间互相影响3. CPU占有率低2. 非阻塞IO将IO对应的文件描述符设置成非阻塞方式。O_NONBLOCKfcntl1.非阻塞一般搭配轮询方式同时监测多个IO2.cpu占有率高3. 信号驱动IOSIGIO1.实现异步IO操作,节省CPU开销。

2025-01-10 19:40:32 1579

原创 【无标题】

在不创建进程和线程的前提下,对多个文件描述符进行同时监测。让tcp服务具备同时处理多个客户端的能力(一对多)IO:fd读写, 共用一个进程。多线程模型创建线程耗时问题。TCP:面向连接------》一对一。

2025-01-10 19:20:24 245

原创 【无标题】

http协议是工作在应用层,基于TCP协议,默认端口号为80(备用端口号为8080),面向文本的一种集文字,图像,音频,链接等于一体的超文本传输协议。url 的一般形式如下: <协议>://<主机>:<端口>/<路径>2. 客户端给服务器发送http请求报文。3. 服务端发送http响应报文给客户端。其中端口号一般为80,可以省略。url:统一资源定位符:标记万维网文档。1. 建立tcp连接。4. 断开tcp连接。万维网服务器:Web。

2025-01-07 19:32:51 292

原创 TCP粘包问题及其内部机制

3. PSH: 表示发送数据,提示接收端从TCP接收缓冲区中读走数据,为接收后续数据腾出空间。帧头 : 1个字节 0xAA 0x5A 0xA5 0x7E。数据长度:1个字节/2个字节 有效数据的字节数(不包含帧头和帧尾)1. URG: 紧急指针标志, 为1时表示紧急指针有效, 该报文应该优先传送。帧尾: 1个字节 0xBB 0x55 0xA5。2. 接收缓冲区数据没有及时读走,多包数据在缓存在了接收缓冲区。校验:8bits和校验:数据累加求和取低8bits。

2025-01-07 19:18:45 385

原创 进程件通信——网络通信——TCP

四次挥手:tcp为了确保断开连接时,通信双发都收发数据结束,在断开连接时,进行四次挥手。三次握手:tcp为了确保通信双方都已准备就绪,在建立连接时,要进行三次握手操作。网络抓包工具:wireshark 抓取经过设备网卡的数据。backlog:允许同时监听的客户端的个数。addrlen:客户端地址大小的指针。addr:建立连接的客户端地址。2. 选择要抓取的网卡----》any。对方断开连接:不再阻塞, 返回0。功能:负责监听需要建立连接的客户端。应用: 要求数据安全可靠的场景下。

2025-01-06 19:41:06 606

原创 进程间通信——网络通信——UDP

2.编辑——>虚拟网络编辑器——>更改设置——>VMnet0——>桥接模式——>桥接到电脑正在上网的网卡——>应用——>确定。进程间通信(分类):网络通信、无名管道、有名管道、信号、消息队列、共享内存、信号量集。htons: 将主机字节序(小端)的short类型转换成网络字节序(大端)htonl: 将主机字节序(小端)的long类型转换成网络字节序(大端)inet_addr() : 将字符串ip转换成网络字节序的二进制ip。应用程:HTTP, HTTPS(超文本传输协议) (基于TCP)

2025-01-06 19:30:16 1476

原创 无名管道通信与有名管道通信

2. read到0:当所有的写端关闭,管道中有数据时,读到数据,无数据则read不阻塞,返回0;1. 读阻塞: 读端和写端都存在时, 当管道中无数据时,read阻塞等待读。4. 管道破裂:当所有的读端关闭,向管道中写数据,发生管道破裂(异常)3. 写阻塞: 当读端和写段都存在时,当管道满,则发生写阻塞。无名管道:只能用在同一主机具有亲缘关系的进程间通信pipe。有名管道:可以用在同一主机任意进程间通信fifo。4. 关闭管道:close()3. 读管道:read()1. 创建管道:pipe。

2024-12-30 19:38:08 252

原创 多任务-线程

与同一进程中的其他线程共用进程的堆区,数据区,文本区 线程是cpu任务调度的最小单位。线程非分离属性:能被pthread_join回收或者能被其他线程结束的线程,称为具有非分离属性的线程。线程:轻量级的进程,栈区独立(8M),与同一进程中的其他线程共用进程的堆区,数据区,文本区。3. 设置线程的分离属性:pthread_attr_setdetachstate();线程分离属性:不需要回收,或者执行结束会被系统回收的线程,称为分离属性的线程。

2024-12-27 19:53:05 652

原创 多任务处理

(bss段在被创建时按位清零)数据区->data段:已初始化的全局变量和已初始化的static静态变量。数据区->bss段:未初始化的全局变量和未初始化的静态变量。3. 函数调用时保护现场和恢复现场。2. 函数的形参和返回值。4. 由操作系统个管理。堆区:1. 由开发人员手动申请和释放。数据区->字符串常量区:字符串常量。内核区:1. 文件管理。栈区:1. 局部变量。

2024-12-25 20:06:02 246

原创 标准IO相关函数接口

SEEK_END:文件末尾 offset:可正可负。功能:获取1970-1-1 0:0:0到现在的秒数。stream:要写入的文件流指针。stream:要重新定位的文件。功能:将格式化后的字符串写道str指向的内存空间。size:写入的每个元素的大小。nmemb:要写入的元素的个数。ptr:要存放读取到的数据的首地址。功能:向文件中写入指定大小的nmemb个元素。ptr :要写入数据的首地址。成功:实际写入的元素个数。nmemb:期望读到的元素的个数。成功:返回实际读到的元素个数。

2024-12-20 19:59:39 376

原创 二叉树相关操作

2024-12-19 20:39:27 120

原创 文件操作—标准IO

fgets fputs :一行读写 作用:主要用来操作普通文件中的ASCII文件,不能操作二 进制文件。"w" :以写的方式打开,文件不存在则创建,文件存在则清空。"w+" :以读写方式打开,文件不存在则创建,文件存在则清空。"a+" :以读写方式打开,追加写,文件不存在则创建。

2024-12-19 19:38:33 559

原创 内核链表、队列、栈、树

2024-12-17 20:45:41 189

原创 实现入栈、出栈、遍历、获取栈顶元素、释放操作

stack.c 文件。

2024-12-17 19:27:01 341

原创 双向链表的相关操作

2024-12-16 19:37:11 244

原创 gdb调试的常用命令

2024-12-16 19:20:56 149

原创 数据结构基础与单向链表操作

link.h 文件。link.c 文件。

2024-12-11 19:21:38 423

原创 结构体与位运算

(按位与) ——>指定位清0。按位与只能与整型或与其兼容的数据类型运算。^ (按位异或) ——> 按定位翻转。|(按位或) ——> 指定位置1。memcpy 函数的实现。

2024-12-09 19:32:11 331

原创 结构体操作

注意:结构体传参时,一般都设计成指针形式;访问结构体成员:结构体类型变量.成员变量,结构体类型的指针->成员变量。引用结构体变量:结构体变量名.成员变量名,访问到这个成员,如:s.name 表示访问s中name。32位的平台,如果有超过4字节,按照4字节对齐,如果没有超过4字节的,则按成员变量中最大对齐;定义变量:struct student s;64位的平台 ---- 64位平台 整个结构体对齐, 按成员中最大的对齐。成员数据 (变量形式定义的)结构体类型 --- 描述学生信息的。

2024-12-06 20:48:44 349

原创 【无标题】

p+N 指针 + N 表示 加了一个 基类型大小 sizeof(基类型)> >= < 首元素的地址 数组名。#define NULL (void *)0 //空指针。step1: 找基准值 //基准值的位置。step2: 从右向左 找第一个比基准值小的值。step6: 将相遇位置上的值 与 基准值交换。p + q //不能做。p * q //不能做。

2024-12-04 20:07:22 143

原创 带参宏与指针的初认识

2024-12-03 19:51:32 265

原创 函数递归问题;标识符的作用域 和 可见性问题;预处理

gcc -c hello.s -o hello.o //object (机器代码)---- 将.c代码中 预处理命令 执行。则,内层的作用域的同名标识符,会屏蔽外层的作用域的同名标识符。可见性:程序的角度,在运行到某句代码时,哪些标识符,可以被用。需要将用到的别的函数的代码实现链接到最终的 可执行程序中。---- 得到 全是c代码的 文件。4.如果是不同的作用域,但是作用域之间存在嵌套关系,3.在不同的作用域,同名标识符,相互之间没有影响。将c代码的文件,编译成 汇编代码。

2024-12-02 21:51:47 475

原创 【无标题】

int a[][4] ---->列数不能省略 (本质上还是个一维数组)实参 数组名 --->不需要传数组长度 (字符串本身有结束标志)(与 整型 二维数组作函数参数 书写方式相同)实参 数组名 行数。实参 数组名 行数。形参 数组形式 + 行数。形参 数组形式 行数。字符型二维数组 作函数参数。字符型一维数组 作函数参数。字符型二维数组做函数参数。整型二维数组做函数参数。

2024-12-01 16:02:24 216

原创 函数相关内容

2024-11-29 22:54:25 147

原创 二维数组与字符型数组

2024-11-28 21:17:19 130

原创 数组:一维数

2024-11-28 08:49:09 113

原创 switch语句与 循环流程控制

2024-11-26 20:20:11 372

原创 scanf函数与if 语句用法

占位符整型%d 转换为 有符号 十进制 形式 //表示将数据转换为 对应格式 存放到内存中%u 转换为 无符号 十进制 形式%x 转换为 十六进制 形式%X 十六进制中的 字母 转换为大写形式%o 转换为 八进制 形式浮点%f 转换为 小数形式输出 默认保留6位小数%lf double 数据。

2024-11-25 20:51:11 1953

原创 输入与输出

2024-11-23 20:19:35 295

原创 数据类型、运算符

1位 8位 23位。1位 11位 52位。二进制 转 八进制 方法:一位八进制数 对应 三位二进制数(421)二进制 转 十六进制 方法:一位十六进制数 对应 四位二进制数 (8421)符号位| 指数位 | 尾数位。符号位| 指数位 | 尾数位。3. 常量后面,可以添加 f 这种的表示将常量 识别为float类型。常量: 在程序运行过程中,其值不能被改变的量称为常量。变量 :在程序运行过程中,其值能被改变的量称为变量。

2024-11-22 18:52:34 548

原创 嵌入式操作基础

step2: 默认进入的是vim的"normal模式" ,按 i 键 进入到 "insert模式" 输入代码。step3: 先(按ESC)退出"insert 模式" //默认就回到了"normal模式"mkdir -p a/b/c 表示当前目录下创建一个三级的目录 a/b/c。mkdir (make directory) 功能: 创建一个目录。ls (list) 功能: (列表) 可以查看指定目录下的内容。cd (Change Directroy) 功能:改变工作目录。

2024-11-21 20:01:25 481

空空如也

空空如也

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

TA关注的人

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