原创 Synchronized的原理及自旋鎖,偏向鎖,輕量級鎖,重量級鎖的區別

在多線程併發編程中Synchronized一直是元老級角色,很多人都會稱呼它爲重量級鎖,但是隨着Java SE1.6對Synchronized進行了各種優化之後,有些情況下它並不那麼重了,Java SE1.6中爲了減少獲得鎖和釋放鎖帶來的

原创 Mybatis邏輯分頁原理解析RowBounds

Mybatis提供了一個簡單的邏輯分頁使用類RowBounds(物理分頁當然就是我們在sql語句中指定limit和offset值),在DefaultSqlSession提供的某些查詢接口中我們可以看到RowBounds是作爲參數用來進行分

原创 Mybatis插件原理分析分頁插件

在Mybatis中插件最經常使用的是作爲分頁插件,接下來我們通過實現Interceptor來完成一個分頁插件。 雖然Mybatis也提供了分頁操作,通過在sqlSession的接口函數中設置RowBounds,給RowBounds設置初值

原创 prim算法

class minMgraphTree { public void createMgraph(MGraph graph, int vertes, char[] vertex, int[][] weight) {

原创 redis分佈式鎖(高併發)

redis分佈式鎖(高併發) redis是天生單線程特性,的內存緩存服務器,當有多個線程同時訪問一臺redis服務器時,redis會在內部對線程進行排隊。所以redis可以用此特性進行分佈式鎖。 高併發的場景下,redis分佈式鎖很可能永

原创 AVL樹

AVL樹 給你一個數列{1,2,3,4,5,6},要求創建一顆二叉排序樹(BST), 並分析問題所在   上面BST(二叉排序樹) 存在的問題分析: 左子樹全部爲空,從形式上看,更像一個單鏈表. 插入速度沒有影響 查詢速度明顯降低(因爲需

原创 堆排序

1:堆 毫無疑問,排序兩個字沒必要去死磕,這裏的重點,在於排序的方式,堆排序,就是以堆的形式去排序,毫無疑問,瞭解堆很重要。 那麼,什麼是堆呢? 這裏,必須引入一個完全二叉樹的概念,然後過渡到堆的概念。 上圖,就是一個完全二叉樹,其特點

原创 Java中==和equals的區別(詳細)

要想充分了解==和equals的區別需要對java的內存有所瞭解: Java內存模型中存在這兩種內存區域:一種是棧內存,一種是堆內存。 (注:程序計數器,運行時數據區,永久代,直接內存這裏不討論,因爲java對象保存在棧內存(基本數據類型

原创 哈夫曼樹

哈夫曼樹 wpl帶權路徑長度最小的樹 二叉樹樹的思想: 創建節點, 創建二叉樹, 其中二叉樹的操作都定義在節點類裏面,二叉樹類裏調用這些方法,其中定義方法的時候以一個節點爲二叉樹遞歸定義。因爲一個節點就是一顆二叉樹。 p