阿里巴巴程序猿写了一个初学者都写出不来的低等bug,被骂惨了

阿里巴巴程序猿写了一个初学者都写出不来的低等bug,被骂惨了
这两个文本框的值全是我在KV(Redis这类的储存分布式数据库)里边获得到的,也是能够 即时改动的,我自以为是,惦记着KV里边假如没值,就默认设置取一个静态变量,那样有一个兜底,在类载入的情况下载入静态变量,我取的情况下也高效率了。
这就也为我后边的Bug埋下了悬念,难题是这一Bug烦就烦在他在预发自然环境是好的,网上确是坏的。


先看一下代码怎么写的:
阿里巴巴程序猿写了一个初学者都写出不来的低等bug,被骂惨了
能够 见到编码里边,我是在静态代码块去KV赋值,如果有值就用KV的做初值,没取到因为我有初始值,我那时候还要想自身的设计构思真恰当,用KV比DB高效率,用常量去做兜底,不会没配备的状况沒有值,报空指针啥的。
那时候一个劲为自己鼓舞士气,一个劲的妙啊,不清楚自身写了多蠢的编码。
那样写看起来没有什么难题,可是我这个值是能够 改动的这就不太好了,并且是我好多个地区還是取的自变量,并不是一直取的KV。
并且常量一不小心当自变量用,也都违反了这东西的初心了。
我发布后,三歪却说:龙王三太子出大问题了,为什么我更新一下值也不没错,再更新值就回家了。


我惊恐万分,方知我写了BUG,我不露痕迹的擦去我两鬓的汗液,深吸气了一下。
回应道:我编码还没有写好呢,你怎么乱点,我告诉过你不要乱点的,如今你点坏掉吧。
三歪仿佛确实认为他不对,委屈巴巴的啥也没讲过就默默地离开。
阿里巴巴程序猿写了一个初学者都写出不来的低等bug,被骂惨了
这个时候我立刻打开计算机,也顾不得歪歪的体会了,心绪转的很快,刚开始在闹海中搭建全部值传送的路由协议。


我改了网页页面的值,以后因为我改了这一静态变量和KV的值,可是我线上上发觉我页面刷新一会是改动以后的,一会是改动以前的值.
这就怪异了呀,关键是在预发还不可以重现,这就很坑人了,不舒服呀歪歪。
Tip:预发指的是,编码跟网上一样,数据库查询一样,自然环境配备不一样。
我将编码看过一遍又一遍,還是没发现问题。
在当日哪个饱暖思淫欲的下中饭以后我,忽然灵光一闪发觉了难题的关键,预发是好的由于他是一台设备。
而人们网上的设备是三层交换机的,有两部设备,我改动一次只改了一台设备的值,此外一台没改动到。


那麼难题就简易了,人们看下面的图:
阿里巴巴程序猿写了一个初学者都写出不来的低等bug,被骂惨了
预发状况,是单机版,无论我怎么读怎么修改,每一次数据信息全是精确的(这儿我还没有意识到实际上每一次取走自变量不是对的)。
可是网上不一样,网络服务器起动的情况下给每台设备赋值了,那样的状况假如仅仅读是一切正常的(难怪静态数据常量全是private的,能改动得话大部分常有这个问题)。


可是假如改动,你改动的恳求仅仅打来到一台设备上,假如下一次三层交换机恳求来到这一设备,那麼你很好运,結果是对的,可是通常三层交换机优化算法便是那麼公平公正,雨露均沾那样的状况1/2的恳求,都是取得不正确的結果。
并且这个地方的难题还有一个便是,应该是改动KV以后,改动自变量,是我的地区取的是自变量,由于我觉得每一次总之都改了,取也没事儿。
实际上恰当的作法就是我每一次去都读KV就好了,只能KV为空的情况下才去读静态变量,做为一种兜底计划方案,不应该去更改常量的值。
并且大伙儿要了解,我改动KV取得成功万一改动常量的情况下出错了呢?你取常量的值也不没错。


因此查寻,改动应当那样做:
阿里巴巴程序猿写了一个初学者都写出不来的低等bug,被骂惨了
主要是想提示大伙儿,慎重实际操作静态数据常量,能不会改变就不会改变,不必写那么骚的实际操作了,我这算少的许多 40、50台网上设备的服务项目,这类难题是确实难发觉。
我是万万想不到,我竟然写成这类编码,下一次再写出去,只有让歪歪不必乱点了,以防又点坏掉嘿嘿。

发表评论

电子邮件地址不会被公开。 必填项已用*标注