1. 程式人生 > >Java開發八年來總結的知識腦圖,以及我的進階線路規劃。

Java開發八年來總結的知識腦圖,以及我的進階線路規劃。

學習一個新的技術時,其實不在於跟著某個教程敲出了幾行、幾百行程式碼,這樣你最多隻能知其然而不知其所以然,進步緩慢且深度有限,最重要的是一開始就對整個學習路線有巨集觀、簡潔的認識,確定大的學習方向,這樣才能事半功倍。

我們經常會遇到這樣的情況:一開始學習一門新技術的時候,面對著很多很多陌生的名詞,無從下手,一度想要放棄。本文首先會給出關於java後臺開發的一些建議學習路線,接著簡單解釋一些應用到的高頻技術,幫助大家理解和學習。

2.Java後臺開發知識一覽

1、後端

WEB伺服器:Weblogic、Tomcat、WebSphere、JBoss、Jetty

核心框架:Spring Framework

分散式服務框架Dubbo

安全框架:Apache Shiro

檢視框架:Spring MVC

服務端驗證:Hibernate + Validator

佈局框架:SiteMesh

工作流引擎:Activiti

任務排程:Spring Task + Quartz

持久層框架:MyBatis + MyBatis-Plus

資料庫連線池:Alibaba Druid

快取框架:Ehcache 、Redis

日誌管理:SLF4J 、Log4j

會話管理:Spring-Session

工具類:Apache Commons、Jackson 、Xstream、Dozer 、POI

訊息佇列:ActiveMQ

雲端儲存:阿里雲 OSS 騰訊雲 COS 七牛雲

版本管理: git(推薦)svn

2.高頻技術(可大致瀏覽,作為目錄檢視)

Spring

每個模組的功能如下:

核心容器:核心容器提供 Spring 框架的基本功能。核心容器的主要元件是BeanFactory,它是工廠模式的實現。

Spring 上下文:Spring 上下文是一個配置檔案,向 Spring 框架提供上下文資訊。

Spring AOP:通過配置管理特性,Spring AOP 模組直接將面向方面的程式設計功能整合到了 Spring 框架中。

Spring DAO:JDBC DAO 抽象層提供了有意義的異常層次結構,可用該結構來管理異常處理和不同資料庫供應商丟擲的錯誤訊息。異常層次結構簡化了錯誤處理。

Spring ORM:Spring 框架插入了若干個 ORM 框架,從而提供了 ORM 的物件關係工具,其中包括 JDO、Hibernate 和 iBatis SQL Map。所有這些都遵從 Spring 的通用事務和 DAO 異常層次結構。

Spring Web 模組:Web 上下文模組建立在應用程式上下文模組之上,為基於 Web 的應用程式提供了上下文。所以,Spring 框架支援與 Jakarta Struts 的整合。

Spring MVC 框架:MVC 框架是一個全功能的構建 Web 應用程式的 MVC 實現。MVC 容納了大量檢視技術,其中包括 JSP、Velocity、Tiles、iText 和 POI。

RESTful風格

** Mybatis**

MyBatis

是支援定製化 SQL、儲存過程以及高階對映的優秀的持久層框架。MyBatis 避免了幾乎所有的 JDBC 程式碼和手動設定引數以及獲取結果集。MyBatis 可以對配置和原生Map使用簡單的 XML 或註解,將介面和 Java 的 POJOs(Plain Old Java Objects,普通的 Java物件)對映成資料庫中的記錄。

Hibernate

Redis

Redis

是完全開源免費的,遵守BSD協議,是一個高效能的key-value資料庫。特點:

1.Redis支援資料的持久化,可以將記憶體中的資料儲存在磁碟中,重啟的時候可以再次載入進行使用。

2.Redis不僅僅支援簡單的key-value型別的資料,同時還提供list,set,zset,hash等資料結構的儲存。

3.Redis支援資料的備份,即master-slave模式的資料備份。

Zookeeper

Zookeeper 分散式服務框架是 Apache

    Hadoop 的一個子專案,它主要是用來解決分散式應用中經常遇到的一些資料管理問題,如:統一命名服務、狀態同步服務、叢集管理、分散式應用配置項的管理等等。

DUBBO

DUBBO

是一個分散式服務框架,致力於提供高效能和透明化的RPC遠端服務呼叫方案,是阿里巴巴SOA服務化治理方案的核心框架,每天為2,000+個服務提供3,000,000,000+次訪問量支援,並被廣泛應用於阿里巴巴集團的各成員站點。

一到五年經驗,應該怎麼走,學習方向路線是什麼,需要掌握什麼技術呢?請看下方:

閱讀原始碼

程式設計師每天都和程式碼打交道。經過數年的基礎教育和職業培訓,大部分程式設計師都會「寫」程式碼,或者至少會抄程式碼和改程式碼。但是,會讀程式碼的並不在多數,會讀程式碼又真正讀懂一些大專案的原始碼的,少之又少。這也造成了很多錯誤看原始碼的方式。

那要如何正確的分析原始碼呢?

分散式架構

隨著我們的業務量越來越大和越重要,單體的架構模式已經無法對應大規模的應用場景,而且系統中決不能存在單點故障導致整體不可用,所以只有垂直或是水平拆分業務系統,使其形成一個分散式的架構,利用分散式架構來冗餘系統消除單點的故障,從而提高整個系統的可用性。同時分散式系統的模組重用度更高,速度更快,擴充套件性更高是大型的專案必不可少的環節。

微服務

關於微服務架構的取捨

1、在合適的專案,合適的團隊,採用微服務架構收益會大於成本。

2、微服務架構有很多吸引人的地方,但在擁抱微服務之前,也需要認清它所帶來的挑戰。

3、需要避免為了“微服務”而“微服務”。

4、微服務架構引入策略 – 對傳統企業而言,開始時可以考慮引入部分合適的微服務架構原則對已有系統進行改造或新建微服務應用,逐步探索及積累微服務架構經驗,而非全盤實施微服務架構。

效能優化

我們不僅僅對專案要運籌帷幄,還要能解決一切效能問題。只有深入學習JVM底層原理,Mysql底層優化以及Tomcat調優,才能達到知其然,知其所以然的效果。除了效能優化之外,也能提供通用的常見思路以及方案選型的考慮點,幫助大家培養在方案選型時的意識、思維以及做各種權衡的能力。

併發程式設計

主要培養程式設計者深入瞭解最底層的運作原理,加強程式設計者邏輯思維,這樣才能寫出高效、安全、可靠的多執行緒併發程式。

下方還有架構師精講的2018架構資料。獲取思維腦圖和架構資料方式: