今天在看ussd相關的資料,對網路傳輸部分的資訊進行了回顧,忍不住又看了一遍通訊中用的非常多的滑動視窗演算法。滑動視窗演算法主要是用來解決系統間通訊的時候的流量擁塞及控制問題,乙個好的實現既可以提高網路通訊的資料流量,同時又能提高通訊質量和解決擁塞控制問題。
簡要描述一下該演算法:
1、將需要傳遞的資訊編碼為乙個有序的幀序列;
2、傳送方設定乙個滑動視窗(緩衝區),該視窗大小為最大傳送幀數(n)。該緩衝區採用先進先出佇列機制,首先傳送n幀資訊,每幀都有乙個定時器,當超時還沒有收到接收方的應答幀時,則重發該幀;
3、接收方設定一接收佇列,對接收到的每幀入佇列。如果該幀是編號最小的幀,則傳送該幀收到的應答幀給傳送方;
4、傳送方如果收到接收方的某幀的應答訊息,則判斷,如果是佇列的第乙個幀,則該幀出列。佇列空出一位,再傳送一幀,否則記錄其為可出列標記。
利用滑動視窗演算法原理,可以保證一堆資料在有序傳送的情況下,順利的達到接收方。
通過對滑動視窗演算法原理的分析,可以將該演算法應用在如下場景:
a系統需要給b系統傳送大量的資料,這些資料需要拆分為m次才能傳送完成,考慮到網路流量問題,不能一次性的就全部把m個資料塊傳送給b系統。較好的處理方式是設定符合網路流量大小的值n,做為a系統一次傳送的資料塊個數。n作為滑動視窗的長度。採用滑動視窗演算法來完成a、b系統的資料傳送,考慮到傳送的資料可以是無序(既資料沒有先後之分)的情況。需要對該演算法略加修改,即傳送佇列中的任何乙個資料塊如果收到應答資訊,佇列都向前滑動一格,並允許立即傳送乙個新的資料塊。就可以很好的解決這個問題。
扒一扒滑動視窗演算法的褲子
目錄 1 演算法框架 2 leetcode76.最小覆蓋子串 3 leetcode567.字串的排列 4 leetcode438.找到字串中所有字母異位詞 5 leetcode3.無重複字元的最長子串 int left 0,right 0 while right s.size 這個演算法技巧的時間複...
Linux中的應用軟體安裝
新的作業系統裝好了,安裝一些新的軟體那是難免的。但是在linux中,安裝應用軟體和windows下有些不同哦。而且對於linux初學者來說,安裝軟體是一件很讓人頭疼的事情。由於很多linux應用軟體都是以源 的形式發布的,這就要求使用者根據自己系統的實際情況和自身的需要來配置 編譯源程式後,才能使用...
滑動視窗演算法二 和為S的連續正數序列
輸出所有和為s的連續正數序列。序列內按照從小至大的順序,序列間按照開始數字從小到大的順序 思路 設定乙個滑動視窗,左邊left 右邊right 初始化 left 1 right 2 那麼這個視窗內的值和sum為 right left right left 1 2 比較sum與s的大小關係 如果sum...