手机浏览器扫描二维码访问
“好,等我两分钟,我把另一个BUG给留言一下。”
毕竟意外的发现了另外一个BUG,叶新晨可不会错过这样的机会啊,不说其他什么,最起码悬赏再加钱肯定应该是毫无问题的。
叶子:维护辅助库中发现了另外一个BUG,应该是一个积年老BUG,代码片段发送给你们了。
发完这句话,叶新晨才是用大拇指按了按自己的太阳穴,然后笑了笑看着王晓雪,“我现在其实都已经不饿了,也不知道为什么,但是毕竟是你炒的,那我硬吃都得吃一点下去。”
“别贫嘴,我都端在厨房的桌子上面了。”王晓雪微笑着,“我今天就吃点糖拌番茄然后再喝一瓶酸奶就行了。”
叶新晨也只是点点头,“其实芹菜的话,你也可以吃点,毕竟芹菜沾油没有那么厉害。”
“嗯,这样的话,那我就少吃点吧。”王晓雪觉得也还是吃点饭比较好,毕竟不吃饭的话,肚子会一直空,饼干那些什么的,也顶不住天天不吃饭啊!
饭后,叶新晨自然是继续的忙碌着,他现在在刚刚吃饭的过程中好像有了一点思路,但是得实践才知道。
而通过反复对比正常执行过程和出错误的执行过程,叶新晨发现出错时,程序多了一条report!
要知道网元返回的信息包括命令返回、alert、report。alert出现就得记录并报错(除非本就预期有这么一条alert),而report一般可以无视,记录然后丢弃就是。
所以没人注意这一点。
而且叶新晨也知道,测试时网元负荷极低,而且先做过初始化。
因此每次执行应该都差不多,这里多个report,很可能就隐含着什么……
所以叶新晨开始仔细观察程序和网元的交互记录,发现那里的命令返回似乎有些不对。
命令返回有几百行,其中一列是时间,正常来说,时间应该是2019-10-3118:21:22、2019-10-3118:21:22、2019-10-3118:21:23、2019-10-3118:21:24……这样子一路排下来。
但那段数据,它的时间却是2019-10-3118:21:22、2019-10-3118:21:23、2019-10-3118:21:21、2019-10-3118:21:22、2019-10-3118:21:23……
也就是在秒这个级别存在乱序,更具体点实际上是在毫秒级别存在乱序跳跃,即时间格式为2019-10-3118:21:22.4562019-10-3118:21:22.567这样,其中某些行组之间存在2、300毫秒的跳跃。
叶新晨按时间连续性把数据分割,发现它的输出是每几条到十几条为一组,组内顺序正常,组间乱序跳跃;但把这些组挑选、拼接,可以得到两组数据,组内时间顺序良好、间隔均匀。
这说明,这些数据可能是两个命令的返回,不知怎么混到了一起。
就是因为这种混淆使得命令输出格式错乱,这才使得程序把命令返回识别成了report。
于是叶新晨看了一下对方的测试笔记,果然,他们测线路备份切换之类功能,所以需要同时控制两个网元;命令在程序中是顺序下发的,间隔可能只有若干毫秒。
看到这里,叶新晨心里有了底,开始观察程序所在目录,果然在里面找到个dat文件;用十六进制编辑器打开,里面果然是网上传来的原始报文信息,二进制格式。
报文格式是网元编号:信息。
再检查相关代码,很显然,这是因为网元编号被底层通讯模块丢弃了,只把文本信息返回给了上层;这就使得上层无法区分信息来自哪个网元。
平常这样做还没有问题;但遇到同时连接多个网元且需要同时检查多个网元返回、且返回信息还比较多时,数据就乱了。
这个东西太基础。
因为它和上层关系太过紧密,修改它影响太大;而且底层通讯模块的源码已经丢失……
于是,叶新晨尝试用字符串分析的办法来恢复它,鉴于不同命令返回格式不同、数据各异,叶新晨也是用程序尝试识别每个字段的数据类型,然后再检测它是否为有序内容。
叶新晨把这类列叫“索引列”,索引列有三种,一种是1、2、3这样的数字编号,另一种是网元编号这样一整个都是某个固定数字字符的,还有就是年月日时分秒这样的时间信息;它们可能同时全部出现,但也可能只出现其中一种,甚至全都没有。
当识别出索引列之后,叶新晨就把顺序不乱、时间不跳变的若干行视为一个整体;然后像分析单词的“编辑距离”一样,寻找一种使得数据整体上“编辑距离”调整最小的方案,把混淆的数据分隔开。
因为一组数据可能有多个索引列,按照不同索引列拆分的方案还可能不一样。
因此叶新晨也是不得不遍历各种拆分方案,寻找综合最优的那种方案……
这是个挺复杂的程序。
实际上它超出了TCL的能力范围——它的确能工作,而且没有出错时消耗很小;但一旦出错,它需要一分多钟才能恢复。
总之,叶新晨还是把这个程序写出来了,而且的确能自动识别并纠正这种问题;但性能消耗太严重,不是可用于生产的正常解决方案。
想到这里,叶新晨还是决定帮他们重写底层通讯模块,修改通讯约定。
虽然这的确会引起底层代码的大量更改,但毕竟范围还算可控,而且不需要付出恐怖的性能代价。
就以上种种这一次是真的占用了叶新晨挺长时间,一个星期还没有完成。
因为发布悬赏的这个小公司也是意识到了叶子是个大神级别的人物,所以原本他们的悬赏价格只是两万,后来发现了那个积年老BUG又提升到了三万,到现在悬赏价格已经提升到了八万,就是想让叶新晨也一起寻找BUG根新底层模块的需求分析和代码编写。
看在悬赏这么高的份上,叶新晨也是其中帮他们设计了一下新通讯模块。
也因此,就因为这个悬赏,直接干了叶新晨整整七天,好在悬赏已经结算了,不然的话叶新晨都觉得是不是太累了点,当然还有一些方向上的代码编写,叶新晨为了职业道德还是需要给他们写一点的。
PS:感谢神文2019的一百起点币打赏。
read3();看小说,630book
请勿开启浏览器阅读模式,否则将导致章节内容缺失及无法阅读下一章。
唐峰林梦佳 神级系统:开局亿万奖金 风水大相士 兵王林昆全文免费 我真的能开地图炮 唐峰林梦佳小说 我在玄幻世界当掌门 苟在女帝宫,我无敌了! 都市之上门神医 澳洲风云1876 从香江开始 妈咪快看爹地又跪了 直播!开局短视频播放量一千万 首富重生:开局一辆二八大杠 女神的贴身神医 独占金枝 卧龙赘婿 神豪:我!分手后被女神姐姐告白 NBA:不玩了,你欺负人! 都市医仙
附本作品来自互联网,本人不做任何负责内容版权归作者所有!古穿今重生公子如玉作者洛缃月文案亲爹是土豪种红薯发家的真土豪。毕业院校是国际名校米国东大洋大学夏岛分校。多才多艺在亲爹投资剧担当男主角兰后荣获最差演技帝。霸道总裁范儿亲爹给的一亿创业资本,经过两年的奋斗努力,还剩二十万算不算?小...
项飞羽替岳父顶罪入狱,服刑期间,被特战队选中,远赴大西北戍卫,浴血奋战八年,终成战神!功成名就归来,项飞羽只想守在老婆身边,为她遮风挡雨,弥补八年来欠下的情债!...
无数经典歌曲被他唱响。无数经典电视剧电影被他演绎。无数颁奖典礼都有他的身影。他是所有明星眼中的另类,从不在意自身的形象,但是偏偏人气爆棚。他是所有粉丝心中的神袛,从来没有让他们失望,有的只是疯狂崇拜。他就是孙羽,一个突然出现在这个世界的男人,一个梦想着成为大明星的追梦者。(撒娇卖萌求推荐,死皮赖脸求收藏!QQ群296549724)...
关于重生被换亲?改嫁王府带娃驯夫顾芩澜意外发现,自己与妹妹顾芩涟竟然携手重生了!在前世,顾芩澜踏入蓟州纪家的豪门,扶持着二房的庶出长子步步高升,直至权倾朝野。而顾芩涟新嫁入端王府,却未料端王突然卧病在床,性情大变!更要承受三名继子的难以管教,小姑子的冷嘲热讽和排挤,还有那白莲花般的外室在背后暗中搅局,最终导致顾芩涟与人私奔,却在外面惨遭横死。重生后,顾芩涟一举夺走了纪家那所谓的佳缘,将端王府这个烫手的山芋丢给了顾芩澜。面对这...
附本作品来自互联网,本人不做任何负责内容版权归作者所有!异世之贱男人作者仓鼠屠龙文案穆木第一次遇见洛桑就被他给强X了,被迫做了洛桑的伴侣,他恨,试图逃跑,试图告发,甚至对他下毒,但依旧无法摆脱这个恶魔。还好死不死的渐渐消了仇恨。谁允许你对我这么好了?你TMD倒是打我啊!我求你来打我!穆木倦了,决定打持久战,等着洛桑对...
关于被暴君揽腰宠,本宫恶毒又如何?冰清玉骨倾城貌,沉鱼落雁惊世人那一年她奉旨入宫,陪伴身怀皇嗣的长姐,却不想自此身陷囹圄,成为长姐砧板上被宰割的鱼肉。被借腹生子铁链锁身一身美人骨被制成骨扇,供其日日夜夜把玩。四肢被砍,沦为不人不鬼的人彘,求生不得求死不能!一朝重生,她回到二十年前!好人不长命祸害遗千年,这一世她要做祸国殃民的妖妃,要长命百岁,要夺走长姐的皇后太后之位!她更要攀上帝王之肩,俯瞰天下万里山河,成为这世间...