一些內存模型、併發、netty知識點的記錄

happens-before:描述內存可見性
as-if-serial:不管怎麼重排序,程序的運行結果不會改變react

當線程釋放鎖時,JMM會把該線程對應的本地內存中的共享變量刷新到主內存中,也就是說,對某個對象的加鎖,鎖釋放後影響的是所有的本地內存共享變量 redis

ReentrantLock依賴了隊列同步器AQS,其實現方式是volatile變量的讀寫操做進行線程間通訊,經過CAS修改state值,成功,其state值>0,則取鎖成功數組

ConcurrentHashMap:有一個Segment的數組,它繼承了ReentrantLock可重入鎖的功能,在put時,經過hash及rehash,再取模肯定Segment的index,Segment中有HashEntry數組,纔是保存key,value的地方,經過put等修改操做修改mod,計算總數時,在mod不變時不加鎖計算,發現mod變化後,加鎖計算緩存

DelayQueue,能夠保存有效期,可用來實現緩存過時清理安全

Fork/Join,大任務切分子任務,再聚合結果網絡

CountDownLatch,等待其餘先出完成操做,可用來提示任務結束等多線程

CyclicBarrier,等待多個線程到達同一個屏障後,再一塊兒往下仔細,有reset方法,可重試app

Semaphore做爲信號量,可控制線程數量,用來管理有限的資源訪問優化


多路複用器監聽某個端口的事件,把就緒的事件選擇集合進行I/O操做線程

ChannelPipeline:Channel數據管道,消息在其中流動傳遞,就像Filter鏈表同樣,其上能夠綁定channelHandler,它是線程安全的,可動態增刪handler

Reactor多線程模型:一個NIO線程輔助監聽服務端,接受TCP請求
網絡IO操做有一個線程池負責

Reactor主從多線程模型:Acceptor:一個NIO線程池負責監聽服務端,
sub reactor一個線程池負責IO

netty對網絡閃斷等問題已經優化,不會形成資源沒有關閉,對業務異常進行攔截

ServerHandler、ClientHandler都是ChannelInBoundChannel,能夠讀取數據

redis備份rdb\aof ,bgSave,重寫aof

byteBuffer position,limit

相關文章
相關標籤/搜索