1.1_5_2 计算机网络的性能指标(下)

继续来看计算机网络的性能指标,接下来我们探讨时延,时延带宽积和往返时延,以及信道利用率这几个性能指标。

首先来看时延这个性能指标,英文叫delay,也有的教材,把它翻译为延迟。所谓的时延,就是指数据从网络中的A点传送到B点所需要的时间。我们知道网络的情况很复杂,从A点传送到B点,中间可能会经过很多个路由器,以及会经过很多条通信链路,因此在数据传输的整个过程当中,每经过一段链路,或者每经过一个中间节点,都有可能会产生新的时间开销,因此当我们在探讨数据从 A传送到B所需要的总时延的时候,我们通常会把对时延的分析分为这样的几个部分,分别是发送时延、传播时延、处理时延和排队时延。这四种时延产生的原因各不相同,在这张图当中,给大家做了总结。发送时延这个术语,在有的地方也会把它翻译为传输时延,它和传播时延这个术语很容易混淆,一会儿我们会解释这两个术语的区别。

另外在这页 PPT 当中,我也给大家总结了发送时延和传播时延在考试当中计算的方法。关于如何做题、如何计算,一会儿我们会用例题来加以解释。现在我们先来理解这四种时延是如何产生的。


来看这样一个例子,假设主机A和主机B之间需要经过两段信道,以及中间会经过一个路由器的存储转发。假设主机A要给主机B发送80Mb的数据,这些数据把它传输到信道1上,是需要一定的时间开销的,这个时间开销取决于数据的大小以及数据传输速率。假设数据传输速率是100Mbps的话,把80Mb传输到信道1上,所需要的时间开销就等于80Mb除以100Mbps就应该等于0.8秒的时间
这部分的时间就是所谓的发送时延,又称为传输时延,它是节点把数据推向信道所花的时间。所以计算发送时延的时候,只需要用数据长度除以发送的速率就可以得到。
接下来这80Mb的数据在信道上是以电磁波的形式传播的,我们知道电磁波的传播有一定的速度,在不同材质的信道上,电磁波的传播速度是各不相同的,比如说铜线的传播速度是这样的,而光纤的传播速度是这样的。那么,电磁波从信道的一端传播到信道的另一端,所需要的这段时间就是所谓的传播时延。传播实延的计算很简单,只需要用这段信道的长度除以电磁波在这段信道内传播的速度,这样就可以计算出传播实延。再次强调,传播时延和传输时延是不一样的,不要混淆。为了让大家更直观的体会到传输时延和传播时延的区别,我们不妨引入一个现实世界中的模型。

假设城市A和城市B之间有两段高速路,中间是一个加油站。假设有很多车想从城市A到城市B,首先这些车得排队上高速,这些车上高速的速度取决于收费站让这些车通过的速度,比如说这个收费站每分钟只允许十辆车通过,如果有100辆车要上高速的话,显然就需要十分钟的时间。这部分时间就是所谓的传输时延,或者说是发送时延。接下来每一辆车上了高速之后,它就可以以高速路的限速去飙车。比如说这个路段总路程是400千米,它的限速是100千米每小时,那么一辆车从这段路的一端到另一端,所需要的时间就是四个小时,这部分的时间就是所谓的传播时延。这是高速公路的模型。

在计算机网络当中,我们可以把一个比特当做是一辆车,节点按照一定的速率把这些比特逐一的发送到信道上,每一个比特一旦上了信道就可以按照固定的速率在信道上传播,紧接着这些数据会被中间节点路由器所接收。我们知道现代计算机网络是以分组交换技术去传输数据的,所以路由器每接收到一整个分组之后,他需要去处理这个分组,要判断这个分组,有没有发生错误,以及这个分组应该转发到哪一个节点?那么路由器对分组的处理就产生了一部分的时间开销,我们把这部分时间开销称为处理时延。另一方面,一个路由器可能需要处理来自很多个节点的数据分组,如果路由器要处理的分组太多的话,这些数据分组就需要排队进入路由器。我们可以理解为路由器当中有一片内存空间,用于暂存即将被处理的分组。另一方面,如果路由器要发送的分组很多的话,那么这些分组在发送出去的时候也需要去排队,这些分组排队被路由器处理以及排队被路由器发出去,这些时间开销,我们就把它称为排队时间。这就类似于加油站作为高速路上的中间节点,它需要接收和处理很多车辆,每一辆车都需要进入加油站进行加油的处理,给每一辆车加油就会需要一定的处理时间,这部分时间就是所谓的处理时延。另一方面,如果加油站需要处理的车辆太多的话,那么很多车排队进加油站和排队出加油站,也需要一定的时间开销,排队进、排队出的这段时延就是所谓的排队时延。

