原创 JDK源碼閱讀:ByteBuffer

Buffer是Java NIO中對於緩衝區的封裝。在Java BIO中,所有的讀寫API,都是直接使用byte數組作爲緩衝區的,簡單直接。但是在Java NIO中,緩衝區這一概念變得複雜,可能是對應Java堆中的一塊內存,也可能是對應本地內

原创 Java 代碼字節:足智多謀的 Try-With-Resources

當通過 Java 實現業務實例時,對資源進行處理是司空見慣的。一般情況下,資源(如文件或 socket 句柄)封裝在對象中,使用後必須關閉才能釋放資源。通常開發人員有責任關閉自己所創建的資源,以避免資源衝突,一般都會放在 finally 語

原创 Linux下修改Mysql密碼的三種方式,測試過效果,能正常使用

個人分類: mysql修改密碼linux修改mysql密碼軟件編程 有時我們會忘記Mysql的密碼,或者想改一個密碼,以下將對這兩種情況修改密碼的三種解決方法做個總結 本文都以用戶爲 root 爲例; 一、擁有原來的myql的root的密碼

原创 Disruptor源碼閱讀筆記

關於 Disruptor,網絡上有很多的解釋和說法。這裏簡單的概括下。Disruptor 是一個消費者生產者隊列框架,據官網介紹,可以提供非常強大的性能。Disruptor 與其說爲我們帶來了一個框架,更多的是爲我們帶來了一個獨特思路的編程

原创 拯救 Java Code Style 強迫症

2018年10月31日 21:20:46 Java架構大數據 閱讀數:1更多個人分類: java 架構 linux 程序猿編輯這篇文章緣起於上一個持續交付的諮詢項目,當時正在指導客戶團隊的Java工程師做Code Review,發現一個很有

原创 Java併發編程(10):使用wait/notify/notifyAll實現線程間通信的幾點重要說明

在Java中,可以通過配合調用Object對象的wait()方法和notify()方法或notifyAll()方法來實現線程間的通信。在線程中調用wait()方法,將阻塞等待其他線程的通知(其他線程調用notify()方法或notifyAl

原创 Java併發編程(9):死鎖(含代碼)

JAVA大數據中高級架構 2018-11-10 14:04:32當線程需要同時持有多個鎖時,有可能產生死鎖。考慮如下情形: 線程A當前持有互斥所鎖lock1,線程B當前持有互斥鎖lock2。接下來,當線程A仍然持有lock1時,它試圖獲取l

原创 Java併發編程(8):多線程環境中安全使用集合API(含代碼)

Java併發編程(8):多線程環境中安全使用集合API(含代碼)JAVA大數據中高級架構 2018-11-09 14:44:47在集合API中,最初設計的Vector和Hashtable是多線程安全的。例如:對於Vector來說,用來添加和

原创 Java併發編程(6):Runnable和Thread實現多線程的區別(含代碼)

Java中實現多線程有兩種方法:繼承Thread類、實現Runnable接口,在程序開發中只要是多線程,肯定永遠以實現Runnable接口爲主,因爲實現Runnable接口相比繼承Thread類有如下優勢: 1、可以避免由於Java的單繼承

原创 Java併發編程(7):使用synchronized獲取互斥鎖的幾點說明

在併發編程中,多線程同時併發訪問的資源叫做臨界資源,當多個線程同時訪問對象並要求操作相同資源時,分割了原子操作就有可能出現數據的不一致或數據不完整的情況,爲避免這種情況的發生,我們會採取同步機制,以確保在某一時刻,方法內只允許有一個線程。

原创 Java併發編程(5):volatile變量修飾符-意料之外的問題(含代碼)

volatile用處說明在JDK1.2之前,Java的內存模型實現總是從主存(即共享內存)讀取變量,是不需要進行特別的注意的。而隨着JVM的成熟和優化,現在在多線程環境下volatile關鍵字的使用變得非常重要。 在當前的Java內存模型下

原创 Java併發編程(4):守護線程與線程阻塞的四種情況

守護線程Java中有兩類線程:User Thread(用戶線程)、Daemon Thread(守護線程) 用戶線程即運行在前臺的線程,而守護線程是運行在後臺的線程。 守護線程作用是爲其他前臺線程的運行提供便利服務,而且僅在普通、非守護線程仍

原创 Java併發編程(3):線程掛起、恢復與終止的正確方法(含代碼)

JAVA大數據中高級架構 2018-11-06 14:24:56掛起和恢復線程Thread 的API中包含兩個被淘汰的方法,它們用於臨時掛起和重啓某個線程,這些方法已經被淘汰,因爲它們是不安全的,不穩定的。如果在不合適的時候掛起線程(比如,

原创 Java併發編程(1):可重入內置鎖

每個Java對象都可以用做一個實現同步的鎖,這些鎖被稱爲內置鎖或監視器鎖。線程在進入同步代碼塊之前會自動獲取鎖,並且在退出同步代碼塊時會自動釋放鎖。獲得內置鎖的唯一途徑就是進入由這個鎖保護的同步代碼塊或方法。 當某個線程請求一個由其他線程持

原创 Java併發編程(2):線程中斷(含代碼)

使用interrupt()中斷線程當一個線程運行時,另一個線程可以調用對應的Thread對象的interrupt()方法來中斷它,該方法只是在目標線程中設置一個標誌,表示它已經被中斷,並立即返回。這裏需要注意的是,如果只是單純的調用inte