【计算机网络 (谢希仁) 习题题解】第5章 运输层 (4)——TCP的拥塞控制

2023-11-15


拥塞控制的一般原理

在计算机网络中的链路容量 (即带宽)、交换结点中的缓存和处理机等,都是网络的资源。在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏。这种情况就叫做拥塞 (congestion)。可以把出现网络拥塞的条件写成如下的关系式:
∑ 对 资 源 的 需 求 > 可 用 资 源 \sum 对资源的需求 > 可用资源 >

网络拥塞往往是由许多因素引起的。
例如,当某个结点缓存的容量太小时,到达该结点的分组因无存储空间暂存而不得不被丢弃。
又如,处理机处理的速率太慢可能引起网络的拥塞。
问题的实质往往是整个系统的各个部分不匹配。只有所有的部分都平衡了,问题才会得到解决。

拥塞常常趋于恶化。拥塞引起的重传并不会缓解网络的拥塞,反而会加剧网络的拥塞。

进行拥塞控制需要付出代价。

  • 这首先需要获得网络内部流量分布的信息。
  • 在实施拥塞控制时,还需要在结点之间交换信息和各种命令,以便选择控制的策略和实施控制。这样就产生了额外开销。
  • 拥塞控制有时需要经一些资源 (如缓存、带宽等) 分配给个别用户 (或一些类别的用户) 单独使用,这样就使得网络资源不能更好地实现共享。
  • 在设计拥塞控制策略时,必须全面衡量得失。

拥塞控制
上图中横坐标是提供的负载 (offered load),代表单位时间内输入给网络的分组数目。也称为输入负载网络负载
纵坐标是吞吐量 (throughout),代表单位时间内从网络输出的分组数目。

具有理想拥塞控制的网络,在吞吐量饱和之前,网络吞吐量等于提供的负载 (45°斜线)。当提供的负载超过某一限度时,由于网络资源受限,吞吐量达到饱和 (水平线)。这表明提供的负载中有一部分损失掉了。

实际网络的情况,随着提供的负载的增大,网络吞吐量的增长速率逐渐减小。即,在网络吞吐量还未达到饱和时,就已有一部分的输入分组被丢弃了。
当网络的吞吐量明显地小于理想的吞吐量时,网络就进入了轻度拥塞的状态。
当提供的负载达到某一数值时,网络的吞吐量反而随提供的负载的增大而下降,这时网络就进入了拥塞状态
当提供的负载继续增大到某一数值时,网络的吞吐量下降到零,网络已无法工作,这就是死锁 (deadlock)。

拥塞控制很难设计,因为它是一个动态的问题。当前网络正朝着高速化的方向发展,很容易出现缓存不够大而造成分组丢失。但分组的丢失是网络发生拥塞的征兆而不是原因。在许多情况下,甚至整数拥塞控制机制本身成为引起网络性能恶化甚至发生死锁的原因

可以从控制理论的角度来看拥塞控制这个问题。可以分为开环控制闭环控制两种方法。
开环控制是在设计网络时先将有关发生拥塞的因素考虑周到,力求网络在工作时不产生拥塞。但一旦整个系统运行起来,就不再中途进行改正了。

闭环控制是基于反馈环路的概念,主要有以下几种措施:

  • 监测网络系统以便检测到拥塞在何时、何处发生。
  • 把拥塞发生的信息传送到可采取行动的地方。
  • 调整网络系统的运行以解决出现的问题。

有很多方法可用来监测网络的拥塞。主要的一些指标是:由于缺少缓存空间而被丢弃的分组的百分数、平均队列长度、超时重传的分组数、平均分组时延、分组时延的标准差,等待。上述这些指标的上升都标志着拥塞的增长。

