原创 面向切面編程--AOP
1、aop:aspect oriented programming 面向切面編程 2、aop在spring中作用 提供聲明式事務(聲明式服務) 允許用戶實現自定義切面 3、aop:在不改變原有代碼的情況下,增加新的功
原创 靜態代理
1、靜態代理的角色解析 抽象角色->通常使用接口或者抽象類來實現 真是角色->被代理的角色 代理角色->代理真實角色->代理真實角色後通常會做一些附屬操作。 客戶->使用代理角色來進行一些操作
原创 動態代理
1動態代理和靜態代理的角色是一樣的(真是角色,抽象角色,代理類) 2動態代理的代理類是動態生成的。 3分爲兩類:一類基於接口動態代理和基於類的動態代理 1):基於接口動態代理:jdk動態代理
原创 spring-bean的作用域和自動裝配
scope指的是bean的作用域,在配置bean,由scope屬性來配置bean的作用域 singleton單例 :整個容器中只有一個對象實例 spring配置默認是單例 prototype原型 每次獲取bean都產生一個新的對象
原创 單例模式(枚舉式)
枚舉式實現單例模式: 測試枚舉式實現單例模式(線程安全、調用效率高、沒有延時加載。並且具有天然的防止反射和反序列化漏洞) public enum enumSingleton { //這個元素,本身就是單例對象 E;
原创 正則1
標準字符集合: 能夠與'多種字符'匹配的表達式 注意區分大小寫,大寫是相反的意思 \d :任意一個數字,0~9中的任意一個 \D:,0~9以外的全部 \w:任意一個字母或數字或下劃線,就是說A~Z,a~z,0~9,_ 中任意一個 \W:
原创 簡單工廠
首先創建一個種類 public interface Car { void run(); } 創建一個audi類 public class Audi implements Car{ @Override public
原创 工廠模式
先創建一個汽車的功能接口,讓汽車都實現它的基本功能 public interface Car { void run(); } 創建一個汽車工廠的接口,用於生產不同品牌的汽車 public interface CarFactory
原创 單例模式(靜態內部類實現)
靜態內部類實現方式(也是一種懶加載方式) 要點: 外部類沒有static屬性,則不會像餓漢式那樣立即加載對象只有真正調用了getInstance()纔會加載靜態內部類,加載類時是線程安全的。 sc是static final類型,保證了內存
原创 單例模式(雙重檢測鎖實現)
雙重檢測鎖: 這個模式將同步內容下放到if內部,提高了執行效率,不必每次獲取對象時都進行同步,只有第一次才同步創建了以後就沒必要了。 由於編譯器優化原因和jvm底層內部模型原因 ,有時候會出問題,不建議使用 public class
原创 單例模式(防止反序列化破解單例模式)
public class Client2 { public static void main(String[] args) throws Exception { //通過反序列化的方式構造多個對象
原创 單例模式(CountDownLatch)
* CountDownLatch * 同步輔助類,在完成一組正在其他線程中執行的操作之前,他允許一個或多個線程一直等待 * countDown()當前線程調用此方法,則計數-1<放finally裏執行要好一點> * await()調
原创 單例模式防止反射破解單例模式
測試懶漢式 單例模式(如何防止反射漏洞) public class Client2 { public static void main(String[] args) throws Exception { //
原创 單例模式(懶漢+餓漢)
單例模式的特點: 由於單例模式只生產一個實力,減少了系統性能開銷,當一個對象的產生需要比較多的資源時,如讀取配置、產生其他依賴對象時,則可以在應用啓動時直接產生一個單例對象,然後永久駐留內存的方式來解決。 單例模式