小白自學(xué)java,有什么書或者軟件推薦嗎?
我在最開始自學(xué)Java的時(shí)候看了兩本書《Java編程思想》和《head first Java》?!禞ava編程思想》號稱Java編程界的圣經(jīng),做Java開發(fā)的基本人手一本,這本書由淺入深講的特別詳細(xì),比較適合小白入門。這本書很厚,真的要讀完至少得花半年的時(shí)間,后來我就把它當(dāng)做我Java的字典,供查詢知識點(diǎn)使用。《head first Java》這是一本有趣的書,head first系列的書都是以比較詼諧幽默的方式講解知識,特別適合培養(yǎng)興趣。如果看完這兩本書,沒問題,你已經(jīng)進(jìn)入Java的圈子了??磿欢ㄒ恋米?,真的看進(jìn)去才能有效果??磿耐瑫r(shí),配合講解視頻,網(wǎng)上的視頻很多,我當(dāng)年看的馬士兵的視頻學(xué)習(xí),好多年過去了,仍然值得一看,當(dāng)然現(xiàn)在網(wǎng)上還有很多視頻可供學(xué)習(xí),去網(wǎng)易云課堂一搜便是。

動(dòng)手不?必須動(dòng)手!
編程說到底還是個(gè)動(dòng)手的活,所有程序都是程序猿大軍敲出來的。不動(dòng)手,不僅提高不了編程技能,簡直就是學(xué)不會編程的(不僅限于Java,所有的編程語言都是如此)。在看書和看視頻的時(shí)候,從hello world!開始,無論是視頻中的還是書中的每一個(gè)例子都要自己動(dòng)手敲一遍,不僅能加深記憶,更能促進(jìn)對知識點(diǎn)的理解。
博客將是你進(jìn)步的階梯
不止剛?cè)腴T的小白,就連有多年開發(fā)經(jīng)驗(yàn)的老年程序猿在某些知識點(diǎn)上都會存在困惑。看不懂也怎么辦?完全搞不明白怎么辦?周圍沒有大神請教怎么辦?互聯(lián)網(wǎng)給我們提供了豐富的資源,百度一下總是要得,技術(shù)大牛們會把自己的理解圖文并茂的以非常通熟易懂的方式展示在其博客中,堪稱簡單易懂。多讀技術(shù)博客,也是提升自己編程水平的一個(gè)捷徑,多關(guān)注技術(shù)大牛的博客。
計(jì)算機(jī)專業(yè)四把利劍補(bǔ)一下
數(shù)據(jù)庫,編程必不可少的技能。數(shù)據(jù)庫是什么?我會增刪改查就夠了吧。非也,數(shù)據(jù)庫的水感覺比編程要深一些。還是由淺入深的學(xué)一遍,增刪改查操作是最基本的要求。數(shù)據(jù)庫設(shè)計(jì)、數(shù)據(jù)庫的鎖、數(shù)據(jù)庫的索引、分布式數(shù)據(jù)庫、數(shù)據(jù)庫的優(yōu)化等,這些總是要了解的,應(yīng)該是要懂才行。數(shù)據(jù)庫將是你學(xué)習(xí)編程之路的必經(jīng)之路,必須得淌一遍。這里推薦一本書《MYSQL技術(shù)內(nèi)幕》。
計(jì)算機(jī)操作系統(tǒng),復(fù)雜的微機(jī)原理、匯編就算了,Windows操作系統(tǒng)、linux操作系統(tǒng)熟悉不?了解了系統(tǒng)架構(gòu),對今后的項(xiàng)目開發(fā)十分有益。不熟悉的話就得補(bǔ)一補(bǔ)。Linux的命令什么 cat、cd、list、tail、kill等必須要會,不然你怎么部署服務(wù)器。
數(shù)據(jù)結(jié)構(gòu),這個(gè)是四把利劍之中相對比較重要的一把劍了。如果你不懂這個(gè),那就別談學(xué)編程了,隊(duì)列、堆、棧、圖、樹等,這些都是要懂原理,還要能編程寫出來。太難的紅黑樹啥的就先放放吧。
計(jì)算機(jī)網(wǎng)絡(luò),互聯(lián)網(wǎng)網(wǎng)絡(luò)時(shí)代不懂網(wǎng)絡(luò),那還怎么寫程序。網(wǎng)絡(luò)協(xié)議必須得懂,面試的時(shí)候經(jīng)常問的,三次握手?TCP、UDP有啥不同?301是啥代號?這些基本的操作,對于小白來說可能看不太懂,沒關(guān)系,學(xué)習(xí)就會懂了。
經(jīng)歷了以上的洗禮,你將不再是小白,下面要提升技能了。

來看看底層到底是啥樣的
JVM(Java虛擬機(jī)),Java程序跑的起來全靠JVM的鼎力相助。如果不了解它,怎么能寫出高性能的Java程序呢。JVM呢,內(nèi)容還是不少的,體系結(jié)構(gòu)、內(nèi)存管理、垃圾回收等這些都是提升你編程水平的最好輔助。還有一個(gè)比較重要的內(nèi)容JVM調(diào)優(yōu),你得會調(diào)教它,它才會更聽話,更好的幫你干活。這里推薦一本書《深入理解JAVA虛擬機(jī)》,深入了解一下。
框架總要懂得
JAVA web的框架很多,主流的有三大件SSH框架、Mybatis框架等。其中Spring框架要跟它深入交流一下,畢竟用它的比較多。什么IOC、AOP 面試官都喜歡問它們。要是答不上來,好尷尬沒法勝任工作了。推薦一本書,便于了解內(nèi)幕----《Spring 技術(shù)內(nèi)幕》。
大數(shù)據(jù)時(shí)代,大數(shù)據(jù)算法最好懂一些
讀研的時(shí)候,看過兩本書,一本《Spark 快速大數(shù)據(jù)分析》,一本《Hadoop權(quán)威指南》。工作之后,這方面用的比較少。如果不打算從事大數(shù)據(jù)方面的工作,了解一下就可以啦。
算法,算法,還是算法
算法乃程序之靈魂,一個(gè)好的算法可以達(dá)到事半功倍的效果。如果你曾經(jīng)疑惑為什么今日頭條能給我精準(zhǔn)推薦我想看的內(nèi)容?為什么馬云爸爸知道我最近在淘寶上想買什么?為什么天貓能抗住雙十一的數(shù)據(jù)洪流?為什么我的快遞先送到某地再送到我這里?這些問題的答案很簡單兩個(gè)字“算法”。在我們這算法工程師的工資我只能仰視,學(xué)算法準(zhǔn)沒錯(cuò)。推薦兩本書《編程珠璣》,《算法之美》。看完之后,我相信你會來一句這么神奇,竟然還有這種操作。
項(xiàng)目實(shí)踐
到了檢驗(yàn)學(xué)習(xí)成果的階段了,怎么檢驗(yàn),還是動(dòng)手。動(dòng)手做一些小的項(xiàng)目,把所學(xué)到的知識點(diǎn)融合運(yùn)用一下,找不足,查缺漏,而后繼續(xù)學(xué)習(xí),繼續(xù)提高。
根據(jù)我的學(xué)習(xí)路子,總結(jié)如上,學(xué)習(xí)不是一蹴而就的,而是一個(gè)積累提高的過程。雖然我千把字就說完了,但是真要學(xué)起來是需要時(shí)間和精力的。還有一定要堅(jiān)持住,既然選擇了這個(gè)方向,那就不問前路,只管努力。