回到网络模型,路由器对数据分组的处理时延和排队时延需要花多久呢,这个问题是不是很复杂?比如一个路由器,它的性能越好,它对分组的处理越快,也就是说处理时延也会越低。如果一个路由器,它的负载很高,也就是说它需要存储转发的分组很多,这种负载高的路由器,它的排队时延是不是就会很高,所以处理时延和排队时延,它受到很多复杂因素的影响,包括路由器的性能以及整个网络的数据的负载。

所以在考试当中,由于处理时延和排队时延的影响因素非常多。因此,在考试当中,我们一般不用去分析这两个部分的时延。在计算题当中,通常只考虑发送时延和传播时延。
回到刚才的模型,我们说主机A 给主机B发送数据,那么这些数据会以分组为单位被路由器存储和转发。假如一个分组大小是80Mb,并且路由器往信道2传输数据的速率是100Mbps,那么这个分组的发送时延就是0.8秒,接下来这个分组的数据在信道2上传播,也会产生传播实延,同样的传播时间的长短,取决于这段信道的长度,以及电磁波在这一段信道上传播的速度。所以我们可以得出这样的结论,在数据传输的过程当中,每经过一条信道,就会产生一次发送时延和一次传播时延。另外每经过一个中间节点,就会产生一个处理时延和排队时延。

接下来我们用一个例题来感受实验的计算。假设H1要给H2发送一个数据分组,分组的大小是1000 大B,H1往链路A上发数据的速率是100Mbps,路由器往链路B上发送数据的速率是80Mbps,数据在链路A上传播时延是0.01毫秒,链路B上的传播时延是0.05毫秒。如果不考虑路由器的处理时延和排队时延,求传输整个分组的总时延。

数据从H1发送到路由器,再发送到H2。首先,我们用分组的大小1000大B除以H1的发送速率,就可以得到整个分组,从H1到链路A上的发送时延总共需要0.08毫秒。在这个图当中,我们不妨这样表示,纵向是时间t增长的方向,H1总共花了0.08毫秒可以把整个分组传输到链路A上,由于链路A 的传播时延是0.01毫秒,这就意味着任何一个比特,从H1到路由器所需要的时间就是0.01毫秒,所以经过0.01毫秒之后,分组的第一个比特从H1到达了路由器,最后一个比特就是在第0.09毫秒的时候到达了路由器。也就是说在0.09毫秒这个时刻,路由器接收到了H1发来的整个分组,只有把整个分组接收完整之后,路由器才可以去处理这个分组。紧接着,路由器会把这个分组转发给 H2,发送速率是80Mbps,所以路由器把分组发送到链路B上所需要的发送时延,就应该是1000大B除以80Mbps,就应该等于0.1毫秒。路由器花了0.1毫秒的时间,把整个分组发送到链路B上,链路B的传播时延是0.05毫秒,所以这个分组的第一个比特从路由器到达H2所需要花的时间就是0.05毫秒。同样的道理,最后一个比特从发送到到达也需要0.05毫秒的时间.结合这个图,我们可以得到传输整个分组的总时延,等于最上面的这0.01毫秒,加上0.08毫秒,再加上0.05毫秒,再加上最后0.1毫秒,所有的这些时延加起来就是0.24毫秒。其中0.01和0.05这两个部分是传播时延,而
0.08和0.1这两个部分是发送时延。

