Java工程師書單(初級、中級、高級)

来源:http://www.cnblogs.com/aishangJava/archive/2017/08/02/7272477.html
-Advertisement-
Play Games

簡介 怎樣學習才能從一名Java初級程式員成長為一名合格的架構師,或者說一名合格的架構師應該有怎樣的技術知識體系,這是不僅一個剛剛踏入職場的初級程式員也是工作一兩年之後開始迷茫的程式員經常會問到的問題 筆者完全從自身的自學經歷出發,以初學者的視角挑選出如下的這些圖書。 初級書單 《編寫高質量代碼—— ...


簡介

怎樣學習才能從一名Java初級程式員成長為一名合格的架構師,或者說一名合格的架構師應該有怎樣的技術知識體系,這是不僅一個剛剛踏入職場的初級程式員也是工作一兩年之後開始迷茫的程式員經常會問到的問題

筆者完全從自身的自學經歷出發,以初學者的視角挑選出如下的這些圖書。

初級書單

《編寫高質量代碼——改善Java程式的151個建議》

這是一本值得入門java的人放在床頭的書。此書內容廣泛、要點翔實。大多數優秀程式設計書籍都需要看老外寫的,但是這本講述提高java編程水平的書還是不錯的,適合具有基本java編程能力的人。

對於程式猿而言,工作久了,就感覺編程習慣對一個人很重要。習慣好,不僅工作效率告,而且bug少。這本書對提高個人的好的編程習慣很有幫助。

《Java程式員修煉之道》

此書涵蓋了Java7的新特性和Java開發的關鍵技術,對當前大量開源技術並存,多核處理器、併發以及海量數據給Java開髮帶來的挑戰作出了精辟的分析,提供了實踐前沿的深刻洞見,涉及依賴註入、現代併發、類與位元組碼、性能調優等底層概念的剖析。

書中的道理很淺顯,可是對於菜鳥卻是至理名言。基本為你勾勒了一個成熟軟體程式員專家所需要的所有特性。我自覺地獲益頗多,其中很多事情,要麼在當時是自己沒有想到的,要麼是發生了,自己沒有註意的等等。給我影響很大。

《Java8實戰》

本書全面介紹了Java 8 這個裡程碑版本的新特性,包括Lambdas、流和函數式編程。有了函數式的編程特性,可以讓代碼更簡潔,同時也能自動化地利用多核硬體。全書分四個部分:基礎知識、函數式數據處理、高效Java 8 編程和超越Java 8,清晰明瞭地向讀者展現了一幅Java 與時俱進的現代化畫捲。

這是瞭解lambda 表達式最好的入門書籍了。在網上也學習了lambda 表達式,感覺會用,就是不知道原理,稍微換一下場景又不會用了。這本書絕對是學習java8新特性的最好書籍。

《有效的單元測試》

此書由敏捷技術實踐專家撰寫,系統且深入地闡釋單元測試用於軟體設計的工具、方法、原則和佳實踐;深入剖析各種測試常見問題,包含大量實踐案例,可操作性強,能為用戶高效編寫測試提供系統實踐指南。

介紹了單元測試的各個方面,TDD、test double、測試的壞味道、可測試的設計等等,每個主題需要深入的話,還需要配合其它書籍和實踐,非常適合入門單元測試。書中例子非常全面,看完對使用 Junit 進行單元測試會有一個大的長進,而且用java語言編寫,內容很新。

《Java核心技術:捲2 高級特性》

此書系統全面地講解Java語言的核心概念、語法、重要特性和開發方法。本書全面覆蓋Java技術的高級主題,包括流與文件、XML、網路、資料庫編程、國際化等,詳細描述了圖形與GUI編程,還涉及安全、遠程方法、註解處理、本地方法等。本書對Java技術的闡述精確到位,敘述方式深入淺出,並包含大量示例代碼,能夠幫助讀者充分理解Java語言並靈活應用。

