-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
3/26 新書到! 3/19 新書到! 3/14 新書到! 12/12 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

碼農翻身

( 簡體 字)
作者:劉欣(@碼農翻身)類別: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
序: