当前位置: 首页 > news >正文

TCP、UDP详解

目录

1.区别

1.1 概括

1.2 详解

2.TCP

2.1 内容

2.2 可靠传输

2.2.1 确认应答

2.2.2 超时重传

2.2.3 连接管理

三次握手

四次挥手

2.2.4 滑动窗口

2.2.5 流量控制

2.2.6 拥塞控制

2.2.7 延时应答

2.2.8 捎带应答

2.2.9 面向字节流

2.2.10 异常情况的处理

1.进程崩溃

2.主机关机(正常关机)

3.主机掉电(非正常)

4.网线断开

3.对比


TCP和UDP是传输层的两个重要协议,也是面试中经常会被问到的,属于面试高频点。今天,我们来学习这两个协议。

1.区别

1.1 概括

TCP:有连接,可靠传输,面向字节流,全双工

UDP:无连接,不可靠,面向数据报,全双工

1.2 详解

1.TCP是有连接的,UDP是无连接的

连接是抽象的概念,本质上是建立连接的双方,各自保存对方的信息

两台计算机建立连接,就是彼此保存了对方的关键信息

TCP想要通信,就需要建立连接,做完之后,才能后续通信。至于连接如何建立,不需要代码干预,是系统内核自动负责完成的。

对于应用程序来说,客户端这边,主要是要发起“建立连接”动作;服务器这边,主要是把建立好的连接从内核中拿到应用程序里~

如果有客户端,和服务器建立连接,这个时候服务器的应用程序是不需要做出任何操作(也没有任何感知的),内核直接就完成了,建立连接的过程(三次握手),完成流程之后,就会在内核的队列中(这个队列是每个serverSocket都有一个这样的队列)排队。

应用程序要想和这个客户端进行通信,就需要通过一个accept方法,把内核队列已经建立好的连接对象,拿到应用程序中。

即一个典型的生产者-消费者模型。

UDP想要通信,直接发送数据即可,不需要征得对方同意,UDP自身也不会保存对方的信息

2.TCP是可靠传输,UDP是不可靠传输的

网络上进行通信,A-> B发送一个消息,这个消息是不可能做到100%送到的

TCP就内置了可靠传输机制,UDP就没有内置可靠传输。

A -> B 发消息,消息是不是到达B这一方,A自己能感知到,进一步的,就可以在发送失败的时候采取一定的措施(尝试重传之类的)

可靠传输需要付出代价:a.机制更复杂  b.传输效率会降低

3.TCP是面向字节流的,UDP是面向数据报的

TCP和文件一样,以字节位单位来进行传输

UDP则是按照数据报为单位,来进行传输的(UDP数据报是有严格的格式的)

4.TCP和UDP都是全双工的

一个信道,允许双向通信,就是全双工

一个信道,允许单向通信,就是半双工

2.TCP

2.1 内容

2.2 可靠传输

常见面试题:

TCP是如何保证可靠传输的?

通过确认应答为核心,借助其他机制辅助,最终完成可靠传输

2.2.1 确认应答

发送方,把数据发给接收方之后,接收方收到数据就会给发送方返回一个应答报文

发送方,如果收到这个应答报文了,就知道自己的数据是否发送成功

2.2.2 超时重传

如果网络传输过程中,出现丢包了,发送包,势必就无法收到ACK了

由于丢包是一个“随机”的事件,因此在TCP传输过程中,丢包就存在两种情况:

1.传输的数据丢了

2.返回的ACK丢了

无论出现上述两种情况,发送方都会采取统一的措施,就是“重传”

发送方,何时重传?等待时间

发送方,发出数据之后,会等待一段时间,如果这个时间之内,ack来了,此时就自然视为数据到达

如果达到这个时间之后,数据还没到,就会触发重传机制~

超过等待时间,再重传~

第二次重传后的等待时间会比第一次时间延长,但延长也不是无限制延长,重传若干次后,时间拉长到一定程度,认为数据再重传也没有用了,就放弃tcp连接(准确来说就是会触发tcp的重置连接操作)

TCP会有一个“接收缓冲区”就是一个内存空间,会保存当前已经收到的数据,以及数据的序号

接收方如果发现,当前发送方发来的数据,是已经再接收缓冲区中存在的(收到过的重复数据了),接收方就会直接把这个后来的数据给丢弃掉,确保应用程序进行read的时候,读到的是只有一个数据

2.2.3 连接管理

建立连接 + 断开连接

面试中最经典的问题:三次握手 + 四次挥手