一般在监测到拥塞发生时,要将拥塞发生的信息传送到产生分组的源站。当然,通知拥塞发生的分组同样会使网络更加拥塞。
另一种方法是在路由器转发的分组中保留一个比特或字段,用该比特或字段的值表示网络没有拥塞或产生了拥塞。也可以由一些主机或路由器周期性地发出探测分组,以询问拥塞是否发生。


TCP 的拥塞控制方法

TCP 进行拥塞控制的算法有四种,即慢开始 (slow-start)、拥塞避免 (congestion avoidance)、快重传 (fast retransmit) 和快恢复 (fast recovery)。为了集中精力讨论拥塞控制,假定:

  • 数据是单方向传送的,对方只传送确认报文。
  • 接收方总是有足够大的缓存空间,因而发生窗口的大小由网络的拥塞程度来决定。

讨论基于窗口的拥塞控制。发送方维持一个叫做拥塞窗口 cwnd (congestion window) 的状态变量。拥塞窗口的大小取决于网络的拥塞程度,并且动态地在变化。发送方让自己的发送窗口等于拥塞窗口

发送方控制拥塞窗口的原则是:只要网络没有出现拥塞,拥塞窗口就可以再增大一些,以便把更多的分组发送出去,这样就可以提高网络的利用率。只要网络出现拥塞或有可能出现拥塞,就必须把拥塞窗口减小一些,以减少注入到网络中的分组数,以便缓解网络出现的拥塞。

发送方如何知道网络发生了拥塞呢?判断网络拥塞的依据是出现了超时

慢开始算法的思路:当主机开始发送数据时,由于并不清楚网络的负荷情况,较好的方法是先探测一下,即由小到大逐渐增大发送窗口,也就是说,由小到大逐渐增大拥塞窗口数值

RFC 5681 把初始拥塞窗口 cwnd 设置为不超过 2 至 4 个发送方的最大报文段 SMSS (Sender Maximum Segment Size) 的数值。具体规定如下:

  • 若 SMSS > 2190 字节,则设置初始拥塞窗口 cwnd = 2 × SMSS 字节,且不得超过 2 个报文段。
  • 若 (SMSS > 1095 字节) 且 (SMSS ≤ \le 2190 字节),则设置初始拥塞窗口 cwnd = 3 × SMSS 字节,且不得超过 3 个报文段。
  • 若 SMSS l e le le 1095 字节,则设置初始拥塞窗口 cwnd = 4 × SMSS 字节,且不得超过 4 个报文段。

上述规定就是限制初始拥塞窗口的字节数。

慢开始规定,在每收到一个对新的报文段的确认后,可以把拥塞窗口增加最多一个 SMSS 的数值。即
拥 塞 窗 口 cwnd 每 次 的 增 加 量 = min ⁡ ( N , SMSS ) 拥塞窗口 \text{cwnd} 每次的增加量 = \min (N, \text{SMSS}) cwnd=min(N,SMSS)

其中, N N N 是原先未被确认的、但现在被刚收到的确认报文段所确认的字节数。

用这样的方法逐步增大发送方的拥塞窗口 cwnd,可以使分组注入到网络的速率更加合理。

为叙述方便,用报文段的个数作为窗口大小的单位

5-24
发送方每收到一个对新报文段的确认 (重传的不算) 就使发送方的拥塞窗口加 1。
使用慢开始算法后,每经过一个传输轮次 (transmission round),拥塞窗口 cwnd 加倍
一个传输轮次所经历的时间其实就是往返时间 RTT。

在 TCP 的实际运行中,发送方只要收到一个对新报文段的确认,其 cwnd 就立即加 1,并可以立即发送新的报文段,而不需要等这个轮次中所有的确认都收到后在发送新的报文段。

为了防止拥塞 cwnd 增长过大引起网络拥塞,需要设置一个慢开始门限 ssthresh 状态变量。ssthresh 的用法如下:

  • 当 cwnd < ssthresh 时,使用上述的慢开始算法。
  • 当 cwnd > ssthresh 时,停止使用慢开始算法而改用拥塞避免算法。
  • 当 cwnd = ssthresh 时,既可使用慢开始算法,也可使用拥塞避免算法。

