程序員的自我修養(yǎng)

出版時(shí)間:2009-4  出版社:電子工業(yè)出版社  作者:俞甲子,石凡,潘愛(ài)民  頁(yè)數(shù):459  
Tag標(biāo)簽:無(wú)  

前言

作者序1兩年前,甲子跟我提起,他在考慮寫(xiě)一本講述計(jì)算機(jī)程序基本工作原理的書(shū),由于代碼背后的許多細(xì)節(jié)現(xiàn)在難以找到完整而又實(shí)用的資料,因此,系統(tǒng)性地講述這些技術(shù)要素一定非常有意義。這是我非常感興趣的話(huà)題,因?yàn)樽罱鼛啄陙?lái),我每次給學(xué)生講課或作技術(shù)報(bào)告時(shí),經(jīng)常會(huì)提到程序背后的一些細(xì)節(jié)知識(shí),而當(dāng)有人請(qǐng)我推薦一些參考資料時(shí),我很難想得出有什么恰當(dāng)?shù)膮⒖紩?shū)可供學(xué)習(xí)。我自己也曾想過(guò)要寫(xiě)一點(diǎn)這方面的書(shū),只是一直下不了決心做這件事情。甲子的提議讓我意識(shí)到,寫(xiě)這樣一本書(shū)的機(jī)會(huì)來(lái)了。于是,我們認(rèn)真規(guī)劃了書(shū)的選題。按我的建議,這應(yīng)該是三卷本的書(shū),每卷獨(dú)立,合起來(lái)成一體系。第一卷是基礎(chǔ)篇,介紹程序的基本運(yùn)行過(guò)程,即是您現(xiàn)在看到的這本書(shū)。其他兩卷還需要時(shí)日和機(jī)緣。在過(guò)去兩年中,我曾經(jīng)以“Inside Windows Programs”為題在多所高校作過(guò)報(bào)告,旨在介紹Windows程序背后的一些支撐技術(shù)。對(duì)于正在學(xué)習(xí)計(jì)算機(jī)或軟件專(zhuān)業(yè)的學(xué)生,或者正在從事軟件開(kāi)發(fā)的工程師們,我認(rèn)為理解這些支撐技術(shù)是很有必要的。試想,即使一個(gè)簡(jiǎn)單的“Hello World!”程序,也依賴(lài)于背后的輸入輸出庫(kù)(或流庫(kù))及系統(tǒng)提供的模塊,這種依賴(lài)性已經(jīng)成為現(xiàn)代軟件在操作系統(tǒng)環(huán)境下運(yùn)行的一個(gè)必要條件。然而,有關(guān)這些支撐技術(shù)的系統(tǒng)性資料卻少而又少,雖然Internet上并不缺乏任何一方面的細(xì)節(jié)信息,但是,能將程序的編譯和運(yùn)行過(guò)程所涉及的各種技術(shù)全面地串連起來(lái)介紹的,卻尚未有先例。甲子曾經(jīng)在2006年夏天跟我實(shí)習(xí)過(guò)兩個(gè)月,他幫我搭建了一個(gè)在Windows已有體系結(jié)構(gòu)下將交換空間重定向到遠(yuǎn)程機(jī)器物理內(nèi)存的原型系統(tǒng)。完成這一系統(tǒng)并非易事,而且甲子事前并無(wú)Windows內(nèi)核編程經(jīng)驗(yàn),但是,他憑借扎實(shí)的計(jì)算機(jī)系統(tǒng)軟件功底,成功地打通了從頁(yè)面錯(cuò)誤(page fault)異常例程到遠(yuǎn)程機(jī)器內(nèi)存管理器之間的數(shù)據(jù)通路。在這一段實(shí)習(xí)經(jīng)歷中,我不僅看到了他駕馭代碼和系統(tǒng)的能力,也感受到他做事認(rèn)真負(fù)責(zé)的態(tài)度。因此,當(dāng)他提出要寫(xiě)一本介紹程序基礎(chǔ)的書(shū)時(shí),我認(rèn)為他是非常合適的人選。考慮到寫(xiě)書(shū)的艱巨性,他推薦石凡同學(xué)加入進(jìn)來(lái),這才有了我們?nèi)齻€(gè)人的組合。我原先擔(dān)心寫(xiě)作的進(jìn)度,畢竟寫(xiě)這樣一本書(shū)需要大量的時(shí)間投入。幸運(yùn)的是,在甲子和石凡的不懈努力下,這本書(shū)終于面市了。本書(shū)講解的內(nèi)容,涉及在Windows和Linux兩個(gè)系統(tǒng)平臺(tái)上,一個(gè)應(yīng)用程序在編譯、鏈接和運(yùn)行時(shí)刻所發(fā)生的各種事項(xiàng),包括:代碼指令是如何保存的,庫(kù)文件如何與應(yīng)用程序代碼靜態(tài)鏈接,應(yīng)用程序如何被裝載到內(nèi)存中并開(kāi)始運(yùn)行,動(dòng)態(tài)鏈接如何實(shí)現(xiàn),C/C++運(yùn)行庫(kù)如何工作,以及操作系統(tǒng)提供的系統(tǒng)服務(wù)是如何被調(diào)用的。每個(gè)技術(shù)專(zhuān)題都配備了大量圖示和代碼實(shí)例,力求將復(fù)雜的機(jī)制以簡(jiǎn)潔的形式表達(dá)出來(lái)。本書(shū)最后還提供了一個(gè)小巧且跨平臺(tái)的C/C++運(yùn)行庫(kù)MiniCRT,綜合展示了與運(yùn)行庫(kù)相關(guān)的各種技術(shù)。關(guān)于寫(xiě)作這本書(shū)的功勞,我不敢掠美。在創(chuàng)作之初,包括擬定提綱及甄選內(nèi)容方面,我跟甲子有過(guò)認(rèn)真而細(xì)致的討論;在寫(xiě)作過(guò)程中,我對(duì)甲子和石凡的初稿提出過(guò)一些建議,尤其在表述方面,同時(shí)我也協(xié)助他們與編輯進(jìn)行了溝通和交流。對(duì)于正文的內(nèi)容,我并無(wú)實(shí)質(zhì)性的貢獻(xiàn),但基于我對(duì)甲子和石凡兩位年輕人的了解,我相信他們自身的技術(shù)實(shí)踐功底,以及足夠的技術(shù)闡釋能力。我期待這本書(shū)能夠真正地提升程序員的自我修養(yǎng),讓程序員總是生活在“知其然,更知其所以然”的代碼曼妙中。最后,我要感謝這本書(shū)的四位編輯,他們是何艷、方舟、劉鐵鋒和陳元玉,謝謝他們?yōu)檫@本書(shū)付出的努力。還要感謝博文視點(diǎn)團(tuán)隊(duì)的負(fù)責(zé)人周筠女士,謝謝她給予兩位年輕作者的扶持和關(guān)愛(ài)。潘愛(ài)民2009年2月于北京微軟七、作者序2兩年前,我在浙江大學(xué)的一著名BBS的C++板塊上擔(dān)任版主,而俞甲子則是板上的資深版友(以及前版主)。那時(shí)候我對(duì)鏈接裝載、運(yùn)行庫(kù)等內(nèi)容比較感興趣,自己摸索著在博客上寫(xiě)了一篇關(guān)于鏈接的入門(mén)文章,而這就是一切的開(kāi)始。我猜想俞甲子可能對(duì)寫(xiě)這么一本書(shū)早有想法,看到我的文章正好找到了同路人。他找到了我和潘愛(ài)民老師,我們一拍即合,就開(kāi)始了這長(zhǎng)達(dá)兩年的寫(xiě)作歷程??紤]到當(dāng)時(shí)俞甲子已經(jīng)在鏈接部分有了相當(dāng)?shù)姆e累,因此我不得不放棄我最有興趣的一部分轉(zhuǎn)而在運(yùn)行環(huán)境上做文章。我把glibc和msvcrt的源代碼翻了個(gè)底朝天,了解到了許多平時(shí)不可能接觸到的內(nèi)幕和技術(shù)細(xì)節(jié)。事實(shí)上,這基本是一個(gè)現(xiàn)學(xué)現(xiàn)賣(mài)的過(guò)程,我一邊學(xué)習(xí)著新的知識(shí),一邊把新知識(shí)組織整理寫(xiě)成文字。讀者在看某些章節(jié)的時(shí)候,會(huì)發(fā)現(xiàn)這些章節(jié)的講解過(guò)程就是一個(gè)源代碼的挖掘過(guò)程,這實(shí)際上也就是我的學(xué)習(xí)過(guò)程。學(xué)習(xí)研究他人的代碼是枯燥而耗時(shí)的,我很高興能夠做這樣一個(gè)先行者,將我的經(jīng)驗(yàn)寫(xiě)進(jìn)書(shū)里,讓讀者能夠避免重復(fù)勞動(dòng),直接獲得其中的經(jīng)驗(yàn)和關(guān)鍵技術(shù)。本書(shū)所講的內(nèi)容不是活躍在當(dāng)今IT舞臺(tái)上的高新技術(shù),也不是雄踞計(jì)算機(jī)某個(gè)領(lǐng)域的王牌霸主,而是默默服務(wù)于所有計(jì)算機(jī)應(yīng)用的掃地僧。也許閱讀本書(shū)不能夠直接在平時(shí)學(xué)習(xí)工作中的生產(chǎn)力上得到體現(xiàn),但了解計(jì)算機(jī)的臺(tái)前幕后會(huì)對(duì)讀者產(chǎn)生潛移默化的影響。當(dāng)你的程序無(wú)法啟動(dòng)的時(shí)候,你可能會(huì)在腦海里多設(shè)想一種可能性;當(dāng)你的代碼鏈接失敗的時(shí)候,你可能會(huì)更快地意識(shí)到問(wèn)題的所在;當(dāng)你的程序發(fā)生非法操作的時(shí)候,你可能不至于面對(duì)微軟的錯(cuò)誤報(bào)告毫無(wú)頭緒。有人總愛(ài)用“時(shí)效性”評(píng)價(jià)當(dāng)今的IT技術(shù)。仿佛一項(xiàng)技術(shù)的生存期就只有幾年。我不能說(shuō)這樣的想法是錯(cuò)誤的,如今的技術(shù)的確在飛速地更替和發(fā)展。但是本書(shū)所講的技術(shù),大多是成型在十年前,乃至二十年前,它們是整個(gè)計(jì)算機(jī)行業(yè)技術(shù)的根本,也幾乎是現(xiàn)在所有計(jì)算機(jī)應(yīng)用的基礎(chǔ)。在當(dāng)今的計(jì)算機(jī)技術(shù)發(fā)生根本性變革之前,這些技術(shù)還將繼續(xù)存在并保持活力。我很榮幸能夠有機(jī)會(huì)和讀者分享這些技術(shù),但寫(xiě)作水平有限(我在語(yǔ)文課上歷來(lái)不是個(gè)好學(xué)生),最終在文字和結(jié)構(gòu)上頗有缺憾,只能在這里說(shuō)一聲抱歉。在這里要感謝我小學(xué)、初中和高中的語(yǔ)文老師,謝謝你們當(dāng)初對(duì)我的教導(dǎo),盡管最終可能辜負(fù)了你們的希望。感謝潘老師、博文視點(diǎn)的編輯及所有支持我們的朋友們,謝謝你們對(duì)我們的幫助。最后要感謝我的父母,沒(méi)有你們,我永遠(yuǎn)不可能走到今天這一步。石凡2009年2月于杭州八、作者序3CPU體系結(jié)構(gòu)、匯編、C語(yǔ)言(包括C++)和操作系統(tǒng),永遠(yuǎn)都是編程大師們的護(hù)身法寶,就如同少林寺的《易筋經(jīng)》,是最為上乘的武功;學(xué)會(huì)了《易筋經(jīng)》,你將無(wú)所不能,任你創(chuàng)造武功;學(xué)會(huì)了編程“易筋經(jīng)”,大師們可以任意開(kāi)發(fā)操作系統(tǒng)、編譯器,甚至是開(kāi)發(fā)一種新的程序設(shè)計(jì)語(yǔ)言!——佚名念書(shū)的時(shí)候,作為標(biāo)準(zhǔn)的愛(ài)好技術(shù)的宅男,每天掃一遍各大高校BBS的技術(shù)版面,基本好比一日三餐一樣平常。我對(duì)計(jì)算機(jī)技術(shù)方面的口味很雜,從匯編版到C++到Linux內(nèi)核開(kāi)發(fā)、Linux應(yīng)用開(kāi)發(fā)、游戲開(kāi)發(fā)、網(wǎng)絡(luò)、編程語(yǔ)言、體系結(jié)構(gòu)、移動(dòng)開(kāi)發(fā)、開(kāi)源閉源我都會(huì)參上一腳。我始終認(rèn)為技術(shù)優(yōu)劣取決于需求,與很多持有“編程語(yǔ)言血統(tǒng)論”的程序開(kāi)發(fā)者不同,我不認(rèn)為C++或Java本身有什么直接可比性,或者OOP與函數(shù)式編程誰(shuí)優(yōu)誰(shuí)劣,我始終堅(jiān)持認(rèn)為作為開(kāi)發(fā)者,MOP(Market/Money Oriented Programming)才是唯一不變的編程范式。于是我往往不參與那些技術(shù)、平臺(tái)、語(yǔ)言教派之間的宗教戰(zhàn)爭(zhēng),這種論戰(zhàn)基本上每周都會(huì)有,我很佩服論戰(zhàn)各方見(jiàn)多識(shí)廣、旁征博引、高屋建瓴的論斷,但我往往只是灌灌水調(diào)節(jié)一下思緒。相反,我很關(guān)注一些與語(yǔ)言、平臺(tái)等相對(duì)獨(dú)立的基本的系統(tǒng)概念方面的問(wèn)題,這些問(wèn)題比較具體,也比較實(shí)用,比如:為什么程序是從main開(kāi)始執(zhí)行?“malloc分配的空間是連續(xù)的嗎?”“PE/ELF文件里面存的是什么?”“我想寫(xiě)一個(gè)不需要操作系統(tǒng)可以直接在硬件上跑的程序該怎么做?”“目標(biāo)文件是什么?鏈接又是什么?”“為什么這段程序鏈接時(shí)報(bào)錯(cuò)?”“句柄到底是什么東西?”這些問(wèn)題看似很簡(jiǎn)單但實(shí)際上有很多值得深入挖掘的地方,比如第一個(gè)問(wèn)題圍繞著main函數(shù)執(zhí)行前后可以延伸出一大堆問(wèn)題:程序入口、運(yùn)行庫(kù)初始化、全局/靜態(tài)對(duì)象構(gòu)造析構(gòu)、靜態(tài)和動(dòng)態(tài)鏈接時(shí)程序的初始化和裝載等。我們把這些問(wèn)題歸結(jié)起來(lái),發(fā)現(xiàn)主要是三個(gè)很大的而且連貫的主題,那就是“鏈接、裝載和庫(kù)”。事實(shí)上,現(xiàn)在市面上和網(wǎng)絡(luò)上能找到的計(jì)算機(jī)技術(shù)方面的書(shū)籍和資料中,什么都很齊全,唯獨(dú)關(guān)于這三個(gè)主題的討論十分稀缺,即使能找到一些也是猶如殘缺的典籍,不僅不完整而且很多已經(jīng)過(guò)時(shí)了。關(guān)于現(xiàn)在通用的Windows和Linux平臺(tái)的鏈接、裝載及PE/ELF文件的詳細(xì)分析,實(shí)在很少見(jiàn)。這個(gè)領(lǐng)域中,最為完整、也最為權(quán)威的莫過(guò)于John R. Levine的《Linkers & Loaders》,這本書(shū)我也前前后后通讀了好幾遍,雖然它對(duì)鏈接和裝載方面的描述較為完整,但是過(guò)于理論化,對(duì)于實(shí)際的系統(tǒng)機(jī)制描述則過(guò)于簡(jiǎn)略。我始終認(rèn)為對(duì)于一個(gè)問(wèn)題比較好的描述方式,是由一個(gè)很小很簡(jiǎn)單的問(wèn)題或示例入手,層層剝開(kāi)深入挖掘,不僅探究每個(gè)機(jī)制“怎么做”,而且要理解它們“為什么這樣做”,力求深入淺出、圖文并茂,盡力把每一步細(xì)節(jié)都呈現(xiàn)給讀者。這是我一貫的想法,也是我們?cè)诒緯?shū)中努力試圖達(dá)到的效果。第一次有想寫(xiě)這樣一本書(shū)的念頭是在2006年底,當(dāng)時(shí)我正在念研一,想起未來(lái)還有一年多漫長(zhǎng)而又相對(duì)空閑的研究生生涯,覺(jué)得寫(xiě)一本這樣的書(shū)大概是比較好的“消遣活動(dòng)”。于是我第一時(shí)間想到了在微軟研究院實(shí)習(xí)時(shí)的導(dǎo)師潘愛(ài)民老師,潘老師在寫(xiě)作技術(shù)書(shū)籍方面有很深的功底和豐富的經(jīng)驗(yàn)。我把想法告訴潘老師以后,他十分支持,于是我又找到了當(dāng)時(shí)剛好保送研究生、時(shí)間上也相對(duì)充裕的石凡,我們?nèi)齻€(gè)都對(duì)這個(gè)選題十分感興趣,可謂一拍即合。當(dāng)時(shí)也沒(méi)多想,以為寫(xiě)書(shū)大概也就跟BBS發(fā)帖連載差不多吧。一旦寫(xiě)起來(lái)才發(fā)現(xiàn)自己完全輕視了寫(xiě)書(shū)的工作量。書(shū)中的每一個(gè)章節(jié)、每一個(gè)小段、每一個(gè)例子甚至每一個(gè)用詞有時(shí)候都要斟酌很久,生怕用得不恰當(dāng)誤導(dǎo)了讀者。“誤人子弟”這四個(gè)字罪名可不輕,大有推出午門(mén)斬首五遍以儆效尤之過(guò)。寫(xiě)書(shū)的時(shí)間的確很倉(cāng)促,雖然我們都是在讀研時(shí)寫(xiě)的,按理說(shuō)相對(duì)于已經(jīng)工作的作者來(lái)講,已經(jīng)是有很多閑余的時(shí)間了,但還是經(jīng)常手忙腳亂。想到以前看書(shū)看到作者寫(xiě)的序里,經(jīng)常使用“時(shí)間倉(cāng)促,水平有限”的話(huà),推想作者不過(guò)是出于謙虛不免要客套一下?,F(xiàn)在輪到自己寫(xiě)序了,終于感覺(jué)到了這八個(gè)字的分量。即使到現(xiàn)在已近完稿,我們還是心里十分忐忑,因?yàn)檫€有不少地方的確寫(xiě)得不夠完善。也聽(tīng)到了很多第一批讀者的反饋意見(jiàn),很多建議都正中這本書(shū)的軟肋,我們也根據(jù)大家的意見(jiàn)又一次進(jìn)行了修改,這已經(jīng)是反反復(fù)復(fù)的第N次修訂了。這本書(shū)前前后后花了兩年多的時(shí)間一直沒(méi)有完稿,由于截稿時(shí)間快到了,我們才終于定稿,因?yàn)閷?shí)在沒(méi)有辦法做到完美,只能向無(wú)限接近完美努力。最后,我們?cè)凇爸焙汀熬幹敝g猶豫了很久,想到本書(shū)凝聚了我們很多的心血,還是誠(chéng)惶誠(chéng)恐地寫(xiě)上了“著”字,權(quán)當(dāng)給自己壯膽了。我們也相信,本書(shū)雖然沒(méi)做到完美,但是它一定會(huì)給你帶來(lái)一些你以前想看、想了解而又找不到的東西?;蛘咭郧霸诰幊踢^(guò)程中困惑了你很久,但始終沒(méi)有找到解釋的問(wèn)題,當(dāng)在本書(shū)中終于找到答案且大呼“原來(lái)如此!”時(shí),我們也就很欣慰了!關(guān)于本書(shū)的書(shū)名筆者們也討論了很久,征詢(xún)過(guò)很多意見(jiàn),最終還是決定用“程序員的自我修養(yǎng)”作為書(shū)名,將“鏈接、裝載與庫(kù)”作為副標(biāo)題。書(shū)名源自于俄羅斯的演員斯坦尼斯拉夫斯基創(chuàng)作的《演員的自我修養(yǎng)》,作者為了寫(xiě)這本書(shū)前前后后修改了三十年之久,臨終前才同意不再修改,拿去出版。使用這個(gè)書(shū)名一方面是本書(shū)的內(nèi)容的確不是介紹一門(mén)新的編程語(yǔ)言或展示一些實(shí)用的編程技術(shù),而是介紹程序運(yùn)行背后的機(jī)制和由來(lái),可以看作是程序員的一種“修養(yǎng)”;另一方面是向斯坦尼斯拉夫斯基致敬,向他對(duì)作品精益求精的精神致敬。在本書(shū)的創(chuàng)作過(guò)程中,很多人對(duì)我們的支持和幫助難以言表。這里我要感謝博文視點(diǎn)的幾位編輯何艷、方舟、劉鐵鋒和陳元玉等,他們?yōu)楸緯?shū)付出了很多心血;特別要感謝博文視點(diǎn)的周筠老師,這本書(shū)能夠面世離不開(kāi)她的支持和努力。另外也要感謝浙江大學(xué)的張曉龍博士,他為本書(shū)提出了很多建議,并且貢獻(xiàn)了“DLL HELL”一節(jié)。俞甲子2009年2月于杭州

內(nèi)容概要

本書(shū)主要介紹系統(tǒng)軟件的運(yùn)行機(jī)制和原理,涉及在Windows和Linux兩個(gè)系統(tǒng)平臺(tái)上,一個(gè)應(yīng)用程序在編譯、鏈接和運(yùn)行時(shí)刻所發(fā)生的各種事項(xiàng),包括:代碼指令是如何保存的,庫(kù)文件如何與應(yīng)用程序代碼靜態(tài)鏈接,應(yīng)用程序如何被裝載到內(nèi)存中并開(kāi)始運(yùn)行,動(dòng)態(tài)鏈接如何實(shí)現(xiàn),C/C++運(yùn)行庫(kù)的工作原理,以及操作系統(tǒng)提供的系統(tǒng)服務(wù)是如何被調(diào)用的。每個(gè)技術(shù)專(zhuān)題都配備了大量圖、表和代碼實(shí)例,力求將復(fù)雜的機(jī)制以簡(jiǎn)潔的形式表達(dá)出來(lái)。本書(shū)最后還提供了一個(gè)小巧且跨平臺(tái)的C/C++運(yùn)行庫(kù)MiniCRT,綜合展示了與運(yùn)行庫(kù)相關(guān)的各種技術(shù)。  本書(shū)對(duì)裝載、鏈接和庫(kù)進(jìn)行了深入淺出的剖析,并且輔以大量的例子和圖表,可以作為計(jì)算機(jī)軟件專(zhuān)業(yè)和其他相關(guān)專(zhuān)業(yè)大學(xué)本科高年級(jí)學(xué)生深入學(xué)習(xí)系統(tǒng)軟件的參考書(shū)。同時(shí),還可作為各行業(yè)從事軟件開(kāi)發(fā)的工程師、研究人員以及其他對(duì)系統(tǒng)軟件實(shí)現(xiàn)機(jī)制和技術(shù)感興趣者的自學(xué)教材。

