mongodb設(shè)置用戶名和密碼 如何系統(tǒng)的學(xué)習(xí)JAVA?
如何系統(tǒng)的學(xué)習(xí)JAVA?java的整體生態(tài)和靠積累真的是太大了。95年現(xiàn)今20多年的積累,全都牽涉到到計(jì)算機(jī)軟硬件的方方面面。我依我之見就認(rèn)為,提主所說的專精,是指jdk本身和一些必要的數(shù)據(jù)結(jié)構(gòu)和廣泛
如何系統(tǒng)的學(xué)習(xí)JAVA?
java的整體生態(tài)和靠積累真的是太大了。95年現(xiàn)今20多年的積累,全都牽涉到到計(jì)算機(jī)軟硬件的方方面面。我依我之見就認(rèn)為,提主所說的專精,是指jdk本身和一些必要的數(shù)據(jù)結(jié)構(gòu)和廣泛框架和面向?qū)ο蟮幕舅枷氚伞?/p>
從11年初到現(xiàn)在,總是在學(xué)習(xí)java相關(guān)的知識。其中也走了不少彎路。按自己的積累,能提供提主一個(gè)自懷疑比較合理且有肯定會深度的學(xué)習(xí)路線。大體分下面幾個(gè)階段吧。
1.首先應(yīng)盡很可能的打牢基礎(chǔ)的數(shù)據(jù)結(jié)構(gòu)和簡單的算法基礎(chǔ)。
是可以去急速的學(xué)習(xí)一些簡單的小型系統(tǒng),來行最簡形矩陣軟件去學(xué)習(xí)的興趣和初期成就感。但,一定得轉(zhuǎn)過頭,翻看的積聚實(shí)力數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)和簡單點(diǎn)算法。類似于這種書就也可以。
2.熟練的掌握可以使用Java類庫和java第三方工具框架。
學(xué)習(xí)使用java的語法,試圖表述Java語法怎么設(shè)計(jì)的邏輯。非常熟練完全掌握jdk第三方庫本身,這些各種第三方類庫工具包和第三方框架的很簡單使用。這里學(xué)的同時(shí),我推薦看下《設(shè)計(jì)模式》,《代碼整潔之道》,《spring源碼解讀》,《Spring揭秘》等這一類的書集。
3.理解學(xué)jdk程序庫本身的應(yīng)用源碼實(shí)現(xiàn)方法和主流第三方框架的源碼和架構(gòu)設(shè)計(jì)。
比如說jdk本身的數(shù)據(jù)結(jié)構(gòu)二叉樹,紅黑樹,treemap,和異步運(yùn)行包的unsafe,同步阻塞隊(duì)列,call-future等等包源碼,以及線程基礎(chǔ)類的實(shí)現(xiàn),各個(gè)類庫啊,設(shè)計(jì)的結(jié)構(gòu)和設(shè)計(jì)模式。弄懂第三方框架的設(shè)計(jì)思想,理解學(xué)習(xí)第三方框架的核心源碼。
不過,這里面可能會涉及到其他的事務(wù),分布式協(xié)議等,這里繼續(xù)展開攻擊。這個(gè)過程并非一朝一夕,很可能要大量的時(shí)間和技術(shù)感悟??隙?,《設(shè)計(jì)模式》,《代碼整潔之道》,《spring源碼解讀與設(shè)計(jì)詳析》,《Spring揭秘》等等這一大類書,在這個(gè)過程可以不再理解大差不差了。
4.再理解jdk,jre即jvm原理和實(shí)現(xiàn)方法。
這里我我推薦看下王振彪的《實(shí)戰(zhàn)java虛擬機(jī)》,里面解說比較偏實(shí)操。容易上手解釋。
必須,可以不從jdk光盤驅(qū)動(dòng)的工具怎么學(xué)習(xí)來入手。
例如:jstat,jmap,jstack,jps,jdb.......甚至還有一個(gè)直接可以不窺視運(yùn)行期間不好算內(nèi)存數(shù)據(jù)的HSDB。當(dāng)然,另外自學(xué)正式,我們只是需要明白具體方法的幾個(gè)命令,并知道其屬於的意義即可。要知道,第三方監(jiān)控工具,和jdk本身也提供給了3個(gè)可視化的監(jiān)控。
比如,再理解jvm的運(yùn)行打開程序原理,弄明白class文件結(jié)構(gòu)。
這個(gè)過程我們是可以動(dòng)用之前會用的監(jiān)控工具,理解jvm打開程序的基本原理。也可以參考官方各個(gè)版本的jvm標(biāo)準(zhǔn),學(xué)習(xí)看得懂class文件。到此是可以在用如classpy等工具,方便啊我們?nèi)缓蠓鹤xclass文件。也可以試試意見class字節(jié)碼級別的循環(huán)展開調(diào)試工具。哪怕,可以嘗試用用jvm匯編編碼工具。
接下來的,表述jvm的垃圾回收機(jī)制發(fā)展歷史和各個(gè)主流垃圾回收器的工作原理。
這個(gè)過程不過更加急切。垃圾回收器有各種串行,左行,新聲代/swap和老年代,這些回收警戒線,endless觸發(fā)條件,各種個(gè)樣的基本參數(shù)和不怎摸專用超參數(shù),這些G1的H區(qū),ZGC等等。。。而且的是,GC并不屬于jvm官方規(guī)范的一部分。
然后,動(dòng)手做一些jvm的實(shí)踐和實(shí)戰(zhàn),
比如說,jvm比較普遍的故障排查和故障總結(jié)歸納,性能調(diào)優(yōu),熱加載,class字節(jié)碼的動(dòng)態(tài)操作,asm等。
結(jié)果,也可以試圖利用自己的jvm。(肯定這個(gè)步驟,對很多同學(xué)來說不是什么可以了)
這里我推薦推薦幾本書,都是徹底地搞明白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ì)相當(dāng)精簡的jvm實(shí)現(xiàn)方法。
下一步,可以去閱讀《自己動(dòng)手寫java 虛擬機(jī)》。這本書的jvm基于是按結(jié)構(gòu)go語言編寫??隙ㄆ渲幸灿泻芏嘣O(shè)計(jì)并并非的很合理。但基本都都按照了jvm規(guī)范。
此時(shí)此刻就是可以去看一下github上各種jvm的開源代碼實(shí)現(xiàn)程序了。有play,scalajvm,javainjava,ajvm,python-jvm,lua,各個(gè)版本各個(gè)完全不同的jvm實(shí)現(xiàn)程序。
當(dāng)然,這些利用都僅僅基本原理。
后面推薦一下你自己去看《實(shí)戰(zhàn)hotspot》豹子書,關(guān)注高級語言虛擬機(jī)的圈子。
不過,垃圾回收的書籍比較少,這里應(yīng)該推薦一下給你垃圾回收的超經(jīng)典書《The Garbage Collection Cookbook》。實(shí)際上對新的垃圾回收算法有興趣,也可以去知乎搜索相關(guān)的論文和GC算法開源軟件基于的demo。
5.不過,我的建議僅僅對于Java本身。
能夠要提升到已經(jīng)能學(xué)好java生態(tài),軟件工程,計(jì)算機(jī)網(wǎng)絡(luò),大數(shù)據(jù)基礎(chǔ)知識,mahuot,sparklib,分布式搜索架構(gòu),各種消息中間件,緩存中間件,數(shù)據(jù)庫,DNS/CDN。。。。。這些都是做互聯(lián)網(wǎng)應(yīng)用,躲無可躲的。
只有我建議你,通用知識熟練的掌握,鉆研方向精通,咨詢生態(tài)清楚。
的原因提問是對于java本身。我就繼續(xù)發(fā)起說其他具體看方向了。請看的是大的技術(shù)方向,根本不會其他答主那樣的,具體去再討論語法糖這種級別。我希望對提主有不幫助。
有任何問題,歡迎您關(guān)注解除,與我繼續(xù)討論。謝謝啦。
如何做好WEB服務(wù)器的入侵檢測和數(shù)據(jù)備份?
入侵檢測是個(gè)很奇怪的問題,我簡單說說看我的經(jīng)驗(yàn)。
1、服務(wù)器不要可以使用root登陸,但是不準(zhǔn)進(jìn)入用戶名密碼登錄,在用密鑰登入,有條件的話使用堡壘機(jī)。
2、應(yīng)用不使用普通用戶正常運(yùn)行,非必要千萬不能建議使用root。
3、打開防火墻,只新區(qū)web端口,如果是集群,主機(jī)之間內(nèi)網(wǎng)通訊,并且防火墻指定端口向或者的ip段開放,不向公網(wǎng)開放。
4、關(guān)了、刪除不建議使用的服務(wù)。
5、mysql等服務(wù)不用不使用root帳戶,肯定創(chuàng)建或者權(quán)限的帳戶,密碼要隨機(jī)生成較長長度的復(fù)雜密碼。
6、定時(shí)查看檢查進(jìn)程,一欄有無可疑人進(jìn)程,檢查登錄日志,查看有無可疑跡象登陸。
7、千萬不能向非相關(guān)人員被授權(quán)root權(quán)限。
8、要先進(jìn)行代碼檢測,盡量減少會出現(xiàn)漏洞而被被侵入,尤其是php。
9、了解一些安全網(wǎng)站,及時(shí)處理給系統(tǒng)也可以應(yīng)用打補(bǔ)?。ㄈツ阭ongodb漏洞被人刪了數(shù)據(jù),所幸可以恢復(fù)了)
10、你的登錄工具當(dāng)然相對正規(guī)來源,避免被綁馬(xshell漏洞、其它網(wǎng)站直接下載的數(shù)據(jù)庫、登陸賬號工具被惡意綁馬)
11、github上有些安全掃描工具,學(xué)習(xí)完全掌握幫一下忙。
以上是安全方面的小經(jīng)驗(yàn),具體做法可以不搜查找教程。
數(shù)據(jù)庫備份文件
1、定時(shí)系統(tǒng)備份,定時(shí)全量備份。(數(shù)據(jù)量小時(shí)),每月十五增量軟件備份。跪求mysql增量系統(tǒng)備份、回滾、閃回等github上有很多晚熟的方案。
2、數(shù)據(jù)庫有條件的話做不了主從。