黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學(xué)習(xí)攻略 架構(gòu)師教你如何閱讀Java源碼!

架構(gòu)師教你如何閱讀Java源碼!

更新時(shí)間:2019-09-21 09:00:00 來源:動(dòng)力節(jié)點(diǎn) 瀏覽2508次



  1、技術(shù)基礎(chǔ)


  在閱讀源碼之前,我們要有一定程度的技術(shù)基礎(chǔ)的支持。


  假如你從來都沒有學(xué)過Java,也沒有其它編程語言的基礎(chǔ),上來就啃《CoreJava》,那樣是很難有收獲的,尤其是《深入Java虛擬機(jī)》這類書,或許別人覺得好,但是未必適合現(xiàn)在的你。


  比如設(shè)計(jì)模式,許多Java源碼當(dāng)中都會(huì)涉及到。再比如閱讀Spring源碼的時(shí)候,勢必要先對(duì)IOC,AOP,Java動(dòng)態(tài)代理等知識(shí)點(diǎn)有所了解。


  2、強(qiáng)烈的求知欲


  強(qiáng)烈的求知欲是閱讀源碼的核心動(dòng)力!


  大多數(shù)程序員的學(xué)習(xí)態(tài)度分為如下幾個(gè)層次:


  完成自己的項(xiàng)目就可以了,遇到不懂的地方就百度一下。


  不僅做好項(xiàng)目,還會(huì)去閱讀一些和項(xiàng)目有關(guān)的書籍。


  除了閱讀和項(xiàng)目相關(guān)的書籍之外,還會(huì)閱讀一些IT行業(yè)相關(guān)的書籍。


  平時(shí)會(huì)經(jīng)常逛逛GitHub,找一些開源項(xiàng)目看看。


  閱讀基礎(chǔ)框架、J2EE規(guī)范、源碼。


  大多數(shù)程序員的層次都是在第一層,到第五層的人就需要有強(qiáng)烈的求知欲了。


