mysql基礎知識學習之路 說說你們的JAVA學習歷程是怎樣的?
說說你們的JAVA學習歷程是怎樣的?作為一個工作了7年的java老程序員,我學習java的歷程是這樣的。希望對你有幫助。首先,要學習JDK的api,首先要學會使用它。對于一個初學Java的程序員來說,
說說你們的JAVA學習歷程是怎樣的?
作為一個工作了7年的java老程序員,我學習java的歷程是這樣的。希望對你有幫助。
首先,要學習JDK的api,首先要學會使用它。對于一個初學Java的程序員來說,首先要學會使用JDK提供的api,這是特別重要和常用的,比如string api,collection api,IO api,thread api等等。實踐的運用是打好Java基礎的必由之路,然后每個api都要開始寫demo,只有實踐才能有很好的理解。
二、學習web相關內(nèi)容一般是用Java語言開發(fā)企業(yè)級應用,所以web相關知識要有一定的儲備。如果你想提供servlet,過濾器,器等。Java提供的,你需要真正明白其中的道理。機架都封裝在這些周圍。springmvc的核心是servlet:DispatcherServlet,struts的核心是過濾器。
三、學習常用框架在實際開發(fā)工作中,重點是提高開發(fā)效率。如果每一個內(nèi)容都需要自己去實現(xiàn),那么開發(fā)效率就大大降低了,所以需要學會使用常用的框架,比如spring,springmvc,m。Ybatis、struts、hibernate等基礎框架需要學習使用,這樣會節(jié)省我們很多時間。
第四,回歸基礎,研究JDK和各種框架的源代碼。當你在開發(fā)中對Java駕輕就熟的時候,如果你想提高我們對其本質(zhì)的理解,我們需要學習JDK的源代碼,從而拓展我們對知識深度的理解。一些程序員說我可以全部使用它,而且需要看源代碼嗎?這是非常必要的。
本文只是粗略的講解一下Java的學習過程。想跟老程序員學Java,請關注我的頭條號。我會從Java源代碼,各種框架源代碼,并發(fā)開發(fā),以文章的形式來寫。
如何系統(tǒng)的學習JAVA?
java的整體生態(tài)和積累真的太大了。從1995年到現(xiàn)在20多年的積累,幾乎涉及了計算機軟硬件的方方面面。目前,我認為主人 s精通是指jdk本身和一些必要的數(shù)據(jù)結(jié)構,以及通用框架和面向?qū)ο蟮幕舅枷搿?/p>
從11月初開始,我一直在學習java相關的知識。也有很多彎路。根據(jù)one s自身的積累,作者給出了一條自己認為合理的,有一定深度的學習路線。大致可以分為以下幾個階段。
1.第一,要盡可能打好基礎數(shù)據(jù)結(jié)構和簡單算法的基礎。
可以快速學習一些簡單的小系統(tǒng),滿足自己對軟件學習的興趣和最初的成就感。但是一定要回去認真夯實數(shù)據(jù)結(jié)構基礎和簡單算法。像這樣的書就可以了。
2.熟練使用java類庫和Java第三方工具框架。
學習使用java語法,嘗試理解Java語法設計的邏輯。掌握jdk類庫本身,以及各種第三方類庫工具包和第三方框架的簡單使用。在這里學習的時候,我推薦閱讀《設計模式》、《代碼整潔之道》、《spring源碼解讀》、《Spring揭秘》之類的書籍。
3.了解和學習jdk類庫本身的應用源代碼實現(xiàn)以及主流第三方框架的源代碼和架構設計。
比如jdk本身的數(shù)據(jù)結(jié)構,比如二叉樹,紅黑樹,treemap,異步包的包源代碼,比如unsafe,同步阻塞隊列,call-future,以及基于線程的類的實現(xiàn),各個類庫設計的結(jié)構和設計模式。徹底理解第三方框架的設計規(guī)劃、理解、學習第三方框架的核心源代碼。
當然,這可能涉及其他事務、分布式協(xié)議等。,此處不再展開。這個過程不會一蹴而就,可能需要大量的時間和技術洞察力。當然,在這個過程中可以理解《設計模式》、《代碼整潔之道》、《spring源碼解讀與設計詳析》、《Spring揭秘》之類的書。
4.了解jdk和jre作為jvm的原理和實現(xiàn)。
這里推薦讀葛老師 s 《實戰(zhàn)java虛擬機》,比較實用。很好理解。
首先可以從jdk自帶的工具學習入手。
例如:日本聯(lián)合技術統(tǒng)計署、日本聯(lián)合分析計劃、日本聯(lián)合戰(zhàn)略計劃、日本聯(lián)合戰(zhàn)略計劃、HSDB......................................................................................................................................................當然,作為初步的學習,我們只需要了解幾個常用的命令,知道它們代表什么。畢竟第三方監(jiān)控工具,包括jdk本身,也提供了三種可視化監(jiān)控。
其次,了解jvm的運行和加載原理,了解類文件的結(jié)構。
在這個過程中,我們可以使用之前會用到的監(jiān)控工具來了解jvm加載的基本原理。可以參考jvm標準的官方版本,學習理解類文件。在此基礎上,我們可以使用classpy等工具來方便我們直接讀取類文件。也您可以嘗試支持類字節(jié)碼級別的單步調(diào)試工具。你甚至可以嘗試使用jvm匯編編碼工具。
接下來,了解jvm垃圾收集機制的發(fā)展歷史,以及各種主流垃圾收集器的工作原理。
這個過程其實很復雜。垃圾收集器有各種串行,并行,新聲代/換和老齡,還有回收警戒線,滿觸發(fā)條件,各種基本參數(shù)和很少用的超參數(shù),還有G1 H區(qū),ZGC等等。。。幸運的是,GC不屬于官方jvm規(guī)范的一部分。
然后,做一些jvm的練習和實戰(zhàn)。
比如jvm常見故障排查和故障總結(jié)、性能調(diào)優(yōu)、熱加載、類字節(jié)碼的動態(tài)操作、asm等。
最后,可以嘗試實現(xiàn)自己的jvm。(當然這一步對于很多同學來說并不是必須的。)
這里我推薦幾本書,也是徹底理解jvm規(guī)范的學習路徑。最好自己實現(xiàn)垃圾收集器。
周老師;;s 《深入理解Java虛擬機》。
接下來是《深入嵌入式java虛擬機》和支持源代碼。這個cldc的jvm源代碼只有1M多。目前仍可在甲骨文官網(wǎng)下載。是一個非常精簡的jvm實現(xiàn)。
接下來,你可以閱讀《自己動手寫java 虛擬機》。這本書的jvm實現(xiàn)是用go語言寫的。當然很多都不是很合理。但是它們基本上遵循jvm規(guī)范。
這時候可以看看github上各種JVM的開源實現(xiàn)。有go,scalajvm,javainjava,ajvm,python-jvm,lua,還有各種版本的不同jvm實現(xiàn)。
當然,這些實現(xiàn)只是基本原則。
推薦你看《實戰(zhàn)hotspot》豹子膽書,關注高級語言虛擬機的圈子。
當然,關于垃圾回收的書很少,下面是垃圾回收的經(jīng)典書籍《The Garbage Collection Cookbook》。其實如果你對新的垃圾收集算法感興趣,可以去知乎搜索相關論文和GC算法的開源演示。
當然,我的建議只是針對Java本身。
很想學java生態(tài)學,軟件工程,計算機網(wǎng)絡,大數(shù)據(jù)基礎,mahuot,sparklib,分布式搜索架構,各種消息中間件,緩存中間件,數(shù)據(jù)庫,DNS/CDN。。。。。這些都是互聯(lián)網(wǎng)應用,避免不可避免的事情。
我只能建議我精通一般知識,精通研究方向和相關的生態(tài)學理解。
因為問題是針對java本身的。我贏了。;其他具體方向不展開。描述了大致的技術方向,沒有其他答案詳細討論語法糖的水平。希望對主有幫助。
如有問題,歡迎關注回復,與我探討。謝謝你。