高效學習Java
文章推薦指數: 80 %
從頭看,感覺就像是在看一本新書,完全沒有印象。
看似自己學了不少,其實真正掌握到的並不多。
學習不是你看得書越多,讀過的文章越多你就學的越好,而是看你究竟掌握了多了。
那麼,怎麼才能有效的去學習一門新的技術呢?我總結了以下幾個步驟
。
4.1 學習的步驟
-
確認學習目標
首先,你需要確認你要學什麼,切記不要三心二意。
學習最好一個時間段專一的去研究一個知識點,不要今天學 python 明天又想學 java 了。
做什麼事都有有一個目標,不然容易成為無頭蒼蠅。
目標往大了說,可以是成為某一個領域的大牛,往小了說可以是今天的一個學習計劃。
hr 面的時候,一個常見的問題是:你的職業規劃是什麼。
一個優秀的人,必然會有一個屬於自己的職業規劃,知道自己在什麼時期要做什麼,知道自己每個時期要完成什麼樣的目標。
學習也一樣,當你有了一個清晰的目標的時候,你才不會迷茫,才不會不知道做什麼好。
-
制定學習計劃
上面也提到了這點,計劃可能趕不上變化,也許今天正好有別的事情導致今天的計劃沒有完成,但是至少大方向是有的,你不會不知所措,不知道最近應該做什麼,這才是計劃的根本價值。
所以,不要擔心計劃完不成,這是給你自己學,一天的計劃完不成又能怎樣呢?
-
自己找資料開始學習
請記住,不要當一個徹頭徹尾的伸手黨。
因為輕易得到的東西你是不會珍惜的。
並且,你不要祈禱你這一輩子所有學習需要的資料都有人會提供給你,自己找資料本身就是自學能力的一部分。
當然,我並不是說不讓大家去群里問,畢竟能問到也是一種本事,但是你一定要有自己的資料來源,無論是博客還是書或者是官方資料。
-
腦圖與流程圖
學習從來都不是只看看書就能學會的,自己構建相關知識腦圖和相關步驟的流程圖是非常有必要並且非常有效果的。
比如你要學習 java,你可以先從網上找一找別人畫的腦圖,對 java 有一個大致的了解,每學一個小的知識點,就自己繪製一個該知識點的腦圖,學完之後,自己再畫一個整個 java 體系的腦圖,這樣你會對 java 非常的熟悉。
比如你學
GC,光看書或者博客是很難記住那些流程的,這個時候,你自己畫一個流程圖,我保證你對這個過程會很清晰。
記住:就算是有現成的圖,你也應該自己畫一個,自己畫和看別人的是完全不同的兩個層次。
-
編碼
上面的那些,都是掌握理論知識的步驟,是騾子是馬還得拉出來溜溜。
編碼才是重中之重,就算你能把一個知識點吹得天花亂墜,但是一句代碼不會寫依然沒有什麼用。
-
筆記
好記性不如爛筆頭,學完的知識,然後記錄下來,自己總結一遍,收穫有多大你們試試就知道了。
-
回顧
如果你學的東西,很久都沒用,突然有一天你又要撿起它,你會發現,你之前做的努力,太特麼值了,你有資料!有腦圖!有流程圖!還有筆記!分分鐘就記起來了。
-
自己寫一個有實際應用的 demo
如果有必要,可以寫一個有趣的應用,不是簡單的範例。
這個過程,其實是很耗時的,學生建議按照這個流程來,因為學生的時間大把大把的,時間很少的就根據自身情況取捨吧。
腦圖和流程圖我覺得收益很高。
上面說到,有的時候看完一本書再從頭看,感覺像是在看一本新書。
所以我後面看書的時候,也會做相應的筆記,看的時候會在書上勾勾畫畫,給一些重要的地方打上標記,看完之後,合上書,用記事本把自己剛剛學的的東西寫一下(大綱就行),然後再和書上比對一下做一些修改。
當我看完一本書以後,對應的,我還會有一個筆記,以後我甚至完全可以看自己的筆記而不需要再看書了。
看 + 回憶 +
記錄,可以讓你充分的掌握一本書的核心。
步驟大體上是這樣,但是也千萬別死板的都按照這個過程來,畢竟還是很耗時的。
下面分享一些獲取資料的途徑。
4.2 獲取資料的途徑和一些工具
-
找資料的途徑
百度/google:先看看他都能幹嘛
官網:官網的文檔一般足夠了
相關書籍:京東和噹噹經常有活動的
社區:社區也會有人做教程的,還會有一些個人項目可以參考
github:可以在 github 看看某個知識點的 awesome
各大博客以及知名博主的個人博客:看看一些高質量博客也不錯
微信公眾號:試著找一下相關的微信,當然,微信上的文章很多都來自於博客,但是微信的好處就是,你不用自己找,別人已經幫你找好了,缺點就是,量太少
知乎專欄:和博客差不多
一些視頻或者 wiki 教程:現在有很多教學視頻的網站,有收費的也有免費的。
常見的比如慕課網,菜鳥教程,網易雲課堂,易百教程等。
一些培訓機構的視頻,比如CSDN的也很不錯~
一些工具
-
teambition | 一個團隊管理軟體,當然,個人用也是蠻好的,有各個平台的客戶端。
我用它來安排自己的計劃。 -
百度腦圖 | 在線腦圖,免費無限容量。
-
xmind
-
processon | 也是在線的,可以畫流程圖和腦圖。
免費的容量有限。 -
Visio | 繪製各種圖。
-
番茄土豆 | 番茄工作法的管理工具。
-
coding | 代碼管理網站,類似於 github,是國內產品,速度會相對快一點。
-
我覺得 github 可以當做一個個人品牌來經營,所以最好只放一些很好的項目,一些無關緊要的代碼放在 coding 就好了,開源中國的碼雲也行。
記筆記的一些工具
-
gitbook | 可以直接生成電子書的一個開源工具,不知道的可以了解一下,我現在在用。
-
簡書 | 因為簡書可以創建文集,就和文件夾似的,用來做筆記也不錯。
-
有道雲筆記 | 也挺好的(我喜歡用 markdown。
有道雲支持) -
印象筆記
-
各大博客
-
自己搭博客
-
OneNote
-
比較推薦用 markdown 來做筆記,markdown 常用的語法也就五六個,很好記,也很好用。
五、影響學習的幾個因素
5.1 自己的心態
心態其實是很關鍵的。
我們的周圍總會發生一些事情,有的時候這些事情會影響到自己的情緒和心情。
這個時候如果你自己調節能力比較差的話,就可能會什麼都不想做,不想工作,不想學習。
然後頹廢好幾天。
我想說的是,一個優秀的人一定得是一個樂觀的人,不執著於得失,不輕易被影響,積極的去面對生活中所發生的一切。
5.2 外物的影響
我主要說的是手機。
現在手機已經成為人生活中不可或缺的東西了,它帶給我們方便,但是同時,它也占據了我們大量的時間。
我不知道大家平時會不會時不時的打開手機,大部分情況下它和之前毫無變化,但是你還是忍不住的打開它瞅幾眼;或者有幾個群在不停的閒聊,然後你也忍不住的參與進去,不知不覺時間就溜走了。
不要成為被手機支配的人,所以,當你工作或者學習的時候,把手機靜音,放在一邊,不去看它,這樣你會節省出很多的時間。
除了手機,另一個外物的影響周圍的環境。
如果你能在一個嘈雜的環境中學習,那就很棒了,如果不能,記得給自己找一個舒適的學習環境。
六、其他想說的
6.1 關於大學生的學習
我知道,預定了這次分享的大部分其實都是學生,還有一些剛剛入學的新生。
我想說的是,玩可以,但是一定要記得,你來上學是為了學習知識的,千萬不要本末倒置了。
我現在最後悔的一件事就是大一的時候沒有好好得去學習,不要變成下一個我,
大學學計算機其實大部分時間還是得看你自己,老師上課講的東西很重要,但是那些都是基礎中的基礎,憑藉這些並不能夠讓你找到一份滿意的工作,所以你還需要自己去學很多很多的東西。
我簡單的歸納了一下大學幾年要做的事,你們可以參考一下(假設你以後的方向是 java)。
-
大一
這個時候,剛剛接觸計算機,你可能什麼都不懂,聽課也是一臉懵逼,什麼 for 循環,if 語句,噁心的不得了。
這個時候你要做的不是抱怨,而是去努力的尋找樂趣。
因為你已經入了這個坑了,除非你轉專業,否則你是擺脫不了它的。
怎麼尋找樂趣呢?我覺得,編程最大的魅力,就是當你成功的時候的那種發自內心的成就感。
不知道大家還記不記得第一次寫 helloworld 的時候,各種出錯——分號寫成中文的了,大括號少了一個——但是最後終於成功的輸出了結果的那種喜悅。
對於一個剛剛接觸編程的人,我覺得,寫遊戲是最容易獲得成就感的。
這裡給大家推薦一個之乎專欄—做遊戲,學編程(C 語言)。
專欄的作者,通過讓一些學生做遊戲來學習 c 語言。
我覺得這個一個很好的學習方式,即有挑戰性,又可以培養出成就感。
大學的入門語言差不多都是 c 或者 c++吧。
。
如果不是,你也可以參考一下專欄里的小遊戲,然後用你自己的語言試著寫一下。
但是,我要重點說的是。
寫遊戲其實是一件很有挑戰性的事。
有的人也許會在一開始就陷入困境,不知道如何繼續下去。
這個時候,如果你能堅持下去,多問問老師,學長,百度,google,把問題解決,那你以後肯定會很優秀。
如果你放棄了,不要灰心,因為並不是所有的人都適合通過遊戲來培養興趣,你也可以通過做一些 acm 的題來提高自己。
每個學校應該都有相關的網站吧。
如果沒有的話,可以去浙大的看看。
或者
leetcode 或者牛客網也可以。
做一些自己能力範圍之內的題,也可以提高自己的興趣。
當然,這些只是針對一部分同學,畢竟很多人其實對代碼無感。
。
根本耐不下性子去寫代碼。
對於這部分同學,我建議去學習 html 和 css。
因為它們入門超級簡單,是用來寫網頁的。
沒有 c 語音那麼複雜的邏輯,幾個標籤,幾個 css 就可以設計出一個精美的網頁,我想這也會很有成就感吧。
大一的這一年,是打基礎,培養興趣的一年。
不需要你有多麼大的成就,寫出多麼厲害的程序。
只要你能夠培養出興趣,並且願意在編程這條路上走下去,那麼你的任務就算完成了。
所以,這一年,你要做的,就是培養興趣,讓自己愛上編程(最基本的要求)。
-
大二
假設你現在已經喜歡上編程了。
但是一般大一隻會學一門語言(默認 c/c++,不要問我為什麼,因為我就是這麼學的。
。
)。
所以你可能只是寫了幾個小遊戲,寫了個小管理系統或者刷了一些題。
你不滿足於現狀,你想做一些更有意思,更好的東西。
同時,這個時候,學校應該也開了 java 課了。
(假設你要學 java)。
敲黑板:大二要做的,是拓寬你的廣度!!!廣度!!
首先,你要好好學 java。
可能學校的進度是一個學期。
但是我建議大家用一個月的時間學完。
因為有了 c 和 c++ 的基礎,java 其實很容易就學會了(入門級學會)。
更好的情況是,你在大一結束的那個暑假,就抽時間先搞定 java 基礎。
這樣當開學的時候,別人還沒接觸 java,而你可以驕傲的和別人說,你都學完了。
成就感滿滿的。
那麼,怎麼學 java 基礎呢?我的建議是視頻為主,入門書為輔,自己跟著寫代碼。
看書其實是一件很枯燥的事情,如果你初學 java,只是看書的話可能配置一個環境變量就要搞好久,這會打擊你的自信心。
不要小看配置環境變量這個過程。
我記得當時兩天配不好環境變量最後讓我幫忙的人可不少。
但是視頻就好多了,因為老師會親自演示給你看,你會少走很多彎路,並且也比書有趣多了。
書為輔,是因為老師不可能記得所有的知識,總會有疏漏的地方或者講得不太好的地方,這個時候 書就可以派上用場了。
看完一節課的視頻,然後關掉視頻,自己寫一遍相應的代碼,出錯了自己先試試能不能解決,是在不能的話,再看一遍視頻,直到跑通。
然後去看看書里對這部分知識的講解,加深印象,查漏補缺。
這裡的重點是,一定要自己寫一遍代碼。
你看的時候覺得自己會了,可是大部分時間,你一寫全是錯誤。
所以一定要自己寫。
並且,在你初學的時候,不要使用集成開發環境(eclipse idea NetBeans 等),就使用 notepad++ 這種類型的編輯器就可以。
這套流程最大的缺點就是耗時比較久,但是效果是很好的。
java 里有很多都和 c/c++ 一樣的,比如一些語句什麼的,如果你已經掌握的很好了,直接忽略掉這些也是可以的,這就看你自己的情況了。
推薦一些學習資料。
視頻: 畢向東,馬士兵,韓順平的視頻都挺好的。
口碑也都不錯,不信可以自己去百度一下。
我看的畢向東的,講的挺有趣的。
但是每個人口味不一樣,你可以多下載幾套,都聽一下,然後選一套自己喜歡的。
書籍:入門推薦《head first java》。
head first 是一個系列,這系列書最大的特點是圖文並茂和案例驅動,讓讀書的過程不那麼的枯燥。
《瘋狂 java 講義》據說也挺不錯的,但是我沒有看過,不做評價。
編輯器推薦:notepad++ 免費,小巧。
初學者夠用了,直接百度下載就好。
sublime , vs code, atom 也可以,挑一個自己喜歡的就好。
一個月,幹掉 java 基礎!這是你大二首先要做的事。
前面說過,這一年,你要做的是拓寬自己的廣度。
什麼意思呢?就是說,你要儘可能的去多接觸一些技術,多學一些知識,因為你以後很難再找到這麼多你可以自由支配的時間了。
java 基礎搞定。
接下來,學習 java web。
你要知道,優秀的人永遠都走在大部隊的前面。
不要學校安排什麼你就學什麼,學校不安排你就不學。
事實上有的老師講的不是很好,大學裡真正有用的知識,都是自己學的。
所以,接下來要做的是自學 java web。
依舊是視頻+書+寫代碼。
java web 更重要的是實踐。
我當時學的時候的書就是學校的教材。
。
我是基本沒看書的。
就跟著視頻一步一步來,有問題就 google。
在大二上學期結束的時候,完成 javaweb 的學習。
因為需要和前台做一些交互,所以免不了要學一點前端的知識(html + css + js)。
這個過程中,遇到的問題千奇百怪,我記得我當時一個小問題 google 了一天都沒能解決,最後才知道是 jar 包版本的問題。
所以,遇到問題是很正常的,遇到很難解決的問題也是很正常的,只要你肯問,肯查總能解決。
好了,你現在已經有了自己寫一個小網站的能力了(丑點無所謂)。
接下來去參加比賽!進實驗室!做項目!沒有什麼比做一個項目更能提高水平了。
所以,你大二下的任務就是儘可能的去做項目,依次來鞏固你學的技術。
可以參加一些比賽,或者加入實驗室,或者尋求老師的幫助。
總之,你要做項目!
除此之外,你需要繼續擴展你的視野。
前端(不是你之前學的簡單的 html),python,android,ios,cocos。
。
。
只要是你感興趣的,就去接觸一下,不需要你學的多厲害,也不需要你完全掌握。
只是為了讓你的視野更加開闊,知道原來還有這麼多技術,原來還可以這樣。
大二的一年,你需要學會 java 和 javaweb,並且至少做一個拿得出手的項目。
同時,儘可能的提高你的視野。
當你覺得你一無所知,你還是個菜鳥,這一年的任務就完成了。
-
大三
這是很關鍵的一年,因為這一年你將決定是否考研。
考研的我就不管了。
。
接下來是針對準備一畢業就工作的同學的。
敲黑板:這一年,你要做的,是深度!
通過大二一年的努力,你的廣度已經足夠了。
並且在這個過程中,你應該也找到了自己最感興趣的方向,如果沒有,那就繼續研究 java 吧,總比你不知道學什麼好。
無論怎樣,這一年,你的重心都應該放在一條路上。
以 java 為例。
首先,鞏固基礎!
這是最重要的。
怎麼做呢?進階書籍+看博客+寫總結+寫開源項目。
這個階段的視頻不是很多,也沒有必要了。
直接看書+看博客+開源項目,最後再總結就夠了。
我舉個例子,比如,我現在要學設計模式,我買一本《head first 設計模式》然後一個模式一個模式的學,每學一個模式,看一遍書,然後 google
一下這個模式,看幾篇高質量博客,結合書和博客自己寫一個總結,甚至可以自己寫一個博客專欄,讓後來者也能享受到你的學習成果。
同時,可以好好整理一下自己學習過程中的代碼,放到 github 上,最好可以試著封裝一下這個模式,讓其他人更方便的使用這個模式。
當你收穫一個又一個的 star 時,你會非常有成就感的。
上面是學習的大致方式。
學完了,怎麼檢查自己有沒有學好呢?給大家提供一個網站牛客網,你打開就知道怎麼用了。
基礎都包括什麼呢:
-
面向對象的思想
-
java 常用類
-
集合框架
-
io
-
nio
-
多線程並發
-
設計模式
-
算法
-
jvm
-
計算機網絡
-
spring
-
orm 框架
一些書籍的推薦
初級:
《java 從入門到精通》沒看過,但是買的人很多,有視頻。
《瘋狂 java 講義》沒看過,買的人也不少。
《head first java》head first 系列都蠻好的,看起來不乏味。
中級:
《java 編程思想》java 程式設計師必讀書籍,厚厚的,讓你有種看不完的感覺,但是認真學了收穫會很大
《java 核心技術卷 1 2》推薦買第十版,最新的。
也是講基礎的,雖然很囉嗦,但是正是因為厚,寫得多,所以你才能理解的更透徹。
《head first 設計模式》設計模式經典之一,有趣的案例驅動,看起來很有意思。
《設計模式之禪》國內大牛力作,通俗易懂,某些設計模式的實現和《headfirst 設計模式》有區別,可以兩本一起看。
《大話設計模式》沒看過,也挺有名的,不做評價。
《java 並發編程實戰》多線程好書,不光教你怎麼用,還告訴你為什麼要這麼用。
高級:
《effevtive java》必看書籍。
講了 70+如何寫好 java 代碼的例子。
看了這些你會覺得以前寫的代碼都是問題。
《重構 改善代碼既有的設計》必看書籍。
重構你之前的代碼能讓你有一個很高的進步。
《深入理解 java 虛擬機》必看,不解釋。
《java8 實戰》java9 都要出來了,你 java8 還不會說不過去的。
。
《java 性能權威指南》學完虛擬機再看它,深奧的一比。
你要知道,bat 等大廠每年會有兩次招聘,一次春招,在每年 3-5 月,一次秋招 8-10 月。
春招是招實習生的,秋招是招正式員工。
所以,如果你想進這些公司,就要提前做好準備。
至少,上面的那些基礎你是必須得都掌握的。
大三這一年,要讓你的深度足夠,有能力的可以繼續延伸自己的廣度。
這個階段,最忌諱的是朝三暮四。
早上看 python,下午發現 go 很有趣,看了一下午 go,晚上聽說 R 很厲害,又去研究 R 了。
千萬不要這樣!不要成為各個領域的雜牌軍,你現在要做的,是在一個方向有一些建樹。
-
大四
去實習
實習的話我能給的建議不多,雖然我的實習經歷還蠻多的。
但是畢竟不是混跡職場多年的人,就不亂說了。
找工作,待遇,環境挺重要的。
但是我覺得,這個公司的技術棧,行業背景也是很重要的。
我實習的三家公司是三個不同的行業,所以我知道,不同的行業差距還是很大的。
有的公司招聘的時候會要求你在這個行業有過經驗啥的。
所以,行業背景還是有必要注意一下的。
同時,為了自己為了的前途,一定要問清楚公司的技術棧!
當然:作為一個有抱負的人,畢業設計一定要向著優秀發展!並且依舊要不斷提高自己的水平。
這個時候,學什麼可能得根據公司的需求來了,但是,永遠不要停止學習!
簡而言之,這四年你應該這樣過: 大一:培養興趣 大二:橫向發展,廣度優先 大三:縱向發展,深度優先 大四:選好方向,不斷提高自己
6.2 一點感悟
很多時候,一個好的老師或者是指導你的人會讓你受益終身,儘可能多的去認識這樣的人。
謙虛和樂觀是受用一生的財富。
多去認識更優秀的人,而不是在自己的小圈子裡沾沾自喜。
真正優秀的人不是埋頭苦讀不問世事,他們也會打遊戲,也會看劇,也會追番。
但是,他們會合理的安排時間。