原创 併發編程 - ReentrantLock

ReentrantLock 對於鎖的獲取分爲公平模式和非公平模式。默認是非公平模式。可由構造器參數來指定。對於tryLock()方法,ReentrantLock只使用了非公平模式。除此之外,也提供了響應中斷、超時等功能。 非公平模

原创 Kafka架構 - Sender (四)

前言 本文針對**Sender#sendProducerData(long now)**展開解析。 源碼解析 Part one 由元數據獲取集羣信息。 獲取就緒檢查結果。 如果有leader無法識別的分區,強制更新元數據。

原创 併發編程 - LockSupport

前言 圍繞線程的狀態 WAITING/TIMED_WAITING <-> RUNNABLE。 從suspend、resume 到 wait、notify,最後到LockSupport的park、unpark逐漸解析各自的特點(使

原创 ZooKeeper架構 - 請求鏈 - SyncRequestProcessor

SyncRequestProcessor 用於記錄請求到磁盤中。在同步到磁盤完成之前,不會傳遞請求給下一個請求處理器。 對於Leader,同步請求到磁盤中,將其傳遞給AckRequestProcessor,用於發送ACK。 對於F

原创 Kafka架構 - send message (二)

生產者流程圖 本文分析以下流程圖的步驟5。 前言 RecordAccumulator主要用來緩存消息,以便Sender線程可以批量發送,進而減少網絡傳輸的資源消耗以提升性能。 該緩存的大小可以通過buffer.memory配置,

原创 kafka架構 - send message (一)

生產者流程圖 本文分析以下流程的步驟1、2、3、4。 How to use it ? 介紹一些平時可能使用的Kafka內部功能。包括攔截器、序列化器、壓縮算法、分區器等。 Interceptor spring.kafka.pro

原创 併發編程 - 阻塞隊列 - SynchronousQueue (非公平模式)

TransferStack 非公平模式基於棧的FILO(先進後出)的思想。transfer(…) 方法的三種判斷處理,是其TransferStack的核心。 源碼解析 屬性: 方法: 判斷是否是互補模式。 cas方

原创 ZooKeeper架構 - 請求鏈 - FinalRequestProcessor

FinalRequestProcessor 對於事務請求,將事務請求應用到本地內存中。 記錄已提交事務的事務日誌中會記錄當前事務請求。 根據請求的類型,作出對應的響應處理。 源碼分析 public void processReq

原创 ZooKeeper架構 - 請求鏈 - ToBeAppliedRequestProcessor

ToBeAppliedRequestProcessor 將CommitProcessor處理過的已提交的請求,逐個交給FinalRequestProcessor處理。然後將這個請求從隊列中刪除。只有Leader纔有這個處理器。 源

原创 ZooKeeper架構 - 請求鏈 - CommitProcessor

CommitProcessor 事務提交處理器。對於非事務請求,直接交給下一級處理器進行處理;而對於事務請求,等待集羣內針對Proposal的投票,直到該Proposal可以被提交,然後再交給下一級處理器處理。 使用LinkedL

原创 MyBatis架構 - 緩存機制

一級緩存 生命週期和SqlSession相同。底層使用沒有固定容量的HashMap存儲數據。多個SqlSession或者分佈式環境下,數據庫的血操作會造成髒數據。建議設定緩存級別爲statement。 一級緩存配置 <setti

原创 ZooKeeper架構 - Watcher機制

特點 一次性 : 無論是服務端還是客戶端,一旦watcher被觸發,都會從存儲中刪除該watcher。因此需要反覆註冊,有效減輕服務器的壓力。 客戶端串行執行 : 客戶端對於watcher的回調是串行的,因爲是從阻塞隊列中取出事

原创 java併發編程 - 阻塞隊列 - SynchronousQueue

前言 一種阻塞隊列,插入操作必須要有對應的刪除操作正在執行,反之亦然。它沒有任何容量。不能執行peek()操作。不能迭代。適用於線程間的傳遞,一個線程向另一個線程傳遞一些信息、事件、或者任務等。支持公平(FIFO)和非公平模式(L

原创 Spring MVC - RequestMappingInfo

compareTo(…) 比較兩個RequestMappingInfo對象。 /** * Compares "this" info (i.e. the current instance) with another info

原创 Spring MVC源碼解析 - HandlerMapping組件(一) - BeanNameUrlHandlerMapping

前言 BeanNameUrlHandlerMapping是基於請求的URL與bean的name進行匹配映射。支持模式匹配。 源碼解析 BeanNameUrlHandlerMapping 確定給定bean匹配的URLs。 bean的