繁体
想到这里,叶新晨还是决定帮他们重写底层通讯模块,修改通讯约定。
再检查相关代码,很显然,这是因为网元编号被底层通讯模块丢弃了,只把文本信息返回给了上层;这就使得上层无法区分信息来自哪个网元。
看在悬赏这么
的份上,叶新晨也是其中帮他们设计了一下新通讯模块。
本章已阅读完毕(请
击下一章继续阅读!)
总之,叶新晨还是把这个程序写
来了,而且的确能自动识别并纠正这
问题;但
能消耗太严重,不是可用于生产的正常解决方案。
看到这里,叶新晨心里有了底,开始观察程序所在目录,果然在里面找到个dat文件;用十六
制编辑
打开,里面果然是网上传来的原始报文信息,二
制格式。
也因此,就因为这个悬赏,直接
了叶新晨整整七天,好在悬赏已经结算了,不然的话叶新晨都觉得是不是太累了
,当然还有一些方向上的代码编写,叶新晨为了职业
德还是需要给他们写一
的。
这个东西太基础。
叶新晨把这类列叫“索引列”,索引列有三
,一
是1、2、3这样的数字编号,另一
是网元编号这样一整个都是某个固定数字/字符的,还有就是年月日时分秒这样的时间信息;它们可能同时全
现,但也可能只
现其中一
,甚至全都没有。
当识别
索引列之后,叶新晨就把顺序不
、时间不
变的若
行视为一个整
;然后像分析单词的“编辑距离”一样,寻找一
使得数据整
上“编辑距离”调整最小的方案,把混淆的数据分隔开。
因为它和上层关系太过
密,修改它影响太大;而且底层通讯模块的源码已经丢失……
平常这样
还没有问题;但遇到同时连接多个网元且需要同时检查多个网元返回、且返回信息还比较多时,数据就
了。
测试笔记,果然,他们测线路备份切换之类功能,所以需要同时控制两个网元;命令在程序中是顺序下发的,间隔可能只有若
毫秒。
因为发布悬赏的这个小公司也是意识到了叶
是个大神级别的人
,所以原本他们的悬赏价格只是两万,后来发现了那个积年老bug又提升到了三万,到现在悬赏价格已经提升到了八万,就是想让叶新晨也一起寻找bug
新底层模块的需求分析和代码编写。
报文格式是网元编号:信息。
虽然这的确会引起底层代码的大量更改,但毕竟范围还算可控,而且不需要付
恐怖的
能代价。
就以上
这一次是真的占用了叶新晨
长时间,一个星期还没有完成。
这是个
复杂的程序。
于是,叶新晨尝试用字符串分析的办法来恢复它,鉴于不同命令返回格式不同、数据各异,叶新晨也是用程序尝试识别每个字段的数据类型,然后再检测它是否为有序内容。
实际上它超
了tcl的能力范围——它的确能工作,而且没有
错时消耗很小;但一旦
错,它需要一分多钟才能恢复。
ps:
谢神文2019的一百起
币打赏。
因为一组数据可能有多个索引列,
照不同索引列拆分的方案还可能不一样。
因此叶新晨也是不得不遍历各
拆分方案,寻找综合最优的那
方案……