這 BUG,絕了

上週只上了三天班,但我也絲毫不敢懈怠,BUG 更是一個也沒少寫。

看着滿屏幕的 ERROR,我陷入沉思。爲什麼我寫的代如此爛,無法像大牛們寫的那般優雅?

越想越自卑,越想越抑鬱。我覺得這樣不行,一定得振作起來。

正如一位哲人曾經說過:

世間萬事萬物,都是有兩面性的:有它光明的一面,也就有他陰暗的一面;有它積極的一面就有他消極的一面;有他好的一面也有它壞的一面。

我的代碼雖然不夠優雅,但寫的 BUG 還能比別人差嗎?

然後我在網上搜了一下,沒錯,BUG 也比別人差。

軟件開發歷史上有哪些著名的 BUG 呢?今天我們就來好好聊一聊,漲漲奇怪的知識點。

第一個 BUG

上圖中有一隻飛蛾被貼在了一張紙上,這可不是某個人的特殊愛好,而是計算機的第一個 bug。

它導致了哈佛 Mark II 計算機中的繼電器短路。Grace Murray Hopper 找到了它,並把它放在了日誌中。

如果沒有這個 bug,我們可能對計算機中的錯誤就有不同的說法了。

這可能是最著名的計算機錯誤了。

500 英里外的郵件

一位國外做郵件服務的管理員,有用戶向他抱怨說:他們不能發送超過 500 英里距離的電子郵件。

這不是扯淡嗎?這可是互聯網業務,怎麼還跟實際距離有關了。

管理員一聽也是一臉懵逼,根本不相信。根據程序員法則即可推理:原來還好好的呢。

有一位用戶還特意做了一張郵件發送失敗的地圖。地圖上顯式,郵件的送達區域半徑比 500 英里就多那麼一點點:半徑內的收件人,全收到了,之外的,全失敗了。

看來是真的有這個問題,還是得排查啊。到底是怎麼回事呢?

原來是一次軟件升級導致遠程服務器超時時間被設爲 0。在一個具有典型負載的特定機器上,零超時意味着如果連接時間稍微超過 3 毫秒,服務器就會終止連接。

而以光速傳播的電信號,在 3 毫秒的時間內所能到達的距離大約是:

0.003 * c (光速) = 558.84719 miles

星期三崩潰的系統

一家醫院用來監控病人健康的數據庫,每到週三,會自己崩潰。

我就不一樣了,我是週一到週四都會崩潰。只有週五狀態正常,因爲馬上就要修週末了。

說回這個系統,該系統記錄日誌是用 C 風格的代碼編寫的,把日誌字符串記錄到了一個固定長度的緩衝區中,其中日誌時間一欄,格式例如「Monday, July 17, 1997, 10:38:47.123」。

看到這是不是有點靈感了,肯定是跟時間有關係,讓我們把信息再明確一下:

星期 長度
Sunday 6
Monday 6
Tuesday 7
Wednesday 9
Thursday 8
Friday 6
Saturday 8

這樣的話就清晰了,原因就是週三的字符串長度更長,在這一天,緩衝區恰好溢出了。

這 BUG,還真的就是這麼巧妙。

《江南 Style》爆表

這個 BUG 可能很多同學都知道,也就是幾年前的事情。

鳥叔的一首《江南 Style》火遍全球,順便爆出了 YouTube 的一個 BUG。

原因就是 YouTube 的計數器之前使用的是 32 位整數。32 位整數確定了它可以計數的最大可能點擊量爲 2,147,483,647。

YouTube 的程序員可能都沒想到,還能有一個視頻的點擊量能超過這個數?

《江南 Style》視頻點擊量超過了最大值,我們就得到了著名的《江南 Style》YouTube BUG。

現在,YouTube 的視頻計數器改用 64 位整數,這意味着視頻最大觀看人數爲 922 萬萬億 。

YouTube 程序員:我看看還有誰?

看到這幾個 BUG 之後,我的目標就改變了,不再是寫出優雅的代碼,而是寫出巧妙的 BUG。

我要在系統中暗藏一些「奇思妙想」,給我的繼任者留下一個又一個驚喜。加油~

以上就是本文的全部內容,如果覺得還不錯的話歡迎點贊轉發關注,感謝支持。


推薦閱讀:

  • 計算機經典必讀書籍
  • 技術博客 硬核後端開發技術乾貨,內容包括 Python、Django、Docker、Go、Redis、ElasticSearch、Kafka、Linux 等。
  • Go 程序員 Go 學習路線圖,包括基礎專欄,進階專欄,源碼閱讀,實戰開發,面試刷題,必讀書單等一系列資源。
  • 面試題彙總 包括 Python、Go、Redis、MySQL、Kafka、數據結構、算法、編程、網絡等各種常考題。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章