接下来我们把条件改一下。假设路由器对分组的处理时延和排队时延等于0.04毫秒,这个图就会变成这个样子。也就是说,路由器接收到整个分组之后,需要花费0.04毫秒去排队和处理这个分组。在这种条件下,传输整个分组的总时延就需要再加上0.04,也就是等于0.28毫秒。这就是时延性能指标。在考试中,通常我们只需要考虑发送时延和传播时延,处理时延以及排队时延如果题目不做特别说明的话,我们可以直接把它忽略。

接下来看下一个性能指标,时延带宽积。时延带宽积就是把一段链路的传播时延乘以这段链路的带宽就可以得到时延带宽积,带宽的单位是比特每秒,而传播时延的单位是秒,所以时延带宽积的单位应该是比特。假设有一条链路,左边这台主机要给右边这台主机发送数据,无论这条链路上连接的是多高级的设备,这个设备往链路上发送数据的速率一定不能超过链路的带宽。假设这条链路的带宽是100Mbps,左边这台主机会逐笔特的把数据传输到链路上,并且每一个比特从链路的最左边传播到链路的最右边是需要一定时间的,这部分时间就是传播时延。我们不妨假设这段链路的传播时延是1秒,此时这段链路的时延带宽积就应该等于100Mbps乘以1秒就应该等于100M小b。时延带宽积这个性能指标意味着什么呢?我们知道第一个比特需要经过传播时延这么长的时间之后,才可以到达接收端,当第一个比特在链路上传播的过程中,发送方也一直在以最高数据率,把新的数据打到链路上,所以时延带宽积这个性能指标的含义就是在这条链路当中,已经从发送端发出,但是尚未到达接收端的最大的比特数。你可以把这条链路理解为一条水管,而链路的带宽就是水管的横截面。另外传播时延可以把它理解为是水管的长度。显然一根水管,它的横截面越大,并且水管的长度越大,水管的内部可以容纳的水量就会越大。对于一条链路来说也是一样的,它的带宽越大,并且传播时间越长,那么这条链路内部可以容纳的比特数也会越多。时延带宽机这个性能指标呃,在考试当中其实很少涉及它,主要用于设计最短帧长,这个问题我们会留到后续的章节来学习,在这我们只需要对这个性能指标有初步的印象就可以。

接下来看一个真题,在2009到2024这十几年的时间里,唯一一道涉及时延带宽积的题目。在一个分组交换网络当中,主机H1和H2通过路由器互连,这两段链路的带宽都是100Mbps,并且这两段链路的时延带宽积都是1000比特。题目怕你不知道时延带宽积1是什么,还贴心的给你解释了它的定义就是单向的传播时延乘以带宽,问我们如果H1向H2发送一个文件,文件大小是1M大B,由于是分组交换网络,所以这个文件,或者说这一整个报文会被拆分成多个分组来发送,每个分组的长度是1000B,问我们从文件开始发送到文件全部被接收为止,所需要的时间至少应该是多少。首先我们来看这整个文件会被拆分成多少个分组?用文件的总大小除以每个分组的大小就等于1000,题目告诉我们这儿的大M指的是十的六次方,所以整个文件会被拆分成1000个分组,每个分组的大小是1000大B,知道每个分组的大小,并且知道这两段链路的带宽分别是多少,我们就可以算出每个分组在一条链路上的发送时延应该是多少?发送时延等于分组的大小除以链路的带宽,注意把大 B换算成小b,就可以得到每个分组的发送时延是0.08毫秒。之前我们讲时延那个性能指标的时候,我们说过数据从A点传送到B点的时延,我们需要考虑的是发送时延以及传播时延,对于路由器的处理时延和排队时延,通常来说,如果题目没有特别说明,我们不用考虑这两部分的时间开销。刚才我们做的这些处理是为了求出每一个分组,发到链路上所需要的发送时延。接下来,我们还需要求出每一段链路的传播时间是多少?之前我们说传播时间等于链路的长度除以电磁波在链路中的传播速度,用这样的方法可以求出传播时延。但是这个题目没有告诉我们链路长度和电磁波速度这两个条件。不过它告诉我们时延带宽积等于传播时延乘以带宽,并且时延带宽积等于1000比特,带宽等于100Mbps。那么根据时延带宽机的定义,我们就可以知道单向的传播时延应该是等于时延带宽机除以带宽。因此圈1、圈2这两段链路的传播时延都是0.01毫秒。所以这个题目它虽然涉及到了时延带宽积,但是这个指标其实是想求出单向的传播时延。

