這 BUG,絕了
上周只上了三天班,但我也絲毫不敢懈怠,BUG 更是一個(gè)也沒少寫。
看著滿屏幕的 ERROR,我陷入沉思。為什么我寫的代如此爛,無法像大牛們寫的那般優(yōu)雅?
越想越自卑,越想越抑郁。我覺得這樣不行,一定得振作起來。
正如一位哲人曾經(jīng)說過:
世間萬事萬物,都是有兩面性的:有它光明的一面,也就有他陰暗的一面;有它積極的一面就有他消極的一面;有他好的一面也有它壞的一面。
我的代碼雖然不夠優(yōu)雅,但寫的 BUG 還能比別人差嗎?
然后我在網(wǎng)上搜了一下,沒錯(cuò),BUG 也比別人差。
軟件開發(fā)歷史上有哪些著名的 BUG 呢?今天我們就來好好聊一聊,漲漲奇怪的知識(shí)點(diǎn)。
第一個(gè) BUG

上圖中有一只飛蛾被貼在了一張紙上,這可不是某個(gè)人的特殊愛好,而是計(jì)算機(jī)的第一個(gè) bug。
它導(dǎo)致了哈佛 Mark II 計(jì)算機(jī)中的繼電器短路。Grace Murray Hopper 找到了它,并把它放在了日志中。
如果沒有這個(gè) bug,我們可能對(duì)計(jì)算機(jī)中的錯(cuò)誤就有不同的說法了。
這可能是最著名的計(jì)算機(jī)錯(cuò)誤了。
500 英里外的郵件
一位國(guó)外做郵件服務(wù)的管理員,有用戶向他抱怨說:他們不能發(fā)送超過 500 英里距離的電子郵件。
這不是扯淡嗎?這可是互聯(lián)網(wǎng)業(yè)務(wù),怎么還跟實(shí)際距離有關(guān)了。
管理員一聽也是一臉懵逼,根本不相信。根據(jù)程序員法則即可推理:原來還好好的呢。

有一位用戶還特意做了一張郵件發(fā)送失敗的地圖。地圖上顯式,郵件的送達(dá)區(qū)域半徑比 500 英里就多那么一點(diǎn)點(diǎn):半徑內(nèi)的收件人,全收到了,之外的,全失敗了。
看來是真的有這個(gè)問題,還是得排查啊。到底是怎么回事呢?
原來是一次軟件升級(jí)導(dǎo)致遠(yuǎn)程服務(wù)器超時(shí)時(shí)間被設(shè)為 0。在一個(gè)具有典型負(fù)載的特定機(jī)器上,零超時(shí)意味著如果連接時(shí)間稍微超過 3 毫秒,服務(wù)器就會(huì)終止連接。
而以光速傳播的電信號(hào),在 3 毫秒的時(shí)間內(nèi)所能到達(dá)的距離大約是:
0.003 * c (光速) = 558.84719 miles
星期三崩潰的系統(tǒng)
一家醫(yī)院用來監(jiān)控病人健康的數(shù)據(jù)庫,每到周三,會(huì)自己崩潰。
我就不一樣了,我是周一到周四都會(huì)崩潰。只有周五狀態(tài)正常,因?yàn)轳R上就要修周末了。
說回這個(gè)系統(tǒng),該系統(tǒng)記錄日志是用 C 風(fēng)格的代碼編寫的,把日志字符串記錄到了一個(gè)固定長(zhǎng)度的緩沖區(qū)中,其中日志時(shí)間一欄,格式例如「Monday, July 17, 1997, 10:38:47.123」。
看到這是不是有點(diǎn)靈感了,肯定是跟時(shí)間有關(guān)系,讓我們把信息再明確一下:
| 星期 | 長(zhǎng)度 |
|---|---|
| Sunday | 6 |
| Monday | 6 |
| Tuesday | 7 |
| Wednesday | 9 |
| Thursday | 8 |
| Friday | 6 |
| Saturday | 8 |
這樣的話就清晰了,原因就是周三的字符串長(zhǎng)度更長(zhǎng),在這一天,緩沖區(qū)恰好溢出了。
這 BUG,還真的就是這么巧妙。
《江南 Style》爆表
這個(gè) BUG 可能很多同學(xué)都知道,也就是幾年前的事情。
鳥叔的一首《江南 Style》火遍全球,順便爆出了 YouTube 的一個(gè) BUG。
原因就是 YouTube 的計(jì)數(shù)器之前使用的是 32 位整數(shù)。32 位整數(shù)確定了它可以計(jì)數(shù)的最大可能點(diǎn)擊量為 2,147,483,647。
YouTube 的程序員可能都沒想到,還能有一個(gè)視頻的點(diǎn)擊量能超過這個(gè)數(shù)?
《江南 Style》視頻點(diǎn)擊量超過了最大值,我們就得到了著名的《江南 Style》YouTube BUG。
現(xiàn)在,YouTube 的視頻計(jì)數(shù)器改用 64 位整數(shù),這意味著視頻最大觀看人數(shù)為 922 萬萬億 。
YouTube 程序員:我看看還有誰?
看到這幾個(gè) BUG 之后,我的目標(biāo)就改變了,不再是寫出優(yōu)雅的代碼,而是寫出巧妙的 BUG。
我要在系統(tǒng)中暗藏一些「奇思妙想」,給我的繼任者留下一個(gè)又一個(gè)驚喜。加油~
以上就是本文的全部?jī)?nèi)容,如果覺得還不錯(cuò)的話歡迎點(diǎn)贊,轉(zhuǎn)發(fā)和關(guān)注,感謝支持。
推薦閱讀:
