自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【无标题】

,更高的速度进行发送。(一点一点变化)\n随着窗口大小不停的增大,达到一定程度,可能中间节点就会出现问题了。此时这个节点就可能会出现丢包。\n发送方发现丢包了,就把窗口大小调小。此时如果发现还是继续丢包,继续缩小。如果不丢包了,就继续尝试 或变大\n\n再这个过程中,发送方不停的调整窗口大小,逐渐达成 “动态平衡”\n这种做法,就相当于把中间节点,都视为 “整体”,通过实验的方式,来找到中间节点的瓶颈在哪里~~\n\n具体图像:\n\n改进后的图像:\n\n\n改进措施:不是让速度直接归零,直接从慢启动开始

2025-09-05 15:07:10 353

原创 【无标题】

n窗口大小字段越大,说明网络的吞吐量越高;这时发送方不再发送数据,但是需要定期发送一个窗口探测数据段,使接收端把窗口大小告诉发送端\n\n\n\n接收缓冲区剩余空间大小\n(这里是否是最大只能表示 64k 呢?其实不是的)\nTCP 报头中,选项部分里有一项是叫做\n“窗口扩展因子”\n通过扩展因子,就可以让窗口大小\n表示一个更大的值\n\n\n拥塞控制\n流量控制,是考虑的接收方的处理能力。拥塞控制,就是考虑 / 衡量 通信过程中中间节点的情况\n\n关键问题:\n接收方的处理能力,很方便进行量化。

2025-09-05 15:06:27 171

原创 【无标题】

当 A 重传的数据,还是没有收到 ack,第二次等待的时间就会比第一次更长拉长也不是无限拉长,重传若干次时,时间拉长到一定程度,认为数据再怎么重传也没用了,就放弃 tcp 连接(准确的说是会触发 tcp 的重置连接操作)接收方如果发现,当前发送方发的数据,是已经在接收缓冲区中存在的(收到过的重复数据了,接收方就会直接把这个后来的数据给丢弃掉,确保应用程序进行读取的时候,读到的是只有一条数据,不会重复。(有可能的)\n如果是正常的四次挥手,“好聚好散”,正常的流程断开的连接。这种迟到的数据,应该要丢弃掉的!

2025-09-05 15:04:28 325

原创 【无标题】

校验和,其实本质上也是一个字符串,体积比原始的数据要更小,又是通过原始的数据生成的。反之,校验和相同,原始数据大概率相同(理论上会存在不同的情况,实际的概率非常低,可以忽略不计)把当前要计算校验和的数据,每个字节,都进行累加,把结果保存到这个 2 个字节的变量中,如果过程中如果累加溢出,也没关系。如果中间某个数据,出现传输错误,第二次计算的校验和就会和第一次不同~~这里有一系列的公式,来完成 md5 的计算(你们不需要考虑公式是怎样的,是一个数学问题),但我们需要知道 md5 的特点。

2025-09-05 14:50:46 417

原创 【无标题】

接受用户空间传递下来的数据。由谁创建\tdevice_create() 或 udev\tclass_create() + device_create()\talloc_chrdev_region() / register_chrdev()//最后一个参数就是希望在应用中app.c创建的设备文件的名字, 是/dev/test\ndevice_create(test_class, NULL, mydev, NULL, \"test\");特性\t/dev\t/sys/class\t/proc/devices。

2025-09-05 14:32:07 299

原创 【无标题】

如 /dev/ttyS0、/dev/leds、/dev/mychardev。\n主设备号(major)标识设备类型,次设备号(minor)标识具体设备。通过内核缓冲区(页缓存)进行 I/O\n\n块设备 I/O 通常经过 Buffer Cache 或 Page Cache,提高性能。可被挂载为文件系统\n\n例如:mount /dev/sda1 /mnt\n块设备驱动带有缓存。设备文件在 /dev 下如 /dev/sda、/dev/sda1、/dev/mmcblk0。支持非阻塞 I/O、异步 I/O。

2025-09-05 14:29:46 186

原创 【无标题】

将芯片上的物理地址映射到用户空间的虚拟地址上,用户操作虚拟地址来操作硬件。使用文件操作集(file_operatiopns)设计方法。platfrom总线型设置方法。mmap映射型设计方法。Linux驱动开发的方式。

2025-09-05 14:28:38 113

原创 【无标题】

在 Linux 系统的目录导航中,pwd 命令如同用户手中的“定位当前位置的‘指南针’”,其核心作用在于帮助用户在层级复杂的文件目录结构中准确识别当前所在的绝对路径。多目录切换后定位:在通过 cd 命令频繁切换目录(如 cd ../documents、cd ../../downloads)后,使用 pwd 可快速确认当前位置,避免因路径记忆偏差导致的操作失误。再次定位:执行 pwd 验证当前路径是否为预期的 /home/user/projects/report,随后进行文件编辑、编译等操作。

2025-09-05 14:09:40 232

原创 【无标题】

l长格式显示(权限、所有者等)ls -l report.txt → 输出 -rw-r--r-- 1 user group 4096 Sep 1 09:30 report.txt,包含文件类型与权限(-rw-r--r--)、硬链接数(1)、所有者(user)、所属组(group)、大小(4096 字节)、修改时间(Sep 1 09:30)及文件名(report.txt)-r反向排序(默认按字母正序)ls -r /tmp → 输出按文件名从 Z 到 A 排序的结果,如 z.txt、m.jpg、a.sh。

2025-09-05 14:08:57 471

原创 【无标题】

就会把用户名和密码放到 url 中,进一步的显示到浏览器地址栏里. (不就被别人看到了吗)相比之下,POST 则是在 body 中,不会在界面上显示出来,所以就更安全。输入相同的内容, 输出是稳定的.GET 和 POST 具体是否是幂等, 取决于代码的实现.GET 是否幂等, 也不绝对. 只不过 RFC 标准文档上。上古时期,网页仅含单纯文字,浏览器功能原始。但是这里的安全指的是你传递数据的时候,不容易被黑客获取,又或者是被黑客获取后不容易被破解通过一些防御手段,比如针对用户名密码进行加密。

2025-09-05 13:54:40 317

原创 【无标题】

可以使用fcntl()函数将socket设置为非阻塞模式,并使用select()函数在读/写操作上实现异步。// 将客户端socket添加到文件描述符集合。// 接收客户端消息并将其返回(非阻塞式)// 接受客户端连接(非阻塞式)// 接收服务器响应(非阻塞式)// 设置服务器socket为非阻塞模式。// 设置客户端socket为非阻塞模式。// 绑定socket到服务器地址。// 创建服务器socket。// 创建客户端socket。// 连接到服务器(阻塞式)// 设置服务器地址结构体。

2025-09-04 10:28:42 416

原创 【无标题】

可以看到,服务器线程可以通过循环调用recv()接口,在单个线程内实现对所有连接的数据接收工作。但是,这种模型并不推荐使用。因为循环调用recv()会大幅度提高CPU占用率;此外,在这个方案中,recv()更多地起到检测“操作是否完成”的作用,实际上操作系统提供了更为高效的检测“操作是否完成”的接口,如select()多路复用模式,可以一次检测多个连接是否活跃。使用select()等多路复用技术,能够更高效地处理并发连接,减少CPU占用,提高服务器性能。

2025-09-04 10:27:34 103

原创 【无标题】

从上述过程中可以看出,当用户进程发起read操作时,如果内核中的数据尚未准备好,它不会阻塞用户进程,而是立即返回一个错误。从用户进程的角度看,发起一个read操作后,不需要等待,而是马上得到一个结果。一旦内核中的数据准备好了,并再次收到用户进程的系统调用,它会立即将数据拷贝到用户内存,然后返回。因此,在非阻塞I/O中,用户进程实际上需要不断主动询问内核数据是否准备好。非阻塞接口与阻塞接口的显著差异在于,调用后立即返回。在非阻塞状态下,recv()接口被调用后立即返回,返回值表示不同的含义。

2025-09-04 10:26:46 176

原创 【无标题】

该例子是一个TCP服务器,它接受客户端的连接,接收客户端发送的消息,然后将消息原样返回给客户端。printf("从服务器接收到的消息:%s\n", buffer);// 接收客户端消息并将其返回(阻塞式)// 接受客户端连接(阻塞式)// 接收服务器响应(阻塞式)// 绑定socket到服务器地址。// 向服务器发送消息。// 创建服务器socket。// 创建客户端socket。// 连接到服务器(阻塞式)// 设置服务器地址结构体。// 设置服务器地址结构体。// 监听socket。

2025-09-04 10:25:31 285

原创 【无标题】

在Linux中,有多种实现事件驱动编程的机制,如select、poll和epoll。这些机制允许程序员在一个线程中监视多个文件描述符(如套接字)的状态,并在某个文件描述符就绪时(如可读、可写)进行处理。这些机制的主要区别在于性能和可扩展性,其中epoll在处理大量并发连接时具有较好的性能。总之,对于大规模并发连接的场景,非阻塞I/O和事件驱动编程提供了一种有效的解决方案。通过使用select、poll或epoll等机制,可以实现高性能、可扩展的服务器,避免了多线程或多进程带来的资源开销和管理复杂性。

2025-09-04 10:23:25 87

原创 【无标题】

在这种模式下,服务器维护一个事件循环(Event loop),用于监听各种I/O事件,如新连接请求、数据到达等。当事件发生时,事件循环将调用相应的回调函数来处理事件。非阻塞I/O(Non-blocking I/O)或异步I/O(Asynchronous I/O)是另一种处理大量并发连接的方法。在这种模式下,I/O操作不会阻塞当前线程,而是立即返回。如果I/O操作尚未完成,系统调用将返回一个特殊的错误码,通知调用者稍后再试。这使得服务器能够在等待某个I/O操作完成的同时,处理其他客户端的请求。

2025-09-04 10:22:45 215

原创 【无标题】

线程池”旨在减少创建和销毁线程的频率,其维持一定合理数量的线程,并让空闲的线程重新承担新的执行任务。“连接池”维持连接的缓存池,尽量重用已有的连接,减少创建和关闭连接的频率。而且,所谓“池”始终有其上限,当请求大大超过上限时,“池”构成的系统对外界的响应并不比没有池的时候效果好多少。因此,在使用“池”时,必须考虑其面临的响应规模,并根据响应规模调整“池”。针对上例中可能同时出现的数千甚至数万次客户端请求,“线程池”或“连接池”或许可以缓解部分压力,但不能解决所有问题。

2025-09-04 10:21:38 115

原创 【无标题】

输入参数s是从socket()、bind()和listen()中继承下来的套接字句柄值。执行完bind()和listen()后,操作系统已经开始在指定的端口监听所有连接请求。如果有请求,则将该连接请求加入请求队列。调用accept()接口正是从套接字s的请求队列中提取第一个连接信息,创建一个与s同类型的新套接字并返回句柄。如果请求队列当前没有请求,则accept()将进入阻塞状态,直到有请求进入队列。实际上,套接字的设计者可能为多客户端场景特意设计了这个功能,使得accept()能够返回一个新的套接字。

2025-09-04 10:20:58 169

原创 【无标题】

多线程(或多进程)的目的是让每个连接都拥有独立的线程(或进程),这样任何一个连接的阻塞都不会影响其他连接。传统上,进程的开销远大于线程,因此,如果需要同时为大量客户端提供服务,不推荐使用多进程;如果单个服务执行体需要消耗较多的CPU资源,例如需要进行大规模或长时间的数据运算或文件访问,那么进程较为安全。实际上,除非特别指定,几乎所有的I/O接口(包括套接字接口)都是阻塞型的。这给网络编程带来了一个重大问题,即在调用send()的同时,线程将被阻塞,在此期间,线程将无法执行任何计算或响应任何网络请求。

2025-09-04 10:19:44 175

原创 【无标题】

当用户进程调用read系统调用时,内核开始执行I/O的第一个阶段,即准备数据。对于网络I/O来说,通常数据在一开始尚未到达(例如,尚未接收到一个完整的数据包),这时内核需要等待足够的数据到来。在用户进程这边,整个进程将被阻塞。当内核等到数据准备就绪,它会将数据从内核空间拷贝到用户空间,然后内核返回结果,用户进程才解除阻塞状态,重新运行起来。在Linux中,默认情况下,所有的套接字(socket)都是阻塞的。因此,阻塞I/O的特点是在I/O执行的两个阶段(等待数据和拷贝数据)都被阻塞。

2025-09-04 10:18:29 191

原创 【无标题】

我们已经知道,内存中的多字节数据相对于内存地址有大端和小端之分, 磁盘文件中的 多字节数据相对于文件中的偏移地址也有大端小端之分, 网络数据流同样有大端小端之 分. 那么如何定义网络数据流的地址呢?为使网络程序具有可移植性,使同样的 C 代码在大端和小端计算机上编译后都能正常运行,可以调用以下库函数做网络字节序和主机字节序的转换。接收主机把从网络上接到的字节依次保存在接收缓冲区中,也是按内存地址从低到高的顺序保存;因此,网络数据流的地址应这样规定:先发出的数据是低地址,后发出的数据是高地址.

2025-09-03 10:00:03 432

原创 【无标题】

IP+Port 就能表示互联网中唯一的一个进程。所以,通信的时候,本质是两个互联网进程代表人来进行通信,{srcIp,srcPort,dstIp,dstPort}这样的 4 元组就能标识互联网中唯二的两个进程。此处我们先对 TCP(Transmission Control Protocol 传输控制协议)和UDP(User Datagram Protocol 用户数据报协议)有一个直观的认识,后面再讨论一些细节问题。所以,网络通信的本质,也是进程间通信,我们把 ip+port 叫做套接字 socket。

2025-09-03 09:57:51 186

原创 【无标题】

再通过局域网发送给对方,对方拿到有多层报头修饰的数据时,由于各主机相同层报头属性相同,那么数据会在对方主机上向上层经过数据链路层、网络层、传输层,在经过每层时,会取下对应的报头,这个过程叫做解包与分用。用户在主机1应用层发送消息,不能直接传递到对方主机2应用层,而是往下层经过传输层、网络层、数据链路层,在经过每层时,会在数据前方添加对应层的报头,这个过程叫封装。不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报 (datagram),在链路层叫做帧(frame).

2025-09-03 09:53:34 152

原创 【无标题】

不同的网络协议和标准定义了不同的报头格式,每个报头包含了若干字段(segments),这些字段负责描述和控制数据包的传输和处理过程。一些报头中可能包含有关服务质量(QoS)的信息,如优先级字段、流标记字段等,帮助网络设备进行合理的流量调度和管理,以满足不同应用对延迟、带宽等要求的不同需求。报头中的版本号字段可以指示使用的协议版本,帮助接收端正确地解析和处理数据包,确保不同版本的协议之间的兼容性和互操作性。报头中的校验和字段用于检测数据包在传输过程中是否发生了错误或者数据的篡改,确保数据的完整性和安全性。

2025-09-03 09:39:17 298

原创 【无标题】

MAC帧地址用于在局域网中寻找目标设备,它是数据链路层的一部分,用于将数据包从源设备传输到目标设备。这个过程保证了数据的准确传输,因为每个设备的MAC地址是唯一的,并且以太网交换机能够根据MAC地址来决定数据包的流向。交换机在接收到这个数据帧后,会检查目标MAC地址,然后决定将数据帧转发给连接在它的哪个端口上的设备(在这个例子中,是主机B)。数据包构成:源MAC地址:00:1A:2B:3C:4D:5E (主机A的MAC地址)目标MAC地址:08:76:5F:4E:3D:2C (主机B的MAC地址)

2025-09-03 09:34:40 313

原创 (无标题)

TCP/IP 是一组协议的代名词,它还包括许多协议,组成了 TCP/IP 协议簇. TCP/IP 通讯协议采用了 5 层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。\n\n物理层: 负责光/电信号的传递方式. 比如现在以太网通用的网线(双绞 线)、早期以太网采用的的同轴电缆(现在主要用于有线电视)、光纤, 现在的 wifi 无线网使用 电磁波等都属于物理层的概念。

2025-09-03 09:31:07 377

原创 【无标题】

局域网(LAN):局域网是指在一个相对较小的区域范围内建立的计算机网络。局域网的主要特点是传输速度快、延迟低,组网开销低、并且用于连接同一组织内部的计算机和设备。\n\n城域网(MAN):城域网是指连接位于同一个城市或者地理范围内的不同机构、公司或校园网络的计算机网络。城域网的主要特点是传输距离较长,覆盖范围广,一般用于满足互联网接入的需求或者连接企事业单位之间的网络通信。广域网允许远程地点的计算机和用户之间实现高速、可靠的连接,以满足远程办公、数据共享和协作等需求。

2025-09-03 09:29:10 153

原创 【无标题】

n\n有线传输介质:双绞线、同轴电缆、光纤等。\n\n网线的种类有3种,分别是:双绞线、同轴电缆、光缆。\n\n3.计算机网络的分类\n按分布范围划分:\n广域网WAN(大跨度,通常使用交换技术)\n\n城域网MAN(城市)\n\n局域网LAN(1km左右,通常使用广播技术)\n\n个人区域网PAN(个人使用设备)\n\n按使用者划分:\n公用网(电信、移动、联通等)\n\n专用网(军队、政府、银行等)\n\n内网:局域\n\n按交换技术划分:\n电路交换\n\n报文交换\n\n分组交换。

2025-09-03 08:32:47 334

原创 什么是计算

n\n有线传输介质:双绞线、同轴电缆、光纤等。\n\n网线的种类有3种,分别是:双绞线、同轴电缆、光缆。\n\n3.计算机网络的分类\n按分布范围划分:\n广域网WAN(大跨度,通常使用交换技术)\n\n城域网MAN(城市)\n\n局域网LAN(1km左右,通常使用广播技术)\n\n个人区域网PAN(个人使用设备)\n\n按使用者划分:\n公用网(电信、移动、联通等)\n\n专用网(军队、政府、银行等)\n\n内网:局域\n\n按交换技术划分:\n电路交换\n\n报文交换\n\n分组交换。

2025-09-03 08:31:39 293

原创 application

第二层——数据链路层(data link layer)\n数据链路层(data link layer):常简称为链路层,我们知道,两个主机之间的数据传输,总是在一段一段的链路上传送的,也就是说,在两个相邻结点之间传送数据是直接传送的(点对点),这时就需要使用专门的链路层的协议。因此,对所传送的数据来说,这些数据就“看不见”数据链路层。在因特网中的应用层协议很多,如支持万维网应用的HTTP协议,支持电子邮件的SMTP协议,支持文件传送的FTP协议,DNS,POP3,SNMP,Telnet等等。

2025-09-03 08:30:53 289

原创 vue基础知识

【Vue基础知识-Vue中:class与:style动态绑定样式 - 优快云 App】https://blog.youkuaiyun.com/2503_91308956/article/details/151083668?

2025-09-02 06:37:33 87

原创 创(建数据

CREATE DATABASE 【IF NOT EXISTS】 数据库名称【库选项】;DROP DATABASE 【IF EXISTS】 数据库名称;SHOW CREATE DATABASE 数据库名称;MySQL -u用户名 -p密码 数据库名。2、查看MYSQL服务器下所有数据库。5、登录mysql服务器时选择数据库。3、查看指定数据库的创建信息。8、查看当前数据库服务器版本。7、查看当前访问的数据库。10、查看用户详细信息。USE 数据库名称;9、查看当前登录用户。

2025-09-02 06:36:27 184

原创 查找类似值

SELECT 列名/(*) FROM 表名称 WHERE 列名称 LIKE 值;LIKE – 查找类似值。

2025-09-02 06:28:57 114

原创 DELETE

DELETE FROM 表名称 WHERE 列名称 = 值;TRUNCATE TABLE – 清除表数据。TRUNCATE TABLE 表名称;DROP TABLE – 删除表。DROP TABLE 表名称;DELETE – 删除数据。

2025-09-02 06:27:55 98

原创 ORDER

UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值;SELECT * FROM 表名称 ORDER BY 列1,列2 DESC;ORDER BY – 排序。UPDATE – 更新数据。

2025-09-02 06:27:14 111

原创 【无标题】SE

如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录。\n如果第一个条件和第二个条件中只要有一个成立,则 OR 运算符显示一条记录。SELECT DISTINCT 列名称 FROM 表名称;AND & OR – 运算符。SELECT – 查询数据。

2025-09-02 06:26:06 210

原创 【无标题】insert

INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....);INSERT INTO 表名称 VALUES (值1, 值2,....);INSERT – 插入数据。

2025-09-02 06:25:00 171

原创 【无标题】创建

创建Id_P int,

2025-09-02 06:24:12 65

原创 【无标题】数据

容纳带有小数的数字、“size” 规定数字的最大位数、“d” 规定小数点右侧的最大位数。容纳可变长度的字符串(可容纳字母、数字以及特殊的字符)、在括号中规定字符串的最大长度。容纳固定长度的字符串(可容纳字母、数字以及特殊字符)、在括号中规定字符串的长度。仅容纳整数、在括号内规定数字的最大位数。

2025-09-02 06:23:32 109

原创 【无标题】awk

3. 全文将Jack替换为me(g是全部替换,不加只替换首个)sed commond中为三个/,分别为源内容,替换后的内容。4. 删除replace.java中的空格(d是删除)删除包含Interger的行(d是删除)全名Stream Editor,流编辑器。sed commond为正则表达式。适合用于对文本行内容进行处理。1、awk(数据统计)sed(替换文件内容)替换后将数据保存在文中。

2025-09-02 06:04:49 134

空空如也

空空如也

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

TA关注的人

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