知道了每个分组的发送时延和传播时延,接下来我们分析总耗时是多少?H1把文件拆分成1000个分组,依次发给路由器,由于不考虑路由器的处理时延和排队时延。因此路由器每接收到一个分组,就可以立即把这个分组转发给H2,之前我们算出一个分组的发送时间是0.08毫秒,所以H1需要花0.08毫秒把第一个分组传输到第一条链路上,由于链路的传播时间是0.01毫秒,所以这个分组的第一个比特经过零点零一毫秒之后可以到达路由器。与此同时,分组中的其他比特也会陆续的到达路由器,在0.09毫秒这个时刻,第一个分组的所有数据会全部到达路由器。路由器在接收到整个分组之后,就可以立即转发给H2,路由器给H2发送分组的过程中,每个分组的发送时延和传播时延也都是和刚才一样的,第一个分组在经过0.09毫秒之后,就可以完全被H2接收。回到主机H1,它总共有1000个分组需要发送。当H1发完第一个分组之后,紧接着它就可以发送第二个分组。同样的道理,路由器在这个时间点接收完第二个分组就可以立即把它转发给H2,后续所有的分组都是一样的,总计会有1000个分组被存储转发,传输整个文件所需要的总时间就应该等于80.10毫秒。所以这个题目的答案应该选择D选项。


接下来看第六个性能指标往返时延,英文缩写叫RTT,它表示的是从发送方发送完数据开始,到发送方接收到来自接收方的确认为止,总计所经历的时间。我们结合图示更好理解,假设A要给B发送一些数据,当接收方接收到这个数据之后,需要给发送方返回一个确认的消息。这种场景很常见,我们有时候给其他人发送的消息,其他人是需要给我们回复一个好的、收到或者已读。这样我们才可以确保这个数据的传输是可靠的,对方已经收到了我的数据,所以在计算机网络当中,很多情况下,当发送方给接收方发送完数据之后,接收方也需要给发送方返回一个确认的消息,以确保数据已被正确的接收,假设这些数据的发送时延是t1,另外数据从A点传播到B点,需要一定的时延,这部分时间就是t2,也就是传播时延,接收方在这个时间点接收到所有数据之后,它需要花一定的时间去处理这个数据,所以t3不妨把它理解为接收方的处理时延,接下来接收方给发送方返回确认消息,这个消息也有一定的长度。所以发送这些数据也需要一定的发送时延,t4这个部分就是确认消息的发送时延,紧接着经过t5这么长的时间,确认消息可以传播到发送方A这个地方,所以 t5是确认消息的传播时延。再回来看往返时延RTT的定义,我们应该从发送方发送完数据开始,也就是从红点开始计算,一直到发送方接收到确认消息为止,这一整段的时间就被称为往返时延。
所以结合这个事例来看,RTT应该是等于t2+t3+t4再加t5。我们不应该把t1这段时间计入往返时延。在这个例子当中,为了让问题探讨起来简洁一些,我们默认发送方和接收方,他们是直接用一根链路直连的,并没有在这张图中展示发送方和接收方中间还有其他路由器的情况。如果A、B之
间还有其他的中间节点,那无非就是在经过这些中间节点的存储转发而已,原理都是类似的,就不再赘述。往返时延这个性能指标,在现实生活中大家还是挺常见的。

如果你经常打游戏的话,基本上每一个游戏都会有一个所谓的游戏延迟,这样的一个指标会显示在游戏页面上。所谓的游戏延迟反映的其实就是你的手机到游戏服务器之间的往返延迟RTT,你在打游戏的时候,当你按完一个按键之后,你按下按键的这个动作最终会被封装为一坨数据,然后这坨数据会发给游戏服务器,游戏服务器接收到这坨数据之后,它就知道你是按下了某一个动作,接下来游戏服务器会对你的操作做出响应,并且会给你的手机返回一个结果,而当你的手机接收到游戏服务器发回来的返回消息之后,它就可以实时的渲染游戏画面,对游戏画面进行更新。因此大家在打游戏的时候,你会发现游戏延迟越高,当做一个操作之后,你的手机的反应会越卡顿,可能按下一个按键过了好久之后,游戏画面才出现相应的响应,其实本质上就是手机和服务器之间的RTT太长导致的。这就是第六个性能指标往返时延。

接下来看最后一个性能指标,信道利用率。就是说一个信道有百分之多少的时间是有数据通过的,我们可以用信道中有数据通过的时间除以有数据通过的时间,加没有数据通过的时间,就可以得出一个信道的利用率。

来看一个简单的例子,假设手机H1和手机H2通过蓝牙进行了连接,并且总共连接了一分钟的时间,在此期间H1给H2以80Mbps的速率传输了20张大小为10MB的照片,求蓝牙信道的信道利用率。代入信道利用率的公式,总共 20 张照片,每张照片是10M大B,照片的传输速率是80Mbps,需要注意把大B换算成小b,也就是要乘以八,把数据总量除以数据传输速率,就可以得到传输20张照片,总共需要多少时间,蓝牙连接的总时长是一分钟,也就是60秒,在这一分钟时间之内,只有20秒的时间是有数据通过的。因此信道利用率就是百分之33.3,这就是信道利用率。

有的时候我们也会探讨网络利用率这个性能指标,这个性能指标其实就是把网络当中所有信道的利用率求一个加权平均数就可以得到网络利用率。相比于信道利用率,网络利用率计算起来比较复杂,所以在考试当中很少涉及这个性能指标。通常在网络工程当中会有应用,值得一提的是网络中的信道利用率不能太低,也不能太高,利用率太低,会浪费信道的带宽资源。这个很好理解,就像有些高速路可能规划的不是特别合理,有的高速路车会很少,这就会导致车道利用率极低,也就是会浪费资源。另一方面,信道利用率如果太高的话,容易导致网络拥塞。比如说节假日期间,我们可以看到高速路上都是车,车道利用率虽然说极高,但是在这种情况下也很容易造成堵车。对于网络来说也是一样的,如果每一条信道的利用率都太高的话,很有可能会导致网络拥塞,反而使得网络的整体性能大幅的下降,所以信道利用率太高也不行,太低也不行。

在这个视频中,我们学习了时延,时延带宽积、往返时延和信道利用率这几个性能指标。其中时延这个性能指标是考试当中最常考的,所谓的时延就是指数据从发送端传送到接收端所需要的总时间,总时延由发送时延,传播时延,处理时延和排队时延这四个部分组成,考试当中更常考的是发送时延和传播时延。发送时延是节点把数据推向信道所花的时间,只需要用数据长度除以数据的发送速率,就可以得到发送时延,发送时间又称为传输时延,这个术语和传播时间非常容易混淆。在阅读和做题的时候,需要注意区分。传播时延是由电磁波在信道当中传播所花的时间导致的,用信道长度除以电磁波的传播速度,就可以得到传播时延。另外,当数据从一端传送到另一端的过程
当中,需要经过很多中间节点,通常来说就是路由器,路由器在处理分组的时候需要花一定的时间,这就导致了处理时延,如果路由器要处理的分组太多,这些分组排队进入路由器和发出路由器也需要一定的时间,这就造成了排队时延。考试当中如果题目不特别说明的话,一般来说我们不需要考虑处理时延和排队时延。这是时延这个性能指标,有了这个性能指标之后,如果我们用一个信道单向的传播时延乘以这个信道的带宽就可以得到一个信道的时延带宽积,时延带宽积的单位是比特,这个性能指标在考试当中涉及的不多。不过在后续章节当中,我们还会接触到时延带宽积这个性能指标。大家记住怎么算就可以。接下来往返时延这个性能指标,它表示的是从发送方发送完数据开始,到发送方接收到确认为止,所经历的时间,注意是从发送完数据开始计时。谢希仁老师的计算机网络教材第八版当中,关于往返时延的定义就特别强调了这一点。在有的教材当中,可能会把往返时延定义为从发送方开始发送数据,到收到确认为止,所经历的时间。由于大部分学校的计算机考研以及408的统考主要参考的还是谢希仁老师的教材,所以我们以谢希仁老师给出的这个定义为准。最后我们简单的介绍信道利用率这个性能指标,它指的是某个信道中有百分之多少的时间是有数据通过的,信道的利用率不能太低,也不能太高,信道利用率太高,有可能会导致网络拥塞。再结合上一视频中介绍的速率、带宽和吞吐量,所有的计算机网络的性能指标就介绍完了。由于性能指标是比较高频的考点,所以这个视频中涉及到的例题还请大家回顾和吸收一下。

