科普,想成為厲害的 Java 后端程序員,你需要懂這 13 個知識點


老讀者就請肆無忌憚地點贊吧,微信搜索【沉默王二】關注這個在九朝古都洛陽苟且偷生的程序員。
本文 GitHub github.com/itwanger 已收錄,里面還有我精心為你准備的一線大廠面試題。

站在運籌帷幄的角度來看,一名厲害的 Java 后端程序員都需要懂得哪些知識呢?我想,這也是很多讀者迫切想知道的一個問題,因為如果不站在一個宏觀的角度的話,所有學過的知識點都是零散的,就感覺像一只迷路的小鹿,跌跌撞撞的,總感覺欠點火候,對吧?

怎么把知識點串聯起來,形成知識圖譜或者知識體系,就顯得非常重要了。接下來,我根據這些年磨破滾打的一些經驗,給大家簡單科普一下,如果有漏掉的內容,希望讀者朋友們在留言區指出來。

1)MVC 框架:MVC 模式是軟件工程中的一種軟件架構模式,可以把軟件系統分為三個基本部分:

  • 模型(Model),編寫程序應有的功能(實現算法等等)、進行數據管理和數據庫設計,。

  • 視圖(View),界面設計人員進行圖形界面設計。

  • 控制器(Controller),負責轉發請求,對請求進行處理。

比較知名的 MVC 框架有 SpringMVC,是一種基於請求驅動類型的輕量級 Web 框架,目的是幫助我們后端程序員簡化開發。

我個人喜歡的還有一個更輕量級的 JFinal,國人開發的,基於 Java 語言的極速 WEB + ORM 框架,其核心設計目標是開發迅速、代碼量少、學習簡單、功能強大、輕量級、易擴展、Restful,小型項目我都會選擇使用 JFinal,很方便。

2)IoC 框架:可實現依賴注入/控制反轉的框架,Spring 框架就是為此而生的。

3)ORM 框架:對象關系映射(Object Relational Mapping)是通過使用描述對象和數據庫之間映射的元數據,將面向對象語言程序中的對象自動持久化到關系數據庫中。

MyBatis 是目前最流行的 ORM 框架,能夠屏蔽底層的數據庫操作細節,減少大量的模板代碼,並且能夠支持分布式特性。

為了在服務層面統一解決分庫分表、讀寫分離、故障恢復等問題,就需要一種數據庫中間件,MyCat 是最知名的一種。

MyCat 是基於 Java 語言編寫的數據庫中間件,是一個實現了 MySQL 協議的服務器,前端用戶可以把它看作是一個數據庫代理,用 MySQL 客戶端工具和命令行訪問,后端可以用 MySQL 原生協議與多個 MySQL 服務器通信,也可以用 JDBC 協議與大多數主流數據庫服務器通信,其核心功能是分庫分表,配合數據庫的主從模式還可實現讀寫分離,非常強大。

4)緩存框架:緩存通常用來解決熱點數據的訪問問題,可以提高數據的查詢效率,尤其是在高並發的服務中,將持久層的數據加載到緩存中,可以避免數據庫被大量請求擊垮。使用頻率最高的緩存框架就是 Redis,沒有之一,Memcached 相對來說也比較常用。

Redis 是互聯網技術領域中使用最廣泛的緩存中間件,它是 Remote Dictionary Service 三個單詞中加粗字母的組合。你別說,組合起來后念着挺自然的。

Redis 以超高的性能、完美的文檔、簡潔的源碼著稱,國內外很多大型互聯網公司都在用,比如說阿里、騰訊、GitHub、Stack Overflow 等等。它的版本更新非常的快,功能也越來越強大,最初只是用來作為緩存數據庫,現在已經可以用它來實現消息隊列了。

可以這么說吧,掌握 Redis 已經變成了一項 Java 后端程序員必須具備的基礎技能。

5)數據庫:絕大多數的業務數據都需要持久化存儲到數據庫中,主流的關系型數據庫有 MySQL 和 Oracle。

MySQL 和 Oracle 現在都隸屬於甲骨文公司,這家公司的產品很牛逼,CEO 拉里埃爾森也很牛逼,和史蒂夫喬布斯是鐵哥們。Oracle 相對 MySQL 更沉重一些,屬於企業級應用。而 MySQL 是開源的,性能又給力,所以近些年來市場占用率已經飆升到了第一位,甩開 Oracle 兩條街。

主流的非關系型數據庫有 MongoDB 和 HBase,后者主要用於數據庫領域。

MongoDB 是一個基於分布式的文件存儲數據庫,旨在為 Web 應用提供可擴展的高性能數據存儲解決方案。它將數據存儲為一個文檔(類似於 JSON 對象),數據結構由鍵值對組成,類似於 Java 中的 Map,通過 key 的方式訪問起來效率就高得多,對吧?這也是 MongoDB 最重要的特點。

6)搜索框架:目前用得比較多的開源軟件有 Solr 和 Elasticsearch,主要用於全文檢索和各種數據維度的查詢,后者逐漸成為搜索引擎的主流開源方案。

Elasticsearch 是一個分布式、RESTful 風格的搜索和數據分析引擎,能夠解決不斷涌現出的各種用例。 作為 Elastic Stack 的核心,它集中存儲您的數據,幫助您發現意料之中以及意料之外的情況。

7)消息隊列:目前使用得比較普遍的消息隊列有,基於日志設計的 Kafka,重事務的 RabbitMQ。對消息丟失不是特別敏感的話,選擇 Kafka 可以獲得更高的性能。

Kafka 由 Scala 和 Java 編寫,目的是為處理實時數據提供一個統一、高吞吐、低延遲的平台。其持久化層本質上是一個“按照分布式事務日志架構的大規模發布/訂閱消息隊列”,使得它作為企業級基礎設施來處理流式數據非常有價值。

RabbitMQ 的主要特點在於健壯性好、易於使用、高性能、高並發、集群易擴展,以及強大的開源社區支持。

8)文件存儲:文件存儲需要滿足的特性有:可靠性、容災性、穩定性,能夠保證文件不輕易丟失,還能在出現事故的時候提供回滾方案。Hadoop 的 HDFS 是目前最常用的分布式文件存儲方案。

除此之外,還有一個開源的輕量級分布式文件系統——FastDFS,可以解決大數據量存儲和負載均衡等問題。特別適合以中小文件(建議范圍:4KB < file_size <500MB)為載體的在線服務,如相冊網站、視頻網站等等。

9)單點登錄(Single Sign On):簡稱為 SSO,目前很多網站都實現了單點登錄,當用戶登錄時,就可以獲取所有系統的訪問權限,不用對每個單一系統都逐一登錄。

推薦一個還不錯的分布式單點登錄框架——xxl-sso,開源的。

10)統一配置中心:常見的有 properties、YAML 文件,就是可以不修改代碼只修改配置文件就能夠讓整個項目區分開發、測試、生產環境。

YAML 語言(發音 /ˈjæməl/ )的設計目標,就是方便人類讀寫。它實質上是一種通用的數據串行化格式。

對於較復雜的數據結構來說,YAML 遠遠優於 properties,可以使用冒號加縮進的方式代表層級(屬性)關系,使用短橫杠(-)代表數組元素。

11)服務治理框架:隨着互聯網的發展,網站應用的規模不斷擴大,常規的垂直應用架構已無法應對,分布式服務架構以及流動計算架構勢在必行,亟需一個治理系統確保架構有條不紊的演進。

Dubbo 是一款高性能、輕量級的開源 Java RPC 框架,提供了三大核心能力:面向接口的遠程方法調用,智能容錯和負載均衡,以及服務自動注冊和發現。

12)統一調度中心:定時調度是一個非常普遍的場景,比如說定時去備份數據庫,刷新訂單狀態等。可以依賴 Linux 的 Cron 機制,以及 Java 的 Quartz 框架。

工具型軟件 Cron 是一款類 Unix 操作系統下的基於時間的任務管理系統。 用戶可以通過 Cron 在固定時間、日期、間隔下,運行定期任務(可以是命令和腳本)。我最經常用的,就是通過 Cron 來備份 MySql 數據庫。

Quartz 可以用來創建或簡單或復雜的調度時間表,執行 Java 下任意數量的作業。

13)日志服務:日志是生產環境不可缺少的產物,能夠為線上服務提供快速記錄、定位、排查問題的來源。常用的日志框架有 Log4j 和 LogBack。

Log4j 通常和 SLF4J 配合起來一起使用,SLF4J 是簡單日記門面(simple logging Facade for Java)的意思,為各種 log API 提供了一個簡單的統一接口,從而使得 Java 后端程序員能夠在部署的時候配置自己希望的日志實現。

LogBack 和 Log4j 是同一個大神寫的(作者對 Log4j 的性能不滿意),Spring Boot 默認使用的日志框架是LogBack。

以上,就是我認為一個厲害的 Java 后端程序員需要知道的知識點,希望能夠幫助到讀者朋友們,peace。如果有漏掉的,請讀者朋友們在留言區補充一下,感謝。


我是沉默王二,一枚在九朝古都洛陽苟且偷生的程序員。關注即可提升學習效率,感謝你的三連支持,奧利給🌹

注:如果文章有任何問題,歡迎毫不留情地指正。

如果你覺得文章對你有些幫助,歡迎微信搜索「沉默王二」第一時間閱讀,回復關鍵字「小白」可以免費獲取我肝了 4 萬+字的 《Java 小白從入門到放肆》2.0 版;本文 GitHub github.com/itwanger 已收錄,歡迎 star。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM