更新時(shí)間:2020-03-18 10:07:27 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽2807次
Java架構(gòu)師全套視頻,知識(shí)要點(diǎn)整理,初學(xué)Java的同學(xué)也可以備用,因?yàn)檫@些內(nèi)容對(duì)于立志成為架構(gòu)師的你不可或缺。我們先從Java架構(gòu)師的崗位要求說(shuō)起:
除了對(duì)工作經(jīng)驗(yàn)、知識(shí)結(jié)構(gòu)、邏輯思維方面的要求,在具體技術(shù)層面可以看出Spring全家桶、消息中間件ActiveMQ、JVM性能調(diào)優(yōu)都占有比較重要的位置,下面我們將介紹這些技術(shù)要點(diǎn),并結(jié)合分布式電商項(xiàng)目,幫你快速梳理。這些內(nèi)容展開(kāi)來(lái)講比較多,如果需要詳細(xì)學(xué)習(xí)資料,在私信中回復(fù)“學(xué)習(xí)”即可獲取!前方高能,請(qǐng)上車。
Spring全家桶
Spring全家桶其實(shí)可以將其看做是一套技術(shù)合集,它包括SpringMVC、SpringBoot、SpringCloud、SpringCloudDataflow等解決方案。很多技術(shù)研發(fā)人員將Spring作為項(xiàng)目的核心內(nèi)容,當(dāng)然也是面試必考。
1.SpringBoot
它的目標(biāo)是簡(jiǎn)化Spring應(yīng)用和服務(wù)的創(chuàng)建、開(kāi)發(fā)與部署,簡(jiǎn)化了配置文件,使用嵌入式web服務(wù)器,含有諸多開(kāi)箱即用的微服務(wù)功能,可以和springcloud聯(lián)合部署。
SpringBoot的核心思想是約定大于配置,應(yīng)用只需要很少的配置即可,簡(jiǎn)化了應(yīng)用開(kāi)發(fā)模式。
2.SpringData
是一個(gè)數(shù)據(jù)訪問(wèn)及操作的工具集,封裝了多種數(shù)據(jù)源的操作能力,包括:jdbc、Redis、MongoDB等。
3.SpringCloud
是一套完整的微服務(wù)解決方案,是一系列不同功能的微服務(wù)框架的集合。SpringCloud基于SpringBoot,簡(jiǎn)化了分布式系統(tǒng)的開(kāi)發(fā),集成了服務(wù)發(fā)現(xiàn)、配置管理、消息總線、負(fù)載均衡、斷路器、數(shù)據(jù)監(jiān)控等各種服務(wù)治理能力。比如sleuth提供了全鏈路追蹤能力,Netflix套件提供了hystrix熔斷器、zuul網(wǎng)關(guān)等眾多的治理組件。config組件提供了動(dòng)態(tài)配置能力,bus組件支持使用RabbitMQ、kafka、Activemq等消息隊(duì)列,實(shí)現(xiàn)分布式服務(wù)之間的事件通信。
SpringBoot對(duì)于掌握SpringCloud部分的技術(shù)非常重要,已經(jīng)有不少企業(yè)應(yīng)用到了自己的項(xiàng)目中,也常見(jiàn)于程序員架構(gòu)師面試當(dāng)中。
ActiveMQ及其應(yīng)用場(chǎng)景
ActiveMQ是Apache出品,是目前比較流行的,能力強(qiáng)勁的開(kāi)源消息總線。ActiveMQ是一個(gè)完全支持JMS1.1和J2EE1.4規(guī)范的JMSProvide實(shí)現(xiàn)。盡管JMS規(guī)范出臺(tái)已經(jīng)是很久的事情了,但是JMS在當(dāng)今的J2EE應(yīng)用中仍然扮演這特殊的地位。
應(yīng)用場(chǎng)景:
消息隊(duì)列在大型電子商務(wù)類網(wǎng)站,如京東、淘寶、去哪兒等網(wǎng)站有這深入的應(yīng)用。
隊(duì)列的主要作用:消除高并發(fā)訪問(wèn)高峰,加快網(wǎng)站的響應(yīng)速度。
在不使用消息隊(duì)列的情況下,用戶的請(qǐng)求數(shù)據(jù)直接寫(xiě)入數(shù)據(jù)庫(kù),在高并發(fā)的情況下,對(duì)數(shù)據(jù)庫(kù)造成巨大的壓力,同時(shí)也使系統(tǒng)響應(yīng)延遲加劇;
早使用隊(duì)列后,用戶的請(qǐng)求發(fā)給隊(duì)列后立即返回;
例如:當(dāng)然不能直接給客戶提示訂單提交成功,在淘寶上提示:"您提交了訂單,請(qǐng)等等系統(tǒng)確認(rèn)"
再由消息隊(duì)列的消費(fèi)者進(jìn)程從消息隊(duì)列中獲取數(shù)據(jù)庫(kù),異步寫(xiě)入數(shù)據(jù)庫(kù)。
由于消息隊(duì)列的服務(wù)處理速度遠(yuǎn)快于數(shù)據(jù)庫(kù),因此用戶的響應(yīng)延遲可能得到有效改善。
JVM性能調(diào)優(yōu)
JVM內(nèi)存模型及垃圾收集算法
1.根據(jù)Java虛擬機(jī)規(guī)范,JVM將內(nèi)存劃分為:
New(年輕代)、Tenured(年老代)、永久代(Perm)
其中New和Tenured屬于堆內(nèi)存,堆內(nèi)存會(huì)從JVM啟動(dòng)參數(shù)(-Xmx:3G)指定的內(nèi)存中分配,Perm不屬于堆內(nèi)存,有虛擬機(jī)直接分配,但可以通過(guò)-XX:PermSize-XX:MaxPermSize等參數(shù)調(diào)整其大小。
年輕代(New):年輕代用來(lái)存放JVM剛分配的Java對(duì)象
年老代(Tenured):年輕代中經(jīng)過(guò)垃圾回收沒(méi)有回收掉的對(duì)象將被Copy到年老代
永久代(Perm):永久代存放Class、Method元信息,其大小跟項(xiàng)目的規(guī)模、類、方法的量有關(guān),一般設(shè)置為128M就足夠,設(shè)置原則是預(yù)留30%的空間。
New又分為幾個(gè)部分:
Eden:Eden用來(lái)存放JVM剛分配的對(duì)象
Survivor:兩個(gè)Survivor空間一樣大,當(dāng)Eden中的對(duì)象經(jīng)過(guò)垃圾回收沒(méi)有被回收掉時(shí),會(huì)在兩個(gè)Survivor之間來(lái)回Copy,當(dāng)滿足某個(gè)條件,比如Copy次數(shù),就會(huì)被Copy到Tenured。顯然,Survivor只是增加了對(duì)象在年輕代中的逗留時(shí)間,增加了被垃圾回收的可能性。
2.垃圾回收算法
垃圾回收算法可以分為三類,都基于標(biāo)記-清除(復(fù)制)算法:
Serial算法(單線程)
并行算法
并發(fā)算法
JVM會(huì)根據(jù)機(jī)器的硬件配置對(duì)每個(gè)內(nèi)存代選擇適合的回收算法,比如,如果機(jī)器多于1個(gè)核,會(huì)對(duì)年輕代選擇并行算法,關(guān)于選擇細(xì)節(jié)請(qǐng)參考JVM調(diào)優(yōu)文檔。
稍微解釋下的是,并行算法是用多線程進(jìn)行垃圾回收,回收期間會(huì)暫停程序的執(zhí)行,而并發(fā)算法,也是多線程回收,但期間不停止應(yīng)用執(zhí)行。所以,并發(fā)算法適用于交互性高的一些程序。經(jīng)過(guò)觀察,并發(fā)算法會(huì)減少年輕代的大小,其實(shí)就是使用了一個(gè)大的年老代,這反過(guò)來(lái)跟并行算法相比吞吐量相對(duì)較低。
以上就是動(dòng)力節(jié)點(diǎn)Java培訓(xùn)機(jī)構(gòu)小編介紹的“Java架構(gòu)師全套視頻,知識(shí)要點(diǎn)整理”的內(nèi)容,希望對(duì)大家有幫助,如有疑問(wèn),請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。
相關(guān)閱讀
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)