以上就是这部分的全部内容。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/87924.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/87924.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PP-OCRv2:超轻OCR系统的万能包

PP-OCRv2:超轻OCR系统的万能包摘要光学字符识别(OCR)系统已广泛应用于多种场景,但设计兼顾精度与效率的OCR系统仍具挑战性。我们此前提出的超轻量OCR系统PP-OCR在平衡两者方面取得进展。本文进一步提出PP-OCRv2,通过五…

常见的软件版本开源协议

开源软件许可证核心指南 一、许可证基础分类 1. 宽松型许可证(Permissive) 核心特征:允许闭源衍生,仅保留版权声明适用场景:商业集成、快速开发代表协议: 📜 MIT 📜 Apache 2.0 &…

基于FPGA的一维序列三次样条插值算法verilog实现,包含testbench

目录 1.前言 2.算法运行效果图预览 3.算法运行软件版本 4.部分核心程序 5.算法仿真参数 6.算法理论概述 7.参考文献 8.算法完整程序工程 1.前言 三次样条插值是一种在数据拟合和信号处理中广泛应用的技术,它通过构造分段三次多项式来逼近给定的离散数据点&a…

RAG 之 Prompt 动态选择的三种方式

“如果我有5个prompt模板,我想只选择一个每次都自动五选一能做到吗怎么做?” 完全可以做到。这在复杂的RAG或Agentic工作流中是一个非常普遍且关键的需求,通常被称为“条件路由(Conditional Routing)”或“动态调度&am…

【ROS2 自动驾驶学习】02-安装ROS2及其配套工具

目录 一、设置语言环境 二、添加存储库 三、添加软件源 四、安装ROS2 五、配置环境 六、测试ROS2 七、安装一些工具 7.1 terminator 7.2 colcon工具 7.3 tf工具 7.4 joint-state-publisher工具 7.5 urdf 八、安装三方库 8.1 Eigen 8.2 yaml-cpp 8.3 matplotl…

系统学习Python——并发模型和异步编程:基础知识

分类目录:《系统学习Python》总目录 并行是并发的一种特殊情况。**所有并行系统都是并发的,但不是所有并发系统都是并行的。**在21世纪初,我们可以使用单核设备在GNU Linux上同时处理100个进程。一台拥有4个CPU核的现代笔记本计算机&#xff…

睿尔曼系列机器人——以创新驱动未来,重塑智能协作新生态(下)

在智能制造与人工智能深度融合的当下,机器人技术正经历从 “功能替代” 到 “价值共创” 的深刻跃迁。睿尔曼,作为全球超轻量仿人机械臂领域的先行者,始终秉持 “让机器人触手可及” 的使命,凭借底层技术的突破性进展,…

表征工程(Representation Engineering, RepE)

表征工程(Representation Engineering, RepE) 近年来,表征工程(Representation Engineering, RepE)在提升AI系统透明度和可控性方面取得了显著进展。 一、大模型可解释性与可控性的突破 核心论文:《Representation Engineering: A Top-Down Approach to AI Transparen…

国产ARM+FPGA工业开发平台——GM-3568JHF