image.png

  3、足夠的耐心


  通過閱讀源碼我們可以學(xué)習(xí)大佬的設(shè)計(jì)思路,技巧。還可以把我們一些零碎的知識(shí)點(diǎn)整合起來,從而融會(huì)貫通。總之閱讀源碼的好處多多,想必大家也清楚。


  但是真的把那么龐大復(fù)雜的代碼放到你的眼前時(shí),肯定會(huì)在閱讀的過程中卡住,就如同陷入了一個(gè)巨大的迷宮,如果想要在這個(gè)巨大的迷宮中找到一條出路,那就需要把整個(gè)迷宮的整體結(jié)構(gòu)弄清楚,比如:API結(jié)構(gòu)、框架的設(shè)計(jì)圖。而且還有理解它的核心思想,確實(shí)很不容易。


  剛開始閱讀源碼的時(shí)候肯定會(huì)很痛苦,所以,沒有足夠的耐心是萬萬不行的。


  如何讀Java源碼


  團(tuán)長也是經(jīng)歷過閱讀源碼種種痛苦的人,算是有一些成功的經(jīng)驗(yàn)吧,今天來給大家分享一下。


  如果你已經(jīng)有了一年左右的Java開發(fā)經(jīng)驗(yàn)的話,那么你就有閱讀Java源碼的技術(shù)基礎(chǔ)了。


  1、建議從JDK源碼開始讀起,這個(gè)直接和eclipse集成,不需要任何配置。


  可以從JDK的工具包開始,也就是我們學(xué)的《數(shù)據(jù)結(jié)構(gòu)和算法》Java版,如List接口和ArrayList、LinkedList實(shí)現(xiàn),HashMap和TreeMap等。這些數(shù)據(jù)結(jié)構(gòu)里也涉及到排序等算法,一舉兩得。


  面試時(shí),考官總喜歡問ArrayList和Vector的區(qū)別,你花10分鐘讀讀源碼,估計(jì)一輩子都忘不了。


  然后是core包,也就是String、StringBuffer等。如果你有一定的JavaIO基礎(chǔ),那么不妨讀讀FileReader等類。


  建議大家看看《JavaInANutshell》,里面有整個(gè)JavaIO的架構(gòu)圖。JavaIO類庫,如果不理解其各接口和繼承關(guān)系,則閱讀始終是一頭霧水。


  JavaIO包,我認(rèn)為是對(duì)繼承和接口運(yùn)用得最優(yōu)雅的案例。如果你將來做架構(gòu)師,你一定會(huì)經(jīng)常和它打交道,如項(xiàng)目中部署和配置相關(guān)的核心類開發(fā)。


  讀這些源碼時(shí),只需要讀懂一些核心類即可,如和ArrayList類似的二三十個(gè)類,對(duì)于每一個(gè)類,也不一定要每個(gè)方法都讀懂。像String有些方法已經(jīng)到虛擬機(jī)層了(native方法),如hashCode方法。


  當(dāng)然,如果有興趣,可以對(duì)照看看JRockit的源碼,同一套API,兩種實(shí)現(xiàn),很有意思的。


  如果你再想鉆的話,不妨看看針對(duì)虛擬機(jī)的那套代碼,如SystemClassLoader的原理,它不在JDK包里,JDK是基于它的。JDK的源碼Zip包只有10來M,它像是有50來M,Sun公司有下載的,不過很隱秘。我曾經(jīng)為自己找到、讀過它很興奮了一陣。


  2、JavaWeb項(xiàng)目源碼閱讀


  步驟:表結(jié)構(gòu)→web.xml→mvc→db→springioc→log→代碼


  ①先了解項(xiàng)目數(shù)據(jù)庫的表結(jié)構(gòu),這個(gè)方面是最容易忘記的,有時(shí)候我們只顧著看每一個(gè)方法是怎么進(jìn)行的,卻沒有去了解數(shù)據(jù)庫之間的主外鍵關(guān)聯(lián)。其實(shí)如果先了解數(shù)據(jù)庫表結(jié)構(gòu),再去看一個(gè)方法的實(shí)現(xiàn)會(huì)更加容易。


  ②然后需要過一遍web.xml,知道項(xiàng)目中用到了什么攔截器,監(jiān)聽器,過濾器,擁有哪些配置文件。如果是攔截器,一般負(fù)責(zé)過濾請求,進(jìn)行AOP等;如果是監(jiān)聽器,可能是定時(shí)任務(wù),初始化任務(wù);配置文件有如使用了spring后的讀取mvc相關(guān),db相關(guān),service相關(guān),aop相關(guān)的文件。


  ③查看攔截器,監(jiān)聽器代碼,知道攔截了什么請求,這個(gè)類完成了怎樣的工作。有的人就是因?yàn)槿鄙倭诉@一步,自己寫了一個(gè)action,配置文件也沒有寫錯(cuò),但是卻怎么調(diào)試也無法進(jìn)入這個(gè)action,直到別人告訴他,請求被攔截了。


  ④接下來,看配置文件,首先一定是mvc相關(guān)的,如springmvc中,要請求哪些請求是靜態(tài)資源,使用了哪些view策略,controller注解放在哪個(gè)包下等。然后是db相關(guān)配置文件,看使用了什么數(shù)據(jù)庫,使用了什么orm框架,是否開啟了二級(jí)緩存,使用哪種產(chǎn)品作為二級(jí)緩存,事務(wù)管理的處理,需要掃描的實(shí)體類放在什么位置。最后是spring核心的ioc功能相關(guān)的配置文件,知道接口與具體類的注入大致是怎樣的。當(dāng)然還有一些如apectj等的配置文件,也是在這個(gè)步驟中完成。


  ⑤log相關(guān)文件,日志的各個(gè)級(jí)別是如何處理的,在哪些地方使用了log記錄日志。


  ⑥從上面幾點(diǎn)后知道了整個(gè)開源項(xiàng)目的整體框架,閱讀每個(gè)方法就不再那么難了。


  ⑦當(dāng)然如果有項(xiàng)目配套的開發(fā)文檔也是要閱讀的。


  3、Java框架源碼閱讀


  當(dāng)然了,就是Spring、MyBatis這類框架。


  在讀Spring源碼前,一定要先看看《J2EEDesignandDevelopment》這本書,它是Spring的設(shè)計(jì)思路。注意,不是中文版,中文版完全被糟蹋了。


  想要閱讀MyBatis的源碼就要先了解它的一些概念,否則云里來霧里去的什么也不懂。有很多人會(huì)選擇去買一些書籍來幫助閱讀,當(dāng)然這是可取的。那么如果不想的話,就可以去官網(wǎng)查看它的介紹,團(tuán)長也是按照官網(wǎng)上面的介紹來進(jìn)行源碼閱讀的。團(tuán)長認(rèn)為MyBatis的亮點(diǎn)就是管理SQL語句。


  總結(jié)


  沒有人一開始就可以看得懂那些源碼,我們都是從0開始的,而且沒有什么捷徑可尋,無非就是看我們誰愿意花時(shí)間去研究,誰的求知欲更強(qiáng)烈,誰更有耐心。


  閱讀源碼的過程中我們的能力肯定會(huì)提升,可以從中學(xué)到很多東西,在我們做項(xiàng)目的時(shí)候就會(huì)體現(xiàn)出來了,的確會(huì)比以前順手很多。


  以上就是動(dòng)力節(jié)點(diǎn)java培訓(xùn)機(jī)構(gòu)小編介紹的“架構(gòu)師教你如何閱讀Java源碼!”的內(nèi)容,希望對(duì)大家有幫助,更多java最新資訊請繼續(xù)關(guān)注動(dòng)力節(jié)點(diǎn)java培訓(xùn)機(jī)構(gòu)官網(wǎng),每天會(huì)有精彩內(nèi)容分享與你。


  


提交申請后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)

免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 麻豆精品国产免费观看 | 国内精品免费久久久久妲己 | 欧美伊人久久综合网 | 亚洲精品国产精品精 | 亚洲 欧美 中文 日韩专区 | 欧洲成人r片在线观看 | 色五月激情五月 | 日本国产视频 | 亚洲视频 中文字幕 | 色久在线 | 中文字幕日韩精品亚洲七区 | 国产黄色免费观看 | 一区二区三区中文国产亚洲 | 国产人碰人摸人爱免费视频 | 特一级黄色片 | 日韩精选在线 | 日韩亚洲欧美日本精品va | 亚洲成熟中老妇女 | 欧美日韩国产不卡在线观看 | 日韩视频一区二区 | 一个人免费观看www视频二 | 中文字幕亚洲综合久久202 | 一个人看的www网站 一个人看的www在线 | 亚洲性免费 | 日日干夜夜欢 | 国产又黄又爽又猛的免费视频播放 | 亚洲视频 在线观看 | 亚洲欧美一 | 午夜网站在线 | 色综合网站国产麻豆 | 九九精品视频在线播放 | 日韩成人一区ftp在线播放 | 色黄网站在线观看 | 狠狠插影院 | 夜夜躁日日躁狠狠久久 | 日韩手机在线免费视频 | 一级a级国产不卡毛片 | 欧美成人性色xxxx视频 | 久草日韩| 免费99精品国产自在现线观看 | 国产精品日韩欧美一区二区 |