1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        壓箱底 | Java 編程學習必讀的十本書

        共 4510字,需瀏覽 10分鐘

         ·

        2021-10-28 15:14

         


        小伙伴們大家好呀!

        今天給大家嘮一嘮 Java 學習,經(jīng)常有小伙伴留言問我:『Java怎么學習???我好迷茫啊,快救救我!』

        其實這個話題有點大了,每個人現(xiàn)階段水平不一樣,比如說對Java 虛擬機的理解:

        初級程序員可能一臉懵:『我學這個干什么?這不都封裝好了嗎?』

        中級程序員內(nèi)心竊喜:『這不就是 java 面試八股文經(jīng)??疾斓臇|西嗎?我門兒清』

        高級程序員輕蔑一笑:『我之前動手實現(xiàn)過虛擬機』

        這說明同樣一種技術(shù)不同的人認知水平是不一樣。

        對于 Java 學習也是一樣的,有些人喜歡看視頻學習,覺得視頻有趣,跟著老師一步一步敲代碼;

        但有些人就會覺得看視頻學習沒意思,老師講的太繁瑣了,太拖沓了,還是自己看書更帶勁。

        我在這里講講自己的看法,對于入門初級程序員,看視頻跟著老師的思維一步步走,確實能培養(yǎng)編程興趣。記得幾年前我初學 Java 時在網(wǎng)上看了很多馬士兵老師的視頻,當時覺得這個老師不光技術(shù)好,人也超級幽默,編程的興趣一下子提了上來,直到今天還在 IT 行業(yè)混,哈哈!

        但是視頻看多了你會發(fā)現(xiàn):聽著都懂,關(guān)掉視頻自己寫啥也不會啊。這最大的原因其實就是因為自己沒有獨立思考。

        所以建議大家入門了之后還是不要過于依賴視頻,要學會獨立思考,看書是個不錯的方法。

        關(guān)于 IT 行業(yè)到底要不要看書,這個我之前可是踩過坑的,一些「大佬」跟我說:IT 行業(yè)日新月異,一本書的出版一般都是要耗費幾年時間,等書出出來了,技術(shù)都過時了。我當時覺得:我屮艸芔茻,有道理啊。正是因為這種思想,為我日后不愛學習埋下了禍根。

        其實現(xiàn)在回過頭來看,這個說法不完全正確,對于一些垃圾書確實是這樣的,但是對于那些經(jīng)典之作,時間的流逝也不能掩蓋住它的經(jīng)典。比如說《深入理解 java 虛擬機》這本書最早是在 2011年出版,快 10 年有人說它過時了嗎?現(xiàn)在應(yīng)屆生找工作前是不是都得背一背??磿€是得看經(jīng)典之作啊。

        好了,開始我們今天的主題,今天是想給學習 Java 的程序員推薦一些經(jīng)典書籍,這些書籍覆蓋了初級、中級、高級程序員,總有一些適合你。另外需要說明的是,本次推薦的書單僅僅只覆蓋 Java SE 部分,像 Java Web, 服務(wù)端開發(fā),Spring框架全家桶,分布式微服務(wù),中間件,數(shù)據(jù)庫這些本次都不包括,留著后面慢慢推薦。

        Java 編程必看的十本書

        基礎(chǔ)學習

        Java 語言基礎(chǔ)這塊要學的東西很多,像:

        • 面向過程 VS 面向?qū)ο?/p>

        • 面向?qū)ο蠡咎卣鳎悍庋b、繼承、多態(tài)

        • 訪問控制符:private、default、protected、public

        • 數(shù)據(jù)類型:基本類型、引用類型

        • 控制流程:for、while、switch 等

        • 序列化

        • 異常處理

        • 泛型

        • ……

        下面十本書看完保證你的 Java 技術(shù)能上一個檔次:

        《Java 核心技術(shù)卷I:基礎(chǔ)知識》

        這本書建議作為Java 之旅的第一本書,涵蓋的內(nèi)容非常全,比起那些30天學會 Java 之類的書,這邊書更加務(wù)實。

        隨著技術(shù)的演講,書中有些技術(shù)已經(jīng)被時代拋棄,這部分的章節(jié)其實不用看。

        像第十、十一、十二章:圖形程序設(shè)計,主要講解 Swing GUI,用 Java 寫桌面端應(yīng)用已經(jīng)過時了。有人會說安卓,這是另外一套東西,不是 Swing。

        第十三章主要講 Java 程序的部署,這里面的 applet 技術(shù)已經(jīng)淘汰了,再學就是浪費時間。

        大家要把有限的時間和精力花在更有價值的事情上。

        《Java 核心技術(shù)卷II:高級特性》

        卷II是卷I的加強版,針對 Java 的一些高級特性如:java8、網(wǎng)絡(luò)、數(shù)據(jù)庫、安全等進行了詳細講解。

        關(guān)于網(wǎng)絡(luò)那一章節(jié)大家可以簡單看一下即可,因為在企業(yè)網(wǎng)絡(luò)編程開發(fā)中多數(shù)會用到 netty 框架,這是一款性能好到炸的框架,建議大家后面好好學習下。

        數(shù)據(jù)庫編程那一章節(jié)也可以簡單看看,JDBC 操作數(shù)據(jù)庫實在是太麻煩了,編寫程序有一堆樣板代碼,繁瑣程度令人發(fā)指,為了解決這個問題出現(xiàn)了一系列有優(yōu)秀的 ORM 框架如:Hibernate、MyBatis 等。

        最后與卷I一樣,Swing 這一章節(jié)也可以直接跳過了,具體原因上面已經(jīng)講過了,不啰嗦了。

        《Java 實戰(zhàn)(Java8 實戰(zhàn))》

        2021 年 9 月 14 號 Oracle 正式發(fā)布了 Java17,有些小伙伴不禁要問了,17 都出來了,現(xiàn)在還學 Java8 是不是太多時了,不不不,據(jù)小帥了解現(xiàn)在很多公司都還停留在 Java8。

        為什么大家都當釘子戶呢?

        這一方面說明 Java8確實是很牛逼啊,Java8 是繼 Java5 之后改動很大的一個版本,增加了 Stream 流等很多好用的特性;

        另一方面,切換一個 Java 版本費時費力,收益也不明顯,公司肯定不愿意動了。

        ok,我們再說回這本書,《Java 實戰(zhàn)》是《Java8 實戰(zhàn)》的新版本,不光有 Java8 的新特性還有 Java9、Java10 等,如果你的公司目前只會用到 Java8,那么你直接看《Java8 實戰(zhàn)》也未嘗不可。

        《Java8實戰(zhàn)》不會講解一些基礎(chǔ)的 Java語言,這本書的重點是講解 Java8 新特性和語法糖,讓你的 Java 代碼寫起來更爽、更優(yōu)雅。

        《Java編程思想(thinking in java)》

        這是一本非常非常經(jīng)典的書,你要問搞 Java 的人如果沒聽過這本書那算是白學了,哈哈。

        其實說實話這本書我試圖看過幾次,最終都沒有看完,一個原因是它太厚了,另外我覺得講得太啰嗦了,可能是因為翻譯的不太好,所以我現(xiàn)在拿來墊桌子,高度合適挺好的。

        所以呢,建議新人不要一開始看這邊書,不然你會懷疑人生,還沒入門就放棄了,就把它當做編程字典,等你后面遇到問題了拿起來再翻翻吧。

        進階學習

        《深入理解Java虛擬機》

        終于到這本書了,先允許我說三聲牛逼:牛逼!牛逼!牛逼!

        《深入理解Java虛擬機》這本書其實 2011 年就出版了,出版后其實是不溫不火的,那為什么后面就火了呢?

        除了書寫的好之外,最重要的一個原因還是國內(nèi) IT 行業(yè)太卷了,太卷了,太卷了!

        卷到什么程度呢?我以面試題為例:

        前幾年Java 程序員面試,面試官喜歡問:「HashMap 和 HashTable 哪個是線程安全的?」候選者能答出來并能說幾個原因就已經(jīng)足夠了。

        后來不行了啊,兄弟們,大家都背熟了,面試官只能升級了:「你看過HashMap的源碼嗎?是線程安全的嗎?」

        候選者:「我看過源碼,HashMap 的方法上都沒有加 Synchronized 關(guān)鍵字,HashMap 1.8 版本還加入了紅黑樹」

        再過幾年,程序員又進化了,面試官只能加碼了:「HashMap 看過源碼嗎?請在紙上寫一下紅黑樹的實現(xiàn)」

        候選者頓時懵逼了,一口老血結(jié)束了本次面試……

        Java 虛擬機也是一樣的,前些年研究這個的是一小撮人,后來由于行業(yè)太卷,為了更好地區(qū)分面試者,就慢慢開始問虛擬機相關(guān)的知識了。

        以前你要說你懂點 java 虛擬機可能加分項,時至今日這個只能算基本能力了。

        好了,我們說回這本書,周志明大神寫的,非常非常經(jīng)典,已經(jīng)更新到第三版了。周志明大神寫書用詞非常嚴謹,專業(yè)術(shù)語非常多,第一次讀的小伙伴可能有點懵,但是不要緊,多看幾遍,我自己也是看了很多遍,每次看完都有新的收獲,墻裂建議大家看完。

        《Java并發(fā)編程的藝術(shù)》

        在寫代碼的時候大家伙有沒有碰到這樣的場景:我在本地測試好好的,怎么線上就出問題了呢?

        排除本地環(huán)境和生成環(huán)境不一致的問題,其實最大的可能就是并發(fā)問題了。

        本地是你一個人在測試,但是到了生產(chǎn)環(huán)境,大量的用戶點擊,大量的請求涌進來,你的程序在并發(fā)訪問的時候會不會出問題呢?

        并發(fā)問題一般都比較難定位,寫好并發(fā)編程尤為關(guān)鍵。

        我們說回《Java并發(fā)編程的藝術(shù)》這本書,這是一本專門講解Java并發(fā)的書,涉及到各種鎖、常見安全的集合類,基本就是將 JUC(java.util.concurrent包的簡稱)里所有的內(nèi)容覆蓋了一遍,看完你一定有收獲。強烈推薦!

        JUC 是 Java 大神 Doug Lea 開發(fā)的一套類庫,大神開發(fā)這套代碼就是為了幫助大家簡化并發(fā)編程,現(xiàn)在國內(nèi)有一大批人在研究他的代碼,他老人家應(yīng)該高興呢還是悲哀,哎~

        寫「好代碼」

        學習Java,最終還是要付出實踐的,作為碼農(nóng)我們的成果就是一行行代碼。

        相信大家都有接手過前輩們寫的代碼,看到那些代碼,不禁冒出一句:這尼瑪哪個沙比寫的,whats up!

        這些代碼被稱之為「屎山」,我相信它們原本是好的,只是隨著需求變更和新增,一步步腐爛了而已。

        如果你不想給后人留下「屎山」,那么從現(xiàn)在開始你就要學會寫「好代碼了」,以免被同事打,哈哈~

        下面推薦幾本有助于你寫「好代碼」的書籍。

        《阿里巴巴Java開發(fā)手冊》

        這本書是大廠阿里巴巴出品的,它的愿景是碼出高效,碼出質(zhì)量。作者將自己多年的開發(fā)經(jīng)驗和架構(gòu)歷程濃縮成為立體的編程規(guī)范和最佳實踐。

        書的主要內(nèi)容是將 Java 編碼規(guī)范,編碼習慣非常重要,從一開始就要養(yǎng)好。

        如果你現(xiàn)在在一個小廠,你們組內(nèi)沒有任何編程規(guī)范,那么我建議你向你們的技術(shù)經(jīng)理推薦這本書,說不定能獲得升職加薪的機會,試試唄,后面如果真有人這么干了,記得回頭在公屏上打出來。

        組內(nèi)保持一致的編碼風格,有助于大家快速理解代碼,減少撕逼~

        《Effective Java中文版》

        網(wǎng)上流傳程序員分為兩種,一種是讀過《Effective Java》的,一種是沒讀過的,可見大家對這本書的評價非常高。

        Effective 系列非常經(jīng)典,覆蓋了很多語言:Effective Java、 Effective C、Effective C# 等,Effective Java 只是一個小小的分支。

        這本書的知識密度很大,作者根據(jù)自己多年的編程經(jīng)驗總結(jié)了很多條 best practice,每一條都是前人踩過的坑、流過的淚。

        建議等你寫了一定量代碼之后再看,不然你沒感覺。

        《代碼整潔之道(Clean Code)》

        代碼整潔之道,這本書的英文名是 clean code。

        閱讀這本書有兩種原因:

        第一,你是個程序員;

        第二,你想成為更好的程序員。

        如果你對代碼有追求,這本書可以教會你寫干凈的代碼。

        《重構(gòu) 改善既有代碼的設(shè)計》

        重構(gòu)這個詞大家應(yīng)該不陌生,但是我們靜下心來想一下,我們?yōu)槭裁匆貥?gòu)?哪些需要重構(gòu)?怎么重構(gòu)?

        這是人生終極三問?。?/p>

        一個項目開始重構(gòu)肯定是因為之前的代碼寫的太爛了,之前的架構(gòu)不滿足現(xiàn)階段發(fā)展了,大家都在說代碼爛、架構(gòu)爛?但好像又說不清具體哪里爛,不妨讀讀這本《重構(gòu) 改善既有代碼的設(shè)計》。

        這本書定義了24 種代碼壞味道,大家可以結(jié)合自己的項目逐個對照找出病因?qū)ΠY下藥。

        再補充一句:重構(gòu)不是一錘子買賣,重構(gòu)是貫穿項目整個生命周期的!

        總結(jié)

        看完這些書我不能保證你能成為Java 大神,但最起碼你可以很自信地說:我懂 Java,請給我加薪吧,這是不是夠了!

        瀏覽 31
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            日本三级中文字幕 | 另类小说图片 | 黄色肏逼视频 | 亚洲国产91 | 一区二区三区中文字野结衣 | 黄色性爱免费视频 | 4p一女三男前后夹激视频 | 国语对白91爽死我了 | 亚洲高清无码专区 | 女子被狂揉下部羞羞图片 |