|
-- 會員 / 註冊 --
|
|
|
|
碼農翻身 ( 簡體 字) |
作者:劉欣(@碼農翻身) | 類別:1. -> 程式設計 -> 綜合 |
譯者: |
出版社:電子工業出版社 | 3dWoo書號: 49176 詢問書籍請說出此書號!【缺書】 NT售價: 345 元 |
出版日:5/1/2018 |
頁數:296 |
光碟數:0 |
|
站長推薦: |
印刷:黑白印刷 | 語系: ( 簡體 版 ) |
|
加入購物車 │加到我的最愛 (請先登入會員) |
ISBN:9787121341175 |
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 序 |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證) |
作者序: |
譯者序: |
前言:從來沒想到自己也能出一本書。 作為一名工作了十五年的老程序員,我深知編程行業的不容易,不僅需要應對高強度的工作,還需要學習大量的技術知識,而且不像醫生、律師這些知識相對穩定的行業越老越吃香,軟件行業的技術每隔一段時間就會更新換代,讓你清零,逼著你從頭再來。所謂“活到老,學到老”,用到程序員身上再合適不過了。 在不斷學習的過程中,我“痛恨”那些采用bottom-up方式來講解技術的資料和文章,一上來就是技術細節、安裝步驟、配置方法,讓初學者暈頭轉向、不知所云,看完了以后也不知道為什么有這個東西、解決了什么問題、它有什么來龍去脈。換句話說,這些資料和文章習慣于講解How,而不是Why。但是在我看來,Why有時候比How更重要。 有時候在公司聽技術講座,看到上面的人眉飛色舞,下面的人卻一臉茫然,我總在想:為什么不舉一些生動有趣的例子呢?如果是我在講,那我怎么才能通俗易懂地把這個知識點講解出來呢?我該怎么去類比呢?我該從哪個角度切入呢? 這種潛移默化的思考多了以后,我發現自己也慢慢地養成了用通俗易懂的方式講解技術的習慣。 我工作了這么多年,踩了這么多坑,能不能把這些經驗寫下來,讓后來者少走一些彎路呢? 2015年年底,我開設了一個微信公眾號“碼農翻身”,試圖總結我的經驗,通俗易懂地講解技術。剛開始不溫不火,直到有一天,我無意中寫了一篇文章“我是一個線程”,被廣泛轉載傳播,就發現大家還是喜歡看故事的,在故事中輕松自在地掌握技術,于是就沿著這條路走了下去:用故事講解技術的本質。 這條路一走就是兩年多,慢慢地竟積累了幾百篇文章,這本書正是從這幾百篇文章中提取出來的精華,當然也經過了細心的整理、補充和完善。 每當我搞清楚一個知識點的時候,就會發出這樣的感慨:技術本來是很簡單的,只是上面籠罩著層層迷霧,讓初學者難以看清。如果這本書能夠幫助你搞清楚一些技術的本質,那我就會深感欣慰。
本書特色 本書講了很多故事,如“我是一個線程”“CPU阿甘”“Java:一個帝國的誕生”“Java帝國之宮廷內斗”“JavaScript:一個草根的逆襲”“兩個程序的愛情故事”……我努力把技術融入其中,希望讀者在讀故事的過程中輕松地掌握相關技術。 讀書本來就應該是一件輕松愉快的事情,不是嗎? 此外,書中的每篇文章都是獨立的,不用你正襟危坐,從頭到尾去讀,完全可以挑選自己感興趣的章節。例如,對于半路出家的初學者來說,想了解計算機基礎,可以去看看第1章;想了解Web技術,可以去第3章逛一下。 所謂“開卷有益”,希望你隨手翻翻就能夠掌握一點技術知識。
讀者對象 這不是一本編程的入門書,對編程一竅不通的“純小白”可能看不明白,可能會失望。 根據微信公眾號讀者的反饋,稍有編程基礎的讀者讀起來會非常暢快,讀后會有一種“原來如此”的感覺。比如,學過Java SE的讀者去讀“Java帝國”一章,就會明白很多Java技術的來龍去脈,覺得很過癮。 這也不是一本參考書,它的目的不是希望讀者看完以后照搬,而是幫助讀者理解一些技術的本質。
勘誤和支持 由于作者的水平有限,書中難免會出現一些錯誤或者不準確的地方,懇請廣大讀者批評指正。 我在微信公眾號“碼農翻身”中特意添加了一個新的菜單入口,專門用于展示書中的Bug。 如果讀者在閱讀過程中產生了疑問或者發現了Bug,歡迎到微信公眾號后臺留言,我會一一回復。
致謝 感謝微信公眾號“碼農翻身”的讀者,你們的鼓勵是我前進的最大動力。很多人直接加了我的微信號或者QQ號,只是為了表示感謝,讓我非常感動。 很多讀者鼓勵我出書,也在不斷詢問我到底什么時候出書。這讓我誠惶誠恐,生怕辜負了讀者的這份厚愛。這本書終于出版了,希望大家能夠喜歡。 感謝成都道然科技有限責任公司的姚新軍老師,他給出了很多非常專業的意見和建議,是非常可靠的合作伙伴。感謝劉丹、勵曉曉、張雅文等設計師在插圖和封面設計方面的創意表達。 感謝對本書進行審稿的西安郵電大學陳莉君教授。感謝“軟件那些事兒”電臺主播劉延棟提出的寶貴意見。感謝百忙之中閱讀書稿并且寫書評的專家,他們是:IBM 軟件商務系統全球負責人常紅平、 阿里巴巴代碼中心負責人孤盡、IBM中國開發中心開發經理白海飛、京東Y事業部供應鏈及技術總監胡浩、Agilean 咨詢顧問金易等。
特別致謝 特別感謝我的父母!我從小在農村長大,圖書資源極為匱乏,他們在我很小的時候就讓我看書,引領我進入閱讀之門。我至今仍清楚地記得父親下班后從城里買的一本期刊,也是我的第一本書:《故事大王》。從那以后,我就愛上了閱讀。如果說我現在有一點點文采,那和父母鼓勵我從小多讀書是分不開的。 特別感謝我的愛人,在寫作本書的過程中,陪伴、照顧孩子及家務瑣事都被她承包了,讓我可以心無二用、專心致志地寫作。她也是本書的第一位讀者和審稿人,糾正了文章中大量“我習以為常的”文字錯誤。 她讀完以后做出了非常精辟的總結:軟件開發不就是抽象嘛!讓我大為吃驚。 特別感謝我六歲的女兒,每當我晚上寫作勞累,沒有什么思路的時候,她都會及時地跑過來,不容分說地坐到我的腿上,盯著電腦上的書稿,問道: “爸爸,你在干嗎?” “我在寫書啊。” “你的書會有很多人看嗎?” “是的。” “那你會出名嗎?” “……” 謹以此書獻給我的家人、讀者,以及熱愛編程的朋友!
劉欣(@碼農翻身) |
內容簡介:本書用故事的方式講解了軟件編程的若干重要領域, 側重于基礎性、原理性的知識。第1章講述計算機的基礎知識,包括程序的運行原理,進程、線程、文件系統、I/O系統、數據庫原理、TCP/IP,Socket,編譯原理的概述,遞歸等。第2章側重Java的基礎知識,包括Java的歷史、JVM、序列化、持久化、JDBC、JSP、動態代理、泛型、注解、日志、JMS、CAS等。第3章則偏重Web后端編程,包括HTTPS、SSO、OAuth、RPC、SOA、微服務、HTTP服務器的原理、緩存、分布式一致性算法、高可用性、數據庫讀寫分離等。第4章講解代碼管理的本質,包括各種源碼管理工具(SVN, Git)的原理,Ant和Maven的原理,如何做單元測試,爛代碼的產生等。第5章講述了JavaScript的歷史、Node.js的原理、程序的鏈接、命令式和聲明式的區別以及作者十多年來使用過的各種編程語言的感受。第6章是作者的經驗總結和心得體會,包括職場發展的注意事項、作為架構師的感想、寫作的好處等。 |
目錄:第1章 計算機的世界你不懂 1 1.1 我是一個線程 1 初生牛犢 1 漸入佳境 4 虎口脫險 5 江湖再見 8 1.2 TCP/IP之大明內閣 9 1.3 TCP/IP之大明郵差 12 1.4 CPU阿甘 17 啟動 17 運行 18 新裝備:緩存 19 自我提升:流水線 20 1.5 我是一個進程 21 批處理系統 22 多道程序 22 地址重定位 24 分時系統 26 分塊裝入內存 27 虛擬內存:分頁 28 分段 分頁 30 程序的裝載 31 線程 35 1.6 我是一塊硬盤 36 內部結構 37 文件 38 文件的存放 39 管理空閑塊 44 文件系統 45 1.7 我是一個鍵盤 46 二等公民 46 總線和端口 47 輪詢(程序式I/O) 48 中斷 49 DMA 50 1.8 數據庫的奇妙之旅 51 無紙化辦公 51 數據的冗余和不一致 52 李氏查詢 52 并發訪問 54 原子性問題 56 安全 58 1.9 搞清楚Socket 59 1.10 從1加到100:一道簡單的數學題挑戰一下你的大腦 64 CPU和內存 64 從1加到100 65 熱身 65 正式出發 65 1.11 一個翻譯家族的發家史 68 機器語言 68 匯編語言 69 高級語言 70 1.12 編程世界的那把鎖 74 共享變量惹的禍 74 爭搶吧,線程 75 改進 76 信號量 77 1.13 繞不開的加法器 81 1.14 遞歸那點事兒 85
第2章 Java帝國 91 2.1 Java:一個帝國的誕生 91 C語言帝國的統治 91 反抗 92 一鳴驚人 93 開拓疆土 93 帝國的誕生 94 2.2 我是一個Java Class 96 陌生警察 96 刺探信息 97 初識虛擬機 98 快樂假期 102 真相大白 103 2.3 持久化:Java帝國反擊戰 104 斷電的威脅 104 數據庫聯合酋長國 105 表面風光的EJB 106 輕量級O/R Mapping框架 106 帝國的反擊 107 2.4 JDBC的誕生 108 談判 108 統一接口 110 面向接口編程 111 簡單工廠 112 數據驅動 114 工廠方法 115 2.5 Java帝國之宮廷內斗 119 JDBC大臣 119 密謀 120 兩階段提交 121 JTA 123 塞翁失馬,焉知非福 124 基本可用 125 走漏風聲 127 宮廷激辯 128 2.6 JSP:一個裝配工的沒落 131 黑暗歲月 131 服務器端動態頁面 132 標簽庫 134 模板引擎 134 草根攪局 135 2.7 Java 帝國之消息隊列 137 張家村的歷史 137 拆分 138 新問題 139 消息隊列 139 互不兼容的MQ 140 消息隊列接口設計 141 配置和代碼的分離 143 再次抽象 144 2.8 Java帝國之動態代理 147 深夜奏對 147 明察暗訪 149 Java 動態代理 150 2.9 Java注解是怎么成功上位的 153 XML大臣 153 安翰林獻計 154 早朝爭斗 157 2.10 Java帝國之泛型 159 新王登基 159 C 使者 159 泛型實現 162 泛型方法 163 泛型和繼承 164 2.11 一個著名的日志系統是怎么設計出來的 166 前言 166 張家村 167 小張的設計 167 正交性 170 Log4j 171 尾聲 171 2.12 序列化:一個老家伙的咸魚翻身 172 寒冬的蟄伏 172 XML和JSON的挑戰 173 新協議的崛起 175 2.13 加鎖還是不加鎖,這是一個問題 176 互斥鎖 176 要不要加鎖 177 CAS的擴展 179 2.14 Spring 的本質 182 問題來源 183 設計模式:模板方法 184 設計模式:裝飾者 186 AOP 187 實現AOP 188 對象的創建 189 IoC與DI 191
第3章 浪潮之巔的Web 192 3.1 Web的起源 192 3.2 兩個程序的愛情故事 195 好感 195 分離 196 網絡 197 Web 198 3.3 一個故事講完HTTPS 199 總有一種被偷窺的感覺 199 RSA:非對稱加密 200 非對稱加密 對稱加密 202 中間人劫持 202 你到底是誰 203 HTTPS 206 3.4 機房夜話 207 第一夜 207 第二夜 209 第三夜 211 3.5 從密碼到token,一個有關授權的故事 215 我把密碼獻給你 215 token 216 授權碼 token 218 后記 220 3.6 后端風云 220 數據庫老頭兒 220 危機 221 黨委擴大會議 221 分家 223 Redis 224 余數算法 227 一致性Hash算法 229 Hash槽 (Hash Slot) 233 故障轉移 235 高可用的Nginx 237 高可用的Tomcat 238 數據庫的讀寫分離 240 3.7 我是一個函數 243 3.8 從SOA到微服務 246 3.9 什么是框架 249 3.10 HTTP Server:一個差生的逆襲 252 HTTP Server 1.0 252 HTTP Server 2.0:多進程 253 HTTP Server 3.0:select模型 254 HTTP Server 4.0:epoll模型 255
第4章 代碼管理那些事兒 258 4.1 版本管理簡史 258 “人肉” 版本管理 258 鎖定文件:避免互相覆蓋 259 允許沖突:退一步海闊天空 260 分支:多版本并行 261 分布式管理:給程序員放權 262 程序員也愛社交 264 4.2 Build的演進之路 265 手工Build的煩惱 265 自動化Build 267 Java 與 XML 268 消除重復 270 4.3 爛代碼傳奇 275 4.4 敏捷下的單元測試 277 敏捷運動 277 困惑 278 討論 279 一年以后 280 4.5 再見!Bug 281
第5章 我的編程語言簡史 284 5.1 JavaScript :一個草根的逆襲 284 出世 284 成長 286 第一桶金 288 發明JSON 289 人生巔峰 291 5.2 Node.js:我只需要一個店小二 292 5.3 C老頭兒和Java小子的硬盤夜話 295 5.4 編程語言的“愛恨情仇” 300 讓人懷疑的C 語言 300 被忘卻的 VB & Visual FoxPro 301 蹂躪我的C 302 賴以謀生的Java 303 優雅的Ruby 304 5.5 命令式編程 VS 聲明式編程 306 一則小故事 306 命令式編程 306 聲明式編程 307
第6章 老司機的精進 309 6.1 凡事必先騎上虎背,和性格內向的程序員聊幾句 309 6.2 碼農需要知道的“潛規則” 311 上帝的規矩:局部性原理 311 坐飛機的怎么和坐驢車的打交道:緩存 311 拋棄細節:抽象 312 我只想和鄰居打交道:分層 312 我怕等不及:異步調用 313 大事化小,小事化了:分而治之 314 6.3 15年編程生涯,一名架構師的總結 314 好奇心 315 養成計算機的思維方式 315 扎實基礎,融會貫通 317 要透徹地理解一門技術的本質 317 能寫漂亮的代碼 318 抽象的能力 319 技術領導力 319 6.4 對自己狠一點,開始寫作吧 320 6.5 學習編程的四兄弟 322 搖擺不定的老大 322 “小倉鼠”老二 322 不看書的老三 323 半途而廢的老四 323 |
序: |
|