捲二雖然是高級特性,但是其中的io、文件系統、正則表達式、網路、jdbc也是日常編程中非常常用的組件,不可不看。此書是一本非常輕鬆的Java技術書,不僅原文寫得好,譯者翻譯的也非常流暢。在我對翻譯的書絕對無望的時候,它力輓狂瀾的告訴我,事情還沒有壞到這個地步。

《代碼整潔之道》

代碼質量與其整潔度成正比。乾凈的代碼,既在質量上較為可靠,也為後期維護、升級奠定了良好基礎。作為編程領域的佼佼者,本書作者給出了一系列行之有效的整潔代碼操作實踐。這些實踐在本書中體現為一條條規則(或稱“啟示”),並輔以來自現實項目的正、反兩面的範例。只要遵循這些規則,就能編寫出乾凈的代碼,從而有效提升代碼質量。

如果每個常式都讓你感到深合己意,那就是整潔代碼。 如果代碼讓編程語言看起來像是專為解決那個問題而存在,就可以稱之為漂亮的代碼。

《數據結構與演算法分析-Java語言描述》

本書是java數據結構與演算法方面的三寶之一,除了這三本其他的已經沒有意義了。這三寶分別是:

* 黑寶書《數據結構與演算法分析java語言描述》mark allen weiss

* 藍寶書《java數據結構和演算法》robert lafore

* 紅寶書《演算法》robert sedgewick

黑寶書勝在公式推理和證明以及演算法的簡潔和精煉,此外習題較多。藍寶書勝在對演算法的深入淺出的講解,演示和舉例,讓艱澀的理論變得很容易理解。紅寶書勝在系出名門斯坦福,演示通俗易懂,內容豐富。有了這三寶,演算法不用愁,學完以後再看《演算法導論》就容易多了。

本書從講解什麼是數據結構開始,延伸至高級數據結構和演算法分析,強調數據結構和問題求解技術。本書的目的是從抽象思維和問題求解的觀點提供對數據結構的實用介紹,試圖包含有關數據結構、演算法分析及其Java實現的所有重要的細節

中級書單

《重構:改善既有代碼的設計》

重構,絕對是寫程式過程中最重要的事之一。在寫程式之前我們不可能事先瞭解所有的需求,設計肯定會有考慮不周的地方,而且隨著項目需求的修改,也有可能原來的設計已經被改得面目全非了。更何況,我們很少有機會從頭到尾完成一個項目,基本上都是接手別人的代碼,我們要做的是重構,從小範圍的重構開始。

重構是設計,設計是art,重構也是art. 一個函數三行只是語不驚人死不休的說法,是對成百上千行代碼的矯枉過正。 更一個般的看法是一個函數應該寫在一頁紙內。

《Effective Java》

這樣一本書本該早就讀了,然而最近才看完。看完覺得對於一些編程規則深層的原理有了一些認識。之前我只是知道這些口口相傳的規則,卻不知道為什麼,在這本書中找到了一些答案。書中涉及到了java編程方方面面的規則,包括類、介面、創建對象、類中的函數、函數的參數、異常。

如果你使用剛剛學會的Java做了一個小應用程式,那麼你就可以開始有選擇地看這本書。書中分別對Java的不同特性分章節給予作者本人的建議。如果你還沒有用到其中的某一特性,那麼就沒必要讀相關的章節,跳過去。只有你經歷過了,摔倒過了,困擾過了,你才會與書中的建議產生共鳴

《Java併發編程實戰》

本書深入淺出地介紹了Java線程和併發,是一本完美的Java併發參考手冊。書中從併發性和線程安全性的基本概念出發,介紹瞭如何使用類庫提供的基本併發構建塊,用於避免併發危險、構造線程安全的類及驗證線程安全的規則,如何將小的線程安全類組合成更大的線程安全類,如何利用線程來提高併發應用程式的吞吐量。

java進階必看,多線程的最佳書籍。

《實戰Java高併發程式設計》

此書主要介紹基於Java的並行程式設計基礎、思路、方法和實戰。首先,立足於併發程式基礎,詳細介紹Java中進行並行程式設計的基本方法。第二,進一步詳細介紹JDK中對並行程式的強大支持,幫助讀者快速、穩健地進行並行程式開發。第三,詳細討論有關“鎖”的優化和提高並行程式性能級別的方法和思路。第四,介紹並行的基本設計模式及Java8對並行程式的支持和改進。第五,介紹高併發框架Akka的使用方法。最後,詳細介紹並行程式的調試方法。

在集群和分散式環境下,java內置鎖逐漸失去了用武之地,但是鎖和併發的思想還是通用而且值得學習的。看過java併發編程實戰以後再讀這本書,每一個知識點都比較精煉而且代碼示例簡單易懂,沒有晦澀難懂的翻譯詞,手繪圖也有一種親切感。缺點是沒有附源碼,需要自己去github上找。

《演算法》

個人覺得是我見過的最簡單易懂的演算法入門書籍。以前搜刮過幾本演算法競賽書,但是難度終歸太大。本書使用Java語言實現演算法,配有大量的圖解,沒有一句難懂的話,而且全都是模塊化實現。講的都是實用演算法,沒有那些高大上聽著名字就讓人感到很害怕的東西,個人覺得比CLRS實用性要強,更加適合入門的學習。

此書力圖研究當今最重要的電腦演算法並將一些最基礎的技能傳授給廣大求知者。它適合用做電腦科學進階教材,面向已經熟悉了電腦系統並掌握了基本編程技能的學生。本書也可用於自學,或是作為開發人員的參考手冊,因為書中實現了許多實用演算法並詳盡分析了它們的性能特點和用途。這本書取材廣泛,很適合作為該領域的入門教材。

《Head First 設計模式》

這是我看過最幽默最搞笑最親切同時又讓我收穫巨大的技術書籍! 森森的膜拜Freeman(s)!Amen! 深入淺出,娓娓道來,有的地方能笑死你!寫得很有趣,圖文並茂,比起四人幫的那本,好懂了不知道多少倍。電腦世界的head first系列基本都是經典。不過只看書學明白設計模式是不可能的,這些只是前人的總結,我們唯有實踐實踐再實踐了。

讀這本書不僅僅是學習知識,而是在學習一種思考的方法,學習一種認知的技巧,學習一種成長的階梯。 總之,用你閑暇的時間來讀這本書,並不亞於你專註的工作或學習。筆者強烈推薦此書,要成長為一名高級程式員,設計模式已經是必備技能了。

《Java編程思想》

就是一本能夠讓Java程式員輕鬆面對挑戰,並最終取得勝利的經典書籍。本書深入淺出、循序漸進地把我們領入Java的世界,讓我們在不知不覺中就學會了用Java的思想去考慮問題、解決問題。本書並不適合Java的初學者,更適合於有經驗的Java程式員,這正是本書的魅力所在。但是,書中並沒有涵蓋Java所有的類、介面和方法,因此,如果你希望將它當作Java的字典來使用,那麼顯然就要失望了。

如果你開始覺得自己需要一些編程內功了,這本書就開始管用了,作為一本練習內功的基礎書籍。把心靜下來,老老實實打好內功根基,你會發現自己將會不一樣,當然最直接的體現就是工資待遇上的。。從這本書開始,無論是走向架構,多線程或者虛擬機,路都會變得平坦很多。

高級書單

《深入理解Java虛擬機》

本書是近年來國內出版的唯一一本與Java虛擬機相關的專著,也是唯一一本同時從核心理論和實際運用這兩個角度去探討Java虛擬機的著作,不僅理論分析得透徹,而且書中包含的典型案例和最佳實踐也極具現實指導意義。

我對本書最大的感受就是:全面。作為一個剛開始接觸 JVM 的人,我感覺本書基本上把 JVM 中所涉及的概念涵蓋到。在閱讀的過程中還有一種感受:如果作者不介紹某個內容,我在參考 Java 虛擬機的文檔的時候可能不會考慮到有這樣的因素存在,或者不會那麼容易理解。作為一本全面的引人入門的書籍,這本書實在是很贊。