書(shū)籍目錄

第1部分 簡(jiǎn)介   第1章 溫故而知新   1.1 從HELLO WORLD 說(shuō)起    1.2 萬(wàn)變不離其宗   1.3 站得高,望得遠(yuǎn)     1.4 操作系統(tǒng)做什么   1.5 內(nèi)存不夠怎么辦   1.6 眾人拾柴火焰高   1.7 本章小結(jié) 第2部分 靜態(tài)鏈接  第2章 編譯和鏈接   2.1 被隱藏了的過(guò)程   2.2 編譯器做了什么   2.3 鏈接器年齡比編譯器長(zhǎng)   2.4 模塊拼裝——靜態(tài)鏈接   2.5 本章小結(jié)  第3章 目標(biāo)文件里有什么    3.1 目標(biāo)文件的格式   3.2 目標(biāo)文件是什么樣的   3.3 挖掘SIMPLESECTION.O    3.4 ELF 文件結(jié)構(gòu)描述  3.5 鏈接的接口——符號(hào)    3.6 調(diào)試信息   3.7 本章小結(jié)  第4章 靜態(tài)鏈接    4.1 空間與地址分配   4.2 符號(hào)解析與重定位   4.3 COMMON 塊   4.4 C++相關(guān)問(wèn)題    4.5 靜態(tài)庫(kù)鏈接   4.6 鏈接過(guò)程控制   4.7 BFD 庫(kù)   4.8 本章小結(jié)  第5章 WINDOWS PE/COFF    5.1 WINDOWS 的二進(jìn)制文件格式PE/COFF  134   5.2 PE 的前身——COFF    5.3 鏈接指示信息    5.4 調(diào)試信息    5.5 大家都有符號(hào)表    5.6 WINDOWS 下的ELF——PE    5.7 本章小結(jié)  第3部分 裝載與動(dòng)態(tài)鏈接   第6章 可執(zhí)行文件的裝載與進(jìn)程    6.1 進(jìn)程虛擬地址空間    6.2 裝載的方式    6.3 從操作系統(tǒng)角度看可執(zhí)行文件的裝載    6.4 進(jìn)程虛存空間分布    6.5 LINUX 內(nèi)核裝載ELF 過(guò)程簡(jiǎn)介    6.6 WINDOWS PE 的裝載    6.7 本章小結(jié)   第7章 動(dòng)態(tài)鏈接    7.1 為什么要?jiǎng)討B(tài)鏈接    7.2 簡(jiǎn)單的動(dòng)態(tài)鏈接例子    7.3 地址無(wú)關(guān)代碼    7.4 延遲綁定(PLT)    7.5 動(dòng)態(tài)鏈接相關(guān)結(jié)構(gòu)    7.6 動(dòng)態(tài)鏈接的步驟和實(shí)現(xiàn)    7.7 顯式運(yùn)行時(shí)鏈接    7.8 本章小結(jié)   第8章 LINUX 共享庫(kù)的組織   8.1 共享庫(kù)版本    8.2 符號(hào)版本    8.3 共享庫(kù)系統(tǒng)路徑    8.4 共享庫(kù)查找過(guò)程    8.5 環(huán)境變量    8.6 共享庫(kù)的創(chuàng)建和安裝    8.7 本章小結(jié)   第9章 WINDOWS 下的動(dòng)態(tài)鏈接   9.1 DLL 簡(jiǎn)介    9.2 符號(hào)導(dǎo)出導(dǎo)入表    9.3 DLL 優(yōu)化    9.4 C++與動(dòng)態(tài)鏈接    9.5 DLL HELL    9.6 本章小結(jié)  第4部分 庫(kù)與運(yùn)行庫(kù)   第10章 內(nèi)存    10.1 程序的內(nèi)存布局    10.2 棧與調(diào)用慣例    10.3 堆與內(nèi)存管理    10.4 本章小結(jié)  第11章 運(yùn)行庫(kù)    11.1 入口函數(shù)和程序初始化   11.2 C/C++運(yùn)行庫(kù)    11.3 運(yùn)行庫(kù)與多線(xiàn)程    11.4 C++全局構(gòu)造與析構(gòu)    11.5 FREAD 實(shí)現(xiàn)    11.6 本章小結(jié)   第12章 系統(tǒng)調(diào)用與API  12.1 系統(tǒng)調(diào)用介紹    12.2 系統(tǒng)調(diào)用原理    12.3 WINDOWS API    12.4 本章小結(jié)  第13章 運(yùn)行庫(kù)實(shí)現(xiàn)    13.1 C 語(yǔ)言運(yùn)行庫(kù)    13.2 如何使用MINI CRT    13.3 C++運(yùn)行庫(kù)實(shí)現(xiàn)    13.4 如何使用MINI CRT++    13.5 本章小結(jié)  附錄A   A.1 字節(jié)序(BYTE ORDER)   A.2 ELF 常見(jiàn)段   A.3 常用開(kāi)發(fā)工具命令行參考  索引

