看著全息面板上任務的詳細信息,秦川很快就被任務獎勵上的“一次抽獎機會”吸引。如果拿到一等獎,到時候四大成功發表,豈不是就湊夠3次機會了?
“秦川?秦川?”
“啊......”
“看你剛才一直在發呆,怎麽了?”
“沒事沒事。”
秦川搖搖頭,確認著報名信息,果斷選擇了報名。
“秦川,我就等著你的好消息了。”
秦川抹了抹頭上的汗,無奈道:“老師,我只是去試試水,別抱多大希望......”
怎麽似乎除了自己,所有人都覺得他能獲獎呢?
......
10月27日。
天上罕見地飄起了絲絲小雨,給秋天的京城帶來了一絲迷濛。
這段時間秦川他們團隊又增加了幾名計算機學院的成員,林語墨有課不在,在場的幾個成員正在爭分奪秒地進行著開發工作。
“秦川,技術架構裡面的代碼我們基本上寫完了,到時候就可以直接使用了嗎?”一個剛入行的新成員發問。
秦川緩緩搖搖頭:“不行。”
“不行?”
幾個人都一愣,他們這段時間天天熬夜肝代碼,結果負責人竟然輕描淡寫地說不行?
“你這話什麽意思?”
秦川睃了這些猴急的新成員一眼,大部分都是大一新生,一個人負責java,一個人負責PHP,一個人負責SQL,最後代碼拿到自己眼前,他直接眼前一黑。
完全是各寫各的!
這也怪不得他們,大一新生沒有項目經驗很正常,他們這是拿自己這個項目試水當跳板啊!但秦川也沒辦法,現在項目缺人,有人來就謝天謝地了,自己可不敢挑挑揀揀。
秦川頭痛道:“我還要把你們的代碼優化優化,過段時間......”
“可是我們的代碼都快寫完——”
“Varnish、Redis還有移動API。”
“什麽東西?”
秦川扶額,只能解釋道:“Varnish是一個高性能反向代理服務器和http加速器,你,負責把這部分代碼搞出來;Redis是為了應對高並發,研發出來的一款NoSQL數據庫,你,在SQL的基礎上,改進一下我們原來的代碼;移動API就不用說了,我們到時候推出APP,你還指望大學生用電腦點餐嗎?寫一個移動API接口!”
“先把java web開發學會,還有Springboot、Spring Cloud都要學,以後都用得到。”
幾人連忙點點頭,有個大佬帶就是不一樣,有問題直接問,實在不會就丟給他!秦川看著眼前這幾個新兵蛋子,歎了一口氣,適巧又覺些許倦乏,拿出手機,打開了自己的圍脖帳號。
“大一新生秦同學”,樸實無華的名字。簡介更是簡單:“已發sci論文6篇,我真的不是天才!”
秦川發了一篇文章,配文是【最近準備發行一款外賣APP,開發ing......】,還配了一張圖片【能運行的BUG千萬不要修,否則會發生很可怕的事情!】
頓時下麵粉絲發言:
【不愧是你,期待華夏外賣行業的新星!】
【太真實了!本程序猿默默流淚......】
【樓上的,上班不要摸魚!】
秦川會心一笑,放下手機,正準備繼續今天的工作時,周梓城拍了拍他的肩膀,小聲說道:“師傅,數據庫好像出了個BUG。”
秦川心臟微微一縮,靠,怕啥來啥!他故作鎮靜地問道:“說吧,哪一環出問題了?”
“我們針對不同的測試場景進行測試,但是經常報錯。”
“這個異常是你們自己丟出來的還是軟件運行出錯給出來的?”
“是我們自己丟出來的,我們定了一個的告警閾值,超過閾值就認為發現了異常,但是經常出錯......”
秦川看了一眼周梓城,只見他的眼眶都有些發紅,秦川歎了口氣,說:“你等會兒回去,給你安排個任務。”
“秦哥你想到解決辦法了?我來就行了!”周梓城聽到秦川要給自己安排任務,竟然開心的不得了。
秦川無語,拍了拍周梓城的肩膀。唉,怎麽會有人聽到有任務還這麽開心呢?以後要是去了黑心公司,老板不得狠狠地收割?
“回去宿舍之後,好好睡一覺,這個BUG給我來修!”
周梓城一愣,說:“秦哥,我知道這個架構是你搭建的沒錯,但是我們最近寫的代碼都快超過5萬行了,光靠你自己就想修好恐怕——”
“你先拿鏡子照照你那黑眼圈再說話!”
周梓城沒有言聲,這段時間沒少學習,雖然都是計算機的知識,但他目標明確,學得很快。現在除了林語墨和秦川負責解決困難一點的代碼外,基本上大大小小的內容都是讓他來統籌規劃。
5萬行?在秦川看來就是幾千行代碼,而且還是那種結構清晰,腦海中自動給每行代碼寫滿了注釋的那種!
“QPS突增?大表DDL還是鎖阻塞?”秦川接著問。
周梓城搖搖頭。
意料之中的壞消息,秦川看向代碼山,思忖著。
即便讀代碼的速度快別人了好幾倍,但是如果讓他一一排查下來,恐怕還是要花費大量的時間。一方面,他總不可能枚舉所有的根因,畢竟由於經驗的局限性他不可能考慮到所有的故障場景,另一方面,如果需要對一個全新的指標進行診斷,而在以後沒有經驗的情況下,又如何快速整理出判斷異常的指標呢?
最後,也是最重要的一點,“QPS突增”、“低效執行計劃”、“表缺少主鍵或者唯一鍵”會造成指標值的異常,但是為什麽這些因素會造成指標值的異常呢?
秦川打算從內核源碼的角度來解決這個問題!
“的值由這三個變量決定的話......計算邏輯的話最後的主要時間戳的值來自於成員變量new_ts,而這個成員變量的又來源於這個事物對應的事件群......”
秦川從根源開始推導,首先就要解決成員變量的計算邏輯!一步一步深挖,找到出錯處的根源,而不是一味地打補丁,缺啥補啥。
“計算的邏輯搞定了,接下來就是寫一段獲取最後的主要時間戳的代碼了......bool mts_checkpoint_routine( *rli,unlonglong )接下來就是執行這串代碼,使用協調器來掃描這一組的元素並更新......最後當程序員的時候,指標值就會增加100秒!完成!”
“秦哥,我們走了。”
秦川抬頭看了一眼時間,內心一驚,小小的一個BUG他就已經修了一個下午!
“知道了!”
秦川盯著電腦屏幕,花費一個下午,得到的成果就是眼前這個用來進行快速監控數據庫異常的小軟件。它不僅能夠看到流量的具體情況,以及MDL鎖的持有者,還能讓後台程序員對用戶進行限流或者Kill掉阻塞者的SQL!
“最後,讓我來看看你到底在哪!”秦川點擊運行鍵,過了5秒, 錯誤的信息瞬間彈出!
43582-43594出現錯誤!
秦川如釋重負,露出了笑容。
“僅僅十幾行的代碼,竟然費了這麽大的功夫才解決,真是不容易!”最後的錯誤竟然是周梓城自己的疏漏,不小心寫了一串代碼,引發了MySQL進程自己觸發了Crash,也就是熟知的MySQL自殺,將這段代碼進行了簡單的修改後,整個程序就再沒有出現錯誤。
“完美!”
短暫的喜悅後,秦川頓感人困馬乏,他按著額角,修BUG這件事實在是太耗費腦細胞了。秦川感覺整個人的氣質都仿佛被削弱了不少,這感覺,比寫5篇數學論文還累!
看著空蕩蕩的自習間,秦川發著呆,放空著大腦。
“哢嗒!”
門被打開。
秦川扭頭,竟然是林語墨。
自習間沒有開燈,烏漆漆的房間中,秦川看到林語墨一手拿著雨傘,一手提著一個袋子,但不知道裝著什麽,但他似乎嗅到了一絲奶香味和微甜的味道。
“小秦,怎麽沒開燈呢?”林語墨按開了燈光,頓時她嬌美的面龐浮現在秦川眼前。她把手中沾滿雨水的傘放在門旁,看著秦川,嫣然一笑。
“剛在修BUG呢。”
秦川勉強笑了一下,他現在很想趕快回去宿舍睡上一覺,但是又意識到自己還沒有吃晚飯,無奈地看了一眼窗外。
秋季天黑得很快,但在路邊燈光照射下還是能夠看到細細密密的雨絲劃過。
他忽然想起來沒有帶雨傘,有些懊悔。