建立连接

三次握手

tcp这里的握手,也就是给对方传输一个简短的,没有业务数据的数据包,通过这个数据包,来唤起对方的注意,从而触发后续的操作(握手这个操作,不是TCP独有的,甚至不是网络通信独有的,计算机中很多的操作,都会涉及到握手)

TCP的三次握手,TCP在建立连接的过程中,需要通信双方进行“打三次招呼”才能够完成连接建立的

问:三次握手是要解决什么问题?

答:三次握手核心作用一:

投石问路,确认当前网络是否是畅通的

三次握手核心作用二:

能够发送方和接受党都能确认自己的接收能力和发送能力均正常

三次握手核心作用三:

让通信双方,在通信过程中,针对一些重要的参数,进行协商

问:四次握手可以吗?两次握手可以吗?

答:四次:可以,但没必要

两次:不可以,不能达到双方都知道信息的过程

断开连接

四次挥手

为什么中间两次不能像建立连接一样合并为一步?

不一定

不能合并的原因:ACK和第二个FIN的触发时机是不同的

ACK是内核响应的,B收到FIN,就会立即返回ACK

第二个FIN是应用程序的代码触发,B这边调用了close方法,才会触发FIN

是否意味着,如果这这边代码close没写/没执行到,是不是第二个FIN就一直发不出去?(有可能的)

如果是正常的四次挥手,正常的流程断开的连接

如果是不正常的挥手(没有挥完四次),异常的流程断开连接(也是存在的)

三次握手ACK和第二个syn都是内核触发的,同一个时机,可以合并

可以合并的情况:TCP还有一个机制,延迟应答,能够拖延ACK的回应时间,一旦ACK滞后了,就有机会和下一个FIN一起合并

哪一方,主动断开连接,哪一方就会进入TIME_WAIT

TIME_WAIT状态的主要存在的意义,就是为了防止最后一个ACK丢失,留下的后手

如果最后一个ACK丢了,站在B的角度,B就会触发超时重传,重新把刚才的FIN给传一遍

如果刚才A没有TIME_WAIT状态,就意味着A这个时候就已经真的释放连接了,此时重传的FIN也就没人能处理,没人能返回ACK了,B也就永远收不到ACK了

A这边使用TIME_WAIT状态进行等待,等待的这个时间,就会为了处理后续B重传的FIN

此时如果有重传的FIN来了,就可以继续返回ACK了,B这边的重传才有意义

TIME_WAIT等待多久呢?

假设网络上两个节点通信消耗的最大等待时间为MSL,此时的TIME_WAIT的时间就是2MSL (已经是上限了,绝大部分的数据包不会达)

2.2.4 滑动窗口

提高效率

TCP的可靠传输,是会影响传输的效率的

滑动窗口,就让可靠传输性能的影响,更小一些

TCP只要引入了可靠传输,传输效率是不可能超过没有可靠性的UDP的

TCP这里的“效率机制”都是为了让影响更小,缩小和UDP的差距

批量传输数据,不等ack回来,直接再发下一个数据

批量传输,也不是“无限的”传输

批量传输也是存在一定的上限的,达到上限之后,再统一等待ack

不等待的情况,批量最所发多少数据,这个数据量,称为“窗口大小”

当前A->B是批量的发了四份数据

此时B也要给A回应四组ACK,此时A已经达到窗口大小,再收到ACK之前,不能继续往下发了

需要等待有ACK回来了之后,才能继续往下发。

可以不需要一次等待四个ACK全部回来之后才能继续发,而是回来一个ack,就立即继续发一个

窗口越大,等待的ack越多,此时传输效率也就越高

情况一:ack丢了

这种情况,不需要任何重传,没事了

确认信号,表示的含义是,当前序号之前的数据,已经确认收到了

下一个你应该从确认序号这里,继续发送

例如:如果1001这个ACK丢了,但是2001ACK到了,则证明2001之前的数据都已经确认传输成功了,涵盖了1001的情况

情况二:数据包丢了

主机A就需要知道是哪个数据丢了,主机B也就得告诉A是哪个数据丢了。

主机A看到了B这边连续的几个ack,都是再索要1001,A就知道了,1001这个数据就是丢了,就重传了1001

1001-2000重传之后,顺利到达B索要的就是7001

上述的重传过程,并没有额外的冗余操作,哪个数据丢了,就重传哪个,没丢的数据就不需要重传,整个过程都是比较快速的

