原创 GC Roots以及jvm參數

1.什麼是GC Roots? java中可以作爲GC Roots的對象:①虛擬機棧(棧幀中的局部變量區,也叫作局部變量表)中引用的對象②方法區中的類靜態屬性引用的對象③方法區中常量引用的對象④本地方法棧中native方法引用的對象。通過一

原创 redis五種數據結構應用場景

Hash應用場景 1.以電商購物車爲例:以用戶id爲key,商品id爲field,商品數量爲value 添加商品-》hset cart:1001 10088 1 增加1088商品數量-》hincrby cart:1001 10088 1

原创 幾種常見的鎖

公平鎖:是指多個線程按照申請鎖的順序來獲取鎖,類似排隊打飯,先來後到 非公平鎖:是指多個線程獲取鎖的順序並不是按照申請鎖的順序,有可能後申請的線程比先申請的線程優先獲取鎖,在高併發的情況下,有可能會造成優先級反轉或者飢餓現象。 併發包中R

原创 ArrayList類線程不安全的解決方法

/** * 描述: ArrayList線程不安全由於add方法沒加鎖,多線程高併發情況下java.util.ConcurrentModiricationException異常 * * @author xinjiao.yu@mark

原创 volatile,CAS,ABA三個關鍵字

1.volatile是java虛擬機提供的輕量級的同步機制,三個特點①保證可見性(JMM模型)②不保證原子性(存在往主內存寫數據時覆蓋)③禁止指令重排。 2.如何解決原則性:①加sync鎖②使用JUC包下AtomicInteger類(CA

原创 redis知識腦圖

 

原创 redis的bitmap,hyperloglog,geo數據結構

1.getbit key offset:獲取指定key對應偏移位上的Bit值 2.setbit key offset value:設置指定key對應偏移位上的bit值,value只能爲0或1 3.Bitop op(and,or,not,x

原创 redis持久化的AOF重寫機制

1.手動通過命令在後臺開始重寫功能:bgrewriteaof 2.AOF自動重寫方式 自動重寫觸發條件設置:①auto-aof-rewrite-min-size size②auto-aof-rewrite-percentage perce

原创 OOM以及垃圾收集器

1.常見的幾種OOM? ①java.lang.StackOverflowError②java.lang.OutOfMemoryError:Java heap space③java.lang.OutOfMemoryError:GC over

原创 線程池

1.線程池7大參數 線程池底層類ThreadPoolExecutor(int corePoolSize,int maximumPoolSize, long keepAliveTime,TimeUnit unit,BlockingQueue

原创 生產者消費者ReentrantLock實現以及BlockingQueue實現

1.ReentrantLock實現 /** * 描述: 一個初始值爲0的變量,兩個線程對其交替操作,一個加一個減 * * @author [email protected] * @create 2020/2/22 11

原创 阻塞隊列

1.阻塞隊列:當阻塞隊列爲空時,從隊列中獲取元素的操作會被阻塞,當阻塞隊列滿時,往隊列中添加元素的操作會被阻塞。 2.爲什麼需要BlockingQueue? 在多線程的領域,所謂阻塞,在某些情況下會掛起線程即阻塞,一旦條件滿足,被掛起的線

原创 CountDownLathch,CyclicBarrier,Semaphore使用過嗎

1.CountDownLatch讓一些線程阻塞直到另一些線程完成一系列操作後才被喚醒,主要有兩個方法,當一個或多個線程調用await方法時,調用線程會被阻塞,其他線程調用countDown方法會將計數器減1(調用countDown方法的線

原创 ReentrantLock的Condition條件實現精確喚醒某個線程

/** * 描述: 介紹Reentrantlock的condition條件可以實現精確喚醒某個線程 * 題目:多線程之間按順序調用,實現A->B->C三個線程啓動,要求AA打印5次BB打印10次CC打印15次,這樣循環10輪 *