《情滿四合院:智者》第70章 系統(1)

作者:六州的雲王·19天前

2005年11月。

北京開始冷了。

清華的銀杏葉落了一地,金色的,鋪在路面上,踩上去沙沙響。林智從宿舍到教學樓,再從教學樓到食堂,走的都是同一條路。每天都能看到那兩棵銀杏樹——它們一天比一天禿,但禿得好看,像一幅水墨畫。

課也上了兩個月了。高數快講到積分了,線代講到了特徵值,資料結構講到了樹。周明遠的計算機科學導論每兩週佈置一次大作業——第一次是歐幾里得演算法,第二次是用棧實現表示式求值,第三次是用連結串列做多項式加法。林智每次都交了,每次都是A。周明遠沒在課堂上表揚過他——但在作業後面寫過兩次批註。一次是思路清晰,一次是可以考慮用遞迴重寫。

林智很喜歡這種反饋。不多,但準確。

他這段時間在讀方老師送的那本《計算機程式設計藝術》。

第一卷,第一章,他已經讀完了。第二章開始講資訊結構——陣列、連結串列、棧、佇列、樹、圖。克努特用一種很慢很細的方式講——不是告訴你連結串列是什麼,而是先講記憶體模型,講地址,講指標,然後才說把資料和地址放在一起,就是連結串列。

林智發現,這種講法跟周明遠的課很像——先講為什麼,再講是什麼。

但書是書,課是課。書是你一個人的事。課是一群人的事。

他喜歡一個人。

十一月的某個週四的下午,他去了機房。

清華計算機系的機房在FIT樓三樓。大二以上的學生才能申請使用,但周明遠給了他一臨時許可權——你可以在課後使用,但不能影響正常教學。

林智坐在靠窗的那臺機器前面。開機,等了一會兒——Windows 2000的介面跳出來。他打開了一個文字編輯器,開始寫程式碼。

他在寫一個小型資料庫管理系統。

不是給古橋用的那種——那種太簡單了,只是一堆文字記錄加一個索引。他想要的是真正的資料庫——有資料定義語言,有查詢語言,有儲存引擎。

他在紙上先畫了一個架構圖。

最底層是儲存層——資料存在檔案裡,用B+樹做索引。中間是邏輯層——處理SQL語句,解析,最佳化,執行。最上面是介面層——給程式設計師用的API。

他畫完這張圖,看了很久。

一個大型資料庫系統——比如Oracle、DB2——有幾百人開發了好幾年。他一個人,一臺電腦,能用多久?

他想了想。

沒想出來。但至少——先把B+樹寫出來。

他開始寫。

B+樹。平衡的多路搜尋樹。所有資料都存在葉子節點上。內部節點只存索引。

他寫過紅黑樹——在宿舍看張銳寫的時候,自己也跟著寫了一遍,寫了兩天,跑通了。但B+樹不一樣——它是為磁碟儲存設計的,一個節點可以有很多子節點,樹的高度很低,查詢很快。紅黑樹是二叉樹——每個節點最多兩個子節點。B+樹是多路樹——每個節點可以有幾十個甚至上百個子節點。

他翻開那本演算法導論,翻到第十八章——。看了十五分鐘,把B樹的定義、查詢、插入、刪除的核心邏輯理了一遍。

然後他合上書,開始寫。

先定義節點結構——class BPlusTreeNode。每個節點需要存什麼?一組key,一組子節點指標。葉子節點還要多存一組value。非葉子節點不存value,只做路由。

他寫好了節點類,再寫樹本身——class BPlusTree。屬性很簡單:根節點指標,階數。

。了完寫就行十,單簡輯邏。子葉到走,走下往路一,點節子的適合到找,始開從。)yek(hcraes——尋搜是後然

。裂分——了滿子葉果如。回返接直——滿沒子葉果如。去進放料資把,子葉的要到找。)eulav ,yek(tresni——是後然

。了上裂分在卡他

。層一高長樹——了滿也果如。裂分上往續繼——了滿也點節父果如。點節父給去上提yek的間中把,子葉個兩拆它把,了滿子葉個一:的樣這是輯邏的裂分

。對才次三第。yek移是點節部,yek製複要裂分的子葉,樣一不輯邏裂分的們它——別區的裂分點節部和點節子葉了混搞次二第。個一了多yek的去上提——了錯搞件條界邊的裂分把次一第。對寫才遍三了寫他

。了半點五——間時看了看,完寫輯邏裂分把他

。了好搭架框但。完寫沒。行百兩概大了寫——幕螢看了看他

。來起站,裡包書進放,掉拔——種那的他給師老方——上盤到存碼式程把他

。面路在落影樹,上枝樹的禿禿在照,了亮燈路的外窗。早得黑天,月一十。了人麼什沒經已裡廊走

。館夫逸到走他

。字的麻麻著印面上,的4A是都紙——料資的來出印打堆一是前面,置位的窗靠在坐。在念蘇

。問智林?麼什寫在

。設畢

?題選麼什

。種那的失消。同胡京北

。了黃發經已紙報,的年2002,道報聞新的遷拆欄柵大於關篇一是面上。看了看紙張一起拿,來下坐智林

?的找哪從你

。份百兩——概大了翻我。說念蘇。庫紙報的館書圖

?份百兩

。的事件這寫麼怎是,看看想我。道報的遷拆同胡京北於關——年5002到年8991從。嗯

。了多累樹+B寫他比。看地份一份一,翻地份一份一——紙報份百兩。服佩點有智林

?了麼什到找你

失消在正憶記的京北老——了音聲的評批有始開——後以年3002到再。去離捨不民居老天一後最的裡衕衚——了懷關文人有始開,後以年0002了到。行進利順作工遷搬民居遷拆始開衕衚某某——道報觀客是始開一

。頭起抬念蘇

。化變的度態錄記在是,聞新錄記在是不,說——想在我以所

。想了想智林

?麼什寫設畢你那

。的變再變從麼怎是,年5002到年8991從。變演事敘的中失消同胡京北——寫想我

。著看智林

。好很題選個這

?的真

。的真

。寫續繼,紙頁一了翻。了笑念蘇

。輯邏裂分的樹+B寫續繼,輯編啟開他。用腦電借以可館夫逸——腦電的邊旁進,盤出拿,包書啟開他。擾打沒智林

。腦電臺一和紙印列摞幾著隔,著坐面對面,人個兩們他。著開還館夫逸但,了門關房機

。紙報翻在念蘇

。碼式程寫在智林

。晃了晃子影,吹一風,上面路在落影樹,著亮燈路外窗。輕很聲步腳,過走邊旁從人有爾偶

。了著睡,上桌在趴念蘇——眼一了看頭抬,候時的式函裂分完寫智林

。了累是能可。了熱太氣暖是能可。紅點一有——朵耳隻那的來出,來下散髮頭,裡肘手在埋臉把

。十四點十——間時的角下右腦電看了看智林

。醒沒念蘇。去回推子椅把地輕輕,盤了拔,輯編了關他

。上在披,來下套外的己自把他

。著等,來下坐又他後然

。了醒念蘇。點一十

。糊迷點有,來起坐。的智林是——套外的上到看,睛眼下一了

?了點幾

。點一十

?我不麼怎你

。睡在你

?我等在直一你

。了笑後然。他著看念蘇

——是真你

?麼什

。人種那的走會不

。話說沒智林

。你給天明說。還沒也,下樓舍宿了到但。你還再舍宿到,著穿先你說——套外的智林著裹念蘇。冷很上晚,京北的月一十。館夫逸出走起一們他

。好說智林

。著開腦電型記筆,上床在坐——在還銳張。了睡經已遠明陳,候時的舍宿到回他

?了來回

?念蘇跟

?久多了寫房機在你

。館夫逸去後然。半點五到點四從

。頭點了點銳張

?麼什的寫你

。樹+B。庫料資

?樹+B

。的用引索做。嗯

。了繞太分部那裂分。完寫沒但。過寫我——樹+B。想了想銳張

。了完寫

?了通跑

。譯編沒但,了寫碼式程。沒還

。試試天明

?嗎看要你。好

?以可。下一了愣銳張

。機麼什是不。的寫我是正反。以可

。燈檯了開,來下跳上床從銳張

?嗎看能在現

。了半點一十——間時看了看智林

。見房機天明。吧天明

。來下躺智林

。帶條一了畫上板花天在,來進裡的簾窗從——亮很月的天今但。的白是還板花天

。。裂分。樹+B——想在他

。人種那的走會不了說念蘇——想還他

。睛眼上閉他

。訊簡條一了到收智林,上早天二第

。分十五點六,的發念蘇

?拿候時麼什想你。裡這我在套外

。午中:回智林

。麵牛吃你請我。見園濤聽午中那

。漱洗,床起,來起收機手把智林

。碼式程的行一行一是上幕螢,著開腦電型記筆,上床在坐——了來起經已銳張

?麼什寫在你

。的寫麼怎你看看想。分部那裂分白明想沒,上晚一了想我。說銳張。樹+B的說上晚天昨你

。看你給我。見房機午中

。上早的華清的通普個一是又

。著晃裡風在,子葉片幾下剩只。了禿快經已們它現發——候時的樹杏銀棵兩那到看,上路的堂食去在他但

。了來快天冬

。冷得覺不他但

。午中

。齊齊整整得疊,了過洗——上子椅的邊旁在放好摺套外把。置位的窗靠,了在經已念蘇。園濤聽

?了洗你

。說念蘇。下一了穿天昨。嗯

。氣熱著冒,碗兩——了來上端經已麵牛。來下坐智林

。問念蘇?了碼式程寫又去回上晚天昨你

。兒會一了聊友室跟。了寫沒

?麼什聊

猜你喜歡

同題材或同分類的其他作品。