第445章 最初,他們只是不信他是秦始皇

投票推薦 加入書籤 小說報錯

  第445章 最初,他們只是不信他是秦始皇

  看到這個數據大家的第一個想法就是————

  這特麼是BUG了吧。

  看到這個數字,幾乎所有的程式設計師們,DNA都動了。

  小學生們最敏感的數字可能是100,因為這是他們能夠達到的上限。

  而2147483647可能就是碼農們最敏感的數字,至少是之一。

  一般出現這個數字的時候,並不代表著就真的是這個數字,而是結果超綱了,只能顯示這個數字。

  當然了,更敏感的數據可能是—32768之類的,那就是溢出了,這個結果會更糟糕————

  現在並不代表事情不糟糕,只是網站做了防溢出處理,看起來沒那麼糟糕而已。

  畢竟,什麼樣的技術,能夠直接把整個測試體系干穿?

  這是不可能的。

  可是,這個是平子大佬的比賽結果啊。

  萬一平子大佬真的把比賽干穿了呢?

  等等,正因為是平子大佬,所以才更加不可能吧?

  畢竟,世界上有兩個真理:

  一、世界上沒有絕對的真理。

  二、平子大佬不懂算法。

  所以,到底是不是出了問題?

  大家其實也不知道自己的內心到底期待著什麼,但還是決定把這件事情的判定交給比賽的主辦方。

  於是,網站的後台,此時已經收到了雪花一般的網友提供的錯誤報告,告訴他們網站出錯了,讓他們趕快處理一下。

  說實話,作為一個主打搞笑和抽象的編程大賽的主辦方,這個主要由L站的高級會員組成的主席團,都是業餘時間在做這件事情。

  他們都是激進的技術主義者,並不怎麼害怕出現什麼問題,反而更注重效率。

  這種思路和官方的比賽是完全相反的。

  所以,這個這個天榜晉升系統其實也是自動的,只要積分夠了之後,就會自動晉升,而不需要任何一個關鍵決策者的允許之類的。

  反正,對這種搞笑和抽象的比賽來說,就算是出現問題,也只是樂子中的插曲,只要及時糾正就好了,相比之下,即時反應變化才是更重要的。

  這也是這個競賽系統被開發出來的初衷。

  換句話說,在參賽者們拼盡全力疊代自己的資料庫查詢方案的時候,其實這個主辦方的網站,也在一刻不停的疊代和維護,以應對越來越多的訪問者以及越來越多的代碼量,不斷優化測試方式和時間,不斷減少資源壓力,以及不斷以更快的速度反映變化,讓大家能夠第一時間感知到自己努力的結果。

  至於結果會不會出錯,只要不是大問題就無所謂,畢竟也不會有人來追責他們,對吧。

  陳雁行就是主辦方的主要成員之一,作為L站的聯合創始人和技術顧問之一,他也是這次比賽的最大技術支持與伺服器贊助商。

  因為這場比賽涉及到了唐一平,而自己作為【0T1P】大佬唐師傅的同輩人以及親密戰友,或者說作為一個「長輩」,參與進去終歸是不好。

  畢竟這是在代寫作業—一不管這事兒演變成了什麼,最初也是為了代寫作業。

  這種動機,就是不好的,自己作為長輩,不能鼓勵這種事情。

  至少陳雁行是這麼覺得的。

  他骨子裡還是一個比較傳統的男人來著。

  所以他只是在背後暗戳戳的推動了這場比賽的大型化和規模化,以及貢獻了這個網站的大部分代碼而已。

  什麼壞事兒也沒做。

  就是————看樂子。

  樂子人怎麼能算是壞人呢?是吧。

  所以,在看到了雪花一般的報錯的時候,作為可能是最強的獨立網安專家之一的陳雁行,看到報錯的第一個想法就是不可能。

  因為網站的代碼是他寫的,測試程序和方案也是他出的,就連測試集都是他弄來的真實測試集—一他不可能出這麼大的差錯。

  他又不是一個初出茅廬的菜鳥,他可能會犯錯誤,但是絕對不會在這種簡單的問題上犯錯誤。

  但如果自己不可能出錯,那他就要面對第二個不可能。


  這個測試結果是對的?

  這更不可能吧!

  畢竟那可是平子大佬,不會算法的平子大佬!

  平子大佬寫出來FORK—Cane這種項目一點也不奇怪,畢竟平子大佬本身就是工程暴力美學的奇蹟代言人。

  但是算法?

  我寧願相信門口擺攤賣飯的大叔是秦始皇。

  這麼想著,陳雁行打開了網站後台的日誌,調出了平子大佬的測試日誌。

  作為網安專家,陳雁行的「看日誌」是一門絕活。

  速度快到誇張。

  只是掃了一眼,他就發現,沒問題。

  至少是日誌絕對顯現不出來的問題。

  沒辦法了,他只能再自己手動跑一遍測試了。

  調出唐一平提交的代碼,導入了由他提供的那個數據量為50萬的學生檔案測試集。

  這是一個巨大的csv文檔,整體大小大概500M。

  陳雁行自己估算過,如果把這些文本文檔,轉成資料庫的格式,理論數據量應該是50M左右。

  這是其有效熵值轉換成的比特數,也就是這個測試集本身蘊含的信息的比特數。

  但是這種單純的數據是不能使用和檢索的,所以才會有「資料庫」這種東西,把信息編碼索引,安排好位置。

  換言之,單純的信息就像是無數的人,資料庫就是蓋上一棟大樓,把他們放進各自的房間。

  這就要在本身的數據基礎上,加上B—tree或者其他tree的索引、哈希表等等,就像是樓梯樓層和門牌號。

  通常來說,這些數據轉換成資料庫格式之後,整體數據量大概在200M—300M。

  這大概就是地榜排名前幾的水平,其實能做到這個數量級就已經很強了。

  但但如果是天榜的話,目前已經強到離譜了。

  譬如現在焦灼在天榜前列的兩個ID:「遞歸之夢」和「等待戈多」,已經把這個數據壓縮到了130M左右。

  在這個數據集上,已經可以和商用資料庫相媲美,甚至在某些方面猶有過之了,當然,也不同程度的呈現出了過擬合,算是針對性優化。

  陳雁行把自己的數據集導入了唐一平的項目里。

  導入的速度很快,而且CPU占用率很高,幾乎是瞬間拉滿,然後導入完成。

  陳雁行再次跑了一遍測試流程。

  測試結果一行行的輸出,和陳雁行在日誌裡面看到的一模一樣,片刻之後,一模一樣的分數出現。

  2147483647。

  這不對啊,這不可能。

  莫非他真的是秦始皇?

  作為一個網絡安全的大佬,其實陳雁行首先就是個測試方面的專家,他設計的測試用例和測試程序非常完善。

  還是那句話。

  可能出錯,但不可能出現這種低級錯誤。

  陳雁行拉出來了測試細分項,就看到了測試的平均響應時間。

  0ms(毫秒)?

  果然出錯了吧。

  正常來說,這種體量的資料庫的簡單查詢應該在幾十毫秒。

  等等,莫非是查詢速度快到了四捨五入之後都是0?

  直接低了一到兩個數量級。

  這會兒,陳雁行其實遇到了和奎哥一樣的問題。

  位數不夠,顯示不全的問題。

  可是,誰特麼的資料庫測試響應時間,需要用到比毫秒還小的單位啊!

  陳雁行一邊吐槽著,一邊打開了自己的測試程序,修改了一下代碼,把統計單位變成了us(微秒)。

  然後又跑了一遍測試。

  這次結果終於顯示正常了。

  不,陳雁行覺得這次更不正常了。

  因為測試最終的結果顯示為23us。

  合著,不是零點幾毫秒,是零點零二毫秒!

  特麼的,這可不是四捨五入到0了嗎?


  自己之前的測試集能夠顯示出來才怪!

  再特麼的,系統的測試噪聲都快要10us了好嗎!

  讀數據的延遲都要10us了好嗎?

  你咋不飛呢?

  這怎麼可能?

  這個查詢結果有問題吧。

  真的有問題吧。

  對不起啊,平子大佬,我不是故意要這對你,但是我得把這個問題找出來啊————

  所以,陳雁行開始做一件自己最不喜歡做,也最鄙視做的事情。

  手動測試。

  好人家誰手動測試啊對吧!

  但是他不得不做。

  打開項目,隨便從自己的數據集裡面找了個測試項目,測試了一下。

  屏幕一閃,結果出現。

  陳雁行:????

  快到不可思議,而結果看起來似乎也沒什麼不對的地方。

  至少看出來如此。

  但是————

  這明明就不對啊!

  怎麼會這麼快?

  他不會是隨便編造了測試結果吧!

  陳雁行仔細對比了一下,好像————沒錯?

  可是沒錯就是最大的錯誤啊!

  現在該怎麼辦?

  陳雁行糾結著,然後他想到了一個最簡單的對比方法。

  他開啟了一個批量測試腳本,同時打開了三個項目。

  平子大佬、遞歸之夢、等待戈多。

  當前天榜排名前三的三個項目。

  然後對比三者的輸出。

  如果平子大佬的這個資料庫進行了有損壓縮,那最終輸出終歸會有差異。

  為了自己監控這個過程,這個腳本他直接留在了前台,可視化測試。

  接下來,他直觀的感覺到了差距。

  理論上來說,人類是不太可能分辨ms級別的時間的,更別說us了。

  但是當完全同步展現的時候,人還是能夠本能地感覺到哪裡不一樣。

  簡單測試這種對比還不明顯,進入到複雜的搜索工作,譬如統計年齡大於20,分數大於60的人數時,雙方的輸出,已經肉眼都能夠感覺出來延遲了。

  等。

  漫無目的的等。

  一邊已經完成了,另外一邊還在吭哧吭哧努力工作。

  而輸出的結果,在腳本對比之後,也一次次通過。

  Done。

  Done。

  Done。

  Done——

  一行行的綠字在不斷刷新。

  結果已經很清楚了,平子大佬的資料庫的效率,就是高到離譜。

  這到底是啥啊!

  陳雁行的心中就只有一個想法。

  特麼的他不會真是秦始皇吧!

  懷著這種想法,陳雁行打開了唐一平的項目代碼。

  和別人不一樣,別人是先去看代碼,再去跑測試結果。

  但陳雁行現在已經知道結果了,再去看代碼。

  所以腦海中已經預設了某種立場。

  沒錯,作為這個世界上,唯一知道唐一平和【0T1P】大佬父子關係的人,陳雁行的第一個想法就是,我去,莫非是【0T1P】大佬出手了!

  老子幫兒子,也很正常吧,更別說是女裝這種胡鬧的東西,【0T1P】那種大佬,肯定是看不下去吧。

  等等,【0T1P】大佬不會生氣我不幫忙還在推波助瀾吧。

  可是我扮演的是一個陪著孩子胡鬧的叔叔的角色不是嗎?

  不是嗎?

  是嗎?

  不是嗎?

  陳雁行忐忑打開項目,一目十行向下看,然後很快就找到了核心的代碼。


  雖然早就預設了立場,但真正看到這代碼的時候,陳雁行還是愣涼了。

  這是啥啊!

  和他想的完全不一)。

  他本以為自己會看到當初【0T1P】大佬的FOEW或者FORK那種完仂無亥理解的內核。

  但這並不是完仇無亥理解的。

  這是一種很新的東西,但絕對不是【0T1P】大佬的風格。

  這還是人類的C從言,還是典型的平子大佬的風格。

  但描述的東西,卻完偽不同。

  陳雁行從未見過這種東西。

  陳雁行一行行把所有的代碼看完了。

  但他和其他的網友們的感受是一人的。

  每一行都懂,但是合一起完仂不懂。

  這是————什麼?

  這一刻,陳雁行也感受到了某種————

  智商被碾壓的挫敗感。

  然後他看到屏幕的右下角,專家評審的聊天列已經活躍了起來。

  果不其然,裡面一陣哀嚎。

  「這是什麼啊!」

  「為什麼每一句都懂,但合起來就是不會啊!」

  「難道真像那些傢伙們說的一人,平子大佬這是新的數學乓型?」

  新的數學模型?陳雁行恍惚間,回憶起了某種被支配的恐懼。

  「就算是新數學乓型也不可能吧,我本科和研究生都是數學專業,現在哪有這種數學乓型,如果有的話,我們數學界應該先知道吧。你們看平子大佬整個資料庫的大小了嗎?這特麼是魔亥!」

  整個資料庫大小。

  陳雁行發現,自己竟然忽略了這麼一個重要的東西。

  他重新回到了唐一平的項目,然後看到了資料庫的大小。

  5.2M?

  他以為自己出錯了。

  這不可能。

  一個本身500m,壓縮成數據比特至少也有50m的數據集,怎麼可能只有5m的資料庫?

  眾所周知,信息比特是不能壓縮的。

  壓縮就等於損失信息。

  這是物理的核心亥則,是人類科技的基石,是不可能打破的鐵律。

  50M的信息比特,不可能壓縮成5.2M而不損失任何東西。

  這不可能,完仂不可能。

  川陵大學校園裡。

  凌晨五點半。

  數學教研室資料室。

  唐教授看著眼前那個五十多歲,穿著汗衫,邋裡邋遢,身上還散發著異味的男子。

  他身邊的草駁紙已經堆丫了小半個桌子。

  過去的七個半小時裡,他一直喃喃重複著一句話。

  「這不可能,這不可能,這完仂不可能。」

  他甚至把自己頭上本就剩下不多的頭髮,都薅下來了一撮又一撮。

  從旁邊看,他似乎已經瘋了。

  但是唐教授其實非常嫉妒他。

  因為,她知道,他可能真的快要看懂了。

章節目錄