java後臺技術

本文旨在梳理服務端開發技術棧,但願幫助後端開發同窗更全面瞭解Java服務端主要涉及的知識點html

 

1. 語言相關

1.1 Java

  • 核心知識點前端

    • Java的類加載機制java

    • JVM相關:JVM內存模型和結構,GC原理,性能調優mysql

    • 泛型linux

    • 集合體系ios

    • 異常體系nginx

    • IO體系git

    • 多線程編程redis

    • 反射算法

    • Servlet

  • 推薦數據

    • 《Java編程思想》

    • 《Effective Java》

    • 《深刻理解Java虛擬機》

1.2 Shell、Python等腳本語言

  • 介紹

    • 此類腳本語言的意義在於輔助後端開發,包括系統運維,工具集成(藉助管道、重定向),文本處理,數據計算等工做,提高後端工做效率

  • 核心知識點(Shell)

    • 經常使用的linux操做和運維命令

    • 管道、重定向

    • awk、sed等文本處理工具

  • 推薦書籍

1.3 SQL 語言

  • 介紹

    • 通用於傳統關係型數據庫和大數據場景的結構化查詢模型語言。傳統數據庫方面要精通mysql的sql語法;大數據場景主要掌握Hive SQL(Impala和Spark SQL等均在兼容Hive SQL)

  • 核心知識點

    • 區分DDL和DML

    • 經典查詢語句主要結構

    • 錶鏈接(內鏈接,左外鏈接,右外鏈接,全鏈接)

    • 函數(普通函數,聚合函數)

    • 索引

    • 分區

  • 適用場景

    • 傳統數據庫,傳統SQL:用於事務性數據操做,一般用於系統的業務庫;

    • 大數據場景下的SQL:用於數據分析,交互式查詢,批量數據處理等。

  • 推薦書籍

    • MySQL:《高性能MySQL》

    • Hive SQL:《Hive編程指南》

2. 開發工具

2.1 開發IDE Intellij/Eclipse

  • 核心知識點

    • 配置良好代碼風格模板,包括文件註釋,類註釋,方法註釋,縮進換行等

    • 安裝使用必要的插件:代碼規範檢查插件(Alibaba Java Coding Guidelines),源碼潛在bug檢查插件(pmd),字節碼潛在bug檢查插件(findbugs)等

2.2 工程構建 MAVEN

  • 核心知識點

    • maven 倉庫

    • maven pom.xml文件配置

    • maven 構建的生命週期

    • maven 插件

  • 能力要求

    • 學會配置maven多級工程結構

    • 可以解決工程構建中經常出現的jar包衝突等問題

    • 熟練使用maven

  • 推薦書籍

    • 《Maven實戰》

2.3 版本管理 GIT

  • 介紹

    • git是一個開源的分佈式版本控制系統,經過規範化的工具和流程,使得開發者之間高效協同,保持產品穩定運行

  • 推薦文章

3. 開發/測試框架

3.1 Spring框架體系 Spring MVC/Spring Boot

  • 核心知識點

  • 參考說明

    • 有條件地閱讀spring核心模塊的代碼,debug Spring框架的啓動和Bean服務的過程是比較好的理解spring原理的方式

    • 最新的版本更新和參考文檔能夠直接瀏覽 Spring官網

3.2 orm框架 mybatis/hibernate

  • mybatis介紹

    • 持久層框架,經過xml映射的方式,使得開發者主要關心sql實現便可,由框架實現從實體到java類的映射,數據訪問層服務實現,訪問優化等等

  • 核心知識點

    • 熟練配置使用mybatis,掌握mapper xml的寫法

    • 會使用mybatis-generator的mvn插件自動生成DAO層代碼和xml配置

    • 理解mybatis的1、二級緩存,瞭解sql session建立過程和sql執行過程

  • 推薦資料

    • 最新的版本更新和參考文檔能夠直接瀏覽 Mybatis官網

3.3 測試框架 Junit/TestNG

  • 核心能力要求

    • 熟練使用Junit/TestNG進行單元測試,接口測試

    • 學會藉助Mockito解決外部系統,模塊依賴的mock測試

    • 學會使用maven的surfire plugin和jacoco plugin等插件,度量測例的經過率,測試代碼覆蓋率等指標

4. 服務端中間件

4.1 key-value存儲系統

  • 典型:redis/memcache

  • 核心知識點

    • redis配置策略(持久化策略,替換算法等)

    • redis的部署模式(standalone單機,sentinel哨兵,cluster集羣),哨兵的本質是主從切換,cluster是真正的分佈式部署能夠線性擴展內存資源

    • redis支持的數據結構

  • 適用場景

    • 分佈式session存儲,數據緩存,分佈式鎖,簡單的消息隊列,計數器(累加器)

4.2 消息隊列

  • 典型:rabbitmq/kafka

  • 核心知識

  • 適用場景

    • 消息中間件通常適用於:系統之間須要高度解耦;異步傳輸數據(非阻塞);保證數據傳輸過程當中數據能夠持久化,解決生產端和消費端能力不一致的問題,避免峯值數據對下游服務節點的衝擊等

    • 對比rabbitmq和kafka: rabbitmq主要適用數據可靠性,一致性要求比較高的場景;kafka主要適用數據吞吐量比較的場景,如日誌數據的實時傳輸等

4.3 分佈式文件存儲

  • 典型:網易nos/阿里雲oss

  • 適用場景

    • 存儲須要在分佈式架構下共享的文件對象:如前端靜態文件,圖片資源,大文件資源等