如果通信双方,传输数据的量比较小,也不频繁,就仍然是普通的确认应答和超时重传。

如果通信双方,传输数据量更大,也比较频繁,就会进入到滑动窗口模式,按照快速重传的方式处理。

通过滑动窗口的方式传输数据,效率是会提升的

窗口越大,传输效率就越大(一份时间,等待的ack更多了,总的等待时间更少了)

当然,滑动窗口也不是设置越大越好

如果传输的速度太快,就可能会使接收方,处理不过来了,此时,接收方也会出现丢包,发送方还得重传。

2.2.5 流量控制

站在接收方的角度,反向制约发送方的传输效率

考虑接收方的处理能力

发送方发送的速率,不应该超过接收方的处理能力

可以根据缓冲区剩余空间大小来判断消费者处理速度

把剩余缓冲区返回给发送方,发送方根据改缓冲区大小发送数据

窗口探测包:并不携带具体的业务数据,只是为了触发ack,为了查询当前接收方这边的接收缓冲区剩余空间。

2.2.6 拥塞控制

不仅仅是接收方,还有整个通信的路径

关键问题:接收方的处理能力,很方便进行量化

但是中间节点,结构更复杂,更难以直接的进行量化,因此可以通过“实验”的方式,来找到一个合适的值

让A先按照比较低的速度(小的窗口)来发送数据

如果数据传输的过程非常顺利,没有丢包,再尝试使用更大的窗口,更高的速度进行发送(一点一点变化)

随着窗口大小不停的增大,达到一定的程度,可能中间节点就会出现问题了,此时这个节点就可能出现丢包

发送方发现丢包了,就把窗口大小调整小,此时如果还是继续丢包,就继续缩小,如果不丢包了,就继续尝试变大

在这个过程中,发送发不断调整窗口大小,逐渐达到“动态平衡”

最终时机发送的窗口大小,是取流量控制和拥塞控制中的窗口的较小值

2.2.7 延时应答

A把数据传给B,B就立即返回ack给A(正常)

也有时候,A传输给B,此时B等一会再返回给ack给A(延时应答)

本质上也是为了提升传输效率

延时返回ack,给接收方更多的时间,来读取接收缓冲区的数据

此时接收方读了这个数据之后,缓冲区剩余空间,变大了,返回的窗口大小也就更大了

2.2.8 捎带应答

在延时应答的基础上,进一步的提升效率

网络通信中,往往是这种“一问一答”这样的通信模型

ack也是内核立即返回的,response则是应用程序代码来返回的,这两者的时机是不同的

由于tcp引入了延时应答,上面的ack不一定是立即返回,可能要等一会

在等一会的过程中,B就刚好把response给计算好了,计算好了之后,就会把response返回,与此同时顺便就把刚才要返回的ack也带上了,两个数据就合并成了一个数据,此时就可以得到更高效的效果

2.2.9 面向字节流

这里有一个最重要的问题,粘包问题(不是tcp独有的,而是面向字节流的机制都有类似的情况)

此处“包”应用层数据包,如果同时有多个应用层数据包被传输过去,此时就容易出现粘包问题

目前,接收缓冲区中,这三个应用层数据包的数据,就是以字节的形式紧紧挨在一起的

接收方的应用程序,读取数据的时候,可以一次读一个字节,也可以读两个字节也可以读N个字节……

但是最终的目标是为了得到完整的应用层数据包,B应用程序,就不知道,缓冲区里的数据,从哪里到哪里是一个完整的应用数据包了

相比之下,像UDP这样的面向数据报的通信方式,就没有上述问题

UDP的接收缓冲区中,相当于是一个一个的DatagramPacket对象,应用程序读的时候,就明确知道哪里到哪里是一个完整的数据。

如何解决粘包问题?

核心思想:通过定义好应用层协议,明确应用层数据包之间的边界

1.引入分隔符

例如,可以使用\n作为分隔符

aaa\n

bbb\n

ccc\n

2.引入长度

3aaa

4bbbb

3ccc

自定义应用层协议的格式

xml,json,protobuffer,本身都是明确了包的边界的

2.2.10 异常情况的处理

如果在tcp的使用中出现了意外,会如何处理?

1.进程崩溃

(本质上是进程没了,异常终止了。文件描述符表,也就释放了,相当于调用socket.close(),此时就会触发FIN,对方收到之后,自然也就返回FIN和ACK,这边再进行ACK,即正常的四次挥手断开连接的流程)

TCP的连接,可以独立于进程存在(进程没了,TCP连接不一定没)

