原创 【併發編程】併發容器ReentrantLock

  ReentrantLock  可重入鎖 ,實現了Lock 接口 ,是AQS框架的具體實現 。支持重入,等待超時,響應中斷,公平和非公平鎖。   ReentrantLock 使用   例1 public class Reentran

原创 【併發編程】線程創建和線程狀態轉換

目錄   線程創建方式 線程狀態轉換 線程常用方法 線程創建方式 1.繼承Thread類 2.實現Runnable接口 3.實現callable接口 callable  創建有返回值的線程 /** * @author zp * @D

原创 volatile

volatile是什麼 volatile是 java提供的一種輕量級同步機制。volatile變量並不保證原子性,因此volatile並不保證線程安全。 volatile關鍵字有兩個作用 1.禁止指令重排序 2.保證可見性 什麼是指令重排

原创 【JAVA SE】代理模式(一)--靜態代理

代理模式的一些概念代理模式:爲一個A對象提供一個代理對象B,以控制對A對象的訪問。可以把代理對象B理解爲一箇中介。假如一個租房子的場景:客戶不能或不想直接找房主租房子,那麼這時候就需要一箇中介,代理類就是中介,而被代理類就是房主。代理模式

原创 【JAVA SE】集合框架--LinkedList

與ArrayList不同的是,LinkedList是基於鏈表實現的。所以這裏要簡單的說下數據結構,解釋完數據結構LinkedList的源碼實現看起來就很容易了。簡單來說,一般將數據結構分爲兩類:線性數據結構和非線性數據結構。線性數據結構有

原创 【JAVA SE】集合框架--HashMap原理深入理解(一)

HashMap結構HashMap是一個用來存放Key-Value鍵值對的集合,每一個鍵值對是一個Entry對象(Entry對象結構下面詳細介紹),Entry對的數組組成了HashMap的主幹。HashMap數據結構是數組加鏈表,主幹是一個

原创 【JAVA SE】集合框架--HashSet(一)

HashSet實現了Set接口。在實際開發中HashSet是Set的實現類裏使用頻率最高的類。既然實現了Set接口,所以HashSet必然是不能放入重複元素的。那麼什麼是“重複的元素”呢?先看下面的例子public static void

原创 【JAVA SE】內部類

內部類可以分爲:成員內部類、靜態內部類、局部內部類、匿名內部類。內部類可以降低命名空間的慌亂,定義在類的內部。 1.靜態內部類class StaticInner{ private static int a=4;

原创 【JVM】類加載機制(一)

類加載基本介紹JAVA類加載分爲三步: 加載、連接 、初始化。類加載的最終產物是位於heap(堆)中的類對象,Class對象封裝了在方法區內的類的數據結構,提供了訪問方法區類數據結構的接口(即反射接口)。下面看一段代碼:class Sin

原创 【併發編程】AQS之ReentrantLock

ReentrantLock和synchronized的比較可重入性ReentrantLock和synchronize同一線程獲取鎖後都可以重複進入,ReentrantLock可以多次枷鎖(進入一次鎖的計數器自增1,需要計數器下降爲0時其他

原创 插入排序、選擇排序

最近換工作,996,時間真挺少,寫點簡單的。直接上代碼。 選擇排序 /** * @author zp * @Description: 選擇排序 * @date 2018/8/17 上午12:21 */ public class

原创 Optional

Optional  可選的 。出現的目的 ,爲了解決空指針異常 。 1.是一個容器對象(相當於一個包裝的概念),可能包含也可能不包含一個非空的值。如果一個值存在的話,那麼isPresent()方法返回一個true,get()方法返回這個值

原创 【JAVA SE】集合框架--HashMap原理深入理解(二)

數組擴容HashMap的容量是有限的。當經過多次元素插入,使得HashMap達到一定飽和度時,Key映射位置發生衝突的機率會逐漸提高。這時候,HashMap需要擴展它的長度,也就是進行Resize。影響發生Resize的因素有兩個:1.C

原创 Mysql數據庫事物級別

事物隔離級別1.未提交讀。當其他事物未commit時,當前事物可以讀取其他事物已修改的數據2.已提交讀。當其他事物未commit時,當前事物不可以讀取其他事物修改的數據讀取到的是其他事物未開始之前的數據。如果A事物修改了某條數據,而當前事

原创 【JAVA SE】集合框架--ArrayList

ArrayList繼承了 AbstractList 類,實現了collection接口。ArrayList顧名思義 ,數組列表的意思。一.常用api使用1.add(Object obj);add方法用於向list中添加對象,將指定元素追加