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