這個確實遇到過了!

剛看到一個小故事:

某公司有個很著名的故事:
有一個系統是用來發放固定電話卡號的。發放的時候爲了讓號碼能隨機化,需要取系統時間作爲種子生成隨機數。但這個算法有個問題,如果短時間內被調用多次,取得到的系統時間(可能是毫秒)就是相同的。那麼計算生成的前後的卡號就是有規律的。
原來的程序員在代碼中增加了一行語句seep(1),通過這行語句強制每次調用取得的系統時間是不同的。
好了,故事來了。這段代碼在網上運行一直好好的,但某一年有個新來的程序員,改另一個bug的過程中,瞅着這個sleep(1)左看右看,覺得都沒有邏輯上的意義。(要命的是,這行代碼沒有註釋),於是敲下兩個斜槓,把這行代碼給註釋了!
由於這是順手的行爲,誰也不知道他把這代碼給改了,因此在驗證的時候也沒有特意去測試發放卡號這功能,因此這個新注入的bug就被髮布出去了。
這個bug後果是嚴重的,這直接導致某運營商發放的電話卡被人輕鬆推測出來,據說損失了好幾十萬。(二十年前的好幾十萬啊親)
後來查啊查啊,就查到這行被註釋的 sleep(1),解決的力法就是恢復它。改代碼那哥們下場是怎樣,故事沒說。反正像我們這種剛進去的新人,這個故事被反覆教導着。教訓就是:對於任何舊代碼,如果沒有明確的需要,千萬別手多多去碰它。
說完了。

又搜索了一下,貌似來源於這裏:

https://www.zhihu.com/question/21747929/answer/384932363

隨機數的生成問題,做大數據的也許都習以爲常了。但對於普通的應用開發者來說,這個坑超級無敵大,如果哪天您熬夜快熬成瞎子且終於找到是隨機數的問題時,恭喜您,your level is up!

解決方案?您眼睛都熬瞎了,竟然沒找到解決方案?您逗我的吧!至於其他人,今天是不是又看了一個非常不錯的笑話?開心不開心?

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章