宣傳語
懵懂菜鳥如何成長為一名成功的開發人員?
如何在“血雨腥風”的求職大戰中脫穎而出?
職場中只要技術過硬就可以吃遍天下嗎?
是學招式重要,還是練內功重要?
掌握了哪些技能,才算是真正的高手?
……
資深技術專家,娓娓道來。
內 容 簡 介
賈島的《劍客》一詩有言:“十年磨一劍,霜刃未曾試,今日把示君,誰有不平事?”,從1998年首次接觸Java算起,到現在也是十年有餘。筆者希望用十年的知識和經驗磨出的利劍能夠幫助廣大讀者朋友在實際工作中披荊斬棘、奮勇殺敵。
本書適合於尚在學校對前途感到迷茫的大學生,同時也是初入職場的菜鳥不可多得的修煉指南。對於那些已經在IT江湖闖蕩數年的老鳥,本書也提供了很多新的思路與策略。
本書精彩內容導讀
◎初窺門徑——行業揭秘 ◎霧裡看花——職場誤區
◎下山之路——有備無患 ◎必須通關的遊戲——求職之旅
◎步入江湖——做事的學問 ◎立足江湖——做人的學問
◎百尺竿頭,更進一步 ◎江湖多歧路
◎天下功夫出少林 ◎幾種自廢武功的做法
◎沒有必殺技,怎么敢出來混 ◎新銳兵器譜
◎武學奧義 ◎雜項
書 評
作者是一位有才氣的人,也是一位技術牛人。他給大家奉獻了一本生動有趣、讀來輕鬆活潑、讓人大呼過癮的作品。他不僅告訴我們如何學習Java,更重要的是告訴我們如何能更好地在程式開發這個行業發展得更好,實現個人價值。
——中軟集團SOA架構師 王鑫磊
當作者讓我給這本書寫點評價時,我還真不確定是否應該這么做。但當我看過內容後,我的一切擔心都煙消雲散了。這本書內容很好,對於那些打算要在Java開發領域發展的人非常有用。這本書和一般的技術圖書不同,它更加側重於從職場角度來探討Java程式設計師需要具備的知識和經驗。
——用友軟體 ERP開發工程師 李迪鋒
怎樣從一個Java新手過渡到資深工程師?這是每個職場新人的疑惑。我也是從Hello World開始編程的,對其中的辛酸深有體會。看到這本書感覺很親切,相信“菜Java”們一定能從這本書中受到很多啟發。
——北京中科軟科技股份有限公司項目經理 段潔男
有人的地方就有江湖,程式設計師也不例外。如果僅僅很會編程,而不懂得職場的一些奧妙,那也不會得到大的發展。因為現在的系統不可能由一個人獨立完成,而必須要有數十人甚至上百人的配合才行。開發類的圖書很多,而能給讀者介紹職場經驗的卻很少,《Java程式設計師職場全攻略——從小工到專家》就很好,給出了很多有益的建議,值得一讀。
——廣州好易電子聯行服務有限公司技術總監 紀超
作者介紹
吳亞峰,畢業於北京郵電大學,後留學澳大利亞臥龍崗大學取得碩士學位。1998年開始從事Java開發,有十多年的Java開發與培訓經驗,主要研究方向是Java EE。現在為Java EE獨立軟體開發工程師,同時兼任Sun授權Java培訓中心認證教師,為數十家著名企業培訓了上千名高級軟體開發人員,曾編寫過《精通NetBeans——Java桌面、Web與企業級程式開發詳解》、《Java SE 6.0編程指南》及《30天學通Java項目案例開發》、《30天學通Java Web項目案例開發》等暢銷技術書籍。
前 言
每當坐在自己的工作室里看著書架上林林總總的書籍,使用著高性能的工作站進行開發時,我都會回憶起1998年自己剛剛從事Java編程時的探索和艱辛。回想當初,僅僅有一台主頻133MHz的組裝機,就敢在上面進行企業級程式的開發,就敢在上面跑Oracle。由於缺乏有效的技術指導,同時難以像現在這樣獲得豐富的技術資料,那時候的學習和開發都是很痛苦的。有時連續熬夜很多天也無法將一個小小的程式調通,開發過程中常常伴隨著沮喪和鬱悶。
而現在的情況已經大不一樣了,目前市面上的IT技術書籍可謂是鋪天蓋地,廣大讀者已經不再需要擔心無書可讀,而是該擔心如何選本好書了。但是縱觀浩瀚書海,幾乎無不例外地將技術講解作為重點,這樣就忽視了一些更值得關注的問題。
· 懵懂菜鳥如何才能成長為一名成功的開發人員?
· 如何在“血雨腥風”的求職大戰中脫穎而出?
· 職場中只要技術過硬就可以吃遍天下嗎?
· 是學招式重要,還是練內功重要?
· 掌握了哪些技能,才算是真正的高手?
目前市面上能夠回答以上這些問題的書籍可謂寥寥無幾。不得不承認,對於許多未入門的Java菜鳥和已在Java江湖闖蕩數年的開發人員來說,目前最缺少的不是技術書籍,而是職業生涯的規劃指南及項目開發思想與經驗的分享。
多年的Java開發經歷對我自己來說是一筆寶貴的財富,現在有幸將這些閃光的寶貝寫進書中。希望那些曾經啟發和指導過自己的不論是技術還是非技術上的點點滴滴,也能夠和廣大讀者朋友產生一些共鳴,更好地幫助大家在Java的海洋里乘風破浪。或許海子的那句詩最能表達本書的寫作意圖:“那幸福的閃電告訴我的,我將告訴每一個人。”
本書內容及特色
本書中有兩位主人公:職場新手蔡佳娃和業內高人牛開復。而本書也主要以蔡佳娃的成長曆程為主線,通過向讀者講述笨手笨腳的蔡佳娃如何在師兄牛開復的幫助下一步一步成長為獨當一面的開發人員,把從菜鳥到大牛這個過程像電影般立體地展示給讀者,這其實就是我自己的成長經歷。
本書力求將Java開發人員從菜鳥到大牛成長過程中的方方面面都呈現出來,在內容的組織上花費了較長時間。本書分為上下兩篇,上篇主要講述了如何從Java職場的門外漢成功殺入這個英雄輩出的江湖並在其中安身立命、功成名就。其中既有對職場現狀的揭秘及行業誤區的排除,也有著求職遊戲中的詳細攻略指南,同時介紹了在職場這個複雜環境中做人和做事的學問。這雖然都是些技術之外的東西,但是卻在很大程度上決定了一名開發人員在自己的“職途”上能走多遠。
本書的下篇則主要將自己從事Java開發十餘年來積累的心得體會分門別類地進行了介紹。有一些是在開發工作中必須精通和掌握的知識,有一些則是從多年編程實踐中總結出的“必殺技”,還有一些是在工作中必須杜絕的錯誤做法。但願這些技術積累能夠幫助讀者朋友們在工作中實現鯉魚躍龍門式的提升,同時也希望那些曾讓自己迷茫和困惑的地方,不再成為廣大讀者朋友前進道路上的絆腳石。
IT行業是個瞬息萬變、發展極快的行業,各種新技術層出不窮,跟不上技術車輪的轉動就會在前進的道路上與他人漸行漸遠,最終徹底消失在大家的視線中。本書中有一章專門介紹當前Java技術中的最新行情,對其或複雜或高深的原理做了簡約而完整的介紹,並相應地附以經典示例。讀者朋友們可以了解當前江湖中的新銳兵器,並據此確定自己的努力方向。
在編寫的過程中,為了讓不同水平的讀者都能看懂,本書儘量做到講解通俗,把一些高高在上的技術思想及原理翻譯成菜鳥也能看懂的語言,這的確不是一項輕鬆的工作。在語言的斟酌上,也花費了較多的精力,這是為了讓讀者朋友不會在閱讀的時候感到boring。讀者若能從本書生動卻不乏深刻的語言中感受到學習的樂趣和享受之處,便是對本書的莫大鼓勵了。
這本書雖然主要探討的是從事Java開發的心得體會,但是一些程式的示例還是要有的。為了不讓本書落入一般技術書籍的俗套,在舉例的時候儘量保證其簡約和經典。因為本書最主要的目的不是讓讀者朋友們學會表面的技術,而是讓大家領悟其中的思想。學習招式在次,提升內力才是最主要的。
經過幾個月見縫插針式的奮戰,本書終於要交稿了。回顧寫書的這幾個月時間,不禁為自己能最終完成這個耗時費力的“大製作”而感到欣慰。同時也為自己能將從事Java開發多年積累的寶貴經驗以及編程感悟分享給正在開發陣線上埋頭苦幹的廣大Java人而感到高興。
賈島的《劍客》一詩有言:“十年磨一劍,霜刃未曾試,今日把示君,誰有不平事?”,從1998年首次接觸Java算起,到現在也是十年有餘。筆者希望用十年的知識和經驗磨出的利劍能夠幫助廣大讀者朋友在實際工作中披荊斬棘、奮勇殺敵。
本書面向的讀者
· Java初學者
對於未入門的菜鳥,本書首先介紹了當今IT職場中Java的地位以及Java開發人員的生存現狀,並為在校大學生指出了一條從學校到職場的明路。這些內容非常有助於讀者朋友快速地了解Java職場並準確定位自己,同時本書介紹的一些求職攻略也可以為求職者成功挺入職場保駕護航。
· 有一定基礎的Java開發人員
對於已經在職場立足的新手,本書逐一列舉了在職場中Java開發人員所必知必會的能力和一些鮮為人知的編程心法與口訣。除了這些高手之路,本書還指出了一些在工作中會讓自己武功全廢的錯誤做法。同時,本書還和讀者探討了在職場中如何更好地為人處世的問題。
· 高級開發人員
對於職場中的高級開發人員,本書所介紹的一些進行Java高級開發的技巧和有關新技術的討論非常適合高手之間進行分享和交流。高級開發人員也可以通過本書拾遺補漏,在技術水平上精益求精。
關於作者
吳亞峰,畢業於北京郵電大學,後留學澳大利亞臥龍崗大學取得碩士學位。1998年開始從事Java開發,有十多年的Java開發與培訓經驗,主要研究方向是Java EE。現在為Java EE獨立軟體開發工程師,同時兼任Sun授權Java培訓中心認證教師,為數十家著名企業培訓了上千名高級軟體開發人員,曾編寫過《精通NetBeans——Java桌面、Web與企業級程式開發詳解》、《Java SE 6.0編程指南》及《30天學通Java項目案例開發》、《30天學通Java Web項目案例開發》等暢銷技術書籍。
另外,昊燃、方振宇、陳冠佐、傅奎、陳勤、梁洋洋、畢夢飛、陳慶、柴相花、陳非凡、陳華、陳嵩、承卓、陳先在也參與了本書的編寫,在此表示感謝!
致謝
本書在編寫過程中得到了唐山百納科技有限公司Java培訓中心的大力支持,同時魏鵬飛、王海峰、蘇亞光以及作者的家人為本書的編寫提供了很多幫助,在此表示衷心感謝!
本書作者
2009年11月
目 錄
上篇 我與江湖
第1章 初窺門徑——行業揭秘 2
1.1 IT精英在中國的生存現狀 2
1.1.1 外行人眼中的IT人 2
1.1.2 IT行情分布 5
1.1.3 IT語言平台 7
1.1.4 你說我容易嗎 10
1.1.5 我挨踢我驕傲 12
1.2 當今主流公司的企業文化 12
1.2.1 歐美企業的特色文化 12
1.2.2 日韓企業的工作模式 14
1.2.3 中資企業的傳統特色 15
1.2.4 兩種不同的軟體外包方式 16
1.2.5 加入什麼樣的公司 18
1.3 散兵游勇還是團隊作戰 18
1.3.1 哪樣多一些 18
1.3.2 團隊和單兵 19
1.3.3 不要停止思考 20
1.4 這條路大家都是怎么走的 20
1.4.1 職位和待遇是怎么升的 20
1.4.2 有乾不動的時候嗎 23
1.4.3 走的人多了,還會有路嗎 24
1.5 大公司,小公司 26
1.5.1 大公司愛專才 26
1.5.2 小公司愛多面手 27
1.6 本章小結 28
第2章 霧裡看花——職場誤區 29
2.1 到底差不差錢 29
2.1.1 大家都是個什麼身價 29
2.1.2 給自己估個好價 32
2.1.3 先掙的是資本,後掙的是錢 34
2.2 誰給我解決戶口問題 35
2.2.1 講講戶口的故事 35
2.2.2 各地戶口政策面面觀 37
2.2.3 別怕,咱有暫住證呢 39
2.2.4 戶口問題小結 40
2.3 我們不是愛加班 40
2.3.1 常態加班是為何 40
2.3.2 你為什麼加班 43
2.3.3 讓自己不再加班 43
2.4 莫學狗熊掰棒子 44
2.4.1 做過的這輩子永遠都不會忘嗎 44
2.4.2 為自己維護一個小倉庫 46
2.4.3 多寫開發心得 48
2.5 本章小結 49
第3章 下山之路——有備無患 50
3.1 從學生升級到開發人員 50
3.1.1 學校給了你什麼 50
3.1.2 咱們還缺啥 54
3.1.3 經驗,還是經驗 56
3.2 為自己定下目標 58
3.2.1 目標的意義 58
3.2.2 樹立目標的學問 59
3.2.3 讓自己知道今天該乾什麼 61
3.3 IT認證的問題 63
3.3.1 認證那點事 63
3.3.2 現在的認證 65
3.3.3 該不該考個證 69
3.4 本章小結 70
第4章 必須通關的遊戲——求職之旅 71
4.1 簡歷靚起來 71
4.1.1 簡歷不是這樣寫的 71
4.1.2 寫出出色的簡歷 74
4.1.3 如果是機器篩選簡歷 77
4.1.4 簡歷小結 77
4.2 筆試,混可不行 78
4.2.1 初識筆試 78
4.2.2 牛刀初試 80
4.2.3 筆試小結 83
4.3 面試——最難的BOSS 83
4.3.1 面試面什麼 83
4.3.2 支招面試 85
4.3.3 面試演習 87
4.3.4 面試小結 92
4.4 試用期——這才是最後一關 92
4.4.1 試用期考查什麼 92
4.4.2 多做什麼,少做什麼 93
4.4.3 試用期小結 94
4.5 本章小結 94
第5章 步入江湖——做事的學問 95
5.1 身為菜鳥 95
5.1.1 打碎牙齒往肚裡咽 95
5.1.2 菜鳥不應該自卑 97
5.1.3 一葉障目,不見泰山 99
5.2 銳意進取,菜鳥無敵 101
5.2.1 既是初生牛犢,就別怕虎 101
5.2.2 勤於學習,落後就要挨打 104
5.2.3 菜鳥應該懂得的幾件事 106
5.3 知足常樂,健康心態 109
5.3.1 總有你達不到的高度 109
5.3.2 職場爬山論 110
5.3.2 做最好的自己 112
5.4 菜鳥何以菜,大牛何以牛 113
5.4.1 代碼量的問題 113
5.4.2 敢於往上走一步 115
5.4.3 升天不成,掉下來也是個半仙 116
5.5 酒香也怕巷子深 117
5.5.1 找到你的優勢 117
5.5.2 學會競爭 118
5.5.3 發展才是硬道理 120
5.6 本章小結 121
第6章 立足江湖——做人的學問 122
6.1 新環境有新態度 122
6.1.1 開發人員和廚師 122
6.1.2 做人是為了做事 123
6.2 同事——戰友和對手 124
6.2.1 競爭與合作中的做人智慧 124
6.2.2 做一個好同事 127
6.3 上級,不是校長或家長 130
6.3.1 是員工,不是學生 130
6.3.2 上級討厭的員工 130
6.3.3 怎樣與上級處理好關係 135
6.4 新人和下屬,曾經的你 136
6.4.1 準備工作 136
6.4.2 學著做個好領導 137
6.4.3 被夾在自己的上級和下級之間怎么辦 139
6.5 客戶,領導內行的外行上帝 140
6.5.1 如何招待上帝 140
6.5.2 不要這樣對待上帝 142
6.5.3 如何對付不可能完成的任務 144
6.6 學著處理和MM的關係 145
6.6.1 這個行業的男女比例 145
6.6.2 如何面對異性員工 146
6.7 本章小節 146
第7章 百尺竿頭,更進一步 147
7.1 技術不是萬能的 147
7.1.1 為何IT是個服務業 147
7.1.2 業務流程要清楚 147
7.1.3 專業領域的知識要了解 149
7.1.4 軟體系統的操作方式 149
7.2 書是人類進步的階梯 150
7.2.1 還要不要讀書學習 150
7.2.2 選本好書不容易 151
7.3 解決問題的方法 152
7.3.1 正招和歪招 153
7.3.2 優先使用正招 154
7.3.3 正招不夠,歪招也可以上 156
7.4 軟體產品的目標 159
7.4.1 實現功能是底線 159
7.4.2 提升性能帶來質的飛躍 160
7.5 多多參加技術大會和沙龍 164
7.5.1 何為技術大會 164
7.5.2 我們為什麼去技術大會 165
7.5.3 技術大會PK 165
7.5.4 技術沙龍 169
7.6 本章小結 169
第8章 江湖多歧路 170
8.1 “學院”派和“企業”派 170
8.1.1 何為“學院”派 170
8.1.2 “企業”派的實幹 173
8.1.3 一起來做“企業”派 176
8.2 關於“劍宗”和“氣宗”的討論 177
8.2.1 何為“劍宗” 177
8.2.2 何為“氣宗” 178
8.2.3 奇技淫巧不如提升修為 180
8.3 有自己的平台才是王道 181
8.3.1 關於框架的純“拿來主義” 181
8.3.2 項目的分割 184
8.4 “大而全”還是“精而深” 186
8.4.1 “大而全”和“精而深”矛盾嗎 186
8.4.2 “大而全”托出“精而深” 188
8.5 本章小結 189
下篇 笑傲江湖
第9章 天下功夫出少林 192
9.1 Java EE開發人員必知必會 192
9.1.1 堅實的基礎——核心Java 192
9.1.2 只會Java可不行——大牛的百寶囊 195
9.2 Java ME開發人員必知必會 197
9.2.1 了解不同平台對Java ME的支持 198
9.2.2 遊戲開發的基礎知識 200
9.2.3 網路編程知識 205
9.2.4 3G、Android對Java ME開發人員的挑戰和機遇 206
9.3 當下流行EE框架揭秘 207
9.3.1 Struts和WebWork那點事 208
9.3.2 Tapestry框架 211
9.3.3 Spring——不可多得的好框架 212
9.3.4 Hibernate——從關係世界到對象世界 215
9.4 大型項目青睞的技術與平台 217
9.4.1 JSF框架 217
9.4.2 EJB 3.0業務層技術 219
9.4.3 JPA持久層技術 223
9.4.4 常見套用伺服器簡介 224
9.4.5 Java企業平台的榮耀之路 225
9.5 如何學好框架 226
9.5.1 全面了解各項功能 226
9.5.2 徹底研究工作機理 227
9.6 本章小結 228
第10章 幾種自廢武功的做法 229
10.1 相信謬論 229
10.1.1 說出來別不信——鍊表和數組的速度問題 229
10.1.2 Java真的比C/C++慢嗎 232
10.2 迷信工具,缺乏純代碼能力 234
10.2.1 迷信ORM 235
10.2.2 神化IDE 237
10.3 淺嘗輒止,孤陋寡聞 240
10.3.1 finally的忽視 240
10.3.2 PreparedStatement的誤解 243
10.3.3 管理資料庫連線不知連線池 246
10.4 忽視記憶體管理 250
10.4.1 對象的3種引用 251
10.4.2 “小肥豬”問題 255
10.5 看了就不要再犯的錯誤 256
10.5.1 “+”惹的禍 256
10.5.2 魔法數字 258
10.5.3 代碼複製師的渺茫前途 259
10.5.4 老壽星變數 260
10.6 本章小結 262
第11章 沒有必殺技,怎么敢出來混 263
11.1 精通SQL 263
11.1.1 掀起SQL的蓋頭來 263
11.1.2 強大的SQL 265
11.1.3 SQL最佳化問題 268
11.1.4 當下主流的資料庫產品 270
11.2 拿下正則式 272
11.2.1 細說正則式 273
11.2.2 正則式在Java中的運用 277
11.2.3 正則式在JavaScript中的運用 281
11.3 不會用Ant的開發人員不是好Developer 284
11.3.1 Why Ant 284
11.3.2 Ant初體驗 286
11.4 淺談設計模式 288
11.4.1 設計模式的重要性 288
11.4.2 MVC設計模式 289
11.4.3 單例模式 292
11.4.4 最終守護者模式 293
11.5 本章小結 295
第12章 新銳兵器譜 296
12.1 面向服務的體系架構(SOA) 296
12.1.1 對面的SOA看過來 296
12.1.2 零距離接觸Web Service開發 299
12.1.3 博採眾長之集大成者——CXF 302
12.1.4 英雄不問歲數——Axis 2 306
12.1.5 走近ESB——企業服務匯流排 309
12.2 富客戶端套用(RIA) 313
12.2.1 從平淡到酷炫——RIA與AJAX 313
12.2.2 酷炫背後的基石——核心JavaScript 316
12.2.3 AJAX的開發利器——Dojo 319
12.2.4 AJAX的最酷代表作——GoogleMap 323
12.2.5 Web 2.0時代的異軍突起——Mashup 326
12.2.6 RIA殿堂的技術新貴——JavaFX 328
12.3 搜尋引擎技術 337
12.3.1 Lucene開源項目 337
12.3.2 Nutch框架 342
12.4 本章小結 345
第13章 武學奧義 346
13.1 單元測試的利器——JUnit 346
13.1.1 JUnit簡介 346
13.1.2 單槍匹馬,赤膊上陣——JUnit的單獨使用 347
13.1.3 豈曰無衣,與子同袍——JUnit和Ant的聯合 350
13.1.4 得道者多助——JUnit在Eclipse和NetBeans中的使用 352
13.2 版本管理 354
13.2.1 版本不可一日不控 354
13.2.2 沙場秋點兵之版本控制系統 355
13.2.3 版本控制系統與IDE的協作 356
13.3 UML建模語言 357
13.3.1 UML就這么回事 358
13.3.2 UML之實戰IDE 359
13.4 大型伺服器作業系統 360
13.4.1 UNIX平台 360
13.4.2 Linux平台 361
13.4.3 Windows Server平台 362
13.5 集群與負載均衡 362
13.5.1 集群 363
13.5.2 冪等操作 364
13.5.3 我們的程式運行在哪 365
13.6 虛擬化與雲計算 366
13.6.1 舉杯邀明月,對影成三人——虛擬化 367
13.6.2 雲中誰寄錦書來——雲計算 368
13.7 本章小結 370
第14章 雜項 371
14.1 專業英語不能不熟練 371
14.1.1 向高新技術看齊 371
14.1.2 等到中文版的時候 372
14.1.3 做一個大牛的需要 373
14.2 維護大腦這個資料庫 373
14.2.1 書到用時方恨少 373
14.2.2 讓積累成為一種習慣 374
14.2.3 搜尋引擎的使用 375
14.3 IT人也要不務正業 379
14.3.1 不懂數學豈不是很糟糕 380
14.3.2 誰說物理是白學了 382
14.3.3 一起來不務正業吧 383
14.4 讀學術論文 383
14.4.1 別怕我,我是好人 383
14.4.2 醍醐灌頂,如坐春風 385