网络原理之传输层
前文我们了解 应用层 传输层 网络层 数据链路层 物理层 这五层结构,此文我先讨论传输层相关的知识
1. 传输层
负责数据能够从发送端传输到接收端.
1.1 端口号
端⼝号(Port)标识了⼀个主机上进行通信的不同的应用程序
端口号范围划分:
- 0-1023:知名端口号,HTTP,FTP,SSH等这些广为使用的应用层协议,他们的端口号都是固定的
- 1024-65535:操作系统动态分配的端口号.客户端程序的端口号,就是由操作系统从这个范围分配的.
1. ⼀个进程是否可以bind多个端⼝号?
可以2. ⼀个端⼝号是否可以被多个进程bind?
不可以
因为操作系统层面,一个端口对应一个进程,通过端口找到相应的进程
1.2 UDP协议
1.2.1 UDP协议端格式
说明:
- 真实传输的协议端格式是一长条的长方形,此处只是为了方便观看
- 源端口号(16位): 记录发送端的端口号,最长可以用16位(2个字节)来表示
- 目的端口号(16位): 记录接受端的端口号,最长可以用16位(2个字节)来表示
- UDP长度(16位):
表示发送的数据报(UDP⾸部+UDP数据)长度最大为2^16=65535/1024=64kb(个数)
- UDP检验值(16位): 是一种检验机制,利用的是CRC算法(循环去累加byte数组中的值,加出来多少就是多少溢出就溢出了这种校验方式称为CRC,循环冗余校验)
1.2.2 UDP特点
UDP传输的过程类似于寄信.
- 无连接: 知道对端的IP和端口号就直接进行传输,不需要建立连接
- 不可靠: 没有确认机制,没有重传机制,如果因为网络故障该段无法发到对方,UDP协议层也不会给应用层返回任何错误信息
- 面向数据报: 不能够灵活的控制读写数据的次数和数量
1.2.3 何为面向数据报?
应用层交给UDP多长的报⽂,UDP原样发送,既不会拆分,也不会合并,用UDP传输100个字节的数据,如果发送端调用⼀次sendto,发送100个字节,那么接收端也必须调用对应的⼀次recvfrom,接收100个字节,而不能循环调用10次recvfrom,每次接收10个字节
1.3 TCP协议
TCP全称为"传输控制协议(TransmissionControlProtocol").⼈如其名,要对数据的传输进行⼀个详细的控制
说明:
-
16位源端口号: 记录发送端的端口号,最长可以用16位(2个字节)来表示
-
16位目的端口号: 记录接受端的端口号,最长可以用16位(2个字节)来表示
-
32位序号: 主机A发送数据时,随机生成一个数放在32位序号中
-
32位确认序号: 主机B接受到主机A的随机数后,在随机数的基础上+1后的数放在确认序号中
-
4位首部长度: 表示该TCP头部有多少个32位bit(有多少个4字节),所以TCP头部最大长度是15*4 =60
-
保留(6位): 无作用
-
6位标志位:
URG: 紧急指针是否有效
ACK: 确认号是否有效 (应答标志)
PSH: 提示接收端应用程序⽴刻从TCP缓冲区把数据读⾛
RST: 对方要求重新建立连接;我们把携带RST标识的称为复位报文段
SYN: 请求建立连接,我们把携带SYN标识的称为同步报文段 (发送标志)
FIN: 通知对方,本端要关闭了,我们称携带FIN标识的为结束报文段 (断开标志) -
16位窗口大小: 后续介绍
-
16位检验和: 发送端填充,CRC校验.接收端校验不通过,则认为数据有问题.此处的检验和不光包含TCP⾸部,也包含TCP数据部分.
-
16位紧急指针: 标识哪部分数据是紧急数据
-
选项:
1.3.1 确认应答
生活中,我们总是会问同学上什么课,假设下列一个场景:
针对上述情况,我们可以对每条消息加上序号,然后回复的消息也与之对应
每⼀个ACK都带有对应的确认序列号,意思是告诉发送者,我已经收到了哪些数据;下⼀次你从哪⾥开始发.
应答和响应的区别?
应答: 表示只是我接受到了数据,是在传输层接收方给发送方的一个回复,只是一个标记,没有真实的结果
响应: 是对我接受到的数据做上处理,然后回应一个处理结果,是应用层根据请求计算出来的结果是真实数据
1.3.2 超时重传
数据在网络上传输的过程中会经过很多网络设备,比如路由器,交换机,运营商,如果其中一个设备出现问题这个请求会出现超时(即规定的时间内没有拿到结果)
情况1:
情况2:
那么,如果超时的时间如何确定?
- 最理想的情况下,找到⼀个最小的时间,保证"确认应答⼀定能在这个时间内返回".
- 但是这个时间的长短,随着网络环境的不同,是有差异的.
- 如果超时时间设的太长,会影响整体的重传效率.
- 如果超时时间设的太短,有可能会频繁发送重复的包.
- TCP为了保证无论在任何环境下都能比较高性能的通信,因此会动态计算这个最大超时时间.
- Linux中(BSDUnix和Windows也是如此),超时以500ms为⼀个单位进行控制,每次判定超时重发的超时时间都是500ms的整数倍.
- 如果重发⼀次之后,仍然得不到应答,等待2*500ms后再进行重传.
- 如果仍然得不到应答,等待4*500ms进行重传.依次类推,以指数形式递增.
- 累计到⼀定的重传次数,TCP认为网络或者对端主机出现异常,强制关闭连接.
1.3.3 连接管理
在正常情况下,TCP要经过三次握手建立连接,四次挥手断开连接
作用:在发送方和接收方初次建立连接的时候,确认双方的收发能力
1.3.3.1 握手过程
- 主机A发送SYN请求(SYN置为1),生成一个随机数据填充在32位序号区域中
- 主机B接收到主机A发来的SYN请求后,在序号的基础上+1,把结果填充到确认序号中,并把ACK标志位置为1,表示要进行应答同时也生成一个随机数据填充在序号区域,并把SYN标志位置为1,表示自己发送一个SYN同步请求
- 主机A接收到主机B发来的ACK+SYN请求时,首先判断ACK,表示主机B有应答能力,再去判断SYN,在序号的基础上+1,把结果填充在确认序号中,把ACK标志位置为1
- 主机B接收到主机A发来的ACK,表示主机A有应答能力,网络验证完成,建立连接成功
此时我们尾三次握手,是否可以换成2次握手或者4次握手呢?
两次不行,少验证了主机B的发送与主机A的应答
四次可以,发送与接收方的收发能力都验证通过
1.3.3.1 挥手过程
作用: 保证发送与接收方有效(安全)的断开连接
四次挥手能不能变成三次挥手? 第二步的ACK能不能与第三步的FIN合并在一起?
大概率不能合并在一起,因为
1.发起的角色不同,一个是操作系统,一个是应用程序
2.发起的进机不同,ACK是应答比较及时,FIN要回收一些资源之后才触发
1.3.4 滑动窗口(效率机制)
刚才我们讨论了确认应答策略,对每⼀个发送的数据段,都要给⼀个ACK确认应答.收到ACK后再发送下⼀个数据段.这样做有⼀个比较大的缺点,就是性能较差.尤其是数据往返的时间较长的时候.
既然这样⼀发⼀收的方式性能较低,那么我们⼀次发送多条数据,就可以大大的提高性能(其实是将多个段的等待时间重叠在⼀起了).这就是滑动窗口带来的效果
说明:
- 窗口大小指的是无需等待确认应答而可以继续发送数据的最大值.
上图的窗口大小就是4000个字节(四个段). - 发送前四个段的时候,不需要等待任何ACK,直接发送
- 收到第⼀个ACK后,滑动窗口向后移动,继续发送第五个段的数据,依次类推
- 操作系统内核为了维护这个滑动窗口,需要开辟发送缓冲区来记录当前还有哪些数据没有应答,只有确认应答过的数据,才能从缓冲区删掉
- 窗口越大,则网络的吞吐率就越高
发送流程:
- 发送方批量发送,把正在发送的数据加入到缓冲区,同时记录最大字节数
- 根据当前窗口的大小发送报文
- 接收方收到报文之后,返回一个ACK(确认序号)
- 发送方接收到一个ACK之后,把缓冲区的数据删除一组,然后再加入一组新的数据到缓冲区,继续发送
那么如果出现了丢包,如何进⾏重传?这里分两种情况讨论.
情况一:数据包已经抵达,ACK被丢了
这种情况下,部分ACK丢了并不要紧,因为可以通过后续的ACK进行确认
说明: 图中,2001/5001/6001这些ACK是正常到达了主机A,TCP传输数据的过程中,如果收到了6001的确认序号,那么就可以证明,前面的全部都传输成功
例如:别人问你什么学历?你说你是大学本科,就证明你拥有了小学初中的知识情况二:数据包就直接丢了
说明:
- 当某⼀段报文段丢失之后,发送端会⼀直收到1001这样的ACK,就像是在提醒发送端"我想要的是1001" ⼀样
- 如果发送端主机连续三次收到了同样⼀个"1001"这样的应答,就会将对应的数据1001-2000重新发送
- 这个时候接收端收到了1001之后,再次返回的ACK就是7001了(因为2001-7000)接收端其实之前就已经收到了,被放到了接收端操作系统内核的接收缓冲区中
这种机制被称为"高速重发控制"(也叫"快重传").
1.3.5 流量控制
- 接收端处理数据的速度是有限的.如果发送端发的太快,导致接收端的缓冲区被打满,这个时候如果发送端继续发送,就会造成丢包,继而引起丢包重传等等⼀系列连锁反应.
因此TCP支持根据接收端的处理能力,来决定发送端的发送速度.这个机制就叫做流量控制(FlowControl) - 接收端将自己可以接收的缓冲区大小放入TCP首部中的"窗口大小"字段,通过ACK端通知发送端
- 窗口大小字段越大,说明网络的吞吐量越高
- 接收端⼀旦发现自己的缓冲区快满了,就会将窗口大小设置成⼀个更小的值通知给发送端
- 发送端接受到这个窗口之后,就会减慢自己的发送速度
作用: 用来控制发送方的窗口大小,通过接收方返回来的ACK进行反制(接收方把自己能够处理的数据量主动告诉发送方从而让发送方动态调整窗口大小)
说明:
1.具体实现过程是怎样的??2.最后双方停止了通讯后,后续该如何建立连接呢?
此时主机A就发送一个窗口探测,窗口探测不携带具体的数据,只是问一下接收方,现在可以处理数据了不,能处理多少
3.数据最大处理多少??
实际上,TCP首部40字节选项中还包含了一个窗口扩大因子M,实实际窗口大小是窗口字段的值左移M位
1.3.6 拥塞控制
虽然TCP有了滑动窗口这个大杀器,能够高效可靠的发送大量的数据.但是如果在刚开始阶段就发送大量的数据,仍然可能引发问题.
因为网络上有很多的计算机,可能当前的网络状态就已经比较拥堵.在不清楚当前网络状态下,贸然发送大量的数据,是很有可能引起雪上加霜的.
TCP引入慢启动机制,先发少量的数据,探探路,摸清当前的网络拥堵状态,再决定按照多大的速度传输数据
作用: 通过网络的畅通程度来控制窗口大小
说明:
- 程序启动的时候把拥塞窗口的值调到很少,比如1,
- 如果接收到ACK表示当前窗口大小没有问题,然后就调大窗口大小
- 到达阈值之前以指数形式增大,到达阈值之后,以1为步长进行增大
- 当增大到一定程序发生丢包的情况,就证明网络阻塞了,这时就把窗口大小重新调用1,同时重置新的阈值=当前窗口大小的二分之一
- 重复1~4步
1.3.7 延迟应答(效率机制)
说明: TCP在应答时,并不是每收到一个请求应答一次而是每隔几个应答一次,可能是2
如果请求一共只有三条报文就结束了,还可以通过时间间隔进行ACK,一般是200ms
1.3.8 捎带应答
- 在延迟应答的基础上,我们发现,很多情况下,客户端服务器在应用层也是"⼀发⼀收"的.
- 意味着主机A给主机B说了"How are you",主机B也会给主机A回⼀个"Fine,thank you",
- 那么这个时候ACK就可以搭顺风车,和主机B回应的"Fine,thankyou"⼀起回给主机A
- 由于我们知道TCP协议是全双工的
- ACK应答是系统操作是基于传输层的
- 响应是应用层做出的,当给主机A发送响应数据时
- 如果有ACK需要返回,那么这两个报文就有可能被合并成一,减少了通信次数,提升了效率,最好的捎带应答的例子就是三次握手中SYN+ACK
1.3.9 面对字节流
创建⼀个TCP的socket,同时在内核中创建⼀个发送缓冲区(写)和⼀个接收缓冲区(读)
- 调用write时,数据会先写入发送缓冲区中
- 如果发送的字节数太长,会被拆分成多个TCP的数据包发出
- 如果发送的字节数太短,就会先在缓冲区里等待,等到缓冲区长度差不多了,或者其他合适的时机发送出去
- 接收数据的时候,数据也是从网卡驱动程序到达内核的接收缓冲区
- 然后应用程序可以调用read从接收缓冲区拿数据
- 另一方⾯,TCP的⼀个连接,既有发送缓冲区,也有接收缓冲区,那么对于这⼀个连接,既可以读数据,也可以写数据.这个概念叫做全双工
由于缓冲区的存在,TCP程序的读和写不需要⼀⼀匹配,例如:
- 写100个字节数据时,可以调用⼀次write写100个字节,也可以调用100次write,每次写⼀个字节
- 读100个字节数据时,也完全不需要考虑写的时候是怎么写的,既可以⼀次read100个字节,也可以⼀次read⼀个字节,重复100次
1.3.10 粘包问题
1. 什么是粘包问题呢???
- 首先要明确,粘包问题中的 “包” ,是指的应用层的数据包.
- 在TCP的协议头中,没有如同UDP⼀样的"报文长度"这样的字段,但是有⼀个序号这样的字段.
- 站在传输层的角度,TCP是⼀个⼀个报文过来的.按照序号排好序放在缓冲区中.
- 站在应用层的角度,看到的只是⼀串连续的字节数据.
- 那么应用程序看到了这么⼀连串的字节数据,就不知道从哪个部分开始到哪个部分,是⼀个完整的应用层数据包.
2.如何解决粘包问题呢???
①明确两个包的界限,为每个消息定义一个分隔符,或者说用一个分隔符来界边一条消息\r\n
我想你了,你想我吗 \r\n 在不在呀 \r\n是不是在忙 \r\n 啦啦啦啦啦啦啦 \r\n
②在应用层协议中定义一个区域(字段),用来表示当前消息的长度
1.3.11 异常情况
- 程序崩溃
系统会回收进程的资源,包括文件描述符表,回收时相当于调用socket的close0,触发FIN操作(四次挥手,正常断开) - 正常关机
处理方式和程序崩溃一样,都是正常断开连接 - 主机掉电或断网(工作中的常见问题)
1.接收方断网
发送方收不到ACK应答,此时触发发送方进行超时重传,多次重传依然没有收到ACK时,会进行重置连接,若连接重置也失败,只能放弃连接,将6个标志位中的RST标志位置为1
2.发送方断网
举例:共享单车系统中,每一辆车都要和服务器保持长连接,那么服务器如何知道车是否在线?
此时每台车每隔一分钟向服务器发一个报文,如果服务器收到则表示当前这个车是一直在线的,服务器定期扫描管理的连接,如果发现一个连接长时间没有发来心跳就主动丢弃这个连接
相关文章:
网络原理之传输层
前文我们了解 应用层 传输层 网络层 数据链路层 物理层 这五层结构,此文我先讨论传输层相关的知识 1. 传输层 负责数据能够从发送端传输到接收端. 1.1 端口号 端⼝号(Port)标识了⼀个主机上进行通信的不同的应用程序 端口号范围划分: 0-1023:知名端口号,HTTP,FTP,SSH等这些…...
一个免费 好用的pdf在线处理工具
pdf24 doc2x 相比上面能更好的支持数学公式。但是收费...
新书速览|云原生Kubernetes自动化运维实践
《云原生Kubernetes自动化运维实践》 本书内容: 《云原生Kubernetes自动化运维实践》以一名大型企业集群运维工程师的实战经验为基础,全面系统地阐述Kubernetes(K8s)在自动化运维领域的技术应用。《云原生Kubernetes自动化运维实践…...
解决安卓so库异常无法打印堆栈的问题
解决方案: 设置 android:extractNativeLibs"true" 直接在 AndroidManifest.xml 里加上: <applicationandroid:extractNativeLibs"true"> </application>这样,so 文件会被解压,崩溃时可以正常打…...
996引擎-接口测试:背包
996引擎-接口测试:背包 背包测试NPC参考资料背包测试NPC CONSTANT = require("Envir/QuestDiary/constant/CONSTANT.lua"); MsgUtil = require("Envir/QuestDiary/utils/996/MsgUtil.lua");...
红数码影视(RED Digital Cinema)存储卡格式化后的恢复方法
红数码影视(RED Digital Cinema)的摄像机可以生成两种RAW级高清视频文件,一种是R3D,一种是MOV。其中MOV属于苹果(apple)公司的QT视频封装结构,使用的视频编码是Apple ProRes;而R3D则是RED公司自创的RAW视频文件,这种文件解码需要使…...
若依前端框架增删改查
1.下拉列表根据数据库加载 这个是用来查询框 绑定了 change 事件来处理站点选择变化后的查询逻辑。 <el-form-item label"站点选择" prop"stationId" v-has-permi"[ch:m:y]"><el-select v-model"queryParams.stationId" pl…...
YARN Cluster模式和Client模式的区别是什么
在 Apache Spark 的 YARN 部署中,Cluster 模式和Client 模式的核心区别在于 Driver 的启动位置和客户端(提交任务的机器)的角色。以下是两者的详细对比: 1. 核心区别概览 特性YARN Cluster 模式YARN Client 模式Driver 位置在 YA…...
哪吒汽车:一边熬夜蹦迪,一边找药投医
两年前,威马CEO沈晖发了个短视频,内容是“活下去,像牲口一样活下去”。 如今最能体会沈晖当时心情的,估计就是方运舟了。 作为哪吒汽车创始人兼董事长,他连续多次被限高,为了让哪吒汽车活下去,…...
Java 集合 List、Set、Map 区别与应用
一、核心特性对比 二、底层实现与典型差异 List ArrayList:动态数组结构,随机访问快(O(1)),中间插入/删除效率低(O(n))LinkedList:双向链表结构,头尾操作…...
天地图InfoWindow插入React自定义组件
截至2025年03月21日天地图的Marker不支持添加Label; 同时Label和Icon是不支持自定义HTMLElement只支持String;目前只有InfoWindow支持自定义HTMLElement; 效果图 React核心api import ReactDOM from react-dom/client const content document.createElement(div);…...
深度学习PyTorch之动态计算图可视化 - 使用 torchviz 生成计算图
序号系列文章1深度学习训练中GPU内存管理2深度学习PyTorch之数据加载DataLoader3深度学习 PyTorch 中 18 种数据增强策略与实现4深度学习pytorch之简单方法自定义9类卷积即插即用5深度学习PyTorch之13种模型精度评估公式及调用方法6深度学习pytorch之4种归一化方法(…...
拓展知识三:编码学及密码学
编码和密码的区别 研究密码变化的客观规律,应用于编制密码以保守通信秘密的,称为编码学;应用于破译密码以获取通信情报的,称为破译学,总称密码学。 编码和密码是两个不同的概念,它们的区别如下:…...
【商城实战(54)】解锁商城国际化密码:内容管理全攻略
【商城实战】专栏重磅来袭!这是一份专为开发者与电商从业者打造的超详细指南。从项目基础搭建,运用 uniapp、Element Plus、SpringBoot 搭建商城框架,到用户、商品、订单等核心模块开发,再到性能优化、安全加固、多端适配…...
JS 应用WebPack 打包器第三方库 JQuery安装使用安全检测
# 打包器 -WebPack- 使用 & 安全 参考: https://mp.weixin.qq.com/s/J3bpy-SsCnQ1lBov1L98WA Webpack 是一个模块打包器。在 Webpack 中会将前端的所有资源文件都作为模块处理。 它将根据模块的依赖关系进行分析,生成对应的资源。 五个核心概…...
【嵌入式硬件】三款DCDC调试笔记
关于开关电源芯片,重点关注输入电源范围、输出电流、最低压降。 1.MP9943: 以MP9943为例,输入电压范围4-36V,输出最大电流3A,最低压降为0.3V 调整FB使正常输出为5.06V 给定6V空载、5V空载、5V带2A负载的情况: 6V带2A…...
深入理解 HTML5 Web Workers:提升网页性能的关键技术解析
深入理解 HTML5 Web Workers:提升网页性能的关键技术解析 引言1. 什么是 Web Workers?Web Workers 的特点: 2. Web Workers 的使用方式2.1 创建一个 Web Worker步骤 1:创建 Worker 文件步骤 2:在主线程中调用 Worker 3…...
计算机网络的分类——按照按拓扑结构分类
计算机的拓扑结构是引用拓扑学中研究和大小、形状无关的点、线关系的方法,将网络中的计算机和通信设备抽象为一个点,把传输介质抽象成一条线,由点和线组成的几何图形就是计算机网络的拓扑结构。计算机网络的拓扑结构主要由通信子网决定&#…...
AI大白话(四):自然语言处理——AI是如何理解和生成人类语言的?
🌟引言: 专栏:《AI大白话》 AI大白话(一):5分钟了解AI到底是什么? AI大白话(二):机器学习——AI是怎么“学习“的? AI大白话(三):深度学习——AI的‘大脑‘是如何构建的? 大家好!欢迎回到"AI大白话"系列。前面我们聊了AI的基本概念、机器学习的原理…...
Android第六次面试总结(Java设计模式篇一)
单例模式属于创建型设计模式,它保证一个类仅有一个实例,并且提供一个全局访问点来获取该实例。下面为你详细阐述单例模式的好处和坏处。 好处 资源优化:单例模式能保证一个类只有一个实例,这对于那些创建和销毁开销大的对象&…...
如何在 React 项目中进行服务器端渲染(SSR),它有什么优势
大白话如何在 React 项目中进行服务器端渲染(SSR),它有什么优势 什么是服务器端渲染(SSR) 在传统的 React 项目里,页面的渲染工作是在浏览器里完成的。也就是当你访问一个网页时,浏览器会先下…...
JVM 01
今天是2025/03/20 16:36 day 09 总路线请移步主页Java大纲相关文章 今天进行JVM前二个模块的归纳 首先是JVM的相关内容概括的思维导图 以下是针对思维导图中 内存管理 和 垃圾回收(GC) 模块的详细说明: 1. 内存管理(运行时数据…...
MATLAB 调用arduino uno
为了授课,必须重新把arduino用上。 采用MATLAB编码,可以简化相关程序授课部分 1 安装包 MATLAB Support Package for Arduino Hardware - File Exchange - MATLAB Central (mathworks.com) 需要这个插件。 当然也可下载simulink的模块,但…...
WPS宏开发手册——JSA语法
目录 系列文章2、JSA语法2.1、打印输出2.2、注释2.3、变量2.4、数据类型2.5、函数2.6、运算符2.7、比较2.8、if else条件语句2.9、for循环2.10、Math对象(数字常用方法)2.11、字符串常用方法2.12、数组常用方法 系列文章 使用、工程、模块介绍 JSA语…...
linux如何释放内存缓存
[rootredis ~]# sync #将内存缓存数据强制写入磁盘(保存数据后再做释放) [rootredis ~]# echo 1 > /proc/sys/vm/drop_caches #释放内存缓存...
2025年渗透测试面试题总结-某360-企业蓝军面试复盘 (题目+回答)
网络安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 360-企业蓝军 一、Shiro绕WAF实战方案 二、WebLogic遭遇WAF拦截后的渗透路径 三、JBoss/WebLogic反序…...
Atlas 800I A2 双机直连部署DeepSeek-R1-w8a8
一、环境信息 1.1、硬件信息 Atlas 800I A2 * 2 1.2、环境信息 操作系统:openEuler 22.03 LTS NPU驱动:Ascend-hdk-910b-npu-driver 24.1.0 linux-aarch64.run NPU固件:Ascend-hdk-910b-npu-firware 7.5.0.3.220.run MindIE镜像ÿ…...
OpenHarmony 入门——ArkUI 跨页面数据同步和页面级UI状态存储LocalStorage小结(二)
文章大纲 引言一、在代码逻辑使用LocalStorage二、从UI内部使用LocalStorage三、LocalStorageProp和LocalStorage单向同步四、LocalStorageLink和LocalStorage双向同步五、兄弟组件之间同步状态变量七、将LocalStorage实例从UIAbility共享到一个或多个视图 引言 前面一篇文章主…...
自我革命!优利德全面进入智能示波器时代
AI重构电子测试新范式 春节期间,DeepSeek(深度求索)火遍全网。作为国内首个全面对标GPT-4技术架构的AI大模型,DeepSeek凭借其自主研发的通用大语言模型体系,涵盖了从7B到超千亿参数的完整模型矩阵,在数学推…...
Vue3 实战:基于 mxGraph 与 WebSocket 的动态流程图构建
本文将详细介绍如何在 Vue3 项目中集成 mxGraph 可视化库,并通过 WebSocket 实现画布元素的实时更新。适合有 Vue 基础的前端开发者学习参考。 一、技术栈准备 Vue3:采用 Composition API 开发mxGraph:JavaScript 流程图库(版本 …...
Python-金融相关代码讲解
文章目录 概要整体架构流程1.代码部分2.逐个讲解1)# -*- coding: utf-8 -*-2)基本库引入3)函数模块4)主程序 小结1. 问题拆解思维2. 文件处理三件套3. 字典的妙用:4. 上下文管理器(with open...)…...
深度解读DeepSeek:开源周(Open Source Week)技术解读
深度解读DeepSeek:开源周(Open Source Week)技术解读 深度解读DeepSeek:源码解读 DeepSeek-V3 深度解读DeepSeek:技术原理 深度解读DeepSeek:发展历程 文章目录 一、开源内容概览Day1:FlashMLAD…...
【算法】十大排序算法(含时间复杂度、核心思想)
以下是 **十大经典排序算法** 的时间复杂度、空间复杂度及稳定性总结,适用于面试快速回顾:排序算法对比表 排序算法最佳时间复杂度平均时间复杂度最差时间复杂度空间复杂度稳定性核心思想冒泡排序O(n)O(n)O(n)O(1)稳定相邻元素交换,大数沉底…...
TCP传输---计算机网络
TCP结构 源端口和目标端口:标识通信的应用程序。序列号:标记发送的数据段的顺序序号。确认号 ( ACK):确认接收到的数据序号。标志位:控制连接状态,包括 SYN(同步)、ACK(确认…...
创建vue2项目
1、前往 Node.js 官网下载并安装 Node.js,安装完成后,npm 会随之安装。确认 Node.js 和 npm 是否成功安装,可以在命令行中运行以下命令检查版本: node -v npm -v 运行结果:(如下,表示node和n…...
从投机到可持续发展:ETHDenver 2025 的关键启示!
ETHDenver 2025 重点讨论了 Web3 向可持续发展转型,特别强调了人才培养、去中心化治理和激励机制的紧密结合。Polkadot 一直以来的长期观点也进一步支持了行业从投机转向长期、社区驱动增长的趋势。随着 ETHDenver 2025 会议的的落幕,Polkadot 生态中的贡…...
WPS宏开发手册——使用、工程、模块介绍
目录 系列文章前言1、开始1.1、宏编辑器使用步骤1.2、工程1.3、工程 系列文章 使用、工程、模块介绍 JSA语法 第三篇练习练习题,持续更新中… 前言 如果你是开发人员,那么wps宏开发对你来说手拿把切。反之还挺吃力,需要嘻嘻…...
操作系统为ubantu的服务器上部署nginx软件基础步骤总结
今天在这里,我们总结一下ubantu的服务器上部署nginx软件,请按照以下步骤进行安装: 1、更新包列表: 首先更新你系统中的可用软件包列表,以确保你可以安装最新版本。 sudo apt update2、 Ubuntu上更新已安装软件包&…...
批量给 PPT 文档添加或删除保护,批量设置打开密码和只读密码
为了保护保护档的安全,我们经常会给 PPT 文档添加打开密码或者只读密码保护。有些场景下,我们也可能会碰到需要删除 PPT 文档的打开密码或者只读密码的需求。今天就给大家介绍一种方法可以一次性批量给多个 PPT 文档添加打开密码或者只读密码保护&#x…...
Elasticsearch 中的数据分片问题
Elasticsearch 分片机制 Elasticsearch 在存储数据时采用 分片(Shard)机制,以提高性能和可扩展性。它索引中的数据被划分成多个 主分片(Primary Shard) 和 副本分片(Replica Shard),…...
如何在IPhone 16Pro上运行python文件?
在 iPhone 16 Pro 上运行 Python 文件需要借助第三方工具或远程服务,以下是具体实现方法和步骤: 一、本地运行方案(无需越狱) 使用 Python 编程类 App 以下应用可在 App Store 下载,支持直接在 iPhone 上编写并运行 …...
Xinference安装、使用详细笔记
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 Xinference安装、使用详细笔记 支持推理引擎安装Xinference启动Xinference关于模型的推理引擎运行 qwen2.5-instruct管理模型官方详细文档:具体使用:对…...
NAT 模式
使用LVS的 NAT 模式实现 3 台RS的轮询访问。IP地址和主机自己规划。 1.节点规划 主机角色系统网络IPclientclientredhat 9.5仅主机192.168.180.100/24lvslvsredhat 9.5仅主机 NAT192.168.180.200/24 VIP 192.168.72.8/24 DIPnginxrs1redhat 9.5NAT192.168.226.7/24nginxrs2r…...
【中间件】Rabbit离线部署操作
准备安装包: 1.rabbitmq-server-4.0.7-1.el8.noarch.rpm 2.erlang-26.2.5.4-1.el9.x86_64.rpm 3.socat-1.7.4.1-6.el9.x86_64.rpm 操作步骤: 1.上传将RabbitMQ文件夹上传至服务器的home中 2.先安装erlang服务,顺序执行以下命令 设置服务的S…...
thinkphp漏洞再现
Thinkphp5x远程命令执行及getshell 1、开环境 2、使用工具攻击 开启工具 输入地址,点击漏洞检测 存在漏洞之后,选择漏洞,执行命令 3、也可以执行远程命令 执行命令 ?sindex/think\app/invokefunction&functioncall_user_func_array&…...
a-date-picker 格式化日期格式 YYYY-MM-DD HH:mm:ss
<template><a-range-pickerv-model:value"dateRange":show-time"{ format: HH:mm:ss, // 时间部分格式defaultValue: [moment(00:00:00, HH:mm:ss), moment(23:59:59, HH:mm:ss)] // 默认时间范围}"format"YYYY-MM-DD HH:mm:ss" // 整体…...
【前端】在<el-form>里循环插入list内容
这里的list为日志list【logList】 <el-row v-if"logList && logList.length > 0" style"display: flex; flex-direction: column; align-items: center;"><el-rowv-for"(log, index) in logList" :key"index" s…...
Spring Boot 一个接口实现任意表的 Excel 导入导出
Java的web开发需要excel的导入导出工具,所以需要一定的工具类实现,如果是使用easypoi、Hutool导入导出excel,会非常的损耗内存,因此可以尝试使用easyexcel解决大数据量的数据的导入导出,且可以通过Java8的函数式编程解…...
华为交换相关
端口模式 (1)access:只能属于单个VLAN,一般用于连接计算机端口 (2)trunk:端口允许多个VLAN通过,可以接收和发送多个VLAN报文,默认情况下只有管理VLAN不携带标签信息 &…...
「宇树科技」13家核心零部件供应商梳理!
2025年2月6日,摩根士丹利(Morgan Stanley)发布最新人形机器人研报:Humanoid 100: Mapping the Humanoid Robot Value Chain(人形机器人100:全球人形机器人产业链梳理)。 2025年2月20日…...