原创 Spring MVC系列-(6) 聲明式事務

6 聲明式事務 6.1 Spring中事務的使用 在進行數據操作事,通常會將多條SQL語句作爲整體進行操作,這一條或者多條SQL語句就稱爲數據庫事務。數據庫事務可以確保該事務範圍內的所有操作都可以全部成功或者全部失敗。如果事務失敗,那麼效

原创 Spring MVC系列-(5) AOP

目錄5 AOP5.1 什麼是AOP5.2 AOP術語5.3 AOP使用5.4 Java動態代理JDK動態代理CGLIB動態代理5.5 AOP原理深入分析AnnotationAwareAspectJAutoProxyCreator註冊Ann

原创 Spring MVC系列-(4) Bean的生命週期

4. Bean的生命週期 4.1 Bean的生命週期 Spring中bean的生命週期是指bean創建,初始化,銷燬的過程,整個過程是由容器進行管理的。 具體過程如下圖所示: 下面對每個過程進行詳細介紹: Spring對Bean進行

原创 Spring MVC系列-(3) Bean的裝配

3. 高級裝配Bean 3.1 Bean的作用域 默認情況下,Spring中的bean都是以單例的形式存在的,無論注入多少次,每次注入的都是同一個實例。 考慮到某些bean可能是可變的,Spring定義了不同的作用域,可以基於這些作用域創

原创 Spring MVC系列-(1) Spring概述

1. Spring概述 本章主要介紹Spring中的體系結構和常見概念,比如bean、控制反轉(Inverse of Control,IoC)等。 1.1 體系結構 Spring 框架提供約 20 個模塊,可以根據應用程序的要求來使用。

原创 JVM性能優化系列-(7) 深入瞭解性能優化

目前已經更新完《Java併發編程》和《Docker教程》,歡迎關注【後端精進之路】,輕鬆閱讀全部文章。 Java併發編程: Java併發編程系列-(1) 併發編程基礎 Java併發編程系列-(2) 線程的併發工具類 Java併發編程

原创 JVM性能優化系列-(5) 早期編譯優化

5. 早期編譯優化 早起編譯優化主要指編譯期進行的優化。 java的編譯期可能指的以下三種: 前端編譯器:將.java文件變成.class文件,例如Sun的Javac、Eclipse JDT中的增量式編譯器(ECJ) JIT編譯器(Ju

原创 JVM性能優化系列-(4) 編寫高效Java程序

4. 編寫高效Java程序 4.1 面向對象 構造器參數太多怎麼辦? 正常情況下,如果構造器參數過多,可能會考慮重寫多個不同參數的構造函數,如下面的例子所示: public class FoodNormal { //requir

原创 JVM性能優化系列-(3) 虛擬機執行子系統

3. 虛擬機執行子系統 3.1 Java跨平臺的基礎 Java剛誕生的宣傳口號:一次編寫,到處運行(Write Once, Run Anywhere),其中字節碼是構成平臺無關的基石,也是語言無關性的基礎。 Java虛擬機不和包括Java

原创 JVM性能優化系列-(2) 垃圾收集器與內存分配策略

目前已經更新完《Java併發編程》和《Docker教程》,歡迎關注【後端精進之路】,輕鬆閱讀全部文章。 Java併發編程: Java併發編程系列-(1) 併發編程基礎 Java併發編程系列-(2) 線程的併發工具類 Java併發編程

原创 Java併發編程系列-(9) JDK 8/9/10中的併發

目前已經更新完《Java併發編程》和《Docker教程》,歡迎關注【後端精進之路】,輕鬆閱讀全部文章。 Java併發編程: Java併發編程系列-(1) 併發編程基礎 Java併發編程系列-(2) 線程的併發工具類 Java併發編程

原创 Java併發編程系列-(8) JMM和底層實現原理

8. JMM和底層實現原理 8.1 線程間的通信與同步 線程之間的通信 線程的通信是指線程之間以何種機制來交換信息。在編程中,線程之間的通信機制有兩種,共享內存和消息傳遞。 在共享內存的併發模型裏,線程之間共享程序的公共狀態,線程之間通過

原创 Java併發編程系列-(7) Java線程安全

7. 線程安全 7.1 線程安全的定義 如果多線程下使用這個類,不過多線程如何使用和調度這個類,這個類總是表示出正確的行爲,這個類就是線程安全的。 類的線程安全表現爲: 操作的原子性 內存的可見性 不做正確的同步,在多個線程之間共享狀

原创 Java併發編程系列-(6) Java線程池

6. 線程池 6.1 基本概念 在web開發中,服務器需要接受並處理請求,所以會爲一個請求來分配一個線程來進行處理。如果每次請求都新創建一個線程的話實現起來非常簡便,但是存在一個問題:如果併發的請求數量非常多,但每個線程執行的時間很短,這

原创 Java併發編程系列-(4) 顯式鎖與AQS

4 顯示鎖和AQS 4.1 Lock接口 核心方法 Java在java.util.concurrent.locks包中提供了一系列的顯示鎖類,其中最基礎的就是Lock接口,該接口提供了幾個常見的鎖相關的操作。 public interfa