玩一下golang的滑动窗口
码农在处理通讯业务的时候,经常会涉及到数据包的顺序问题。尤其IP网的多态性,UDP数据包在发送到接收的过程中,无法做到先发先收(TCP协议内部实现了滑动窗口下的重新排序),在很多情况下都需要自己来重新排序规整数据。
ShiftWin滑动窗口,UDP导致的数据包顺序被打乱恢复
typeNodestruct{
serialint节点序号
cTimeint64时间戳
data〔〕byte数据内容
nextNode
prevNode
}
typeShiftWinstruct{
headNode插入时确保从小到大,翻转出口
tailNode数据有时间,正常是有序,所以从后往前找,可以减少消耗
outChanchan〔〕byte超时及溢出数据出口
countint
sizeint
timeoutint64
}
超时检测
functimeoutdetect(selfShiftWin){
超时检测
forself。timeout0{
if(self。count0){
if(time。Now()。Unix()self。head。cTimeself。timeout){
self。outChanself。head。data
self。headself。head。next
ifself。head!nil{
self。head。prevnil
self。count
}else{
self。count0
}
}
}
time。Sleep(time。Second)
}
}
funcnewShifWin(rchchan〔〕byte,sizeint,timeoutint64)ShiftWin{
sw:ShiftWin{
size:size,
timeout:timeout,
outChan:rch,
}
创建超时检测协程?每个元素一个滑动窗口一个协程
gotimeoutdetect(sw)
returnsw
}
funcserialBefore(seq1int,seq2int)bool{
interval:seq2seq1
if(interval0interval32768)(interval(32768)){
returntrue
}
returnfalse
}
funccleanShiftWin(selfShiftWin){
forself。head!nil{
fmt。Println(Node:,string(self。head。data))
self。headself。head。next
}
}
funcInsertShiftWin(selfShiftWin,serialint,data〔〕byte){
fmt。Println(Append:,serial,Count:,self。count)
node:Node{
serial:serial,
data:data,
cTime:time。Now()。Unix(),
}
ifself。count0{
self。count1
self。headnode
self。tailnode
return
}
if(self。countself。size){
self。count
}else{
达到容量,弹出最前面的数据
self。outChanself。head。data
self。headself。head。next
self。head。prevnil
}
ifserialBefore(self。tail。serial,serial){
fmt。Println(Appendtail)
node。prevself。tail
self。tail。nextnode
self。tailnode
}else{
cur:self。tail。prev
for(cur!nil)serialBefore(serial,cur。serial){
找到插入点
curcur。prev
}
ifcur!nil{
fmt。Println(Appenddata,serial)
cur。next。prevnode
node。nextcur。next
cur。nextnode
node。prevcur
}else{头部插入
fmt。Println(AppendHead)
node。nextself。head
self。head。prevnode
self。headnode
}
}
}
代码堆出来,有兴趣的可以自己去玩玩。其实发现无论用哪种编程语言,编程方法都是一样的,思想决定代码。顺带谴责一下用代码量来考核编程工作量的行径。诚然我也不知道该如何去衡量一个程序员的工作量。
写程序有时候就是在做创作,好的思路和实现,会带来发自内心的愉悦。
一加9Pro游戏体验怎样?上手效果让人种草对于手游玩家来说,找到一款适合玩游戏的手机着实不易。市面上对手机的评价众说纷纭,一时间我也不知道该如何下手。在一次偶然的狼人杀游戏里,我了解到一加9Pro在游戏体验上有着很不错……
助听器定制机和耳背机有什么区别,哪个贵呢?外观上:耳背式助听器适用范围比较广泛,优点是功率可以很大,操作简单,一般适用于中重度,重度,极重度听力损失或者。定制式的助听器,外形小巧隐蔽,佩戴比较美观,由于外观较小,……
特斯联泰坦机器人与TACOS荣膺36氪两项大奖9月2日,在36氪主办的企业新浪潮为主题的WISE2021企业服务生态峰会上,WISE2021中国企服软件金榜、数字化创新标杆奖及最具商业价值的36个智慧场景三大榜单正式揭晓。……
买车就刷卡大奖等你拿中国银联助力新能源汽车消费本网讯:买车就刷卡,大奖等你拿,中国银联联合商业银行正式启动银联信用卡主题优惠活动,助力新能源汽车推广,提振汽车消费。即日起至2021年12月31日,消费者至全国各省、自治区和……
38门课满绩点!湖北女学霸获奖学金10余项,还狂揽国家级竞赛她是沉静温柔的女神学霸,却与格斗机器人碰撞出不一样的绚丽火花。潜心学习,成绩连续三年位列前五;专注实践,取得国家级奖项18项、科研成果5项,风雨兼程,成绩斐然。她就是江汉大学人……
用手机拍摄照片有哪些技巧?第一式:构图篇中心构图法合照的时候什么位置最抢镜?正!中!间!最!吸!睛!只要往中心一站周围再美丽的风景都会黯然失色哦对称构图法画面太……
我尝到了粗心的苦头优秀作文我拿着一张89分的试卷,小心翼翼地递到妈妈面前,说:妈妈,你你帮我签个字吧!妈妈怒发冲冠地检查了我的试卷,指着我的鼻子说,你啊你,活脱脱一个大马虎,粗心得不得了,明明该得98分……
午报阿里巴巴集团投一千亿元助力共同富裕设立北京证券交易所蜜雪冰城成立雪王农业公司企查查APP显示,8月31日,重庆雪王农业有限公司成立,法定代表人为吴飞翔,注册资本为5000万元人民币,公司经营范围含饮料生产、食品生产等。企查……
IQOO8系列值不值得买?没有短版的旗舰?关于iqoo8系列,相比早几天发布的连文件管理都能搬上去扯半天的某机,要说的点还是蛮多的首先请先仔细阅读一下参数对比红色重点!首先旗舰三神装儿必不可少啊888(pl……
电动汽车引领汽车领域新潮流,动力不逊燃油车,享受高额政府补贴电动汽车引领汽车领域新潮流,动力不逊燃油车,享受高额政府补贴有很多人都好奇电动汽车的工作方式,电动汽车和内燃机的工作方式是完全相反的。电动汽车的动力是来自于电池的电力,而……
耳聋戴上助听器能听清电话吗?电话已是人们日常生活中离不开的重要通讯工具。如果电话比较多的可以选配有类似蓝牙功能的助听器,可以直接用助听器接听电话,还有些助听器是需要借助电话伴侣也是可以用助听器接听电话的。……
六年级我与动物作文400字我养过许多动物,有小鸭子、金鱼、仓鼠等等,他们共与我度过了很多个美好的时光,小编收集了我与动物的作文,欢迎阅读。第一篇:我与动物之前我家有一只小狗,它的名字叫小黑。……
以绿色为话题的初中英语作文导语:现在都是倡导绿色生活的时代了。绿色的食品,绿色的出行,绿色的。住房。。。以下是小编为大家收集的几篇以绿色为话题的初中英语作文。供大家参考阅读。希望喜欢。以绿色为话题……
俄媒特朗普称永远不回推特认为马斯克出价过高据俄罗斯卫星社莫斯科5月16日报道,美国前总统特朗普表示,他永远不会再回推特。特朗普在发出的一份声明中说:感谢这个提议,但我永远不会回去推特。报道称,他表示,他更倾……
记得回家有一条路永远都会记得,有一条路无论变成什么样都依旧熟悉,有一条路在你离开时你会想念,归来时便会引出万千思绪,这条路的尽头便是家。地球是圆的,不管走多远,无论沿着哪条经纬线……
自己修手机前两天手机突然坏了,之前摔了一次屏幕碎了一块,后盖碎了。不过不影响使用。用了一一两个月突然屏幕花了。自己多少会点,之前也自己修过手机。换主板换充电插口。想着可以自己修一下。从网……
为防范境外电话诈骗多地默认关闭国际电话接听等功能近日,有网友反映收到了来自中国移动浙江的一则短信,短信内容显示,根据上级主管部门要求,为防范境外电话诈骗,保护客户财产安全,浙江移动将默认关闭接听国际及港澳台电话。中国移……
店铺对联范文对联,中国的传统文化之一,又称楹联或对子,是写在纸、布上或刻在竹子、木头、柱子上的对偶语句。小编精心为你整理了店铺对联范文,希望对你有所借鉴作用哟。上:百货商店使群众百般……
伤心想念妈妈作文今天特别烦,特别烦,你们肯定会问:你烦什么烦,每天和妈妈在一起,跟她有说有笑的,还会烦?哎就是因为这个,今天早上11:00我的妈妈就出差了,一直要到7月6日才能回。其实我还要上……
别样的春天作文1100字春天是春眠不觉晓,处处闻啼鸟的醉人意境;春天是春种一粒粟,秋收万颗子的辛勤劳作;春天是不知细叶谁裁出,二月春风似剪刀的活力象征。春天包含着春满园关不住,一枝红杏出墙来的美好事物……
在开学的第一天作文【第1篇】快乐的假期过去了,新的学期开始了,此刻,虽然想念着快乐的假期,但又以兴奋的的心情来迎接新的学期。从早上开始,忘东忘西,这个忘了带,那个忘了带丢三落四显然,……
请叫我乐小天rdquo;啊rdquo;,你别误会,这可不是男生一不小心到了女厕所被女生看见后发出的惊吓声,我,乐小天今天乘坐13号公交车,不幸middot;middot;middot;mi……
男人的美丽哲理散文我久久的望着这一幕,欣叹着这一种美,这一种男人间缔造的美。他是一个中国的残疾人,小的时候不幸得了一种病,后来截瘫只能坐在轮椅上。是他亲爱的妈妈一次次鼓励着,他拿起了他的笔……
皇帝的新装扩写皇帝ldquo;穿rdquo;着那两位骗子的衣服,他在风中有些瑟瑟发抖,他心想,ldquo;我一定在穿着一件可以辨别人聪明与笨拙的衣服,虽然衣服不是很厚,而且有些冷,但这样我就……