4.4 服務治理/RPC框架

  • 典型:阿里dubbo

  • 核心知識點

    • 註冊中心,服務註冊、服務發現、負載均衡、序列化、反序列化、編碼、解碼等核心概念

  • 適用場景

    • 在相對複雜的應用服務網絡中,扮演服務治理,服務解耦,負責均衡,簡化服務調用方式的做用

4.5 Java Web容器

  • 典型:tomcat/jetty等

  • 介紹

    • 本質上是一個servlet容器,便可以在其上運行Java Web的應用程序

4.6 Nginx

  • 介紹

    • nginx本質上是一個的HTTP和反向代理服務器

  • 適用場景

    • http服務器,反向代理,軟負載均衡器等

4.7 關係型數據庫

  • 典型: MYSQL/ORACLE

  • 核心知識點

    • 索引

    • 事務與事務隔離級別

    • 存儲方法

    • 觸發器

    • 不一樣關係型數據庫的SQL差別

  • 推薦書籍

    • 《高性能MySQL》

    • 《Oracle從入門到精通》

5. 大數據存儲和計算框架等

  • 核心能力要求

    • 瞭解大數據體系總體的框架、組成

    • 熟悉各類大數據存儲,計算框架,查詢引擎等主要的架構、功能和適用場景

    • 可以在項目的架構過程當中進行合理的大數據技術方案選型

6. 其餘

6.1 權限相關

  • 介紹:

      * 權限相關涉及到:身份認證,鑑權,權限管理等
  • 核心知識點:

    • RBAC(基於角色的權限控制)模型

    • 理解OAuth 2.0的設計思想和運行流程

6.2 安全相關

  • 介紹

    • 在後端開發中須要關注不少的安全問題,這些安全問題可能來自惡意的攻擊,也可能來自系統自己的安全性和健壯性不足。防止應用安全漏洞產生的前提是理解常見的漏洞概念、原理以及產生的緣由

  • 核心知識點

    • 水平權限和垂直權限漏洞,以及在程序開發中怎樣避免

    • SQL注入攻擊(mybatis預編譯能夠避免)

    • 經常使用的限流策略

    • CSRF 攻擊

    • XSS 攻擊

6.3 日誌相關

  • 核心知識點

    • Log4j、Logback、SLF4J之間的關係,應用中不可直接使用日誌系統(Log4j、Logback)中的API,而應依賴使用日誌框架SLF4J中的API

    • 日誌的等級(error/warn/info/debug)

    • 日誌的保留時間

6.4 異常處理相關

  • 核心知識點

    • 異常的分類,正確區分異常處理方式

    • 異常處理原則

    • 學會藉助spring框架等,將異常轉爲對用戶或者調用方更加友好的錯誤碼和錯誤信息

6.5 RestFul接口設計相關

  • 介紹

    • restful在目前是使用較多的接口設計和服務間依賴http接口設計的主要原則,基於良好的約定規範,能夠使得接口簡單易懂,提升團隊協做的效率

  • 推薦文章

6.6 線上問題排查流程和工具

  • 核心知識點

    • 系統問題排查:學會使用w/uptime、top、df、netstat、iostat以及各類可視化監控工具排查本機的負載、磁盤、內存、網絡等系統問題

    • 應用問題排查:學會依據應用系統錯誤日誌以及jps、jinfo、jstat、jstack、jmap以及各類可視化監控工具,排查應用系統問題

    • 數據庫問題排查:學會藉助mysql慢查詢日誌、explain以及各類可視化工具排查mysql使用過程當中的各類問題

    • 網絡問題排查:學會藉助telnet、ping、wget、nc等工具排查網絡問題

6.7 多線程編程

  • 核心知識點

    • Java線程相關接口和類的實現和關係

    • Java線程池

    • 線程同步,鎖等

6.8 網絡相關

  • 核心知識點

    • 掌握http協議消息體劃分、鏈接和通訊過程

    • 掌握http主要的返回狀態碼意義

    • 掌握https協議的鏈接和通訊過程

6.9 設計原則和設計模式

  • 核心知識點

    • 單例模式

    • 策略模式

    • 代理模式

    • 觀察者模式

    • 裝飾模式

    • 適配器模式

    • 組合模式

    • 工廠模式

    • 模板方法模式

    • ...

    • 單一職責原則

    • 里氏替換原則

    • 依賴倒置原則

    • 接口隔離原則

    • 迪米特法則

    • 開閉原則

    • 組合/聚合複用原則

    • 七大設計原則

    • 一些經常使用的設計模式

6.10 分佈式系統設計相關

  • 核心知識點

    • Quartz,基於數據庫鎖的搶佔式分佈式定時器

    • 基於數據庫

    • 基於緩存

    • 基於zookeeper

    • 一致性理論

    • 分佈式事務解決方案

    • 一致性模型

    • CAP定理

    • BASE 理論

    • 強一致性

    • 弱一致性

    • 最終一致性

    • eBay 事件隊列方案

    • TCC (Try-Confirm-Cancel)補償模式

    • 緩存數據最終一致性

    • 強一致性(兩段提交和三段提交模型, Paxos或者Raft算法)

    • 最終一致性

    • SOA

    • 微服務

    • Servless

    • 分佈式系統架構設計

    • 分佈式事務

    • 分佈式鎖

    • 分佈式定時器

相關文章
相關標籤/搜索