首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

滑动窗口入门

既然是一个类型的题目,我们首先来了解下滑动窗口的2个概念: 滑动:指一个区间往一个方向进行移动,本题中使用从左到右的方式进行滑动。...窗口:也就是一个区间,这个区间可能会增大,也可能会缩小,也可能是固定的。在本题中,我们可以使用队列来表示窗口,这个队列可大可小,要求其最大值。 但是光有这两个概念根本解决不了本题,我们还缺什么呢?...是的,是窗口要如何变化,如何变大或者缩小。这是问题的核心。 对于字符串abcabcbb,一开始肯定是将a放到队列中,接着放入b,每次放入字符的时候,我们都要检查队列里面有没有相同的字符。...显然,光有滑动窗口是不够的,我们还需要一个数据结构来记录队列里面是否存在某个字符,于是我们加入辅助的结构set。...2 重复了要删除前字母,删除前字母会将窗口左边界右移。 3 新字母会让窗口右边界右移一位。

56650

滑动窗口协议

在计算机网络中实现“流水线技术”的方法是“滑动窗口协议”。 GBN GBN协议(回退N步),它允许发送多个分组而不需要等待确认。但它受限制于窗口的大小N。 ? GBN协议也常被成为滑动窗口协议。...在GBN协议中,发送方首先检查窗口大小是否是满的,如果没有满,那么就产生一个分组并将其发送,并且同时更新变量。如果窗口已经满了,那么发送方给上层指出已满。然后上层会等一会再来试。...发送方收到ACK,如果该分组序号在窗口内,则SR标记该分组为已接受。如果该分组序号等于窗口起始位置序号,那么该窗口移动到具有最小序号的未确认分组处,然后发送该窗口内可发送但未发送的分组。...接收方此时也拥有一个窗口,如果分组序号在该窗口范围内,并且以前没收到过,那么缓存该分组,回复一个ACK给发送方。...因此窗口的大小和序号之间的关系必须是合理的。 ? Ns是发送方窗口大小,Nr是接收方窗口大小,k是序号的位数。

1.2K20

TCPIP滑动窗口

剩余的缓冲区空间的大小被称为窗口( w i n d o w) ,指出窗口大小的通知称为窗口通告(window advertisement) 。接收方在发送的每一确认中都含有一个窗口通告。  ...发送方收到一个零窗口通告时,必须停止发送,直到接收方重新通告一个正的窗口。 TCP的特点之一是提供体积可变的滑动窗口机制,支持端到端的流量控制。...TCP的窗口以字节为单位进行调整,以适应接收方的处理能力。...调整过程包括:如果出现发送拥塞,发送窗口缩小为原来的一半,同时将超时重传的时间间隔扩大一倍。     TCP的窗口机制和确认保证了数据传输的可靠性和流量控制。...TCP/IP中滑动窗口的意义 1.在不可靠链路上可靠地传输帧(核心功能) 2.用于保持帧的传输顺序 3.它有时支持流量控制,这是一种接收方能够控制发送方的一种反馈机制

1.4K50

window滑动窗口

Spark Streaming提供了滑动窗口操作的支持,从而让我们可以对一个滑动窗口内的数据执行计算操作。...比如下图中,就是对每三秒钟的数据执行一次滑动窗口计算,这3秒内的3个RDD会被聚合起来进行处理,然后过了两秒钟,又会对最近三秒内的数据执行滑动窗口计算。...所以每个滑动窗口操作,都必须指定两个参数,窗口长度以及滑动间隔,而且这两个参数值都必须是batch间隔的整数倍。...(Spark Streaming对滑动窗口的支持,是比Storm更加完善和强大的) 1.png 1.png 案例:热点搜索词滑动统计,每隔10秒钟,统计最近60秒钟的搜索词的搜索频次,并打印出排名最靠前的...​​// 第二个参数,是窗口长度,这里是60秒 ​​// 第三个参数,是滑动间隔,这里是10秒 ​​// 也就是说,每隔10秒钟,将最近60秒的数据,作为一个窗口,进行内部的RDD的聚合,然后统一对一个

75510

滑动窗口协议

为了完成流量控制,TCP使用滑动窗口协议,使用这种方法的时候,发送方和接收方向外通信各使用一个窗口。...这个窗口覆盖了缓存的一部分,在缓存中的字节是从应用进程传送来的,在这个窗口中的字节就是可以发送而不必考虑确认的。这个想象的窗口有两个边沿:一个在左,一个在右。...这个窗口叫做滑动窗口,因为左沿和右沿都可以滑动。 ?                            ...右沿窗口向右移动表示展开窗口,说明允许从缓存中发送更多新的字节;   左沿窗口向右移动表示合拢窗口,说明某些字节已经被确认了,发送端不必再担心它们。 1....发送窗口中相关的有四个概念:已发送并收到确认的数据(不再发送窗口和发送缓冲区之内)、已发送但未收到确认的数据(位于发送窗口之中)、允许发送但尚未发送的数据以及发送窗口外发送缓冲区内暂时不允许发送的数据;

873110

【算法】滑动窗口

在暴力解法中,是一个for循环滑动窗口的起始位置,一个for循环为滑动窗口的终止位置,用两个for循环 完成了一个不断搜索区间的过程。这样的操作在面对极大的数据量是,效率极低。...而滑动窗口法是维护两个指针来进行操作,通常情况下时间复杂度为O(N)。...那么我们可以试着用滑动窗口的方法来看看。 滑动窗口的方法通过一个for循环来达到目的,那问题又来了,for循环表示的是窗口的起始位置,还是终止位置?...以题目中的数组nums=[2,3,1,2,4,3],目标和target=7为例,来模拟一下滑动窗口的运行过程: 根据子序列和的大小不断调整滑动窗口的大小,当和小于target时,end++;当和大于等于...0:result; } 水果成篮 这个题目的大致意思就是要使得窗口里面只有两种数并且长度最长,可以使用滑动窗口来解决。

12310

golang刷leetcode 滑动窗口(4)滑动窗口中位数

例如: [2,3,4],中位数是 3 [2,3],中位数是 (2 + 3) / 2 = 2.5 给出一个数组 nums,有一个大小为 k 的窗口从最左端滑动到最右端。...窗口中有 k 个数,每次窗口移动 1 位。你的任务是找出每次窗口移动后得到的新窗口中元素的中位数,并输出由它们组成的数组。...窗口位置 中位数 --------------- ----- [1 3 -1] -3 5 3 6 7 1...[-3 5 3] 6 7 3 1 3 -1 -3 [5 3 6] 7 5 1 3 -1 -3 5 [3 6 7] 6 因此,返回该滑动窗口的中位数数组...解题思路: 1,注意中位数是窗口内数据排序后的中位数 2,对于窗口内部可以采用插入排序的思想进行排序 3,初始时,采用插入排序,将前k个值,插入窗口 4,找到左指针对应元素在窗口内位置j 5,移动左右指针

46820

滑动窗口”算法实例

对于该现象,即可使用“滑动窗口”算法。滑动窗口算法也是一种思想,是双指针的拓展和延伸。滑动:指这个窗口是移动的,也就是移动是按照一定方向来的。...窗口窗口大小并不是固定的,可以不断扩容直到满足一定的条件;也可以不断缩小,直到找到一个满足条件的最小窗口;当然也可以是固定大小。...面对前面所提出的问题,使用“滑动窗口”算法,大致思路为: 设置两个指针和一个空列表 固定左指针,不断右移右指针,同时更新最长不重复字符串长度 如果出现重复字符,再右移左指针,如此重复,直到遍历完字符串的所有字符...') else: print(max_length) # 打印最大不重复字符串长度 ''' 测试结果: abcabcbb 输出:3 aaaaaaaa 输出:1 ''' 3 结语 通过测试,发现“滑动窗口...都可以使用“滑动窗口”算法。

11310

TCP的滑动窗口

TCP滑动窗口在数据发送和接收的安全性保障要依赖于确认重传机制: RTT和RTO是确认重传机制下的两个概念 RTT:发送一个数据包到收到对应的ACK,所花费的时间 RTO:重传时间间隔,(发送端发送数据包后就设置重传时间...,重传时间内都没有接收到ACK发送端将进行重传,如果发送端接收到了ACK,则RTO失效)(RTO是由RTT计算出来的) RTO所代表的确认重传机制即是TCP数据安全性和滑动窗口数据安全性的保障....TCP使用滑动窗口做流量控制与乱序重排 保证TCP的可靠性(TCP将数据包拆成一个个报文段,不可能每次只传一个)(建立在确认重传基础上) 保证TCP的流控特性(TCP发送包会携带window,告诉对方我有多少缓存...,你计算一下你可以发多少发多快) 接收方的有效缓存计算(用于发送方评估和决定发送速率等流量控制) TCP滑动窗口机制

92630
领券