原创 ZooKeeper系列:ZAB協議

一、ZAB協議的核心     所有事務請求必須由一個全局唯一的服務器來協調處理,這樣的服務器被稱爲 Leader 服務器,而餘下的其他服務器則成爲 Follower 服務器。 Leader服務器負責將一個客戶端事務請求轉換成一個事務Pro

原创 MySQL:Explain詳解

目錄 1、id 2、select_type 3、table 4、type 5、possible_keys、key和key_len 6、ref 7、rows 8、Extra     explain命令通常用來分析低效SQL語句執行慢的原因。

原创 ZookKeeper系列:watch機制

目錄: 目錄 一、基本概念 1、核心要素: 2、watcher的創建 3、watch的移除 4、zk關於watch的擔保 5、注意事項 二、Watcher接口 1、事件類型和通知類型 1.1 通知狀態 1.2 事件類型 1.3 注意事項

原创 ZooKeeper系列:Leader選舉

目錄 前置 一、不同場景下的選舉 1、服務啓動時期的Leader選舉 2、服務器運行期間的選舉 二、算法細節 1、投票信息的數據結構 2、網絡IO:QuorumCnxManager 2.1 消息隊列 2.2 連接建立 2.3 消息接收和發

原创 Java併發系列之中級篇之併發包:併發場景下的集合框架

目錄 內容提要 一、ConcurrentHashMap 二、CopyOnWriteArrayList 三、ConcurrentLinkedQueue 1、重要內部類 2、重要成員變量 3、入隊方法:offer(E e)和add(E e)

原创 Redis:過期策略

一、主節點的過期策略     Redis有兩種策略來刪除過期的key,定時掃描刪除策略和惰性刪除策略。 1、惰性刪除策略     惰性策略指的是,在客戶端訪問這個key的時候,對key的過期時間進行檢測,如果過期就立即刪除。這是一種零散處

原创 Mybatis:常見面試題

1、一級緩存和二級緩存     一級緩存是SqlSession級別的緩存,隨着SqlSession的創建而存在,隨着SqlSession的銷燬而銷燬。     二級緩存是命名空間級別的緩存,可以在同一個命名空間中的多個SqlSessio

原创 Redis:Jedis連接池JedisPool

目錄 1、JedisPool的應用 1.1 基本應用 1.2 封裝應用 1.3 增加超時重試 2、JedisPool配置 2.1 工廠配置 2.2 資源池配置   Jedis提供了連接池JedisPool。由於Jedis對象不是線程安全的

原创 Dubbo consumer如何處理provider拋出的異常:ExceptionFilter

    dubbo的consumer側通過ExceptionFilter對provider拋來的異常進行處理。 1、ExceptionFilter功能 /** * ExceptionInvokerFilter * <p> * Fu

原创 設計模式:委派模式

    委派模式指的是根據任務的內容,將任務分發給不同的執行目標去執行。委派模式的核心是根據任務內容進行分發、調度、派遣。委派模式不屬於GoF23種設計模式,但是在Spring中應用廣泛。     一個打印機的例子。打印機分發器根據需要打

原创 Redis:丟棄策略

    當Redis內存超過物理內存限制時,內存數據會和磁盤產生頻繁的交換,讓Redis的性能急劇下降。所以在生產環境,這種交換行爲是不允許的。     maxmemory參數是用來配置最大內存大小的,如果超過了maxmemory,Red

原创 MySQL的一些命令

    記錄一些MySQL的命令,包括一些查看和設置參數之類的命令。注意,這裏使用table_name代表的表名。例如表名是test,則將'table_name'替換成'test',將table_name替換成test。 1、設置隔離級別

原创 Paxos算法

一、基本要求 1、拜占庭將軍問題     拜占庭帝國有許多支軍隊,不同的將軍之間必須制定一個統一的行動計劃,從而做出進攻或者撤退的決定。同時,各個將軍在地理上都是被分隔開來的,只能依靠軍隊的通訊員來進行通訊。然而,在所有的通訊員中可能存在

原创 設計模式:單例模式

    單例模式指的是確保一個類在任何情況下都絕對只有一個實例,並提供一個全局訪問點。單例模式是創建型模式。 1、餓漢模式     餓漢模式指的是在類加載的時候立即進行初始化,並創建單例對象。     優點:不需要加鎖,執行效率高,實現簡

原创 sharding JDBC讀寫分離原理

一、基礎信息     maven依賴: <groupId>org.apache.shardingsphere</groupId> <artifactId>sharding-jdbc-spring-namespace</artifactI