一、引言 随着物联网和国产替代需求的快速发展,嵌入式系统面临计算性能与硬件灵活性的双重挑战。GM-3568JHF开发板基于国产“ARMFPGA”异构架构,结合瑞芯微RK3568J处理器与紫光同创Logos-2 FPGA芯片,支持国产自主操作系统,满足通…

RISCV Linux 虚拟内存精讲系列一 Sv39

笔者认为,Linux 操作系统(Operating System)最核心的机制是虚拟内存(Virtual Memory)。因为,操作系统主要作用是将硬件环境抽象起来,给在其中运行的应用(Applications)提…

【apply from: “$flutterRoot/packages/flutter_tools/gradle/flutter.gradle“作用】

这行代码的作用是将 Flutter 的 Gradle 构建脚本集成到 Android 项目中,具体细节如下:作用解析:引入 Flutter 构建逻辑 flutter.gradle 是 Flutter SDK 的核心构建脚本,它负责: 编译 Dart 代码为原生二进制文件&#x…

深入理解JavaScript设计模式之命令模式

深入理解JavaScript设计模式之命令模式 文章目录深入理解JavaScript设计模式之命令模式定义简单命令模式组合命令模式使用命令模式实现文本编辑器目标关键类说明实现的效果交互逻辑流程所有代码:总结定义 命令模式也是设计模式种相对于变焦简单容易理解的一种设计模…

CSS 网页布局:从基础到进阶

CSS 网页布局:从基础到进阶 引言 随着互联网的飞速发展,网页设计已经成为了一个不可或缺的领域。CSS(层叠样式表)作为网页设计中的关键工具,用于控制网页元素的样式和布局。本文将为您全面解析CSS网页布局,…

【人工智能】大语言模型(LLM) NLP

大语言模型(LLM)& NLP1.大语言模型(LLM)1.1 一句话解释1.2 更形象的比喻1.3 为什么叫 “大” 模型1.4 它能做什么1.5 现实中的例子2.对比 NLP2.1 用 “汽车进化” 比喻 NLP → LLM2.2 为什么说 LLM 属于 NLP2.3 LLM 的 “革命…

Unity HDRP + Azure IoT 的 Python 后端实现与集成方案

Unity HDRP Azure IoT 的 Python 后端实现与集成方案 虽然Unity HDRP本身使用C#开发,但我们可以构建Python后端服务支持物联网系统,并与Unity引擎深度集成。以下是完整的实现方案: 系统架构 #mermaid-svg-qCDb0g9Ik287Cg8X {font-family:&qu…

小黑黑日常积累大模型prompt句式2:【以段落的形式输出,不分点列举】【如果没有相关内容则不输出】【可读性强】【输出格式规范】

以段落的形式输出,不分点列举 每个标题下直接接续段落内容,不编号、不分点。......标题下直接接续段落内容,不继续进行分点列举。如果没有相关内容则不输出 若某一部分无法从原文中提取有效信息,则跳过该部分内容,不做…

React Native 基础组件详解<一>

一、Text组件 1)numberOfLines:显示行数 2)ellipsizeMode:超出隐藏的位置 clip->裁掉 head/middle/ tail->点的位置 3)selectable: 是否可以选中 4)selectionColor:选中后的颜色 5&#…

异步编程(Promise/Generator/async)

1、Promise 2、Generator 3、async/await

【Note】《Kafka: The Definitive Guide》 第8章: Cross-Cluster Data Mirroring

《Kafka: The Definitive Guide》 第8章: Cross-Cluster Data Mirroring 一、跨集群镜像的场景与价值 多区域低延迟访问 将业务数据从主集群实时复制到多个地理区域的集群,缩短消费者跨区读取延迟。 灾备切换 当主集群出现故障时,可快速将消…

「Windows/Mac OS」AIGC图片生成视频 ,webui + stable-diffusion环境部署教程

stable-diffusion webui 环境搭建目录 一、Windows 环境部署 stable-diffusion-webui1、准备条件2、安装Python 3.10.X(**较新版本的 Python 不支持 torch**)3、安装Git 教程4、使用Git 下载 stable-diffusion-webui 存储库,4.1、显示报错 5…