陳哲之所以提出要一個收屍人的要求,是他知道獻血站的互助會有可能請出這麼一號人物,畢竟想要在美利堅當收屍人,無疑是一件需求極大的差事,不論是人脈還是能力都有打點,涉及了底層和政府部門。
做收屍人的本身不會遊走於斬殺線上,但是從某種意義上,他們也無時不刻麵對著威脅,這就是互助會之中會有收屍人的緣故。 【記住本站域名 追書認準,.超方便 】
「互助會肯定是沒法直接幫我對抗黑幫的,因為水太深,如果幫了就會難逃其咎,這是都懂的道理。」
「但是這力所能及的幫助,卻也是他們的作風。」陳哲心緒起伏,想起了另外一件事。
下午到本的家中的聚會。
……
布魯克林,綠點區。
綠點區算得上是布魯克林北部一個安靜得有點過分的街區,比起威廉斯堡來說近似於沒有聲音。
從屋況來看,這裡的房子大多是兩三層高的聯排別墅,紅磚牆,木製窗框,門口停著老款的豐田和本田,街上同樣沒什麼人,一隻橘貓趴在某戶人家的台階上曬太陽,聽見腳步聲,懶洋洋地睜開眼睛看了一眼,然後又閉上。
陳哲反覆確認著本發給自己的私信,果不其然在一間沒有上鎖的房門前推開,看見其中狹長的空間。
抬眼一看,就見到一個穿著藍色衛衣,頭髮在腦後紮了個小揪的白人男子。
「陳,總算來了?」
本站了起來,詢問道。
「嗯。」
陳哲見到對方看到自己沒有任何驚訝,頓時也就知道了他的這個頻道是本刻意去搜尋的。
本站在玄關裡,側身讓陳哲進來。
屋子不大,但收拾得很整齊。進門右手邊是一個開放式廚房,灶台上擺著一台意式咖啡機,不鏽鋼的,擦得鋥亮。左手邊是客廳,一張深灰色的布藝沙發,對麵是一整麵牆的書架,塞滿了各種程式設計書籍和技術雜誌。落地窗前擺著一張書桌,上麵放著兩台顯示器,一台是蘋果的,一台是戴爾的,鍵盤是機械的,青軸,敲起來劈裡啪啦響。
「隨便坐。」本往廚房走,「喝什麼?咖啡?茶?還是啤酒?」
「咖啡就行。」
本點點頭,開始操作那台咖啡機。機器發出嗡嗡的聲響,咖啡豆研磨的聲音,水燒開的聲音,混在一起。
陳哲在沙發上坐下,目光掃過那麵書架。《程式碼大全》《設計模式》《人月神話》《UNIX程式設計藝術》……有些他看過,有些他聽過,有些他連名字都沒聽說過。
書架最上麵一層放著幾個相框。一張是本和一個女人的合影,站在海邊,陽光很好,兩個人都在笑。一張是本和幾個朋友的合影,背景是某個酒吧,手裡都拿著啤酒杯。還有一張是一個小男孩的單人照,七八歲的樣子,笑得很燦爛,缺了一顆門牙。
本端著兩杯咖啡走過來,在他對麵坐下,把其中一杯推給他。
「嘗嘗。我自己烘的豆子。」
陳哲端起杯子,抿了一口。苦的,但苦得很乾淨,後味有一點果酸。
「不錯。」
本笑了笑,也喝了一口。
兩個人沉默了幾秒。
本放下杯子,看著他。
話題到這裡纔算是進入了正題。
「你那期檔案操作的視訊我看了。」本說,「講得挺清楚。評論區反應也不錯。」
陳哲點點頭:「謝謝推薦。沒有你的推薦,漲不了這麼快。」
本擺了擺手:「不用謝我。內容是你的,我隻是給個入口。能留住人是你的本事。」
他頓了頓,目光在陳哲臉上停了一秒。
「你那個短連結設計,」本忽然開口,「我當時聽的時候就覺得有點意思。回去想了幾天,越想越覺得那個預生成佇列的思路挺巧。」
陳哲沒說話。
本繼續說:「一般人想到短連結,第一反應就是雜湊、自增id、資料庫。你想到的是成本,是CDN快取,是預生成佇列。這不是新手能想到的東西。」
他盯著陳哲,眼神裡帶著一點探究。
「你之前在哪家公司幹過?」
「沒幹過。」陳哲說。
本的眉頭微微皺了一下。
「那你在哪學的這些?」
陳哲想了想:「網上。看書。自己琢磨。」
本盯著他看了幾秒,然後端起咖啡喝了一口。
「網上?」他放下杯子,「網上能學到這種程度?」
陳哲沒說話。
本又沉默了幾秒,然後換了個話題。
「你平時主要寫什麼語言?」
「Python。」
「框架呢?」
「Flask。最近在看Django。」
本點點頭:「Flask入門快,Django重型一點,適合大專案。你覺得這兩個最大的區別是什麼?」
陳哲想了想:「Flask自由,Django規範。Flask讓你自己選用什麼庫,Django把一套東西都給你配好。Flask適合快速原型和小專案,Django適合團隊協作和長期維護。」
本聽著,點了點頭。
然後他忽然問了一個問題:「Flask的上下文是怎麼實現的?」
陳哲愣了一下。
本等著他回答。
陳哲沉默了兩秒,然後開始說:「Flask有應用上下文和請求上下文。應用上下文存應用級別的配置和變數,請求上下文存當前請求的資料。它們用棧來管理,推入和彈出,保證每個請求都有自己的隔離空間。實現上用了LocalProxy和LocalStack,執行緒或者協程區域性變數,避免互相乾擾。」
本聽完,沉默了幾秒。
然後他又問:「那Django的中介軟體是怎麼工作的?」
陳哲想了想:「Django的中介軟體是一個處理請求和響應的鉤子框架。請求進來的時候,會按順序經過每個中介軟體的process_request方法,然後到檢視函式,返回的時候再經過process_response。如果某個中介軟體返回了HttpResponse物件,後麵的就不走了。」
本盯著他,眉頭微微皺了起來。
「你剛才說的那些,」他頓了頓,「是從哪看的?」
「Flask原始碼。」陳哲說,「Django檔案。」
本沉默了幾秒,然後端起咖啡喝了一口。
喝的時候,他嗆了一下。
他把杯子放下,咳了兩聲,然後看著陳哲,眼神有點複雜。
「Flask原始碼?」他重複了一遍,「你把Flask原始碼讀了?」
陳哲點點頭。
本又沉默了幾秒,他往後靠在椅背上,盯著陳哲看了很久。
心中幾乎在震顫。
這傢夥的水平,絕對不止當時看起來那麼簡單!
本端起咖啡又喝了一口,這一次喝得很慢。
他看著陳哲在書架前走動,目光落在那道瘦削的背影上,腦子裡卻轉著別的事。
當初在那一次聚會之後,他就關注到了眼前的這個新人,並且通過資訊檢索手段查詢到了對方的社交媒體帳號……
但本發誓,他是有道德的,除了看一眼對方的社交媒體帳號之外,什麼都沒看。
於是本就知道了陳哲是油管的頻道主。
視訊內容不錯倒是不錯,就是有點中規中矩,直到他看到了對方做的比較好的一期視訊。
第六期那個檔案操作,他看了十分鐘,關掉,又開啟,又看了一遍。
講得太清楚了,甚至有點通透,倒也不是那種照著檔案唸的清楚,純粹是是真的自己吃透了,再用最直白的話講出來,那種感覺他太熟悉了,他自己做視訊做了五年,知道這種清楚背後需要多少積累!
這種積累,雖然比當時在聚會上看到陳哲時候對方的能力更強一點,尚且在本的肚量之內。
隻是現在嘛……
現在他坐在自己家裡,看著那個人站在書架前,隨手抽出一本《設計資料密集型應用》,翻了翻,又放回去,動作自然得像是在自己家。
本又喝了一口咖啡。
然後把杯子放下。
「陳。」他開口。
陳哲回過頭。
「你等我一下。」本站起來,往書房走,「我有點東西想給你看看。」
「哦。」陳哲點了點頭。
見到陳哲的行為,本總算鬆了口氣。
他走進書房,把門帶上。
書房的窗戶正對著後街,陽光從窗簾的縫隙裡透進來,照在地板上,一小塊一小塊的金色。本在書桌前坐下,開啟那台蘋果顯示器,手指在鍵盤上敲了幾下,檢索陳哲的資訊。
搜尋。
頁麵載入出來。
他盯著螢幕,愣住了。
名字還在。
照片還在。
簽證狀態還在。
但是其他的一切,例如位置記錄、手機號、郵箱、PayPal帳號、GitHub使用者名稱、關聯社交帳號。
全沒了?
被覆蓋得乾乾淨淨,什麼都不剩。連痕跡都沒有,像是從來不存在過。
本盯著螢幕,手指在鍵盤上懸著,好一會兒沒動。
他又搜了一遍。
還是一樣。
就連深層源檔案都被覆蓋了,可以說這種非官方的查詢方法,根本奈何不了陳哲!
他往後退了一步,靠在椅背上,盯著天花板。
天花板是白色的,有一道細細的裂縫,從牆角一直延伸到窗戶邊。
本嚥了口唾沫。
他站起來,走到窗邊,拉開窗簾,往外看了一眼。
後街還是那個樣子,安靜,沒人。
「還好,還好。」
他放下窗簾,走回書桌前,把那個網頁關掉。
本深吸一口氣,推開門,走了出去。
陳哲還站在書架前,手裡拿著另一本書,《UNIX程式設計藝術》,正在翻目錄。
本走過去,在他旁邊站定。
「這本不錯。」他說,聲音故作沉穩,「我當年入行的時候,這本翻了三遍。」
陳哲點點頭,把書放回去。
本看著他,忽然問:「你對係統設計這塊怎麼看?」
陳哲想了想:「還在學。」
「學到哪了?」
「CAP理論,BASE原則,分散式事務的基本模式。兩階段提交、TCC、SAGA,大概知道是什麼,不過沒用過。」
本點點頭,沒多問。
兩個人又聊了幾句有的沒的,YouTube的演演算法,最近的熱門技術,群裡那些人的近況,本發現自己說話的時候,會不自覺地多看陳哲兩眼,像是在確認什麼。
四點半的時候,陳哲站起來。
「我該走了。」
本站起來,送他到門口。
陳哲推開門,回頭看了他一眼。
「謝謝今天的咖啡。」
本點點頭。
「下次再來。」
陳哲走了。
本站在門口,看著那道背影消失在樓梯拐角處,然後關上門,靠在門板上,長長地吐出一口氣。
他走回客廳,在沙發上坐下,盯著那兩杯喝了一半的咖啡,難以言喻的震撼心情在心中蕩漾,發了一會兒呆,心有餘悸,彷彿第一次認識陳哲。
「這樣的人才,怎麼可能找不到工作呢?我真是想多了。」
本嘆了一口氣,緩緩把手裡的推薦信收了起來,目光凝視著陳哲離開的地方。