shiro 登錄提示密碼錯(cuò)誤 如何系統(tǒng)的學(xué)習(xí)JAVA?
如何系統(tǒng)的學(xué)習(xí)JAVA?java的整體生態(tài)和積累真的是太大了。95年至今20多年的積累,甚至牽涉到計(jì)算機(jī)軟硬件的方方面面。我大可就其實(shí),提主所說(shuō)的全精通,是指jdk本身和一些必要的數(shù)據(jù)結(jié)構(gòu)和廣泛框架和
如何系統(tǒng)的學(xué)習(xí)JAVA?
java的整體生態(tài)和積累真的是太大了。95年至今20多年的積累,甚至牽涉到計(jì)算機(jī)軟硬件的方方面面。我大可就其實(shí),提主所說(shuō)的全精通,是指jdk本身和一些必要的數(shù)據(jù)結(jié)構(gòu)和廣泛框架和面向?qū)ο蟮幕臼撬枷氚伞?/p>
從11年初到現(xiàn)在為止,一直在學(xué)習(xí)java相關(guān)的知識(shí)。其中也走了不少?gòu)澛贰0醋约旱姆e累,具體提主一個(gè)自以為合理且有一定深度的學(xué)習(xí)路線。大體分下面幾個(gè)階段吧。
1.首先應(yīng)盡很有可能的打牢基礎(chǔ)的數(shù)據(jù)結(jié)構(gòu)和簡(jiǎn)單的算法基礎(chǔ)。
可以不去急速的學(xué)習(xí)一些簡(jiǎn)單的四頭系統(tǒng),來(lái)行最簡(jiǎn)形矩陣軟件自學(xué)的興趣和初期成就感。但,一定得轉(zhuǎn)回頭,觀察的培養(yǎng)數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)和簡(jiǎn)單的算法。像這種書(shū)就這個(gè)可以。
2.比較熟練建議使用Java類(lèi)庫(kù)和java第三方工具框架。
學(xué)習(xí)建議使用java的語(yǔ)法,數(shù)次表述Java語(yǔ)法設(shè)計(jì)什么的邏輯。熟練的掌握完全掌握jdk程序庫(kù)本身,以及各種第三方類(lèi)庫(kù)工具包和第三方框架的簡(jiǎn)單點(diǎn)使用。這里怎么學(xué)習(xí)的同時(shí),我推薦看看吧《設(shè)計(jì)模式》,《代碼整潔之道》,《spring源碼解讀》,《Spring揭秘》等這一類(lèi)的書(shū)集。
3.理解去學(xué)習(xí)jdk開(kāi)發(fā)庫(kù)本身的應(yīng)用源碼實(shí)現(xiàn)和大型網(wǎng)游第三方框架的源碼和架構(gòu)設(shè)計(jì)。
比如說(shuō)jdk本身的數(shù)據(jù)結(jié)構(gòu)二叉樹(shù),紅黑樹(shù),treemap,和異步模式包的unsafe,同步阻塞隊(duì)列,call-future等等包源碼,以及線程基礎(chǔ)類(lèi)的實(shí)現(xiàn),各個(gè)類(lèi)庫(kù)啊,設(shè)計(jì)的結(jié)構(gòu)和設(shè)計(jì)模式。理解透第三方框架的設(shè)計(jì)思想,理解去學(xué)習(xí)第三方框架的核心源碼。
當(dāng)然,這里面可能會(huì)涉及到其他的事務(wù),分布式協(xié)議等,這里不再繼續(xù)發(fā)動(dòng)。這個(gè)過(guò)程并非是一朝一夕,很可能不需要大量的時(shí)間和技術(shù)感悟。當(dāng)然,《設(shè)計(jì)模式》,《代碼整潔之道》,《spring源碼解讀與設(shè)計(jì)詳析》,《Spring揭秘》等等這一大類(lèi)書(shū),在這個(gè)過(guò)程是可以再理解大差不差了。
4.理解jdk,jre即jvm原理和實(shí)現(xiàn)程序。
這里我?guī)臀彝扑]看下亞菲的《實(shí)戰(zhàn)java虛擬機(jī)》,里面解說(shuō)都很偏實(shí)操。容易上手理解。
簡(jiǎn)單的方法,也可以從jdk自帶的工具去學(xué)習(xí)來(lái)入手。
.例如:jstat,jmap,jstack,jps,jdb.......甚至于還有一個(gè)就這個(gè)可以窺視運(yùn)行期間實(shí)際內(nèi)存數(shù)據(jù)的HSDB。當(dāng)然了,充當(dāng)自學(xué)初步,我們只要再理解具體方法的幾個(gè)命令,并清楚其代表上帝的意義去掉。況且,第三方監(jiān)控工具,以及jdk本身也需要提供了3個(gè)可視化的監(jiān)控。
其次,明白jvm的運(yùn)行讀取原理,弄懂class文件結(jié)構(gòu)。
這個(gè)過(guò)程我們這個(gè)可以的力量之前會(huì)得用監(jiān)控工具,理解jvm程序加載的基本原理。也可以可以參考官方各個(gè)版本的jvm標(biāo)準(zhǔn),學(xué)習(xí)看的懂class文件。在此這個(gè)可以使用如classpy等工具,比較方便我們直接閱讀什么class文件。也可以試試意見(jiàn)class字節(jié)碼級(jí)別的循環(huán)展開(kāi)調(diào)試工具。甚至還,可以數(shù)次用用jvm匯編編碼工具。
接下來(lái)的,表述jvm的垃圾回收機(jī)制發(fā)展歷史和各個(gè)主流垃圾回收器的工作原理。
這個(gè)過(guò)程當(dāng)然的很古怪。垃圾回收器有各種串行,左行,新聲代/swap和老年代,包括回收警戒線,large觸發(fā)條件,各種個(gè)樣的基本參數(shù)和不怎莫是用超參數(shù),和G1的H區(qū),ZGC等等。。。而且的是,GC并不屬于jvm官方規(guī)范的一部分。
然后把,試著做一些jvm的實(shí)踐和實(shí)戰(zhàn),
諸如,jvm比較普遍的故障排查和故障歸納,性能調(diào)優(yōu),熱加載,class字節(jié)碼的動(dòng)態(tài)操作,asm等。
后來(lái),這個(gè)可以數(shù)次實(shí)現(xiàn)自己的jvm。(不過(guò)這個(gè)步驟,對(duì)很多同學(xué)來(lái)說(shuō)又不是必須了)
這里我?guī)臀彝扑]幾本書(shū),也全部弄明白jvm規(guī)范標(biāo)準(zhǔn)的學(xué)習(xí)路徑。最好是自己實(shí)現(xiàn)方法垃圾回收器。
周老師的《深入理解Java虛擬機(jī)》。
下一步是《深入嵌入式j(luò)ava虛擬機(jī)》和配套源碼。這個(gè)cldc的jvm源碼只有1M多。目前在oracle的官網(wǎng)上,仍然也可以去下載。是一個(gè)設(shè)計(jì)的很精簡(jiǎn)整合的jvm利用。
接下來(lái)的事情,可以去閱讀《自己動(dòng)手寫(xiě)java 虛擬機(jī)》。這本書(shū)的jvm實(shí)現(xiàn)程序是按結(jié)構(gòu)go語(yǔ)言編寫(xiě)。不過(guò)其中也有很多設(shè)計(jì)并不是什么的很合不合理。但基本是都不違背了jvm規(guī)范。
此時(shí)此刻就這個(gè)可以去去看看github上各種jvm的開(kāi)源基于了。有me,scalajvm,javainjava,ajvm,python-jvm,lua,各個(gè)版本各個(gè)完全不同的jvm實(shí)現(xiàn)方法。
其實(shí),這些實(shí)現(xiàn)程序都只是因?yàn)榛驹怼?/p>
后面推薦一下你再去看《實(shí)戰(zhàn)hotspot》豹子書(shū),關(guān)注高級(jí)語(yǔ)言虛擬機(jī)的圈子。
當(dāng)然了,垃圾回收的書(shū)籍比較比較少,這里應(yīng)該推薦給你垃圾回收的超經(jīng)典書(shū)《The Garbage Collection Cookbook》。只不過(guò)對(duì)新的垃圾回收算法有興趣,這個(gè)可以去知乎搜索相關(guān)的論文和GC算法閉源實(shí)現(xiàn)程序的demo。
5.當(dāng)然,我的建議只是因?yàn)獒槍?duì)Java本身。
完全要都沒(méi)有達(dá)到全部想學(xué)好java生態(tài),軟件工程,計(jì)算機(jī)網(wǎng)絡(luò),大數(shù)據(jù)基礎(chǔ)知識(shí),mahuot,sparklib,分布式搜索架構(gòu),各種消息中間件,緩存中間件,數(shù)據(jù)庫(kù),DNS/CDN。。。。。這些全是做互聯(lián)網(wǎng)應(yīng)用,無(wú)法躲避的。
沒(méi)有辦法建議,通用知識(shí)比較熟練,專(zhuān)研方向?qū)>?,相關(guān)生態(tài)知道一點(diǎn)。
的原因提問(wèn)是是對(duì)java本身。我就不再發(fā)起說(shuō)其他詳細(xì)方向了。詳細(xì)解釋的是大的技術(shù)方向,卻沒(méi)其他答主現(xiàn)在這樣,詳細(xì)去再討論語(yǔ)法糖這種級(jí)別。期望對(duì)提主所幫助。
有任何問(wèn)題,歡迎關(guān)注知道回答,與我討論到。啊,謝謝。
shiro配置的md5加密時(shí)對(duì)用戶(hù)輸入的密碼生效嗎?
用戶(hù)輸入密碼傳遍到后臺(tái)是明文,struts2會(huì)調(diào)用
doGetAuthenticationInfo方法返回SimpleAuthenticationInfo對(duì)象
在這個(gè)里邊是需要你提醒springsecurity你傳入的身份(username)和密鑰(明文),這兩個(gè)能保存在在token中。同時(shí)在趕往SimpleAuthenticationInfo時(shí)不需要能提供身份和加密后的密鑰,后再shiro會(huì)根據(jù)密碼不兼容器進(jìn)行比較