《Java性能權威指南》

市面上介紹Java的書有很多,但專註於Java性能的並不多,能游刃有餘地展示Java性能優化難點的更是鳳毛麟角,本書即是其中之一。通過使用JVM和Java平臺,以及Java語言和應用程式介面,本書詳盡講解了Java性能調優的相關知識,幫助讀者深入理解Java平臺性能的各個方面,使程式如虎添翼。

為了理解gc那塊看過來的,cms個人感覺講的挺好的,和《深入理解java虛擬機》垃圾回收部分互為補充吧。有一點覺得挺贊:翻譯的比較好,沒有那種翻譯腔!

《深入分析Java Web技術內幕》

這本書的整體感覺不錯,基本上是從基本原理介紹出發的。適合互聯網技術愛好者閱讀,也可以作為技術架構參考書籍。本書不僅是介紹了基本知識和原理,很多東西作者是站在系統架構的原理出發的,所以對愛好系統架構的讀者是很有幫助的。本書的主要特點是“圖文並茂,有圖,有事實,有真相”,閱讀起來不枯燥,晦澀。

入行java兩三年,說會但是對底層還是一知半解,遇到系統級問題就還是不知道怎麼解決,所以要看深層次的書了,本書就是。

《大型網站系統與Java中間件實踐》

此書圍繞大型網站和支撐大型網站架構的 Java 中間件的實踐展開介紹。從分散式系統的知識切入,讓讀者對分散式系統有基本的瞭解;然後介紹大型網站隨著數據量、訪問量增長而發生的架構變遷;接著講述構建 Java 中間件的相關知識;之後的幾章都是根據筆者的經驗來介紹支撐大型網站架構的 Java 中間件系統的設計和實踐

通過這本書可以學習到大量構建大型網站系統的核心技 術,以及支撐大型網站的Java中間件的必備知識。作者在超大型電子商務網站的多年實戰經驗使得本書的內容極具價值。 如果你所在的技術團隊正在因面對大型網站而一籌莫展,或 許你可以從這本書中得到啟發。另外,如果想成為Java技術架 構師,那麼你也不應錯過此書。

《大型網站技術架構:核心原理與案例分析》

此書通過梳理大型網站技術發展歷程,剖析大型網站技術架構模式,深入講述大型互聯網架構設計的核心原理,並通過一組典型網站技術架構設計案例,為讀者呈現一幅包括技術選型、架構設計、性能優化、Web安全、系統發佈、運維監控等在內的大型網站開發全景視圖。

本書從多個層面說明瞭如何構建一個高可用、高性能、高可擴展性的網站系統,並結合了阿裡巴巴及其他互聯網企業先進的架構實踐經驗進行案例分析,講述非常全面且具指導意義。本書從網站的架構設計、快速開發、高效部署、業務監控、服務治理、運維管理等多個角度描述了架構設計的相關重點,涉及的核心技術包括前端優化、CDN、反向代理、緩存、消息隊列、分散式存儲、分散式服務、NoSQL存儲、搜索、監控、安全等一系列保證大型網站安全可靠運行的關鍵技術點。本書還提供了網站如何從小型網站伴隨用戶成長,逐步擴展到大型網站的架構演進思路,是互聯網架構師們不可多得的一本技術參考書。

《企業應用架構模式》

招式套路可以千變萬化,扎實深厚的“內功”卻是始終如一!雖然企業應用涉及的軟體技術不斷翻新,但是基本的架構及設計思想卻沒有太多變化。將以前行之有效的設計思路和方法加以適當調整,並應用到當前的問題上,是最高效的做法。在一組專家級合作者的幫助下,Martin將40多種經常出現的解決方案轉化成模式,最終融會成這本“內功心法”。在仔細研讀、用心揣摩本書之後,希望它能夠幫助你應對任何一種企業應用平臺,駕馭任何一種企業應用技術—無論是現在的技術還是未來的技術。