章節(jié)摘錄

第1部分 簡(jiǎn)介   第1章 溫故而知新   1.2 萬(wàn)變不離其宗計(jì)算機(jī)是個(gè)非常廣泛的概念,大到占用數(shù)層樓的用于科學(xué)計(jì)算的超級(jí)計(jì)算機(jī),小到手機(jī)上的嵌入式芯片都可以被稱(chēng)為計(jì)算機(jī)。雖然它們的外形、結(jié)構(gòu)和性能都千差萬(wàn)別,但至少它們都有“計(jì)算”這個(gè)概念。在本書(shū)里面,我們將計(jì)算機(jī)的范圍限定在最為流行、使用最廣泛的PC機(jī),更具體地講是采用兼容x86指令集的32位CPU的個(gè)人計(jì)算機(jī)。原因很簡(jiǎn)單:因?yàn)楣P者手上目前只有這種類(lèi)型的計(jì)算機(jī)可供操作和實(shí)驗(yàn),不過(guò)相信90%以上的讀者也是,所以在這一點(diǎn)上我們很快能達(dá)成共識(shí)。其實(shí)選擇具體哪種平臺(tái)并不是最關(guān)鍵的,雖然各種平臺(tái)的軟硬件差別很多,但是本質(zhì)上它們的基本概念和工作原理都是一樣的,只要我們能夠掌握一種平臺(tái)上的技術(shù),那么其他的平臺(tái)都是大同小異的,很輕松地可以舉一反三。所以我們相信,只有你能夠深刻地理解x86平臺(tái)下的系統(tǒng)軟件背后的機(jī)理,當(dāng)有一天你需要在MIPS指令集的嵌入式平臺(tái)上做開(kāi)發(fā),或者需要為64位的Windows或tinux開(kāi)發(fā)應(yīng)用程序的時(shí)候,你很快就能找到它們之間的相通之處。撇開(kāi)計(jì)算機(jī)硬件中紛繁復(fù)雜的各種設(shè)備、芯片及外圍接口等,站在軟件開(kāi)發(fā)者的角度看,我們只須抓住硬件的幾個(gè)關(guān)鍵部件。對(duì)于系統(tǒng)程序開(kāi)發(fā)者來(lái)說(shuō),計(jì)算機(jī)多如牛毛的硬件設(shè)備中,有三個(gè)部件最為關(guān)鍵,它們分別是中央處理器CPU、內(nèi)存和I/O控制芯片,這三個(gè)部件幾乎就是計(jì)算機(jī)的核心了;對(duì)于普通應(yīng)用程序開(kāi)發(fā)者來(lái)說(shuō),他們似乎除了要關(guān)心CPU以外,其他的硬件細(xì)節(jié)基本不用關(guān)心,對(duì)于一些高級(jí)平臺(tái)的開(kāi)發(fā)者來(lái)說(shuō)(如Java、.NET或腳本語(yǔ)言開(kāi)發(fā)者),連CPU都不需要關(guān)心,因?yàn)檫@些平臺(tái)為它們提供了一個(gè)通用的抽象的計(jì)算機(jī),他們只要關(guān)心這個(gè)象的計(jì)算機(jī)就可以了?!  ?/pre>

媒體關(guān)注與評(píng)論

這是一本深人闡述鏈接、裝載和庫(kù)等問(wèn)題的優(yōu)秀圖書(shū),讀來(lái)讓人愉悅,你從巾可以清晰地了解程序的前世今生,徹底理解敲人的代碼如何變成程序任系統(tǒng)中運(yùn)行。通讀本書(shū)不管對(duì)于開(kāi)發(fā)還是trouble shootin9都會(huì)很有幫助。建議每一位希望從事系統(tǒng)開(kāi)發(fā)、或希望更實(shí)務(wù)地理解操作系統(tǒng)和編譯器、或不滿(mǎn)足于只寫(xiě)代碼的優(yōu)秀程序員都擁有這樣一本書(shū)?!         u飛,趨勢(shì)科技(中國(guó))研發(fā)中心資深軟件要程師本書(shū)從大處著眼,小處著手,以通俗易懂的語(yǔ)言,深入淺出地對(duì)系統(tǒng)軟件的底層形成機(jī)制進(jìn)行條分縷析,正合藥山禪師所謂“高高山頂立,深深海底行”。循著作者的思緒一路走來(lái),有如醍醐灌頂。暢快淋漓。非常高興有預(yù)覽此書(shū)初稿的寶貴機(jī)會(huì),我在瀏覽書(shū)稿和查核相關(guān)資料的過(guò)程中,學(xué)到了很多以前未知或知之不深的內(nèi)容?!         T亮,阿里巴巴(中國(guó))網(wǎng)絡(luò)技術(shù)有限公司運(yùn)維部系統(tǒng)架構(gòu)師

編輯推薦

《程序員的自我修養(yǎng):鏈接、裝載與庫(kù)》深入淺出地對(duì)系統(tǒng)軟件的底層形成機(jī)制進(jìn)行條分縷析真正提升程序員的自我修養(yǎng)

圖書(shū)封面

圖書(shū)標(biāo)簽Tags

無(wú)

評(píng)論、評(píng)分、閱讀與下載


    程序員的自我修養(yǎng) PDF格式下載


