<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          遇到這種 bug,中了大彩票!

          共 3422字,需瀏覽 7分鐘

           ·

          2024-05-13 13:05

          不知道你們有沒(méi)有遇到過(guò)一種神奇的產(chǎn)品 bug,就是只偶爾出現(xiàn)一次,但之后就再也不能復(fù)現(xiàn)。


          所謂復(fù)現(xiàn),就是按照第一次出 bug 的條件和步驟再次引發(fā)問(wèn)題。


          一般來(lái)說(shuō),絕大多數(shù)成立的 bug 都是可以復(fù)現(xiàn)的,測(cè)試人員會(huì)寫(xiě)復(fù)現(xiàn)步驟,然后程序員以此來(lái)解決 bug。


          如果你和我一樣做過(guò)技術(shù)寫(xiě)過(guò)代碼,那一定遇到過(guò)上面我說(shuō)的那種 bug,無(wú)法復(fù)現(xiàn)。


          此外,如果你用過(guò) Windows 系統(tǒng)的電腦,那使用過(guò)程中也一定遇到過(guò)藍(lán)屏死機(jī)的情況,有時(shí)候是完全沒(méi)有任何征兆就突然出現(xiàn)了。



          那么,這種神奇的 bug 到底是怎么產(chǎn)生的呢?


          其實(shí)今天跟你們聊這個(gè)話題也是源于我們星球一位同學(xué)給我發(fā)來(lái)的問(wèn)題,他們最近上線產(chǎn)品后就遇到了一個(gè)這樣的 bug,但是怎樣都無(wú)法復(fù)現(xiàn)。


          發(fā)現(xiàn)時(shí)是在測(cè)試過(guò)程中,測(cè)試用例在,截圖在,但后續(xù)在一行代碼都不改的前提下,這個(gè)問(wèn)題就再也沒(méi)有出現(xiàn)過(guò)。


          以前我遇到這類問(wèn)題時(shí)沒(méi)有溯源,但這次我還是到網(wǎng)上查了下類似 bug 的由來(lái)和案例,其中在油管上的一個(gè)視頻或許給了我答案。


          在說(shuō)可能的原因和邏輯之前,我先給你們說(shuō)個(gè)真實(shí)故事。


          2003 年,比利時(shí)首都在進(jìn)行大選,他們的選舉機(jī)制是采用投票的方式進(jìn)行。


          每個(gè)公民可以領(lǐng)到一張實(shí)體磁卡,這張磁卡里會(huì)錄入他們的個(gè)人信息,到投票站投票時(shí)需要把這張磁卡插入到對(duì)應(yīng)的投票機(jī)電腦里,然后進(jìn)行選票。



          你可能會(huì)好奇,為什么要用實(shí)體磁卡?直接用電腦登錄個(gè)人信息投票不行么?


          理論上是的,但是他們?yōu)榱朔乐褂?jì)算機(jī)出現(xiàn)問(wèn)題導(dǎo)致選票丟失,所以磁卡是用來(lái)備份的。


          萬(wàn)一計(jì)算機(jī)故障或者有人黑進(jìn)系統(tǒng)干擾選舉,他們還可以單獨(dú)統(tǒng)計(jì)磁卡來(lái)計(jì)算選票,以此保證選舉的公平性。



          這套投票機(jī)制已經(jīng)在他們那運(yùn)行了很多年,一直都沒(méi)有出現(xiàn)什么問(wèn)題。


          可是,那一次的投票統(tǒng)計(jì)結(jié)果中出現(xiàn)了一個(gè)異常情況。


          一個(gè)名叫 Maria 的候選人得到了 4610 票,這個(gè)得票數(shù)遠(yuǎn)遠(yuǎn)超過(guò)了她所在黨內(nèi)選票的理論上限。


          發(fā)現(xiàn)異常后,工作人員對(duì)投票的磁卡進(jìn)行了挨個(gè)讀取并重新統(tǒng)計(jì)得票數(shù),實(shí)際票數(shù)只有 514 票。



          既然投票人只投了 514 票,那這 4610 票又是怎么來(lái)的呢?


          在檢查過(guò)投票系統(tǒng)的代碼后沒(méi)有發(fā)現(xiàn)什么問(wèn)題,投票機(jī)硬件經(jīng)過(guò)反復(fù)重新測(cè)試也沒(méi)有發(fā)現(xiàn)什么異常。


          此時(shí),參與調(diào)查的計(jì)算機(jī)學(xué)家發(fā)現(xiàn)了一個(gè)問(wèn)題,這兩個(gè)數(shù)字之間的差額是 4096,這在計(jì)算機(jī)里是一個(gè)比較特殊的數(shù)字。


          你們前幾年應(yīng)該都玩過(guò)一款叫 2048 的游戲吧,也就是從 2 開(kāi)始一直按照 2 的次方去合并數(shù)字來(lái)得到更大的數(shù)字,最終合并出 2048 算獲勝。



          2048 就是 2 的 11 次方,如果 2048 再做一次平方,也就是 2 的 12 次方,就得到了前面提到的數(shù)字 4096。


          到這里,就引出了一個(gè)新概念,二進(jìn)制


          二進(jìn)制是一種計(jì)數(shù)方式,計(jì)算機(jī)里所有的指令最終都是二進(jìn)制,包括程序員寫(xiě)的代碼也會(huì)經(jīng)過(guò)編譯轉(zhuǎn)化為二進(jìn)制被計(jì)算機(jī)執(zhí)行。


          簡(jiǎn)單說(shuō),計(jì)算機(jī)的世界就是被 0 和 1 組成的復(fù)雜指令構(gòu)成的。


          到硬件層面,芯片中的晶體管就是根據(jù) 0 和 1 來(lái)判斷開(kāi)關(guān),通過(guò)復(fù)雜的構(gòu)成組合成了計(jì)算的復(fù)雜操作。


          既然想到了二進(jìn)制,計(jì)算機(jī)科學(xué)家又做了一個(gè)嘗試。


          他們把 514 這個(gè)數(shù)字和 4610 這個(gè)數(shù)字的二進(jìn)制展開(kāi),你會(huì)看到這兩排數(shù)字。



          仔細(xì)看,514 和 4610 這兩個(gè)數(shù)的二進(jìn)制其實(shí)只差了一位,就是順數(shù)的第 4 位,514 在這個(gè)位置上是 0,而 4610 是 1。


          也就是這 1 位的差異,直接讓 514 變成了 4610。


          那問(wèn)題又來(lái)了,這種轉(zhuǎn)變是怎么發(fā)生的呢?


          這里我們要了解另一個(gè)新概念,比特反轉(zhuǎn)


          比特反轉(zhuǎn)是計(jì)算機(jī)科學(xué)中的一個(gè)概念,是指將二進(jìn)制的位進(jìn)行反轉(zhuǎn)的過(guò)程,可以通過(guò)異或運(yùn)算、磁場(chǎng)干擾、機(jī)械振動(dòng)、硬盤(pán)老化或者問(wèn)題變化產(chǎn)生。


          除了異或運(yùn)算之外,其他的幾種方式都是被動(dòng)發(fā)生。


          顯然,這個(gè)投票系統(tǒng)如果不是主動(dòng)的程序 bug 產(chǎn)生的問(wèn)題,那就是被動(dòng)的比特反轉(zhuǎn)。


          其中,科學(xué)家判斷可能性最大的就是磁場(chǎng)干擾,或者叫射線干擾。因?yàn)閿?shù)據(jù)存儲(chǔ)地沒(méi)有地震,也沒(méi)有硬盤(pán)老化情況。


          說(shuō)到這你可能有點(diǎn)迷糊,磁場(chǎng)和射線還能引發(fā)系統(tǒng) bug?


          還真會(huì)。


          我還看到一個(gè)案例,2013 年一個(gè)游戲博主在玩《超級(jí)馬里奧64》里的一個(gè)關(guān)卡時(shí),偶然跳到了游戲畫(huà)面天花板的上面。


          正常來(lái)說(shuō),這個(gè)地方是不能上來(lái)的,但他也不知道為何就跳了上來(lái),而且之后重新闖關(guān)時(shí)就無(wú)法復(fù)現(xiàn)了。



          他對(duì)此一直百思不得其解,以為是游戲的 bug,但其他玩家也沒(méi)有復(fù)現(xiàn)過(guò)這個(gè)問(wèn)題。


          為此,還有另一位玩家懸賞 1000 美金讓大家去復(fù)現(xiàn)和解決這個(gè)問(wèn)題。


          6 年后,身為程序員的他做了多次嘗試,發(fā)現(xiàn)在起跳代碼片段上對(duì)應(yīng)的二進(jìn)制節(jié)點(diǎn)是 11000101,他寫(xiě)了一個(gè)腳本,在跳躍節(jié)點(diǎn)把這個(gè)二進(jìn)制的最后一位改成 0,竟然可以成功復(fù)現(xiàn)跳到天花板上去的現(xiàn)象。


          至此,這個(gè)問(wèn)題也被定義為比特反轉(zhuǎn)。


          可是,導(dǎo)致比特反轉(zhuǎn)的這些磁場(chǎng)和射線來(lái)自哪里呢?


          如果所處環(huán)境沒(méi)有什么改變磁場(chǎng)的裝置的話,那這種改變大概率來(lái)自天上。


          準(zhǔn)確點(diǎn)說(shuō),是來(lái)自宇宙深處,也就是宇宙射線。


          一定會(huì)有讀者說(shuō),你這不扯淡么,咋不說(shuō)來(lái)自地獄。


          其實(shí)你們可以去查閱和研究一下相關(guān)案例,不僅這兩個(gè),有幾個(gè)航空飛行事故也是由宇宙射線造成計(jì)算機(jī)系統(tǒng)異常導(dǎo)致的。


          離地面越高,宇宙射線越強(qiáng),雖然大氣層已經(jīng)幫我們阻擋了一層,但還是會(huì)有弱化后的高能射線到達(dá)地面。


          如果此時(shí)碰巧擊中了計(jì)算機(jī)中的芯片晶體管,那就有可能導(dǎo)致比特反轉(zhuǎn),進(jìn)而產(chǎn)生難以復(fù)現(xiàn)的 bug。


          是不是覺(jué)得很神奇?


          從某種程度上來(lái)說(shuō),人類的進(jìn)化可能也會(huì)受到宇宙射線的干預(yù),可能千百萬(wàn)上億年前,人類的祖先可能就是因?yàn)橐淮斡钪嫔渚€導(dǎo)致 DNA 序列變化而造就了今天的我們。


          雖然概率足夠小,雖然現(xiàn)在也有技術(shù)能防止這種情況的出現(xiàn),但再小的概率也是概率。


          一旦遇到,跟中了大彩票沒(méi)什么區(qū)別。


          那問(wèn)題來(lái)了,有沒(méi)有可能你的銀行卡余額數(shù)字被宇宙射線擊中?


          推薦閱讀:《沒(méi)到手,價(jià)格就漲 4 倍,什么產(chǎn)品能做到?
          ················· 唐韌出品 ·················

          ▲ 點(diǎn)擊上方卡片進(jìn)入發(fā)消息回復(fù)“w”,可加我個(gè)人微信
          關(guān)注唐韌,用產(chǎn)品思維洞察現(xiàn)象背后的邏輯

          安可時(shí)刻

          雖然理論上存在上面講的可能性,但你們?cè)谧霎a(chǎn)品過(guò)程中還是小心測(cè)試、客觀求證、認(rèn)真對(duì)待每一個(gè) bug。


          很多產(chǎn)品中的大問(wèn)題往往是由一些小忽視引發(fā)的,尤其是線上 bug,遇到了就比較難搞。


          還是那句話,產(chǎn)品無(wú)小事。


          PS:長(zhǎng)沙的產(chǎn)品訓(xùn)練營(yíng)定檔6月1號(hào)了,也是唯一一場(chǎng),要參加的還可以聯(lián)系我。此外,深圳和廣州正在招募中,人滿就發(fā)車。

          瀏覽 313
          2點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          2點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲男人天堂2025 | 日韩黄色电影在线观看 | 波多网站 | 亚洲.无码.变态.欧美.中文 | 亚洲A∨无码无在线观看 |