拥塞避免算法的思路:让拥塞窗口 cwnd 缓慢地增大,即每经过一个 RTT 就把发送方的 cwnd 加 1。
因此在拥塞避免阶段有加法增大 AI (Additive Increase) 的特点。
这表明在拥塞避免阶段,拥塞窗口 cwnd 按线性规律缓慢增长,比慢开始算法的拥塞窗口增长率缓慢得多。
5-25
为了便于理解,图中的窗口单位不使用字节而使用报文段的个数。注意横坐标是传输轮次,不是时间。

当 TCP 连接进行初始化时,把 cwnd 置为 1。慢开始门限的初始值设置为 16 个报文段,即 ssthresh = 16。在执行慢开始算法时,cwnd 随着传输轮次按指数规律增长。

当 cwnd 增长到慢开始门限值 ssthresh 时 (图中的点①),改为执行拥塞避免算法,拥塞窗口按线性规律增长。
“拥塞避免”并非完全能够避免拥塞,而是说把拥塞窗口控制为按线性规律增长,使网络比较不容易出现拥塞

当 cwnd = 24 时,网络出现了超时 (图中的点②),发送方判断为网络拥塞。于是调整门限值 ssthresh = cwnd / 2 = 12,同时设置 cwnd = 1,进入慢开始阶段。

当 cwnd = 16 时 (图中的点④),出现了一个新的情况,发送方一连收到 3 个对同一个报文段的重复确认 (3-ACK)。

有时,个别报文段会在网络中丢失,但实际上网络并未发生拥塞。

采用快重传算法可以让发送方尽早知道发生了个别报文段的丢失
快重传算法首先要求接收方不要等待自己发送数据时才进行捎带确认,而是要立即发送确认,即使收到了失序的报文段也要立即发出对已收到的报文段的重复确认。
快重传
假定接收方没有收到 M3 但收到了 M4。按照快重传算法,接收方必须立即发送对 M2 的重复确认,以便让发送方及早知道接收方没有收到报文段 M3

快重传算法规定,发送方只要一连收到 3 个重复确认,就知道接收方确实没有收到 M3,因而应当立即进行重传 (即“快重传”),这样就不会出现超时,发送方也不会误认为出现了网络拥塞。

在图 5-25 中的点④,发送方知道现在只是丢失了个别的报文段。于是不启动慢开始,而是执行快恢复算法。这时发送方调整门限值 ssthresh = cwnd / 2 = 8,同时设置拥塞窗口 cwnd = ssthresh = 8,并开始执行拥塞避免算法。

图中标注有“TCP Reno 版本”,表示区别于老的 TCP Tahao 版本。

注意,也有的快恢复实现是把快恢复开始时的拥塞窗口 cwnd 值再增大一些,即等于新的 ssthresh + 3 × MSS。 理由是:既然发送方收到 3 个重复的确认,表明有 3 个分组已离开了网络。

在拥塞避免阶段,拥塞窗口是按照线性规律增大的,这常称为加法增大 AI (Additive Increase)。而一旦出现超时或 3 个重复的确认,就要把门限值设置为当前拥塞窗口值的一半,并大大减小拥塞窗口的数值。这常称为乘法减小 MD (Multiplicative Decrease)。二者合在一起就是 AIMD 算法。

TCP 拥塞控制流程图

实际上接收方的缓存空间总是有限的。接收方根据自己的接收能力设定了接收方窗口 rwnd,并把这个窗口值写入 TCP 首部中的窗口字段,传送给发送方。因此,接收方窗口又称为通知窗口 (advertised window)。因此,从接收方对发送方的流量控制的角度考虑,发送方的发送窗口一定不能超过对方给出的接收方窗口值 rwnd

发送方窗口的上限值 = Min [rwnd, cwnd]


