原创 多線程之深入理解線程池執行器ThreadPoolExecutor

一. 爲什麼使用線程池? a.線程創建所需時間爲T1,線程執行任務時間爲T2,線程銷燬時間爲T3,而往往T1+T3>T2。所以頻繁創建線程會損壞而外的時間。 b.如果有任務來了,再去創建線程的話效率比較低。 c.線程池可以管理控

原创 數據結構-二分搜索樹

一. 特點: 二分搜索樹是二叉樹。 二分搜索樹的每個節點的值: 大於其左子樹的所有節點的值,小於其右子樹的所有節點的值。 每一棵子樹也是二分搜索樹。 存儲的元素必須有比較性。 我們的二分搜索樹不包含重複元素。如果想包含重複元素

原创 創建線程的三種方式-繼承Thread,實現Runnable以及實現Callable

一. 創建線程的三種方式 1. 實現 Runnable接口 public class RunnableExample implements Runnable { @Override public void run(

原创 Java基礎——代理(靜態代理、JDK動態代理、Cglib動態代理)

代理模式   爲其他對象提供一個代理以控制對某個對象的訪問。代理類主要負責爲委託了(真實對象)預處理消息、過濾消息、傳遞消息給委託類,代理類不現實具體服務,而是利用委託類來完成服務,並將執行結果封裝處理。    其實就是代理類爲被

原创 深入理解JVM(一)——JVM之內存模型(JMM)JDK1.7

聲明: 本文章說明的是JDK1.7的JVM內存模型  JVM內存模型分爲5個部分,分別爲程序計數器,Java虛擬機棧,本地方法棧,堆,方法區。   一.程序計數器      1.什麼是程序計數器?         程序計數器(Progra

原创 數據結構-AVL(自平衡二叉查找樹)插入和刪除的實現

一. AVL的作用 爲什麼使用AVL? 在使用二分搜索樹的時候,在極端的情況下,會退化成鏈表。如下圖 二. AVL的特點 對於任意一個節點,左子樹和右子樹的高度差不能超過1。 高度和節點數量之間的關係也是O(logn)的。 加

原创 數據結構-紅黑樹和2-3樹

一. 紅黑樹的定義 1.每個節點或者是紅色的,或者是黑色的 2.根節點是黑色的(一棵空樹也是紅黑樹)。 3.每個葉子節點(最後的空節點)是黑色的,定義空節點都是黑色的。 4.如果一個節點是紅色的,那麼他的孩子節點都是黑色的。 5

原创 數據結構-線段樹 初始化、區間查詢和區間更新(待完善)

一. 線段樹的特點 平衡二叉樹:最大的深度 和最小的深度 差最大爲1。 一種二叉搜索樹。它將一段區間劃分爲若干單位區間,每一個節點都儲存着一個區間。它功能強大,支持區間求和,區間最大值,區間修改,單點修改等操作。 處理問題

原创 數據結構-雙向鏈表

一. 雙向鏈表的特點 每個節點維護了prev,next 兩個節點和 元素e 不僅可以像單鏈表向後查找,還可以向前查找。 添加/刪除第一個節點和最後一個節點一個節點的時間複雜度都是O(1) 查找的時候,可以判斷index 在前半