原创 多線程高併發編程(9) -- CopyOnWrite寫入時複製

  CopyOnWrite寫入時複製   CopyOnWrite,即快照模式,寫入時複製就是不同線程訪問同一資源的時候,會獲取相同的指針指向這個資源,只有在寫操作,纔會去複製一份新的數據,然後新的數據在被寫操作完後立馬被其他線程看到最新的數

原创 日常開發問題記錄

StringButils.isBlank/isNotBlank: if(param==null||"".equals(param.trim()){....} if(!(param==null||"".equals(param.trim(

原创 多線程高併發編程(8) -- Fork/Join源碼分析

一.概念   Fork/Join就是將一個大任務分解(fork)成許多個獨立的小任務,然後多線程並行去處理這些小任務,每個小任務處理完得到結果再進行合併(join)得到最終的結果。   流程:任務繼承RecursiveTask,重寫com

原创 多線程高併發編程(7) -- Future源碼分析

一.概念   A Future計算的結果。 提供方法來檢查計算是否完成,等待其完成,並檢索計算結果。 結果只能在計算完成後使用方法get進行檢索,如有必要,阻塞,直到準備就緒。 取消由cancel方法執行。 提供其他方法來確定任務是否正常完

原创 多線程高併發編程(6) -- Semaphere、Exchanger源碼分析

一.Semaphere   1.概念   一個計數信號量。在概念上,信號量維持一組許可證。如果有必要,每個acquire()都會阻塞,直到許可證可用,然後才能使用它。每個release()添加許可證,潛在地釋放阻塞獲取方。但是,沒有使用實

原创 多線程高併發編程(5) -- CountDownLatch、CyclicBarrier源碼分析

一.CountDownLatch   1.概念 public CountDownLatch(int count) {//初始化 if (count < 0) throw new IllegalArgumentExc

原创 多線程高併發編程(4) -- ReentrantReadWriteLock讀寫鎖源碼分析

背景:   ReentrantReadWriteLock把鎖進行了細化,分爲了寫鎖和讀鎖,即獨佔鎖和共享鎖。獨佔鎖即當前所有線程只有一個可以成功獲取到鎖對資源進行修改操作,共享鎖是可以一起對資源信息進行查看。即寫同時只能一個人寫,讀可以大家

原创 多線程高併發編程(2) -- 可重入鎖介紹和自定義

背景:   什麼是 “可重入”?可重入就是說某個線程已經獲得某個鎖,可以再次獲取鎖而不會出現死鎖。即可重入鎖的作用就是爲了避免死鎖,java中synchronized和ReentrantLock都是可重入鎖。 //synchroniz

原创 多線程高併發編程(3) -- ReentrantLock源碼分析AQS

背景:   AbstractQueuedSynchronizer(AQS) public abstract class AbstractQueuedSynchronizer extends AbstractOwnableSynch

原创 多線程高併發編程(1) -- 基礎及詳解

背景:   進程和線程的區別:   進程的內存大小爲:堆內存+線程數量*棧內存,即線程數量 =( 最大地址空間[MaxProcessMemory] - JVM堆內存 - 系統保留內存[ReservedOsMemory] )/ Thread

原创 MySQL筆記(9)-- 各種鎖及實現

一、背景   MySQL有兩種類型的鎖:lock(鎖)和latch(閂鎖): 類型 lock latch 對象 事務 線程 保護 數據庫內容 內存數據結構 持續時間 整個事務 臨界資源 模式 行鎖、表鎖、意向鎖 讀

原创 MySQL筆記(7)-- 事務和實現

一、背景   前面有說到InnoDB是事務型引擎,那什麼是事務?事務的特性是什麼?它所對應的隔離級別是哪些?是怎麼實現的?下面來詳細討論下。 二、事務的理解   事務就是一組原子性的SQL查詢,或者說一個獨立的工作單元。如果數據庫引擎能夠成

原创 MySQL筆記(2)-- CURD多表操作、庫表操作、約束條件、字段類型

insert語法:方式一支持插入多行,方式二不支持;方式一支持子查詢,方式二不支持 方式一:insert into tableName(column,column...) values(str,str...); 方式二:insert i

原创 MySQL筆記(4)-- 索引優化

索引失效情況: 最佳左前綴法則:如果索引了多列,要遵循最左前綴法則,指的是查詢從索引的最左前列開始並且不跳過索引中的列;【覆蓋索引有a,b,c,條件中使用了b或bc都導致該索引失效;如果條件使用了ac,導致部分索引生效,只使用了a】【索

原创 自己挖的坑自己填--docker創建實例出現Waiting for SSH to be available…

在之前使用Docker for Windows Installer.exe直接安裝,通過docker-machine-driver-vmwareworkstation.exe實現docker和VM的共存,而不必安裝VirtualBox,但