主动队列管理 AQM

TCP 拥塞控制于网络层采取的策略有着密切的关系。

网络层的策略对 TCP 拥塞控制影响最大的是路由器的分组丢弃策略。在最简单的情况下,路由器的队列通常都是按照先进先出 FIFO (First In First Out) 的规则处理到来的分组。由于队列长度总是有限的,因此当队列已满时,以后再到达的所有分组将被丢弃。这叫做尾部丢弃策略 (tail-drop policy)。

路由器的尾部丢弃往往会导致一连串分组的丢失,使发送方出现超时重传,使 TCP 进入拥塞控制的慢开始状态。
在网络中通常有很多的 TCP 连接,这些连接中的报文段通常是复用在网络层的 IP 数据报中传送。在这种情况下,若发生了路由器中的尾部丢弃,可能会同时影响到很多条 TCP 连接,结果使者许多 TCP 连接在同一时间突然都进入到慢开始状态。这在 TCP 的术语中称为全局同步 (global syncronization)。全局同步使得全网的通信量突然下降很多,在网络恢复正常后,其通信量又突然增大很多。

为了避免发生网络中的全局同步现象,提出了主动队列管理 AQM (Active Queue Management)。“主动”是不要等到路由器的队列长度已经达到最大值时才不得不丢弃后面到达的分组。应当在队列长度到某个值得警惕的数值时 (即当网络拥塞有了某些拥塞征兆时),就主动丢弃到达的分组。

AQM 可以有不同实现方法,其中曾流行多年的是随机早期监测 RED (Random Early Detection) [RFC 2309]。但 RED 的使用效果不太理想,不再推荐使用 RED。现在已有几种不同的算法来代替旧的 RED,但还在实验阶段。


5-37 在 TCP 的拥塞控制中,什么是慢开始、拥塞避免、快重传和快恢复算法?这里每一种算法各起什么作用?“乘法减小”和“加法增大”各用在什么情况下?

  • 慢开始算法:当主机开始发送数据时,由于并不清楚网络的负荷情况,较好的方法是先探测一下,即由小到大逐渐增大发送窗口。
    使用慢开始算法后,每经过一个传输轮次,拥塞窗口 cwnd 加倍。
    “慢”并非指 cwnd 的增长速率慢,而是指在 TCP 开始发生报文段时先设置 cwnd = 1。
    用这样的方法逐步增大发送方的拥塞窗口 cwnd,可以使分组注入到网络的速率更加合理。
  • 拥塞避免算法:让拥塞窗口 cwnd 缓慢地增大,即每经过一个 RTT 就把发送方的 cwnd 加 1。
    “拥塞避免”并非完全能够避免拥塞,而是说把拥塞窗口控制为按线性规律增长,使网络比较不容易出现拥塞。
  • 快重传算法:首先要求接收方不要等待自己发送数据时才进行捎带确认,而是要立即发送确认,即使收到了失序的报文段也要立即发出对已收到的报文段的重复确认。
    发送方只要一连收到 3 个重复确认,应当立即进行重传,这样就不会出现超时,发送方也不会误认为出现了网络拥塞。
    采用快重传算法可以让发送方尽早知道发生了个别报文段的丢失。
  • 快恢复算法:发送方一连收到 3 个重复确认,知道只是丢失了个别的报文段。于是执行快恢复算法。这时发送方调整门限值 ssthresh = cwnd / 2,同时设置拥塞窗口 cwnd = ssthresh,并开始执行拥塞避免算法。

在拥塞避免阶段,拥塞窗口是按照线性规律增大的,这常称为加法增大 AI。而一旦出现超时或 3 个重复的确认,就要把门限值设置为当前拥塞窗口值的一半,并大大减小拥塞窗口的数值。这常称为乘法减小 MD。二者合在一起就是 AIMD 算法。


