第14章 只是一場夢
陸行醒來的時候,第一反應是脖子疼。
超——級疼。
像有人趁他睡著的時候,把他的腦袋擰下來,又隨手裝了回去。
陸行皺著眉,迷迷糊糊地抬起頭。
眼前不是宿舍的床板。
也不是大學宿舍那略顯斑駁的天花板……
而是一塊亮著冷白光的電腦屏幕。
屏幕上密密麻麻的代碼和報錯日誌混在一起,右下角還有公司內部聊天軟體彈出的紅點消息。
旁邊放著一杯已經涼透的咖啡。
再往旁邊,是一本攤開的筆記本,上面寫著幾個潦草的字:
【上線前必須解決。】
陸行愣了足足三秒。
然後他緩緩低頭,看向自己的手。
手指修長,但指節間有著長期敲鍵盤留下的僵硬感。
他又摸了摸自己的臉,下巴有些許沒刮乾淨的胡茬。
眼眶很酸,肩膀也僵。
空氣里飄著熟悉的味道。
空調、咖啡、外賣。
以及程式設計師工位上特有的那種不健康的氣息。
陸行的腦子嗡了一聲。
這裡是……
公司?
是他工作的公司。
江城某網際網路公司研發部,三組辦公區。
而他的位置,就在靠窗第三排。
陸行僵在椅子上,半天沒動。
直到旁邊忽然傳來一道帶著哭腔的聲音。
「組長!」
「救命啊!」
「這一塊又報bug了,怎麼也修不好!」
陸行慢慢轉過頭。
旁邊的工位上,一個戴著黑框眼鏡的年輕人正抱著腦袋,滿臉崩潰地看著他。
這人叫周明。
是陸行手底下的組員,剛畢業沒多久。
代碼寫得還算勤快,就是心理素質有些一般。
每次遇到線上bug,表情都像是馬上要被祭天。
此時的周明眼底泛著紅,聲音里甚至隱隱透著絕望。
「組長,我真不知道哪裡錯了。」
「本地跑沒問題,測試環境也沒問題,一到預發就炸。」
「日誌我看了半天,資料庫我也查了,緩存我也清了。」
「可它就是不對啊!」
他說到最後,聲音都劈了。
陸行看著他,又看了看四周。
熟悉的辦公室,熟悉的工位,熟悉的鍵盤聲。
還有熟悉到令人窒息的加班氛圍。
窗外天色灰白,應該是清晨?
可研發部里已經坐了不少人。
有人端著豆漿在看需求文檔,有人一邊啃包子一邊敲代碼。
一切都真實得過分。
他深深地嘆了口氣,想起昨晚……
不。
應該說,是他以為的昨晚。
江城大學,317宿舍。
林遠舟,趙霖,還有沈清漪。
那些畫面明明清晰得不像話,可現在再回想起來,卻像隔著一層霧。
陸行低頭看了一眼桌面上的手機。
屏幕亮起。
這回的日期正確了……
沒有江城大學開學,沒有十八歲,沒有重生。
陸行盯著手機看了很久。
最後,他輕輕扯了扯嘴角,笑意有些苦。
「果然……」
他低聲喃喃。
「只是一場夢而已啊。」
是啊。
怎麼可能一覺醒來,就回到十八歲呢?
又怎麼可能遇見一個本該和自己毫無交集的女孩呢?
太離譜了。
八成是長期加班之後,大腦終於承受不住了,給他編織出來了一場荒唐美夢。
夢裡有還沒後悔的人生,有一切可以重新開始的機會。
陸行閉了閉眼,心裡忽然有些空。
嘖嘖,自己是不是快猝死了?
周明見他不說話,表情更慌了。
「組長?」
「組長你別嚇我啊!」
「你是不是也覺得這個bug沒救了?」
陸行回過神,抬手揉了揉眉心。
「……沒事。」
他聲音有點啞。
「把你電腦轉過來,我看看。」
周明立刻像抓住救命稻草一樣,把椅子往旁邊一讓。
「在這兒!」
「這個接口返回的數據不穩定,有時候是空,有時候又有值。」
「然後頁面那邊就偶發性崩。」
「測試說復現不了,但產品說用戶已經反饋好幾次了。」
陸行站起身。
剛一起身,他膝蓋還微微僵了一下,發出了清脆的響聲。
這身體……
果然是被歲月摧殘過的版本啊。
他抓了抓頭髮,走到周明旁邊坐下。
屏幕上開著IDE,旁邊還有一堆日誌窗口。
陸行看著那段代碼,混亂的思緒漸漸被強行拉回現實。
他快速掃了一遍調用鏈。
「你這裡是先查緩存?」
周明趕緊點頭。
「對。」
「緩存沒有再查資料庫,然後重新寫回緩存。」
陸行指了指其中一段。
「那你有沒有想過,緩存里存的不是沒有數據,而是存了一個空結果?」
周明一愣。
「啊?」
陸行滑動滑鼠,拉到下面。
「你看這裡。」
「你為了防止緩存穿透,在查不到數據的時候,把空對象也寫進緩存了。」
「這思路沒錯,但問題是,你這裡拼寫出錯了。」
周明湊近看了一眼,然後整個人僵住。
陸行繼續道:
「正常查詢用的是……」
「你寫空緩存的時候,用的是……」
「總之,多了個『s』。」
周明:「……」
辦公室里沉默了兩秒。
周明的表情從崩潰變成迷茫,又從迷茫變成震驚。
最後變成想當場埋了自己的羞恥。
「我靠。」
他捂住臉。
「就這?」
陸行面無表情。
「很多線上事故,都是從『就這』開始的。」
周明痛苦道:
「可為什麼測試環境沒問題?」
陸行點開配置文件。
「測試環境緩存過期時間只有一分鐘。」
「預發環境為了模擬線上,設成了兩小時。」
「你測試的時候剛好沒碰上,預發那邊只要寫入了錯誤key,後面就出現不穩定。」
周明恍然大悟。
「所以不是接口不穩定,是我寫進去的空緩存讓邏輯分叉了?」
「差不多。」
陸行把鍵盤推給他。
「改key,然後補一條單元測試。」
「順便把緩存key常量抽出來,不要到處手寫字符串。」
周明連連點頭。
「明白明白!」
他手忙腳亂地開始改。
陸行站在旁邊看了一會兒,又補充道:
「還有這裡……」
周明一邊改一邊點頭。
「懂了。」
陸行看著他敲代碼,語氣放緩了一些。
「排bug的時候別光看表面。」
「日誌不是讓你盯著發呆的,是讓你順著鏈路往回找。」
周明苦著臉。
「組長,我也想順著鏈路找。」
「但我一看到報錯就腦子空白。」
陸行看了他一眼。
「那就先別慌唄。」
「bug又不會因為你慌就自己修好。」
周明沉默兩秒。
然後小聲道:
「嘿嘿,但它會因為你來就修好。」
陸行:「……」
這話聽著好像是在誇他。
但為什麼莫名有種壓榨組長的味道?
超——級疼。
像有人趁他睡著的時候,把他的腦袋擰下來,又隨手裝了回去。
陸行皺著眉,迷迷糊糊地抬起頭。
眼前不是宿舍的床板。
也不是大學宿舍那略顯斑駁的天花板……
而是一塊亮著冷白光的電腦屏幕。
屏幕上密密麻麻的代碼和報錯日誌混在一起,右下角還有公司內部聊天軟體彈出的紅點消息。
旁邊放著一杯已經涼透的咖啡。
再往旁邊,是一本攤開的筆記本,上面寫著幾個潦草的字:
【上線前必須解決。】
陸行愣了足足三秒。
然後他緩緩低頭,看向自己的手。
手指修長,但指節間有著長期敲鍵盤留下的僵硬感。
他又摸了摸自己的臉,下巴有些許沒刮乾淨的胡茬。
眼眶很酸,肩膀也僵。
空氣里飄著熟悉的味道。
空調、咖啡、外賣。
以及程式設計師工位上特有的那種不健康的氣息。
陸行的腦子嗡了一聲。
這裡是……
公司?
是他工作的公司。
江城某網際網路公司研發部,三組辦公區。
而他的位置,就在靠窗第三排。
陸行僵在椅子上,半天沒動。
直到旁邊忽然傳來一道帶著哭腔的聲音。
「組長!」
「救命啊!」
「這一塊又報bug了,怎麼也修不好!」
陸行慢慢轉過頭。
旁邊的工位上,一個戴著黑框眼鏡的年輕人正抱著腦袋,滿臉崩潰地看著他。
這人叫周明。
是陸行手底下的組員,剛畢業沒多久。
代碼寫得還算勤快,就是心理素質有些一般。
每次遇到線上bug,表情都像是馬上要被祭天。
此時的周明眼底泛著紅,聲音里甚至隱隱透著絕望。
「組長,我真不知道哪裡錯了。」
「本地跑沒問題,測試環境也沒問題,一到預發就炸。」
「日誌我看了半天,資料庫我也查了,緩存我也清了。」
「可它就是不對啊!」
他說到最後,聲音都劈了。
陸行看著他,又看了看四周。
熟悉的辦公室,熟悉的工位,熟悉的鍵盤聲。
還有熟悉到令人窒息的加班氛圍。
窗外天色灰白,應該是清晨?
可研發部里已經坐了不少人。
有人端著豆漿在看需求文檔,有人一邊啃包子一邊敲代碼。
一切都真實得過分。
他深深地嘆了口氣,想起昨晚……
不。
應該說,是他以為的昨晚。
江城大學,317宿舍。
林遠舟,趙霖,還有沈清漪。
那些畫面明明清晰得不像話,可現在再回想起來,卻像隔著一層霧。
陸行低頭看了一眼桌面上的手機。
屏幕亮起。
這回的日期正確了……
沒有江城大學開學,沒有十八歲,沒有重生。
陸行盯著手機看了很久。
最後,他輕輕扯了扯嘴角,笑意有些苦。
「果然……」
他低聲喃喃。
「只是一場夢而已啊。」
是啊。
怎麼可能一覺醒來,就回到十八歲呢?
又怎麼可能遇見一個本該和自己毫無交集的女孩呢?
太離譜了。
八成是長期加班之後,大腦終於承受不住了,給他編織出來了一場荒唐美夢。
夢裡有還沒後悔的人生,有一切可以重新開始的機會。
陸行閉了閉眼,心裡忽然有些空。
嘖嘖,自己是不是快猝死了?
周明見他不說話,表情更慌了。
「組長?」
「組長你別嚇我啊!」
「你是不是也覺得這個bug沒救了?」
陸行回過神,抬手揉了揉眉心。
「……沒事。」
他聲音有點啞。
「把你電腦轉過來,我看看。」
周明立刻像抓住救命稻草一樣,把椅子往旁邊一讓。
「在這兒!」
「這個接口返回的數據不穩定,有時候是空,有時候又有值。」
「然後頁面那邊就偶發性崩。」
「測試說復現不了,但產品說用戶已經反饋好幾次了。」
陸行站起身。
剛一起身,他膝蓋還微微僵了一下,發出了清脆的響聲。
這身體……
果然是被歲月摧殘過的版本啊。
他抓了抓頭髮,走到周明旁邊坐下。
屏幕上開著IDE,旁邊還有一堆日誌窗口。
陸行看著那段代碼,混亂的思緒漸漸被強行拉回現實。
他快速掃了一遍調用鏈。
「你這裡是先查緩存?」
周明趕緊點頭。
「對。」
「緩存沒有再查資料庫,然後重新寫回緩存。」
陸行指了指其中一段。
「那你有沒有想過,緩存里存的不是沒有數據,而是存了一個空結果?」
周明一愣。
「啊?」
陸行滑動滑鼠,拉到下面。
「你看這裡。」
「你為了防止緩存穿透,在查不到數據的時候,把空對象也寫進緩存了。」
「這思路沒錯,但問題是,你這裡拼寫出錯了。」
周明湊近看了一眼,然後整個人僵住。
陸行繼續道:
「正常查詢用的是……」
「你寫空緩存的時候,用的是……」
「總之,多了個『s』。」
周明:「……」
辦公室里沉默了兩秒。
周明的表情從崩潰變成迷茫,又從迷茫變成震驚。
最後變成想當場埋了自己的羞恥。
「我靠。」
他捂住臉。
「就這?」
陸行面無表情。
「很多線上事故,都是從『就這』開始的。」
周明痛苦道:
「可為什麼測試環境沒問題?」
陸行點開配置文件。
「測試環境緩存過期時間只有一分鐘。」
「預發環境為了模擬線上,設成了兩小時。」
「你測試的時候剛好沒碰上,預發那邊只要寫入了錯誤key,後面就出現不穩定。」
周明恍然大悟。
「所以不是接口不穩定,是我寫進去的空緩存讓邏輯分叉了?」
「差不多。」
陸行把鍵盤推給他。
「改key,然後補一條單元測試。」
「順便把緩存key常量抽出來,不要到處手寫字符串。」
周明連連點頭。
「明白明白!」
他手忙腳亂地開始改。
陸行站在旁邊看了一會兒,又補充道:
「還有這裡……」
周明一邊改一邊點頭。
「懂了。」
陸行看著他敲代碼,語氣放緩了一些。
「排bug的時候別光看表面。」
「日誌不是讓你盯著發呆的,是讓你順著鏈路往回找。」
周明苦著臉。
「組長,我也想順著鏈路找。」
「但我一看到報錯就腦子空白。」
陸行看了他一眼。
「那就先別慌唄。」
「bug又不會因為你慌就自己修好。」
周明沉默兩秒。
然後小聲道:
「嘿嘿,但它會因為你來就修好。」
陸行:「……」
這話聽著好像是在誇他。
但為什麼莫名有種壓榨組長的味道?