原创 BeanFactoryPostProcessor和BeanPostProcessor

Spring提供了兩種PostProcessor(後置處理)bean的擴展接口,分別爲BeanPostProcessor和BeanFactoryPostProcessor  1.BeanFactoryPostProcessor:是針對於b

原创 HashMap - - JDK1.8 源碼分析

一、 默認常量 static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // 默認數組長度16 static final int MAXIMUM_CAPACITY = 1 << 30; /

原创 java.lang.UnsupportedOperationException 原因解析

List list = Collections.singletonList("1"); list.remove("1"); //報錯 java.lang.UnsupportedOperationException list.add

原创 netty學習01-傳統IO和NIO的比較

傳統IO的特點 有兩個阻塞點: 1. server.accept();接收連接 2.InputStream.read(bytes);讀取數據 單線程下只能有一個客戶端連接,用線程池可以解決單個客戶端連接的問題,但是太消耗性能。 NIO的特

原创 list通過stream轉map報錯

如下圖所示,在做組裝map的時候報錯了。 原因就是因爲組裝的鍵值對有爲null的原因,雖然hashmap允許key和value都爲null。

原创 HashSet--JDK1.8源碼分析

關於HashMap的源碼解讀,可參考https://blog.csdn.net/jiang_zf/article/details/104532186 一、一些變量介紹 //用來存儲元素,從這裏也可以看出來,hashset內部是以

原创 類加載機制

有這樣一道面試題: class Singleton{ private static Singleton singleton = new Singleton(); public static int value1;

原创 LinkedHashMap--JDK1.8源碼分析

與HashMap的區別:內部維持了一個雙向鏈表,可以保持順序 LinkedHashMap繼承自HashMap,很多操作都是跟HashMap一樣,對於一樣的地方就不再介紹,詳細可參考HashMap - - JDK1.8 源碼分析  ,下面主

原创 Hashtable--JDK1.8源碼分析

一、一些變量介紹 //存儲鍵值對的數組 private transient Entry<K,V>[] table; //鍵值對總數 private transient int count;

原创 策略模式

工廠模式與策略模式的一些區別: 工廠模式是創建型模式,適應對象的變化。 策略模式是行爲性模式,適應行爲的變化 點贊 收藏 分享 文章舉報 jiang_zf 發佈了57 篇原創

原创 Netty學習10-Netty的socket攻擊及預防

在前面的文章我們說到過,可以採用長度+數據的格式定義包結構;但是如果長度定義的特別大,那麼緩衝區必然會存儲不下,而引起宕機或其他問題。這便是一種socket攻擊。 除此之外,如果定義的長度和實際長度不匹配,比如實際長度爲5,定義的長度爲6

原创 XSS漏洞和CSRF問題

可參考https://www.cnblogs.com/itsuibi/p/10752868.html,言簡意賅 XSS漏洞 定義: XSS是跨站腳本攻擊,屬於被動式的攻擊。XSS指的是惡意攻擊者往Web頁面裏插入惡意html代碼,當用戶瀏

原创 建造者模式

當一個對象的構造過程比較複雜,或者需要介入到具體的構造過程,比如構造的順序或者構造的部件選擇(有些不需要全部部件都完全初始化)等;可以考慮使用建造者模式; 建造者模式和工廠模式的區別是:建造者模式關心構建過程,代碼體現是調用多個具體的屬性

原创 maven-resources-plugin插件使用

maven-resources-plugin主要是將項目中的資源文件編譯、打包;注意,資源文件不是源代碼,一般是環境的配置文件,默認存在src/main/resources和src/test/resources中。 maven-resou

原创 代理模式

代理模式UML圖 使用代理模式的好處: 1.職責清晰,被代理的真是對象不用關心額外的業務 2.可擴展性強 使用代理模式幾個步驟: 1.創建代理處理類 2.創建代理對象 3.通過代理對象調用相關方法 點贊 收藏 分