5-38 设 TCP 的 ssthresh 的初始值为 8 (单位为报文段)。当拥塞窗口上升到 12 时网络发生了超时,TCP 使用慢开始和拥塞避免。试分别求出第 1 轮次到第 15 轮次传输的各拥塞窗口大小。你能说明拥塞控制窗口每一次变化的原因吗?

:拥塞窗口大小分别为:1,2,4,8,9,10,11,12,1,2,4,6,7,8,9。

  • 第 1 轮次时,cwnd = 1。
  • 第 2 ~ 4 个轮次,cwnd 分别为 2,4,8。慢开始阶段,每经过一个传输轮次,拥塞窗口 cwnd 加倍。
  • 第 5 ~ 8 个轮次,cwnd 分别为 9,10,11,12。传输轮次为 4 时,cwnd = ssthresh,开始使用拥塞避免算法,每经过一个传输轮次,cwnd 加 1。
  • 第 9 轮次,cwnd = 1。传输轮次为 8 时,网络发生了超时。故开始使用慢开始,ssthresh = 12 / 2 = 6。
  • 第 10 ~ 11 轮次,cwnd 分别为 2,4。
  • 第 12 轮次,cwnd = 6。开始时 cwnd 加倍,但到达慢开始门限值 6 时,使用避免拥塞算法。
  • 第 13 ~ 15 轮次,使用避免拥塞算法。

5-39 TCP 的拥塞窗口 cwnd 大小与传输轮次 n 的关系如下所示:
cwnd
(1) 试画出如图 5-25 所示的拥塞窗口与传输轮次的关系曲线。
(2) 指明 TCP 工作在慢开始阶段的时间间隔。
(3) 指明 TCP 工作在拥塞避免阶段的时间间隔。
(4) 在第 16 轮次和第 22 轮次之后发送方是通过收到三个重复的确认还是通过超时检测到丢失了报文段?
(5) 在第 1 轮次、第 18 轮次和第 24 轮次发送时,门限 ssthresh 分别被设置为多大?
(6) 在第几轮次发送出第 70 个报文段?
(7) 假定在第 26 轮次之后收到了三个重复的确认,因而检测出了报文段的丢失,那么拥塞窗口 cwnd 和门限 ssthresh 应设置为多大?

:(1) 拥塞窗口于传输轮次的关系曲线如下:
A-9
(2) 慢开始时间间隔:[1, 6] 和 [23, 16]。
(3) 避免拥塞时间间隔:[6, 16] 和 [17, 22]。
(4) 在第 16 轮次之后发送方通过收到三个重复的确认检测到丢失了报文段。
在第 22 轮次之后发送方是通过超时检测到丢失了报文段。
(5) 在第 1 轮次发送时,ssthresh = 32。
在第 18 轮次发送时,ssthresh = 21,即发生拥塞时的一半。
在第 24 轮次发送时,ssthresh = 13,即发生超时时的一半。
(6) 前 6 个轮次发送报文段共 63 个,前 7 个轮次发送报文段共 96 个。故第 70 报文段在第 7 轮次发送出。
(7) 拥塞窗口 cwnd 和门限 ssthresh 应设置为 8 的一半,即 4。


5-40 TCP 在进行流量控制时,以分组的丢失作为产生拥塞的标志。有没有不是因拥塞而引起的分组丢失的情况?如有,请举出三种情况。

:例如,①当 IP 数据报在传输过程中需要分片,但其中的一个数据报片未能及时到达终点,而终点组装 IP 数据报已超时,因而只能丢弃该数据报;②IP 数据报已经到达终点,但终点的缓存没有足够的空间存放此数据报;③数据报在转发过程中经过一个局域网的网桥,但网桥在转发该数据报的帧时没有足够的差错空间而只好丢弃。


★ \bigstar 5-74 流量控制和拥塞控制的最主要的区别是什么?发送窗口的大小取决于流量控制还是拥塞控制?

