愿打开此篇对你有所帮助。
偶然看到一个前端小伙伴写了篇“防抖与节流”,我就想啊,咱后端不也有些喜欢抖来抖去的嘛,我就总结一下吧。
想到几个写几个啊,如果还想看别的抖,可以在评论区留言哦,虽然评论不少,但是我每条都会去看,看到我就加。
好,切正题。
操作系统抖动
我最开始接触到“抖动”这个词啊,除了抖腿,就是这个操作系统抖动了、
话说过两天就要考操作系统了,顺带复习。
在操作系统中,抖动现象是指如果分配给进程的存储块数量小于进程所需要的最小值,进程的运行将很==频繁地产生缺页中断==,这种频率非常高的页面置换现象称为抖动。
在请求分页存储管理中,可能出现这种情况,即对刚被替换出去的页,立即又要被访问。需要将它调入,因无空闲内存又要替换另一页,而后者又是即将被访问的页,于是造成了系统需花费大量的时间忙于进行这种频繁的页面交换,致使系统的实际效率很低,严重导致系统瘫痪,这种现象称为抖动现象。
抖动现象发生在FIFO页面置换算法中,FIFO并不是一个好的置换算法。
产生原因
进程内存不足,分配页面太少,所以总是缺页。
解决方法
换个好点的页面运算算法,减少进程数,增大内存。
背书,大佬勿喷···
网络抖动
说网络抖动可能还不是那么的,大众化。就是网卡啦,打游戏460啦。
没那么夸张哈,抖动和延时,还是有那么点差别的。
延时是网络中的一个重要指标,它由四个关键部分组成:处理延时(processing delay),排队延时(queueing delay),传输延时(transmission delay)和传播延时(propagation delay)。它会影响用户体验,并可能因多种因素而发生变化。抖动是基于延时产生的—具体而言,就是前后延时的值不一致。抖动是两个数据包延时值之间的差异。它通常会导致丢包和网络拥塞。虽然延时和抖动有很多共同点和关联,但是它们并不相同。
延时
延时是网络中的一项重要指标,可衡量数据从一个端点移动到另一个端点所需的时间。网络延时通常在几秒钟的时间范围内,并且可以更具许多因素进行更改,包括端点的位置,数据包的大小以及流量大小。
不良反应
延时主要会影响用户体验。在严格的音频通话中,150毫秒的延时是非常明显的并且会影响用户。在严格的视频通话中,认为400毫秒是可辨识的。将这两种呼叫功能集中在一起后,联合的音频和视频呼叫应该保持同步,并且延时要少于150毫秒以不影响用户。但是,一般来说,延时尽可能低是非常重要的。无论如何,ITU建议将网络延时保持在100毫秒以下。
抖动
在网络上连续传输的数据包即便使用相同的路径,也会有不同的延时。这是由于分组交换网络固有的两个关键原因造成的。
第一,数据包被单独路由。第二,网络设备接收队列中的数据包,因此无法保证延时调度不变。
不良反应
- 丢包:当数据包不是均匀的到达接收端时,接收端必须进行弥补并尝试更正。在某些情况下,接收端无法进行适当的更正,并丢失数据包。
- 网络拥塞:网络设备无法发送相同数据的流量,因此他们的数据包缓冲区已满并开始丢弃数据包。如果端点上的网络没有干扰,则每个数据包都会到达。但是,如果端点缓冲区满了,会使数据包到达的越来越晚,导致抖动。这被称为初期拥塞(incipient congestion)。通过监视抖动,可以观察到初期拥塞。同样,如果出现初期网络拥塞,则说明抖动正在迅速变化。
当网络设备开始丢弃数据包,并且端点没有收到数据包时就会发生拥塞。终端可能会要求重发丢失的数据包,这会导致拥塞崩溃。
需要注意的是接收端不会直接导致拥塞,也不会丢弃数据包。
何以处置乎?
为了弥补抖动,在连接的接收端使用抖动缓冲区。抖动缓冲区收集并存储传入数据包,以便它可以确定如何以一致的间隔发送它们。
- 静态抖动缓冲—其在系统的硬件中实现,并且通常由制造商配置。
- 动态抖动缓冲—其在系统软件中实现,并由管理员进行配置。他们可对缓冲进行调整以适应网络变化。
函数抖动
这个我是在前端看到的,是指短时间内大量触发同一事件,比方说你一直给我关注取消关注取消最后再关注就行了。
这样很烦是吧,计算机也烦。
这样会占用大量资源,所以需要做防抖措施。
防抖
当持续触发事件时,一定时间段内没有再触发事件,事件处理函数才会执行一次,如果设定时间到来之前,又触发了事件,就重新开始延时。也就是说当一个用户一直触发这个函数,且每次触发函数的间隔小于既定时间,那么防抖的情况下只会执行一次。
节流
跟上面那个差不多,
防抖是将多次执行变为最后一次执行,节流是将多次执行变为每隔一段时间执行
实现函数节流我们主要有两种方法:时间戳和定时器
虽然防抖和节流前端用的比较广泛,但是好的思想我们就要吸纳嘛。
结语
最近流行那个,长尾流量优化:
建议收藏,不然刷着刷着就可能找不到了。
建议大家试试这个CSDN的抖动,在那个“关注”键点来点去,看看它抖不抖