用戶(hù)評(píng)論 (總計(jì)162條)

 
 

  •   這本書(shū)寫(xiě)得非常好?,F(xiàn)在編程IDE的發(fā)展已經(jīng)屏蔽了程序之所以為可執(zhí)行文件的過(guò)程:編譯、鏈接、裝載。它分析了Unix/Linux和Windows下的不同之處,比如說(shuō)so和dll的不同。我覺(jué)得難能可貴的是,它在書(shū)的最后幾章重點(diǎn)討論了運(yùn)行庫(kù)、系統(tǒng)調(diào)用、包裝API等在Unix/Linux下和在Windows下的原理和原理的不同之處。最后一章還演示了一個(gè)自己實(shí)現(xiàn)的Mini CRT 示例,看了以后覺(jué)得作者功底確實(shí)很深厚,不得不推薦一下這本書(shū)。

    另外,三位作者的語(yǔ)言使用很得當(dāng),解釋枯燥的原理時(shí)經(jīng)常會(huì)有幽默性的語(yǔ)句出現(xiàn),插圖比喻也顯得很生活化。從這點(diǎn)來(lái)看,我能在一個(gè)星期內(nèi)讀完這本書(shū),幾位作者對(duì)文字的駕馭也起到了很大的作用。

    讀完后關(guān)閉書(shū)卷,作者們?yōu)槲移饰龅牟僮飨到y(tǒng)、運(yùn)行庫(kù)、鏈接、裝載、運(yùn)行庫(kù) 等一系列概念如一副副立體畫(huà)一樣,展現(xiàn)在眼前。雖然在大學(xué)的時(shí)候計(jì)算機(jī)類(lèi)教材很枯燥,幸虧工作后能遇到這種好書(shū),為我等程序員們歸納知識(shí)提供了很大的便利。<程序員的自我修養(yǎng)>這個(gè)標(biāo)題名至實(shí)歸。
  •   書(shū)本身解釋的還是不錯(cuò)的,同時(shí)買(mǎi)了《操作系統(tǒng):精髓與設(shè)計(jì)原理》和《程序員的自我修養(yǎng)—鏈接、裝載與庫(kù)》兩本都不錯(cuò),個(gè)人感覺(jué)后一本更好一些。
  •   以最快的速度看完了這本書(shū),對(duì)動(dòng)態(tài)庫(kù)的裝載鏈接原理有了更深的認(rèn)識(shí),尤其是對(duì)在工作中碰到的相關(guān)問(wèn)題處理起來(lái)更加得心應(yīng)手。
  •   將鏈接編譯,運(yùn)行庫(kù),可執(zhí)行文件等基礎(chǔ)講的很清楚,真不錯(cuò)。
  •   C到底怎么運(yùn)行、操作系統(tǒng)如何裝載,這本書(shū)是從操作系統(tǒng)的角度剖析一段代碼如何運(yùn)行,屬于硬基本功,當(dāng)然啃起來(lái)很吃力,但是心里很滿(mǎn)足
  •   是一本學(xué)習(xí)鏈接、裝載和庫(kù)的好書(shū)。值得珍藏
  •   鏈接、裝載與庫(kù)——正是自己想要的,希望看完能有所收獲
  •   這本書(shū)讓我了解了在編譯、鏈接過(guò)程中是怎樣執(zhí)行的,這對(duì)于想深入研究嵌入式是很有幫助的,還有書(shū)中后面關(guān)于庫(kù)的一些我還沒(méi)有去了解,相信會(huì)和前半部分一樣會(huì)有更加深刻的理解的。
  •   一個(gè)程序從代碼一直到運(yùn)行這個(gè)過(guò)程是怎樣的?這本書(shū)里面有很多我想知道的答案,而且深入程度適中,我覺(jué)得這本書(shū)適合大部分想了解不多不少底層運(yùn)作知識(shí)的程序員。
  •   對(duì)于編譯,鏈接和加載,之前只是一知半解,看了這本書(shū)全明白了,由于其中對(duì)于動(dòng)態(tài)庫(kù)&amp;amp;ldquo;全局符號(hào)介入&amp;amp;rdquo;的問(wèn)題,項(xiàng)目上需要注意??!
  •   從操作系統(tǒng)和編譯鏈接角度讓開(kāi)發(fā)人員更理解自己所寫(xiě)的代碼會(huì)發(fā)生哪些變化,如何維護(hù)和編寫(xiě)更高效的代碼,絕對(duì)是本好書(shū),但不適合初學(xué)者。
  •   作者深入剖析了程序的裝載與鏈接的過(guò)程,很有啟發(fā)意義
  •   這本書(shū)對(duì)鏈接、庫(kù)介紹說(shuō)明的比較詳細(xì),我是初學(xué)者,某些地方看起來(lái)還是有點(diǎn)暈,不過(guò)通過(guò)學(xué)習(xí)還是可以理解的
  •   一本深入學(xué)習(xí)鏈接庫(kù)的好書(shū)
  •   工作幾年了卻一直是在做應(yīng)用層系統(tǒng)。每當(dāng)遇到一些底層的問(wèn)題時(shí),總是不得其法。說(shuō)不懂,其實(shí)也了解一些,但也說(shuō)不出所以然。這本書(shū)我還沒(méi)有讀完,目前的理解是:它是一本關(guān)于程序“本質(zhì)”的書(shū)——程序從我們寫(xiě)的高級(jí)語(yǔ)言代碼,到底層的機(jī)器碼,中間的過(guò)程是如何進(jìn)行的。讀完之后相信我會(huì)對(duì)這個(gè)過(guò)程有個(gè)更系統(tǒng)更深入的理解。當(dāng)然它不一定適合所有的人。想我這樣對(duì)于系統(tǒng)底層理解不夠深刻的菜鳥(niǎo),需要結(jié)合看一些操作系統(tǒng)的書(shū),并反復(fù)學(xué)習(xí)??傊畬W(xué)無(wú)止境啊。
  •   操作系統(tǒng)底層的一些東東,對(duì)了解軟件運(yùn)行很有幫助
  •   個(gè)人覺(jué)得真正的程序員是應(yīng)該對(duì)底層底層的東西有必要的了解的,正所謂本書(shū)所強(qiáng)調(diào)的程序員的自我修養(yǎng)。若想了解程序的是怎么加載運(yùn)行的,那么這本書(shū)是你所需要的!強(qiáng)烈推薦!
  •   這本書(shū)關(guān)于程序從編寫(xiě)到運(yùn)行的機(jī)制
  •   書(shū)很好,內(nèi)容很不錯(cuò),不過(guò)一直沒(méi)有時(shí)間看完,在看的過(guò)程中,補(bǔ)了很計(jì)算機(jī)基礎(chǔ)的東西,想深入學(xué)習(xí)下程序運(yùn)行的原理的同學(xué)可以讀一下,收獲挺大的
  •   學(xué)習(xí)編程的人看了會(huì)有很大的幫助。能理解程序運(yùn)行的內(nèi)層原理。
  •   從代碼到16進(jìn)制數(shù),很棒的書(shū)~優(yōu)秀的程序員必須了解自己程序的每個(gè)字符~這就是自我修養(yǎng)
  •   把編譯和運(yùn)行這個(gè)階段的事情,闡述的很清楚,對(duì)提高對(duì)系統(tǒng)的理解、排錯(cuò)能力很有好處。
  •   很少又講連接正在與庫(kù)的書(shū),經(jīng)典
  •   嘿嘿,拿到手中迫不及待的讀完了,受益匪淺,原來(lái)對(duì)連接、庫(kù)等很模糊的概念,讀完書(shū)后清晰了,強(qiáng)烈推薦給大家
  •   國(guó)內(nèi)經(jīng)典的計(jì)算機(jī)書(shū)籍不多,這本可謂是很有深度,尤其是對(duì)于那些喜歡鉆研,喜歡了解底層的家伙來(lái)說(shuō),我閱讀這本書(shū)已經(jīng)是第二遍了,從電子書(shū),到從圖書(shū)館借來(lái)的書(shū),再到自己去買(mǎi)。每次讀都有新的收獲,尤其是邊看代碼,邊讀書(shū)。
  •   深入淺出,對(duì)鏈接、加載有較清晰的講解
  •   可以讓讀者了解代碼如何轉(zhuǎn)換成可執(zhí)行程序的一本好書(shū),易懂,目前看了一半,值得推薦
  •   之前看了別人寫(xiě)的鏈接腳本不懂,所以買(mǎi)來(lái)看看,看了再評(píng)書(shū)的好壞。。。
  •   對(duì)鏈接等原理講述得比較詳細(xì)。
  •   1,很喜歡
    2,原因是這本書(shū)就像是一把鑰匙,打開(kāi)了一扇正確的門(mén),對(duì)于任何想深入了解系統(tǒng)方面知識(shí)的程序員,這本書(shū)絕對(duì)是入門(mén)的好書(shū)
    3,作者得寫(xiě)作態(tài)度非常端正,尊重讀者的作者同樣會(huì)獲得讀者的尊重
  •   我的數(shù)據(jù)庫(kù)老師在課上曾經(jīng)推薦過(guò)這本書(shū),這本書(shū)的作者我也認(rèn)識(shí),現(xiàn)在作者已經(jīng)開(kāi)了公司,干得還不錯(cuò)。最近重讀這本書(shū),感覺(jué)作者對(duì)連接這部分講解的不錯(cuò),但是裝載處理的不是很好,可能和這部分細(xì)節(jié)不多吧
  •   這本書(shū)很不錯(cuò)。是我目前見(jiàn)過(guò)的關(guān)于C編程的比較出色的一本,對(duì)程序的實(shí)現(xiàn)有了很好的講解,有助于對(duì)編程的理解。
  •   寫(xiě)得非常不錯(cuò),的確是一本國(guó)內(nèi)不多見(jiàn)的優(yōu)秀原創(chuàng)書(shū)。大家都抄來(lái)抄去,能有這么一本好書(shū)不容易,我們要愛(ài)護(hù)。我一口氣讀了100多頁(yè),是位年輕的作者。盡管他打著潘愛(ài)民的旗號(hào),但是作者的探索精神,“打破砂鍋紋(問(wèn))到底”的精神,都超過(guò)了潘愛(ài)民。該書(shū)適合各路人士(新手和老手)。非常希望作者能對(duì)這本書(shū)的文字和布局再仔細(xì)錘煉一下,不要趕時(shí)髦,僅保留重要的內(nèi)容,以書(shū)名闡述的“修養(yǎng)”的嚴(yán)謹(jǐn)態(tài)度,剃除原文中那些“博克”習(xí)氣的文字,文字再精煉些,修正一些編輯性錯(cuò)誤。還有,補(bǔ)充書(shū)中各種論點(diǎn)的參考文獻(xiàn)和閱讀書(shū)目,提高可信行。那樣,我覺(jué)得每位學(xué)習(xí)計(jì)算機(jī)專(zhuān)業(yè)的人都該在案頭備這么一本書(shū),這本書(shū)有望成長(zhǎng)為一本該領(lǐng)域的圣經(jīng)。各位,先睹為快!
  •   這本書(shū)不會(huì)讓你的編程水平突飛猛進(jìn), 但是對(duì)底層數(shù)據(jù)模型更加了解的人會(huì)對(duì)代碼更加有發(fā)言權(quán)
  •   對(duì)想了解一些底層技術(shù)和原理實(shí)現(xiàn)的很有幫助,寫(xiě)的也很清晰,易讀,讀后收獲不小,雖然我的電子版的,但還是買(mǎi)一本
  •   難得看到的國(guó)人寫(xiě)的一本計(jì)算機(jī)的好參考書(shū)。這本書(shū)雖然內(nèi)容不多,一兩天可以看完,但是讓我感覺(jué)把很多知識(shí)都復(fù)習(xí)了一遍,頗有神清氣爽的感覺(jué)~

    一個(gè)小細(xì)節(jié)是書(shū)里的示意圖繪圖質(zhì)量都很高,這種細(xì)節(jié)上認(rèn)真的態(tài)度我感覺(jué)很難得——好吧,我只是個(gè)普通讀者,不是特別的什么粉或者什么黑什么的——前段時(shí)間看了《C語(yǔ)言深度解剖--解開(kāi)程序員面試筆試的秘密》,覺(jué)得水平和態(tài)度都比這本書(shū)差不少=,=
  •   這本書(shū)太贊了!??! 內(nèi)容非常 具體深入 是學(xué)習(xí)程序開(kāi)發(fā)的人 值得推薦的
  •   內(nèi)容很豐富,是程序員提高自身編程素質(zhì)的一劑良藥,很實(shí)用,力薦!!!
  •   書(shū)籍以linux講解為主,windows平臺(tái)為鋪??傮w不錯(cuò)。
  •   這本書(shū)真的很好,解釋了我所有的疑惑(--夸張了?)云風(fēng)推薦的我覺(jué)得很值
  •   這本書(shū)是一個(gè)程序員真正需要的東西。不要等到用到的時(shí)候再去看
  •   作為程序員以及IT技術(shù)人員確實(shí)應(yīng)該好好讀一讀
  •   系統(tǒng)的梳理了整個(gè)編譯過(guò)程,把以前零散的知識(shí)點(diǎn)串了起來(lái)
  •   很棒,很精彩,即使不需要精通,了解一下也還是必要到的,適合所有沒(méi)有系統(tǒng)了解過(guò)這方面的人
  •   作者對(duì)系統(tǒng)下層很熟,我學(xué)到了不少東西。很少能看到這樣的好書(shū)。
  •   推薦程序員閱讀,提高自身修養(yǎng)
  •   這是本非常不錯(cuò)的書(shū),看了之后就不會(huì)問(wèn)編譯之類(lèi)的問(wèn)題了,對(duì)程序的執(zhí)行過(guò)程講的非常好,使編程知其然,也知知其所以然
  •   對(duì)于想了解底層一點(diǎn)的東西而基礎(chǔ)又不是很好的人非常適合。力薦!
  •   作為一個(gè)程序員有必要了解一下。
  •   講的原理很多,還有實(shí)例。
  •   看過(guò)電子檔,感覺(jué)太好了,就買(mǎi)下了,很同學(xué)一起買(mǎi)了兩本。學(xué)嵌入式的,尤其是基于linux的,特別有用。
  •   程序員非常經(jīng)典的一本書(shū),不可不讀。程序員以后發(fā)展非常有好處。
  •   很好的一本書(shū),很適合程序員讀
  •   本書(shū)的講解很詳細(xì),又很精練,信息收集得很全面,解惑相當(dāng)?shù)轿弧M扑]購(gòu)買(mǎi),尤其是想了解內(nèi)部原理的編程者?,F(xiàn)在還只看了前面的幾章,就感覺(jué)非常不錯(cuò)。
  •   看了電子版的,再看實(shí)物,比想象中厚很多啊,很給力
  •   涉及到了我們學(xué)習(xí)中的不少困惑之處,很多教科書(shū)都不展開(kāi)闡述的一些內(nèi)容,被作者寫(xiě)的很生動(dòng),便于理解。讀起來(lái)一氣呵成??上Ш蟀氩糠值奈墓P差了一大截,讀起來(lái)有點(diǎn)拗口,并且思維跳躍性太大。估計(jì)是兩個(gè)作者的緣故吧。
  •   知識(shí)點(diǎn)深入剖析,令人豁然開(kāi)朗~
  •   程序員練級(jí)精品。提高內(nèi)功好幫手。
  •   好書(shū)自然要推薦,程序員必看。
  •   書(shū)的質(zhì)量還是很好的,內(nèi)容還沒(méi)怎么看。但是拿在手上沉甸甸的。印刷質(zhì)量很好,對(duì)于C++程序員的一些底層的困惑,解釋的很清楚。期待后續(xù)版
  •   書(shū)保證是正品這是堅(jiān)持一直在當(dāng)當(dāng)買(mǎi)書(shū)的原因,這本書(shū)是同事讓幫忙買(mǎi)的,具體內(nèi)容還沒(méi)看,先給個(gè)物流和當(dāng)當(dāng)?shù)姆?wù)給個(gè)好評(píng)先
  •   這本書(shū)看了好久了,價(jià)格有點(diǎn)高,不錯(cuò)內(nèi)容很不錯(cuò),最后狠心自己買(mǎi)了,以后要認(rèn)真看。
  •   擴(kuò)充知識(shí)面,提高自身修養(yǎng)
  •   修養(yǎng)之途,歷練!
  •   這本書(shū)真的很不錯(cuò),之前是在圖書(shū)館看到的,稍微瀏覽了一下,書(shū)講的很通俗,但是很深入
  •   書(shū)非常好 ,公司工程師看的。
  •   好書(shū),值得深入研究。
  •   絕對(duì)的經(jīng)典啊,了解編譯pe文件等的不二選擇
  •   借別人的看過(guò)一遍,感覺(jué)不錯(cuò),就自己買(mǎi)一本,雙十一,第二天就到了,物流還是很給力的
  •   我認(rèn)識(shí)這本書(shū)的主要作者,
    正如作者的性格一樣,這本書(shū)有扎實(shí)的功底、清晰的思路、睿智又不失風(fēng)趣
    拜讀此書(shū),受益匪淺。
  •   自我修煉的好書(shū)
  •   已買(mǎi)待看再待分享
  •   剛買(mǎi)到書(shū),還沒(méi)來(lái)得及看。稍后再上評(píng)論
  •   很底層的一本書(shū),前輩們推薦,細(xì)細(xì)品嘗中……
  •   對(duì)書(shū)中的很多細(xì)節(jié)還是不理解,學(xué)習(xí)了編程好幾年,從來(lái)沒(méi)想過(guò)底層的方面~~
  •   想買(mǎi)這本書(shū)已經(jīng)很久了,今天終于到了,雖然到的有點(diǎn)晚,催了幾次,但書(shū)確實(shí)是好書(shū)。
  •   這本書(shū)非常好!可以幫助很好理解底層方面的知識(shí)!
  •   之前找別人結(jié)果這本書(shū)看,覺(jué)得相當(dāng)不錯(cuò),所以自己也買(mǎi)一本啊
  •   很不錯(cuò)的一本書(shū),需要慢慢看
  •   如果你想了解底層,那么非常建議您看這本書(shū)
  •   很不錯(cuò)的一本書(shū),買(mǎi)過(guò)了,等著看
  •   非常不錯(cuò)的一本書(shū),還沒(méi)看,不過(guò)已經(jīng)是經(jīng)典了。
  •   很好的一本書(shū),值得慢慢品味!
  •   是本好書(shū),目前國(guó)內(nèi)書(shū)市上也就這本書(shū)可以了
  •   看到這本書(shū)居然是本科生寫(xiě)的,確實(shí)有點(diǎn)震驚,不過(guò)書(shū)確實(shí)寫(xiě)的不錯(cuò)
  •   以前陸陸續(xù)續(xù)看了很多書(shū),這本書(shū)能將看過(guò)的聯(lián)系到一起來(lái)
    作者很清楚初學(xué)者所缺乏的知識(shí)點(diǎn),比較推薦功底還不是很深的人細(xì)看,如果搭配其他的書(shū)就更牛了
  •   這本書(shū)在網(wǎng)上初看了一下,挺好的,值得珍藏!
  •   發(fā)貨挺快,物流也挺好的。書(shū)是朋友推薦的,很好的一本書(shū)~
  •   對(duì)于日常編程可能沒(méi)注意或來(lái)不及思考的問(wèn)題,這本書(shū)可能會(huì)讓你思考得更遠(yuǎn)。
  •   當(dāng)我拿起這本書(shū)的時(shí)候,有一種莫名的激動(dòng)
  •   這本書(shū)不錯(cuò),講得比較低層
  •   沒(méi)想到是學(xué)生寫(xiě)的。。真的不容易。。非常的好。。。鼓勵(lì)鼓勵(lì)。。
  •   非常好看的書(shū),研究底層知識(shí)的人值得一看。
  •   感覺(jué)很不錯(cuò),值得學(xué)習(xí)參悟
  •   非?;A(chǔ)的書(shū),從底層學(xué)習(xí)
  •   國(guó)人寫(xiě)的書(shū),很少有我覺(jué)得不錯(cuò)的!這書(shū)確實(shí)不錯(cuò),值得學(xué)習(xí)和推薦??!
  •   書(shū)內(nèi)容很新,書(shū)很好,適合想學(xué)習(xí)的
  •   書(shū)很好,得好好看
  •   書(shū)沒(méi)得說(shuō),經(jīng)典好書(shū),包裝要是好點(diǎn)就好了
  •   老師推薦,買(mǎi)了看看,感覺(jué)不錯(cuò),不過(guò)一直沒(méi)看完
 

250萬(wàn)本中文圖書(shū)簡(jiǎn)介、評(píng)論、評(píng)分,PDF格式免費(fèi)下載。 第一圖書(shū)網(wǎng) 手機(jī)版

京ICP備13047387號(hào)-7