2.主机关机(正常关机)

进行关机的时候,就是会触发强制终止进程的操作,相当于1,此时就会触发FIN,对方收到之后就会返回FIN和ACK,此时不仅仅是进程没了,整个系统也可能关闭了,如果在系统关闭之前,对端返回的ACK和FIN到了,此时系统还是可以返回ACK,进行正常的四次挥手。但如果系统已经关闭了,ACK和FIN迟到了,无法进行后续ACK的响应,站在对端的角度,对端以为是自己的FIN丢包了,重传FIN,重传几次都没有响应,自然就会放弃连接(把持有的对端的信息就删了)。

3.主机掉电(非正常)

此时,就是一瞬间的事情,来不及杀进程,也来不及发送FIN,主机就直接停机了,站在对端的角度,对端不一定知道这个事情

如果对端是在发送数据(接收方掉电),发送的数据就一直会等待ACK ,触发超时重传,触发TCP连接重置功能,发起“复位报文段”,如果复位报文段发过去之后,也没有效果,此时就会释放连接了

RST复位报文段

如果对端是在接收数据(发送方掉电),对端还在等待数据到达…..等了半天没消息,此时其实是无法区分,是对端没发消息,还是对方挂了

TCP中提供了心跳包机制(形象的比喻),即接收方也会周期性的给发送方发送一个特殊的,不携带业务数据的数据包,并且期望对方返回一个应答,如果对方没有应答,并且重复了多次之后,仍然没有,就视为对方挂了,此时就可以单方面释放连接了。

4.网线断开

和主机掉电非常类似

当前A给B发送数据,一旦网线断开

A就相当于会触发超时重传 -> 连接重置 ->单方面释放连接

B就会触发心跳包 -> 发现对端没响应 -> 单方面释放连接

3.对比

TCP和UDP之间的对比

TCP优势在于可靠传输,更适用绝大部分场景

UDP优势在于高效率,更适用于“可靠性不敏感,性能敏感”场景

局域网内部(同一个机房)的主机之间通信

如果要传输比较大的数据包,TCP更优先(UDP有64kb的限制)

如果要进行“广播传输”,优先考虑UDP,UDP天然支持广播,TCP不支持(应用程序额外写代码实现)

有一种特殊的场景,需要把数据发给局域网的所有机器,这个情况就是广播

相关文章:

TCP、UDP详解

目录 1.区别 1.1 概括 1.2 详解 2.TCP 2.1 内容 2.2 可靠传输 2.2.1 确认应答 2.2.2 超时重传 2.2.3 连接管理 三次握手 四次挥手 2.2.4 滑动窗口 2.2.5 流量控制 2.2.6 拥塞控制 2.2.7 延时应答 2.2.8 捎带应答 2.2.9 面向字节流 2.2.10 异常情况的处理 1.…...

【脚本工具库】批量下采样图像(附源码)

在图像处理领域,我们经常需要对大批量图像进行下采样操作,以便减小图像的尺寸和文件大小,这对于节省存储空间和提高处理速度非常有帮助。手动操作不仅耗时,而且容易出错。为了解决这个问题,我们可以编写一个Python脚本…...

Web渗透:文件包含漏洞

Ⅱ.远程文件包含 远程文件包含漏洞(Remote File Inclusion, RFI)是一种Web应用程序漏洞,允许攻击者通过URL从远程服务器包含并执行文件;RFI漏洞通常出现在动态包含文件的功能中,且用户输入未经适当验证和过滤。接着我…...

什么是yum源?如何对其进行配置?

哈喽,大家好呀!这里是码农后端。今天来聊一聊Linux下的yum源及其配置相关的内容。简单来说,yum源就相当于一个管理软件的工具,可以想象成一个很大的仓库,里面存放着各种我们所需要的软件包及其依赖。 一、Linux下软件包…...

Node.js全栈指南:认识MIME和HTTP

MIME,全称 “多用途互联网邮件扩展类型”。 这名称相当学术,用人话来说就是: 我们浏览一个网页的时候,之所以能看到 html 文件展示成网页,图片可以正常显示,css 样式能正常影响网页效果,js 脚…...

基于weixin小程序智慧物业系统的设计

管理员账户功能包括:系统首页,个人中心,管理员管理,用户管理,员工管理,房屋管理,缴费管理,车位管理,报修管理 工作人员账号功能包括:系统首页,维…...

成功解决​​​​​​​TypeError: __call__() got an unexpected keyword argument ‘first_int‘

