原创 模式之兩階段終止

打斷 sleep,wait,join 的線程 這幾個方法都會讓線程進入阻塞狀態 打斷 sleep 的線程, 會清空打斷狀態,以 sleep 爲例 public static void test1() throws Interru

原创 線程的狀態

1. 五種狀態 這是從 操作系統 層面來描述的 【初始狀態】僅是在語言層面創建了線程對象,還未與操作系統線程關聯 【可運行狀態】(就緒狀態)指該線程已經被創建(與操作系統線程關聯),可以由 CPU 調度執行 【運行狀態】指獲取了 CPU

原创 OAuth2.0介紹

OAuth(開放授權)是一個開放標準,允許用戶授權第三方應用訪問他們存儲在另外的服務提供者上的信息,而不 需要將用戶名和密碼提供給第三方應用或分享他們數據的所有內容。OAuth2.0是OAuth協議的延續版本,但不向 後兼容OAuth 1

原创 用命令行管理aws s3

AWS官方文檔: http://docs.amazonaws.cn/cli/latest/userguide/using-s3-commands.html 管理存儲桶   創建桶; $ aws s3 mb s3://bucket-name

原创 單例模式

1. 手寫單例模式 2. 線程安全的單例模式   什麼是單例 單例類在整個程序中只能有一個實例,這個類負責創建自己的對象,並確保只有一個對象被創建。   代碼實現要點 a) 私有構造器 b) 持有該類的屬性 c) 對外提供獲取實例的靜態方

原创 線程池配置合理線程數

CPU密集型 CPU密集的意思是該任務需要大量的運算,而沒有阻塞,CPU一直全速運行。 CPU密集任務只有字真正的多核CPU上才能得到加速(通過多線程)。 而在單核CPU上,無論你開幾個模擬的多線程該任務都不可能得到加速,因爲CPU總的運

原创 Java中可以作爲GC Roots的對象

1. 虛擬機棧(棧幀中的局部變量區,也叫做局部變量表)中引用的對象。 2. 方法去中的類靜態屬性引用的對象。 3. 方法去中常量引用的對象。 4. 本地方法棧中JNI(Native方法)引用的對象。

原创 線程池7大參數深入介紹

1. corePoolSize:線程池中的常駐核心線程數     1)在創建了線程池後,當有請求任務來之後,就會安排池中的線程去執行請求任務,近似理解爲今日當值線程     2)當線程池中的線程數目達到corePoolSize後,就會把到

原创 強引用、弱引用、軟引用、虛引用分別是什麼?

強引用 當內存不足,JVM開始垃圾回收,對於強引用的對象,就算是出現了OOM也不會對該對象進行回收,死都不收。 強引用是我們最常見的普通對象引用,只要還有強引用指向一個對象,就能表明對象還“活着”,垃圾收集器不會碰這種對象。在Java中最

原创 線程池底層工作原理

1. 在創建了線程池後,等待提交過來的任務請求。 2. 當調用execute方法添加一個請求任務時,線程池會做如下判斷:     2.1 如果正在運行的線程數量小於corePoolSize,那麼馬上創建線程運行這個任務;     2.2

原创 JVM虛擬機底層原理

調優 JVM調優主要就是調整下面兩個指標 停頓時間:垃圾收集器做垃圾回收中斷應用執行的時間。-XX:MaxGCPauseMillis 吞吐量:垃圾收集的時間和總時間的佔比1/(1+n),吞吐量爲1-1/(1+n)。-XX:GCTimeRa

原创 ==和equals的區別

1. ==既可以比較基本類型也可以比較引用類型。對於基本類型就是比較值,對於引用類型局勢比較內存地址 2.equals的話,它是屬於java.lang.Object類裏面的方法,如果該方法沒有被重寫過默認也是==;我們可以看到String

原创 equals的重寫

以Person爲例,何時需要重寫equals()? 當一個類有自己特有的“邏輯相等”概念,當改寫equals()的時候,總是要改寫hashCode(),根據一個類的equals(改寫後),兩個截然不同的實例有可能在邏輯上是相等的,但是,根

原创 Eclipse工具裏equals的重寫

以eclipse爲例,直接鼠標右鍵即可複寫equals和hashCode,^_^ 問題:爲什麼用eclipse複寫hashCode方法,有31這個數字? 計算機的乘法涉及到移位運算。當一個數乘以2時,就直接拿該數左移一位即可!選擇31原因

原创 MySQL事務

###讀未提交(READ UNCOMMITTED) 一個事務可以讀到其他事務還沒有提交的數據,會出現髒讀。> 一個事務讀到了另一個未提交事務修改過的數據,這就是髒讀。 ###讀已提交(READ COMMITTED) 一個事務只能讀到另一個