拥塞控制与流量控制的关系密切,它们之间也存在着一些差别。

  • 拥塞控制防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不致过载。拥塞控制所要做的都有一个前提,就是网络能够承受现有的网络负荷
    拥塞控制是一个全局性的过程,涉及到所有的主机、所有的路由器,以及与降低网络传输性能有关的所有因素。
  • 流量控制往往是指点对点通信量的控制,是个端到端的问题 (接收端控制发送端)。流量控制所要做的是抑制发送端发送数据的速率,以便使接收端来得及接收。

拥塞控制和流量控制之所以常被弄混,是因为某些拥塞控制算法是向发送端发送控制报文,并告诉发送端,网络已出现麻烦,必须放慢发送速率。这点和流量控制相似。

发送方的窗口的上限值应当取为接收方窗口 rwnd 和拥塞窗口 cwnd 这两个变量中较小的一个,即:
发送方窗口的上限值 = Min [rwnd, cwnd]


【计算机网络 (谢希仁) 习题题解】目录

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【计算机网络 (谢希仁) 习题题解】第5章 运输层 (4)——TCP的拥塞控制 的相关文章

随机推荐

  • C语言技巧 ----------调试----------程序员必备技能

    作者前言 作者介绍 作者id 老秦包你会 简单介绍 喜欢学习C语言和python等编程语言 是一位爱分享的博主 有兴趣的小可爱可以来互讨 个人主页 小小页面 gitee页面 秦大大
  • 解决端口被占用问题,安装MySQL出现端口被占用

    1 快捷键 Win R 打开命令提示符 输出命令 netstat ano 目的 查看占用3306端口的 PID 值 上图可以看出 占用3306 窗口的 PID值为 13620 2 打开任务管理器 点击 详细信息 选中该程序 鼠标右键 点击
  • 密度聚类DBSCAN、主成分分析PCA算法讲解及实战(附源码)

    需要源码请点赞关注收藏后评论区留言私信 一 基于密度的聚类 基于密度的聚类算法的主要思想是 只要邻近区域的密度 对象或数据点的数目 超过某个阀值 就把它加到与之相近的聚类中 也就是说 对给定类中的每个数据点 在一个给定范围的区域中必须至少包
  • 操作系统最全面试题汇总

    1 操作系统的特点 共享 资源可被多个并发执行的进程使用 并发 可以在同一时间间隔处理多个进程 需要硬件支持 异步 进程走走停停 每次执行的速度不一样 但是要保证进程每次执行结果相同 虚拟 将物理实体映射成为多个虚拟设备 操作系统的组成 驱
  • Python中的pandas库简介及其使用

    pandas模块 pandas是一个强大的分析结构化数据的工具集 它的使用基础是Numpy 提供高性能的矩阵运算 用于数据挖掘和数据分析 同时也提供数据清洗功能 Pandas中常见的数据结构有两种 Series DateFrame 类似一维
  • 股票相关信息

    股票开头数字代表什么 600 开头的股票是上证 A股 属于大盘股 其中 6006 开头的股票是 最早上市的股票 6016开头的股票为大盘蓝筹股 900 开头的股票是上证 B股 000 开头的股票是深证 A股 001 002开头的股票也都属于
  • C++11尝鲜:右值引用和转发型引用

    C 11尝鲜 右值引用和转发型引用 2013 10 05 19 52 5979人阅读 评论 4 收藏 举报 分类 C 33 版权声明 本文为博主原创文章 未经博主允许不得转载 目录 右值引用 为了解决移动语义及完美转发问题 C 11标准引入
  • 软考高项学习教程【第一阶段】:第1章-信息系统开发基础【考点笔记1】

    文章目录 前言 一 信息系统开发基础 1 1 信息系统与信息化 1 信息系统建设 信息与信息系统的概念 2 信息系统的类型 了解 3 信息系统的生命周期 产品生命周期 重要 4 信息系统规划方法 5 信息系统开发方法 考点 5 1 结构化方
  • To install it, you can run: npm install --save module

    简直就是有毛病 和智障无异 吃了个午饭 VUE项目突然就不能运行了 报了个错 说让我npm install save module 报错如下 在main js文件中莫名其妙多了个webpack的引入 导致这个报错 然后按照提示我安装了这个m
  • Mac M1下安装、升级npm(国内源)

    我们介绍使用Homebrew安装node npm等环境 brew的安装见如下文章 Mac M1芯片电脑Java开发环境准备 重要的事情说三遍 国内源 国内源 国内源 要不然慢的要死 要卡死 npm我们也要使用国内源 安装很简单还是之前的套路
  • Asp.net 之Cookie简单介绍与使用

    什么是Cookie Cookie 有时也用其复数形式Cookies 指某些网站为了辨别用户身份 进行session跟踪而储存在用户本地终端上的数据 通常经过加密 所以查看浏览器保存到本地的Cookie时 一般都是一个文本文件这些文件通常是以
  • 为什么InnoDB使用B+树而不是B树

    出于对IO性能的考虑 B树每个节点都存储数据 而B 树只有叶子节点才存储数据 所以在查询相同数据量的情况下 B树的IO会更频繁 因为索引本身存储在磁盘上 当数据量大时 就不能把整个索引全部加载到内存 只能逐一加载每一个磁盘页 更何况B树的索
  • 【性能测试】第四篇

    主流性能测试工具 1 Loadrunner HP Loadrunner 是一种工业级标准性能测试负载工具 可以模拟上万用户实施测试 并在测试时可实时检测应用服务器及服务器硬件各种数据 来确认和查找存在的瓶颈 支持多协议 WEB HTTP H
  • Python+Selenium实现短视频自动上传与发布

    前言 最近有人对自动上传与发布很感兴趣 都私下找我说了好几次了 今天 必须把他安排 必须实力宠粉 本篇依次介绍目前主流的短视频平台 抖音 快手 B站 小红书 微视 百度好看视频 西瓜视频 微信视频号 搜狐视 频 一点号 大风号 趣头条等 的
  • # 若依-点击重置清空table列表,不刷新数据

    若依点击清空按钮 清空table数据 思路 点击清空按钮 触发输入框清空 并且移除列表中所有数据 实战 找到ry ui js新增restNoRefresh函数 ry ui js路径 src main resources static ruo
  • FPGA 频率计实验

    参考 正点原子开拓者 FPGA 开发指南 数字频率计是一种基本的测量仪器 被广泛应用于航天 电子 测控等领域 基于传统测频原理的频率计的测量精度将随被测信号频率的下降而降低 在使用中有较大的局限性 而等精度频率计不但具有较高的测量精度 而且
  • Jfinal报错Can not create instance of class: demo.DemoConfig

    根据文档demo 启动项目时报错 WARN oejuc AbstractLifeCycle FAILED jfinal java lang RuntimeException Can not create instance of class
  • vector对象的定义和初始化以及vector迭代器iterator

    vector对象的定义和初始化 vector类定义了好几种构造函数 用来定义和初始化vector对象 vector
  • JVM调优

    1 JVM参数分类 共分为三种 标准参数 开头 所有的Hotspot都支持 分标准参数 X开头 特定版本Hotspot支持特定命令 不稳定 XX开头 下个版本可能会取消 XX PrintCommandLineFlags 打印虚拟机启动时带的
  • 【计算机网络 (谢希仁) 习题题解】第5章 运输层 (4)——TCP的拥塞控制

    拥塞控制的一般原理 在计算机网络中的链路容量 即带宽 交换结点中的缓存和处理机等 都是网络的资源 在某段时间 若对网络中某一资源的需求超过了该资源所能提供的可用部分 网络的性能就要变坏 这种情况就叫做拥塞 congestion 可以把出现网