首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java EE 架構演進與併發設計隨想:從腳手架到核心原理

     編輯:Java 相關知識

技術棧演進觀察

長期以來 Java EE 由 Spring + Struts2 + MyBatis/Hibernate 主導。Spring 不僅是 Java 框架,其 IoC/AOP 思想影響了 C# 等生態。Spring Boot 進一步簡化配置,但濫用註解帶來運行時開銷:

  • 編譯期註解 (如 @Controller):掃描一次,零運行開銷,首選。
  • 運行期註解 (如 @ResponseBody):每次請求反射處理,消耗資源。

判斷註解生命週期:Ctrl+點擊 查看 @Retention(RetentionPolicy.RUNTIME/CLASS/SOURCE)。

單例與併發的真相

  • Spring Bean 默認單例,單例本身無併發問題,除非引入可變共享狀態。
  • Web 請求天然隔離:每請求一線程,獨立 Request/Response,參數對象無需共享。
  • 慎用 prototype:大量原型 Bean 通常意味著設計錯誤,應改用方法參數傳遞。

MyBatis 效能反思

  • 頻繁創建 ResultMap/Bean 映射,不如直接用 Map 或 JDK 原生集合,減少 GC 壓力。
  • 必須檢查事務代理生效:開啟 Debug 日誌,確認每請求複用同一 SqlSession,否則連接池耗盡、事務失效。
  • 能不用 MyBatis 就不用,直寫 JDBC/SQL 模板往往更可控、更高效。

Web 架構核心原則

關鍵技術選型心法

  • NIO/Netty:高併發長連接首選,多線程 Socket 難超越。
  • ZooKeeper:分布式協調註冊中心標準解。
  • Maven 管理 Web 模塊:Web 項目嵌入 Maven,而非 Maven 項目轉 Web。
  • 客戶端能做的別讓服務端做:客戶端資源無限,服務端資源有限。
  • 少發請求 = 好代碼:除非即時業務,否則合併請求、緩存結果。

對象本質與 RPC 本質

除基本類型,一切皆對象。API 選擇無絕對優劣,需實測。
序列化 = 文件 IO + 傳輸 + JVM 重構對象。
RPC = 代理序列化參數 → 網絡傳輸 → 反序列化調用 → 序列化返回 → 反序列化結果。

給年輕開發者的建議

  1. 深入理解 JDK 集合、併發、類加載、JVM 內存模型 基石。
  2. 閱讀優秀框架源碼 (Spring、Netty、Disruptor),學習設計模式落地。
  3. 不盲目追新技術,解決業務問題才是核心價值。
  4. 建立性能基準測試體系,用數據說話。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
原則錯誤做法正確做法
Servlet 映射/ 攔截所有靜態資源*.do *.action 僅攔截業務請求
靜態資源JS/CSS 寫在 JSP/HTML 內聯獨立文件 + CDN + 瀏覽器緩存 (文件級緩存)
數據交互頻繁 AJAX 切換分類一次性加載全量數據,前端 JS 篩選/搜索
查詢優化分頁查詢以為能加快單次速度數據庫按索引掃描,LIMIT 不減少掃描行數