終於把Java架構師知識要點整理好了,技術大牛教你少走彎路

這是一篇分享技術乾貨的文章,適合Java進階的同學參考,初學Java的同學也可以備用,因為這些內容對於立志成為架構師的你不可或缺。我們先從Java架構師的崗位要求說起:

終於把Java架構師知識要點整理好了,技術大牛教你少走彎路

除了對工作經驗、知識結構、邏輯思維方面的要求,在具體技術層面可以看出Spring全家桶、消息中間件ActiveMQ、JVM性能調優都佔有比較重要的位置,下面我們將介紹這些技術要點,並結合分佈式電商項目,幫你快速梳理。這些內容展開來講比較多,如果需要詳細學習資料,在私信中回覆“學習”即可獲取!前方高能,請上車。

Spring 全家桶

Spring全家桶其實可以將其看做是一套技術合集,它包括SpringMVC、SpringBoot、Spring Cloud、Spring Cloud Dataflow等解決方案。很多技術研發人員將Spring作為項目的核心內容,當然也是面試必考。

1.Spring Boot

它的目標是簡化Spring應用和服務的創建、開發與部署,簡化了配置文件,使用嵌入式web服務器,含有諸多開箱即用的微服務功能,可以和spring cloud聯合部署。

Spring Boot的核心思想是約定大於配置,應用只需要很少的配置即可,簡化了應用開發模式。

2.Spring Data

是一個數據訪問及操作的工具集,封裝了多種數據源的操作能力,包括:jdbc、Redis、MongoDB等。

3.Spring Cloud

是一套完整的微服務解決方案,是一系列不同功能的微服務框架的集合。Spring Cloud基於Spring Boot,簡化了分佈式系統的開發,集成了服務發現、配置管理、消息總線、負載均衡、斷路器、數據監控等各種服務治理能力。比如sleuth提供了全鏈路追蹤能力,Netflix套件提供了hystrix熔斷器、zuul網關等眾多的治理組件。config組件提供了動態配置能力,bus組件支持使用RabbitMQ、kafka、Activemq等消息隊列,實現分佈式服務之間的事件通信。

Spring Boot對於掌握Spring Cloud部分的技術非常重要,已經有不少企業應用到了自己的項目中,也常見於程序員架構師面試當中。


終於把Java架構師知識要點整理好了,技術大牛教你少走彎路


終於把Java架構師知識要點整理好了,技術大牛教你少走彎路


ActiveMQ及其應用場景

ActiveMQ是Apache出品,是目前比較流行的,能力強勁的開源消息總線。ActiveMQ是一個完全支持JMS1.1和J2EE1.4規範的JMS Provide實現。儘管JMS規範出臺已經是很久的事情了,但是JMS在當今的J2EE應用中仍然扮演這特殊的地位。

應用場景:

  • 消息隊列在大型電子商務類網站,如京東、淘寶、去哪兒等網站有這深入的應用。
  • 隊列的主要作用:消除高併發訪問高峰,加快網站的響應速度。
  • 在不使用消息隊列的情況下,用戶的請求數據直接寫入數據庫,在高併發的情況下,對數據庫造成巨大的壓力,同時也使系統響應延遲加劇;
  • 早使用隊列後,用戶的請求發給隊列後立即返回;
  • 例如:當然不能直接給客戶提示訂單提交成功,在淘寶上提示:"您提交了訂單,請等等系統確認"
  • 再由消息隊列的消費者進程從消息隊列中獲取數據庫,異步寫入數據庫。
  • 由於消息隊列的服務處理速度遠快於數據庫,因此用戶的響應延遲可能得到有效改善。


終於把Java架構師知識要點整理好了,技術大牛教你少走彎路


JVM性能調優

JVM內存模型及垃圾收集算法

1.根據Java虛擬機規範,JVM將內存劃分為:

New(年輕代)、Tenured(年老代)、永久代(Perm)

其中New和Tenured屬於堆內存,堆內存會從JVM啟動參數(-Xmx:3G)指定的內存中分配,Perm不屬於堆內存,有虛擬機直接分配,但可以通過-XX:PermSize -XX:MaxPermSize 等參數調整其大小。

年輕代(New):年輕代用來存放JVM剛分配的Java對象

年老代(Tenured):年輕代中經過垃圾回收沒有回收掉的對象將被Copy到年老代

永久代(Perm):永久代存放Class、Method元信息,其大小跟項目的規模、類、方法的量有關,一般設置為128M就足夠,設置原則是預留30%的空間。

New又分為幾個部分:

Eden:Eden用來存放JVM剛分配的對象

Survivor:兩個Survivor空間一樣大,當Eden中的對象經過垃圾回收沒有被回收掉時,會在兩個Survivor之間來回Copy,當滿足某個條件,比如Copy次數,就會被Copy到Tenured。顯然,Survivor只是增加了對象在年輕代中的逗留時間,增加了被垃圾回收的可能性。

2.垃圾回收算法

垃圾回收算法可以分為三類,都基於標記-清除(複製)算法:

Serial算法(單線程)

並行算法

併發算法

JVM會根據機器的硬件配置對每個內存代選擇適合的回收算法,比如,如果機器多於1個核,會對年輕代選擇並行算法,關於選擇細節請參考JVM調優文檔。

稍微解釋下的是,並行算法是用多線程進行垃圾回收,回收期間會暫停程序的執行,而併發算法,也是多線程回收,但期間不停止應用執行。所以,併發算法適用於交互性高的一些程序。經過觀察,併發算法會減少年輕代的大小,其實就是使用了一個大的年老代,這反過來跟並行算法相比吞吐量相對較低。


終於把Java架構師知識要點整理好了,技術大牛教你少走彎路


除此之外,還有zookeeper和Redis需要大家關注一下,由於篇幅限制不能為大家詳細闡述,但已經為大家準備好了先關的技術文檔,可以分享給大家:


終於把Java架構師知識要點整理好了,技術大牛教你少走彎路

除此之外還有分佈式電商項目可以幫助大家進一步深化對以上知識點的理解,需要獲取完整教程用來學習的朋友們可以關注一下小編,後臺私信:【學習】並轉發此文,獲取免費領取方式!以及我整理好的一套近期阿里面試真題500頁筆記。


分享到:


相關文章: