原创 Maven中pom.xml文件常用標籤詳解
Maven的pom文件常用的標籤描述,轉載爲了方便學習和查閱 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.or
原创 線程池概念及實現簡單的線程池
本文主要介紹線程池的概念,原理,以及簡單實現一個線程池,若文中有不足或錯誤之處,請指出(ps:感激涕零,不要讓我陷入錯誤的誤區。。。) 一:線程池的基本概念和原理 在此之前,先來思考一個問題,爲啥要用線程
原创 Queue API的幾種實現詳解
Queue API詳解Queue API的幾種方法的使用ArrayBlockingQueue原理及源碼解析ArrayBlockingQueue的成員變量ArrayBlockingQueue的offer和put方法ArrayBloc
原创 HashMap、ConcurrentHashMap 1.7和1.8對比
本篇內容是學習的記錄,可能會有所不足。 一:JDK1.7中的HashMap JDK1.7的hashMap是由數組 + 鏈表組成 /** 1 << 4,表示1,左移4位,變成10000,即16,以二進制形式運行,效率更高 *
原创 線程安全之可見性(一)
一:舉個栗子 先舉個例子: public class ThreadVolidate { public static int i = 0; public static Boolean flag = true;
原创 線程安全之可見性(三)
一:final的處理 1.1 經final修飾的變量或者對象,在其構造函數中初始化之後,其他線程一定可以獲得正確的構造版本,即可以獲得變量或者對象字段的最新值。 看下面的代碼: public class ThreadFinal
原创 synchronized鎖由淺入深解析
一:幾種鎖的概念 1.1 自旋鎖 自旋鎖,當一個線程去獲取鎖時,如果發現鎖已經被其他線程獲取,就一直循環等待,然後不斷的判斷是否能夠獲取到鎖,一直到獲取到鎖後纔會退出循環。 1.2 樂觀鎖 樂觀鎖,是假設不會發
原创 線程協作的三種方式
線程之間需要進行通信,通信有數據共享和線程協作兩種方式,這篇主要說線程協作的內容。 一:數據共享 1:文件共享;2:網絡共享;3:變量共享。 二:線程協作 先來個場景:落魄程序員擺攤賣起了炒粉,起先有人去買炒粉,發現炒粉賣
原创 獲取線程的執行結果
一:Runnable和Callable的區別 最本質的區別在於,Runnable沒有返回結果,Callable會有一個返回結果,返回結果是泛型,可以自己定義。舉例子說明: public class ThreadRunnable {
原创 HashSet、CopyOnWriteArraySet、ConcurrentSkipListSet源碼解析(JDK1.8)
set源碼解析HashSet源碼解析HashSet簡單使用的demoHashSet中的變量HashSet的構造函數HashSet的add方法HashSet的iterator方法HashSet的size方法HashSet的isEmp
原创 ForkJoinPool的工作原理和使用
場景:當任務很多,成千上萬個,或者單個任務很大,執行起來很耗時間,這時,就可以把任務進行拆分,拆分成多個小任務去執行,然後小任務執行完畢後再把每個小任務執行的結果合併起來,這樣就可以節省時間。 ForkJoi
原创 Git分支及其協同開發
Git協同開發Git分支Git是如何保存數據的Git分支的本質Git分支的操作遠程倉庫與本地倉庫分支開發一個項目多個遠程倉庫遠程倉庫操作命令協同開發Git flow工作流GitLub安裝搭建CentOS7防火牆設置使用GitLub
原创 認識Git並瞭解Git的基本知識
Git基礎知識認識Git版本控制版本控制的發展史安裝GitGit的核心概念Git的使用原理Git的工作流程Git的基本流程Git與SVN的區別Git的基本使用初始化Git創建一個Git倉庫Git的功能 認識Git 版本控制 版本控
原创 Linux入門之基本的概念、安裝和操作
Linux入門Linux基本概念Linux的安裝虛擬機安裝CentOS7CentOS設置網絡Linux基本操作命令文件目錄操作命令進程操作命令文本操作命令Linux權限操作用戶和組操作命令權限操作結束語 Linux基本概念 1:
原创 JAVA數據類型轉換及相關的註釋、編碼規範
我們知道java中有8中數據類型,而類型轉換就是可以把一個值從一種類型轉換爲另一種類型的過程,比如我們有字符串類型的數據"123",那麼我們可以把它轉換爲一個int類型的數據。 而且從之前的數據類型看,每種數據類