成功解决TypeError: __call__() got an unexpected keyword argument first_int 目录 解决问题 解决思路 解决方法 T1、直接调用原始函数 T2、检查装饰器实现 T3、使用不同的调用方式 解决问题 result = multiply(**arguments) File "D:\ProgramData\Anaconda3\Li…...

vue3用自定义指令实现按钮权限

1,编写permission.ts文件 在src/utils/permission.ts import type { Directive } from "vue"; export const permission:Directive{// 在绑定元素的父组件被挂载后调用mounted(el,binding){// el:指令所绑定的元素,可以用来直接操…...

Nuxt3:当前页面滚动到指定位置

在Nuxt 3中&#xff0c;如果你想让当前页面跳转到指定位置&#xff0c;可以使用scrollIntoView方法。你需要给目标位置的元素添加一个ref引用&#xff0c;然后通过程序调用该ref来执行滚动。 以下是一个简单的例子&#xff1a; <template><div><!-- 其他内容 …...

word图题表题公式按照章节编号(不用题注)

预期效果&#xff1a; 其中3表示第三章&#xff0c;4表示第3章里的第4个图。标题、公式编号也是类似的。 为了达到这种按照章节编号的效果&#xff0c;原本可以用插入题注里的“包含章节编号” 但实际情况是&#xff0c;这不仅需要一级标题的序号是用“开始->多级列表”自动…...

最小生成树模型

文章目录 题单最小生成树模型1.[最短网络(prim)](https://www.acwing.com/problem/content/1142/)2. [局域网(kruskul)](https://www.acwing.com/problem/content/1143/)3. [繁忙的都市](https://www.acwing.com/problem/content/1144/)4. [ 联络员 ](https://www.acwing.com/p…...

基于盲信号处理的声音分离-基于改进的信息最大化的ICA算法

基于信息最大化的ICA算法的主要依据是使输入端与输出端的互信息达到最大&#xff0c;且输出各个分量之间的相关性最小化&#xff0c;即输出各个分量之间互信息量最小化&#xff0c;其算法的系统框图如图所示。 基于信息最大化的ICA算法的主要依据是使输入端与输出端的互信息达到…...

如何在Qt Designer中管理QSplitter

问题描述 当按下按钮时&#xff0c;我希望弹出一个对话框&#xff0c;用户可以在其中选择内容并最终按下 ‘Ok’ 按钮。我想在这个对话框中放置一个 QSplitter&#xff0c;左侧面板将显示树状结构&#xff0c;右侧将显示其他内容。如何正确实现这一点&#xff1f; 从 Qt 的示…...

关于新零售的一些思考

本文作为2024上半年大量输入之后的核心思考之一。工作到一定阶段之后&#xff0c;思考的重要性越来越高&#xff0c;后续会把自己的个人思考记录在这个新系列《施展爱思考》。背景是上半年面临业务转型从电商到新零售&#xff0c;本文是相关大量输入之后的思考&#xff0c;对新…...

C++初学者指南-2.输入和输出---从输入流错误中恢复

C初学者指南-2.输入和输出—从输入流错误中恢复 文章目录 C初学者指南-2.输入和输出---从输入流错误中恢复怎么了&#xff1f;解决方案&#xff1a;出错后重置输入流 怎么了&#xff1f; 示例&#xff1a;连续输入 int main () {cout << "i? ";int i 0;cin…...

毫秒级响应!清科优能应用 TDengine 建设虚拟电厂运营管理平台

小T导读&#xff1a;在清科优能的虚拟电厂运营管理平台建设中&#xff0c;项目初期预计涉及约一万台设备、总数据采集量达数十万&#xff0c;在数据库选择上&#xff0c;其希望能支持至少两千台设备的并发数据处理。本文介绍了清科优能的数据库选型经验以及最终应用效果&#x…...

【Ubuntu noble】apt 无法安装软件 Unable to locate package vim

宿主机以及 docker 无法定位软件包 将 /etc/apt/sources.list.d/ubuntu.sources 修改为以下内容&#xff08;主要是 Suites 字段增加了noble noble-updates&#xff09; Types: deb URIs: http://archive.ubuntu.com/ubuntu/ Suites: noble noble-updates noble-backports Com…...

Instagram APIj接口——快速获取Ins帖子媒体内容下载链接

一、引言 在社交媒体蓬勃发展的今天&#xff0c;Instagram已成为用户分享照片、视频和精彩瞬间的首选平台。然而&#xff0c;对于很多用户来说&#xff0c;想要保存或分享Instagram上的精彩内容却常常遇到困扰。为了解决这个问题&#xff0c;我们精心打造了一款全新的Instagra…...

Java基础(四)——字符串、StringBuffer、StringBuilder、StringJoiner

个人简介 &#x1f440;个人主页&#xff1a; 前端杂货铺 ⚡开源项目&#xff1a; rich-vue3 &#xff08;基于 Vue3 TS Pinia Element Plus Spring全家桶 MySQL&#xff09; &#x1f64b;‍♂️学习方向&#xff1a; 主攻前端方向&#xff0c;正逐渐往全干发展 &#x1…...

吐血推荐!3款视频生成工具,全部国产,都免费

AI视频大模型的爆发&#xff0c;让创作爆款视频不再是专业人士的能力。 今天二师兄给大家推荐3款免费的视频生成工具。 01 可灵 推荐指数 &#xff1a; 五颗星 先看效果 可灵大模型测试 可灵大模型是快手AI团队自主研发的视频生成大模型&#xff0c;具备强大的视频创作能力&a…...

【Web3】Web3.js 启动!并解决Web3 is not a constructor报错

苏泽 大家好 这里是苏泽 一个钟爱区块链技术的后端开发者 本篇专栏 ←持续记录本人自学智能合约学习笔记和经验总结 如果喜欢拜托三连支持~ 本节教大家如何启动Web3.js 目录 Web3 启动&#xff01; 于是很愉快的报错 创建实例&#xff01; 出来了 Web3&#xff1a;模块…...

算法训练营第六十七天 | 卡码网110 字符串接龙、卡码网105 有向图的完全可达性、卡码网106 岛屿的周长

卡码网110 字符串接龙 这题一开始用的邻接表dfs&#xff0c;不幸超时 #include <iostream> #include <list> #include <string> #include <vector> using namespace std;int minLen 501;bool count(string a, string b) {int num 0;for (int i 0; …...

搭建 MySQL MHA

搭建 MySQL MHA 搭建 MySQL MHA实验拓扑图实验环境实验思路MHA架构故障模拟 实验部署数据库安装主从复制部署时间同步主服务器配置从服务器配置创建链接 MHA搭建安装依赖的环境安装 node 组件安装 manager 组件配置无密码认证在 manager 节点上配置 MHA管理 mysql 节点服务器创…...

python中的线程与进程

一、线程与进程 在计算机科学中&#xff0c;理解线程和进程的区别是重要的基础知识。这些概念对于多任务操作和并发编程尤为关键。下面将详细介绍线程与进程的区别、特点和各自的使用场景。 1.1 进程&#xff08;Process&#xff09; 进程是操作系统分配资源的基本单位。每个进…...

网络安全筑基篇——反序列化漏洞

目录 序列化是什么&#xff1f; 反序列化又是什么&#xff1f; 反序列化漏洞的危害 代码样例 常见的魔术方法 修复方式有哪些&#xff1f; 常见的反序列化漏洞 Shiro反序列化漏洞 Fastjson反序列化漏洞 序列化是什么&#xff1f; 将实例化对象转换成字节流的过程 反序…...

帝国cms定时审核并更新的方法

比如你网站采集了成千上万篇文章&#xff0c;不可能一下子全部放出来的&#xff0c;所以为了模拟人工发布&#xff0c;那么就需要定时审核发布文章内容&#xff0c;本文内容核心解决了更加个性化的逼真模拟人工更新网站内容。 第一&#xff1a;首先要满足你的表中有未审核的数据…...

一个简单好用安全的开源交互审计系统,支持SSH,Telnet,Kubernetes协议

前言 在当今的企业网络环境中&#xff0c;远程访问和交互审计成为了保障网络安-全的重要组成部分。然而&#xff0c;现有的解-决方案往往存在一些痛点&#xff0c;如复杂的配置、有限的协议支持、以及审计功能的不足。这些问题不仅增加了IT管理员的负担&#xff0c;也为企业的…...

使用Spring Boot和WebSocket实现实时通信

使用Spring Boot和WebSocket实现实时通信 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天我们将探讨如何在Spring Boot应用中使用WebSocket实现实时通信&am…...

【Vue】集成富文本编辑器

这文章使用的是wangeditor插件&#xff0c;官网地址&#xff1a;wangEditor&#xff0c;这个比较简单 安装 npm i wangeditor --save 使用 <div id"editor"></div>import E from "wangeditor"const editor new E("#editor") e…...

【论文阅读】--Popup-Plots: Warping Temporal Data Visualization

弹出图&#xff1a;扭曲时态数据可视化 摘要1 引言2 相关工作3 弹出图3.1 椭球模型3.1.1 水平轨迹3.1.2 垂直轨迹3.1.3 组合轨迹 3.2 视觉映射与交互 4 实施5 结果6 评估7 讨论8 结论和未来工作致谢参考文献 期刊: IEEE Trans. Vis. Comput. Graph.&#xff08;发表日期: 2019&…...

重建大师引擎数0,本地引擎设置改不了,空三在跑,这样是正常的吗?

答&#xff1a;任务目录和引擎监控目录并没有按照网络集群设置&#xff0c;需要调整为网络路径。 重建大师是一款专为超大规模实景三维数据生产而设计的集群并行处理软件&#xff0c;输入倾斜照片&#xff0c;激光点云&#xff0c;POS信息及像控点&#xff0c;输出高精度彩色网…...

APM教程-SkyWalking安装和配置

SkyWalking简介 APM (Application Performance Management) 即应用性能管理&#xff0c;属于IT运维管理&#xff08;ITOM)范畴。主要是针对企业 关键业务的IT应用性能和用户体验的监测、优化&#xff0c;提高企业IT应用的可靠性和质量&#xff0c;保证用户得到良好的服务&#…...

斯坦福大学 AI 研究部门推出的“7 周人工智能学习计划”

①AI Python 基础&#xff0c;包括计算机原理、语法、判断语句等&#xff1b; ②AI Python 进阶&#xff0c;涉及 Linux 命令、多任务编程等&#xff1b; ③机器学习&#xff0c;涵盖算法、数据结构等&#xff1b; ④计算机视觉与图像处理&#xff0c;包含图像分类、目标检测…...

World of Warcraft [CLASSIC] plugin lua

World of Warcraft [CLASSIC] plugin lua 魔兽世界lua脚本插件 World of Warcraft API - Wowpedia - Your wiki guide to the World of Warcraft D:\World of Warcraft\_classic_\Interface\AddOns zwf.lua function CountdownFunc()CountdownFrame CreateFrame("Fram…...

背靠广汽、小马智行,如祺出行打得过滴滴和百度吗?

©自象限原创 作者丨艾AA 编辑丨薛黎 北京时间6月14日凌晨&#xff0c;在特斯拉股东大会上&#xff0c;马斯克阐述了对Robotaxi&#xff08;自动驾驶出租车&#xff09;商业模式的构想——特斯拉不仅会运营自己的无人驾驶出租车车队&#xff0c;还可以让特斯拉车主们的爱…...

CCSP自考攻略+经验总结

备考攻略 备考攻略准备阶段通读阶段精度阶段总复习阶段刷题阶段命运审判 写到最后 备考攻略 趁着对ssp知识点的理解还在&#xff0c;开始ccsp的考证之路&#xff0c;文章结构还是按照cissp备考篇的结构梳理。本次备考和cissp的离职在家备考不同&#xff0c;ccsp是在职利用非工…...

面试突击:ArrayList源码详解

本文已收录于&#xff1a;https://github.com/danmuking/all-in-one&#xff08;持续更新&#xff09; 前言 哈喽&#xff0c;大家好&#xff0c;我是 DanMu。ArrayList 是我们日常开发中不可避免要使用到的一个类&#xff0c;并且在面试过程中也是一个非常高频的知识点&#…...

力扣每日一题:2734. 执行子串操作后的字典序最小字符串

题目链接 脑子比较笨&#xff0c;分三种情况考虑&#xff1a; 以a开头。xxa&#xff0c;a在中间。 对于情况2还有两种可能&#xff1a; 1. 全是a&#xff0c;最后一个元素需要替换成z&#xff0c;因为必须执行一次操作。 2. aaaxxa&#xff0c;中间有一段非a&#xff0c;将这…...

C++11中std::thread的使用

C11 引入了 std::thread&#xff0c;它是用于创建和管理线程的标准库类。以下是详细的讲解&#xff0c;包括如何使用 std::thread 进行线程创建、管理和参数传递等操作。 1. 包含必要的头文件 在使用 std::thread 前&#xff0c;需要包含 <thread> 头文件&#xff1a; …...

酷瓜云课堂(内网版)v1.1.5 发布,局域网在线学习+考试系统

更新内容 更新layui-v2.9.10更新docker国内镜像地址增加导入镜像构建容器的方式教师不批阅非首次考试试卷轮播图增加专栏类型目标链接增加课程能否发布检查去除初始化kindeditor语言文件去除选择题EF选项优化富文本内容显示样式优化内容图片点击放大监听优化试题题干答案等图片…...

大数据之Hadoop部署

文章目录 服务器规划服务器环境准备1. 网络测试2. 安装额外软件包3. 安装基础工具4. 关闭防火墙5. 创建用户并配置权限6. 创建目录并设置权限7. 卸载JDK8. 修改主机名9. 配置hosts文件10. 重启服务器 配置免密登录安装Java安装Hadoop1. Hadoop部署2. 配置Hadoop3. 格式化Hadoop…...

Java异常处理中的“throw”与“throws”的区别

在Java中&#xff0c;throw 和 throws 是两个用于处理异常的关键词&#xff0c;它们的使用场景和目的有所不同 1. throw throw 关键字用于在Java程序中显式地抛出一个异常。当你检测到某些条件&#xff08;通常是错误条件&#xff09;时&#xff0c;你可以使用 throw 来抛出一…...

英语智汇学习系统

目 录 1 软件概述 1.1 项目研究背景及意义 2 系统相关技术 2.1 HTML、WXSS、JAVASCRIPT技术 2.2 Vanilla框架 2.3 uni-app框架 2.4 MYSQL数据库 3 需求分析 3.1 可行性分析 3.2 功能需求分析 3.3 系统用户及用例分析 3.4 非功能需求分析 3.5 数据流图…...

ExtractAItoTEXT 提取Adobe illustrator AI文件中的文字到文本文件翻译并写回到Adobe illustrator AI文件

Extract Text from Adobe illustrator to text for translate and write back to Adobe illustrator after translate in text file. Originally script from marceloliaohotmail.com during his work in SDL. Updated by me. 从Adobe illustrator中提取文本以进行翻译&#x…...

ms17-010 ms12-020 ms-08-067

MS17-010是一个由微软发布的安全公告编号&#xff0c;它指代了一个严重级别的安全漏洞&#xff0c;该漏洞存在于Microsoft Windows的Server Message Block 1.0 (SMBv1)协议处理中。这个漏洞被命名为“永恒之蓝”&#xff08;EternalBlue&#xff09;&#xff0c;因为它最初是由…...

【海思Hi3403V100】多目拼接相机套板硬件规划方案

海思Hi3403V100 是专业超高清智能网络摄像头 SoC。该芯片最高支持四路 sensor 输入&#xff0c;支持最高 4K60fps 的 ISP 图像处理能力&#xff0c;支持 3F 、WDR、多级降噪、六轴防抖、硬件拼接、多光谱融合等多种传统图像增强和处理算法&#xff0c;支持通过AI 算法对输入图像…...

AI的赚钱风向,彻底变了!

从2023年3月起&#xff0c;生成式AI技术的浪潮席卷全球&#xff0c;让不少人开始焦虑中国AI技术与美国的差距。然而&#xff0c;最近的趋势显示&#xff0c;AI创业的盈利模式已经发生了根本性的变化。今年&#xff0c;我们见证了AIGC&#xff08;人工智能生成内容&#xff09;企…...

服务器重启后jenkins任务内容不见了,并且新建任务也不见了

服务器centos7.4 背景&#xff1a;服务器异常重启后&#xff0c;jenkins上面的任务只剩下一些前端项目&#xff0c;后端的任务都不展示了&#xff0c;jenkins版本是Jenkins 2.346.3 解决方案&#xff1a;根据显示&#xff0c;jenkins很多的插件引用失败&#xff0c;显示需要升…...

如何选择合适的WordPress主机?

选择合适的WordPress主机需要考虑多个因素&#xff0c;包括性能、速度、存储空间、带宽、硬件配置、操作系统、支持的软件版本以及安全性等。以下是一些详细的建议&#xff1a; 性能和速度&#xff1a;选择一个能够提供快速加载速度和稳定性能的主机至关重要。快速加载的网站不…...

面试突击:Java 集合知识体系梳理

本文已收录于&#xff1a;https://github.com/danmuking/all-in-one&#xff08;持续更新&#xff09; 前言 哈喽&#xff0c;大家好&#xff0c;我是 DanMu。在 Java 开发中&#xff0c;集合类对象绝对是被使用最频繁的对象之一。因此&#xff0c;深入了解集合类对象的底层数…...