開始看這本書時,覺得講的太抽象,草草的翻了一遍,很多東西只有一個淺淺的一個印象。後來在用hibernate的時候,偶爾又重新翻開這本書。書里講的很多東西,都在hibernate裡面有體現。尤其是講關係映射那章,在hibernate文檔裡面都只講怎麼做,不講為什麼,在書里講的很清楚,看了很有收穫。

《Expert One-on-One J2EE Development without EJB》

選擇一種架構、一種技術的依據是什麼?Rod Johnson認為,應該是基於實踐的證據、來自歷史項目或親自試驗的經驗,而不是任何形式的偶像崇拜或者門戶之見。書中談到了企業應用方方面面的問題和解決辦法,而這些方案無一不是這種“循證方法”的產物。除了把這些方案交給讀者,Rod Johnson通過這本書希望傳達的、更為重要的信息正是“循證”的工作方式——那原本就應該是程式員的工作方式。

對Spring熟悉或者希望深入學習Spring框架精髓的工程師而言,本書必看,因為它就是是Spring框架發展的基石。

總結

最後,各位讀者在閱讀本系列書單的同時,也可以留言告訴筆者你認為的Java技術相關的好書籍,我會根據大家的留言情況及時更新本系列書單的內容。當然,如果不是Java相關,只要是咱們程式員喜歡或需要的其他有趣、有料的好書也可以。

學習Java的同學註意了!!!

想獲取以上書籍的電子版或者學習過程中遇到什麼問題的話,歡迎加入Java學習交流QQ群:495273252  我們一起學Java!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 起因:寫代碼的時候經常會用到獲取當前時間戳和日期,現總結如下 date.toString():Wed Aug 02 11:39:05 CST 2017當前時間戳(毫秒):1501645145298當前日期:2當前年份:2017當前月份:712小時制:當前小時:1124小時制:當前小時:11當前分鐘: ...
  • 骨架模塊,粗粗檢查了一下,沒什麼問題。 這裡說一下,這個庫的移植(其實大多是翻譯,因為很多代碼我根本不理解,但是不影響我翻譯就是了)是基於C#的,C#是垃圾回收機制,移到delphi的話,對象的創建、釋放就要很註意,不然很容易有記憶體泄露。 這邊檢查主要就是檢查對象的釋放,大多是TList和TObje ...
  • n皇後問題:輸入整數n, 要求n個國際象棋的皇後,擺在n*n的棋盤上,互相不能攻擊,輸出全部方案。 代碼如下: ...
  • 在python中,省去了變數聲明的過程,在引用變數時,往往一個簡單的賦值語句就同時完成了,聲明變數類型,變數定義和關聯的過程,那麼python的變數到底是怎樣完成定義的呢? 動態類型 python使用動態類型和他提供的多態性來提供python語言的簡潔靈活的基礎。在python中我們是不會聲明所使用 ...
  • 上一篇翻譯了圖集解析單元,今天把骨架解析也翻譯完了(二進位,.skel文件)。1000多行代碼,把我累的。。。 spine.core.bone, spine.core.slot, spine.core.skin, spine.core.attachment, spine.core.constrain ...
  • 漢諾塔問題古代有一個梵塔,塔內有三個座A、B、C,A座上有64個盤子,盤子大小不等,大的在下,小的在上(如圖)。有一個和尚想把這64個盤子從A座移到C座,但每次只能允許移動一個盤子,並且在移動過程中,3個座上的盤子始終保持大盤在下,小盤在上。在移動過程中可以利用B座,要求輸出移動的步驟 。 代碼如下 ...
  • spring + spring mvc + spring data jpa(hibernate)平臺下 groupPO類一對多關聯functionPO類, userPO多對多關聯functionPO,function一對一關聯paneldispalyPO 當我在groupPO類添加cascade = ...
  • 結果: 犯了一個小錯誤,輸出換行的時候用的是printf('\n'),改成雙引號就對了。附上printf() 的用法。 1,printf()函數是格式化輸出函數, 一般用於向標準輸出設備按規定格式輸出信息。 2,printf()函數的調用格式為: printf("<格式化字元串>", <參量表>)。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...