原创 圖解排序算法之快速排序——三數取中法

快速排序由C. A. R. Hoare在1962年提出。它的基本思想是:通過一趟排序將要排序的數據分割成獨立的兩部分,其中一部分的所有數據都比另外一部分的所有數據都要小,然後再按此方法對這兩部分數據分別進行快速排序,整個排序過程可以遞歸

原创 深入理解ThreadLocal的原理及內存泄漏問題

        學習Java中常用的開源框架,Mybatis、Hibernate中設計到線程通過數據庫連接對象Connection,對其數據進行操作,都會使用ThreadLocal類來保證Java多線程程序訪問和數據庫數據的一致性問題。就

原创 使用myabtis連接PostgerSQL逆向生成代碼

        這裏使用的是maven插件的形式生成代碼,之前一直使用代碼生成一直錯誤,使用maven還比較簡單,這裏就介紹一個使用maven插件的形式逆向生成代碼。         1.在pom文件中添加插件,如下代碼: <build

原创 單點登錄實現原理(SSO)

簡介 單點登錄是在多個應用系統中,用戶只需要登錄一次就可以訪問所有相互信任的應用系統的保護資源,若用戶在某個應用系統中進行註銷登錄,所有的應用系統都不能再直接訪問保護資源,像一些知名的大型網站,如:淘寶與天貓、新浪微博與新浪博客等都用到了

原创 @Autowired、@Resource和@Inject註解的區別(最詳細)

     在Spring中依賴注入可以使用@Autowired、@Resource和@Inject來完成,並且在一般的使用中是可以相互替換的(注意是一般),不過三者還是有區別,今天來介紹一下他們的區別:      @Autowired註解

原创 結合JDK源碼深入理解模板方法模式(TemplateMethod)

1.模板方法模式的概念        介紹:        模板方法模式是編程中經常用得到模式。它定義了ー個操作中的算法骨架,將某些步驟延遲到子類中實現。這樣,新的子類可以在不改變個算法結構的前提下重新定義該算法的某些特定步驟(這是一種設

原创 關於LinkedHashMap中accessOrder屬性的理解

        今天學習了使用LinkedHashMap來實現LRU算法,具體的關於LinkedHashMap的深入瞭解可以查看:Java集合詳解5:深入理解LinkedHashMap和LRU緩存這篇文章,在介紹accessOrder屬性

原创 java中Option的應用

      關於Option的介紹可以看深入理解java8中的Optional 類就可以了,但是複雜一點的使用在網上卻沒有搜到,這裏結合我開發時遇到的真實案例來講一下Option的使用。 public class PictureCond

原创 數據庫在分佈式系統中使用的解決方案

想用數據庫“讀寫分離” 請先明白“讀寫分離”解決什麼問題      https://baijiahao.baidu.com/s?id=1614304400276051465&wfr=spider&for=pc   如何實現高容量大併發數據

原创 Java8中Stream的用法

        Stream 是用函數式編程方式在集合類上進行復雜操作的工具,其集成了Java 8中的衆多新特性之一的聚合操作,開發者可以更容易地使用Lambda表達式,並且更方便地實現對集合的查找、遍歷、過濾以及常見計算等。 Strea

原创 http 請求報文Header裏的Content-Type類型

     HTTP請求由狀態行、請求頭、請求正文三部分組成:           狀態行:包括請求方式Method、資源路徑URL、協議版本Version;           請求頭:包括一些訪問的域名、用戶代理、Cookie等信息;

原创 js中null,undefined和空的區別

// undefined代表爲未定義 // "undefined"表示一個字符串 // typeof(exp)爲一個字符串,表示類型,可以用typeof(typeof(exp))證明 var exp = "undefined"; if

原创 springboot圖片(文件)上傳時爲null

       這幾天在使用springboot時,controller層接受前端傳入的數據爲null,而在發送請求時也是有數據的,這就讓我很疑惑,於是在查看了一下源碼,發現了問題所在。       1. 我們都知道,在springboot

原创 IntelliJ IDEA常用快捷鍵

1.ctrl快捷鍵 快捷鍵 英語 介紹 Ctrl + F Find 在當前文件進行文本查找 (必備) Ctrl + R Replace 在當前文件進行文本替換 (必備) Ctrl + Z Undo 撤銷 (必備) Ctrl + Y Del

原创 相交鏈表 【LeetCode 鏈表】

編寫一個程序,找到兩個單鏈表相交的起始節點。 例如,下面的兩個鏈表: A: a1 → a2 ↘ c1 → c2 → c3