原创 zookeeper選舉源碼解讀

git地址;https://github.com/wangheling/zookeeper 入口:org.apache.zookeeper.server.quorum.QuorumPeerMain.main

原创 Mybatis緩存體系:一級緩存

一 、概要 一級緩存是會話級別的,也就是一個SqlSession裏的,不同會話的一級緩存是互相隔離,不可見的,當會話結束,一級緩存也就被銷燬。 一級緩存維護在BaseExecutor類中: 二 、一級緩存開啓和關閉 一級緩存默認是開啓的。

原创 Mybatis緩存體系:二級緩存

Mybatis緩存體系:二級緩存 一、概要 前面Mybatis是應用級別的緩存,執行查詢是先查詢二級,沒有命中才查詢一級緩存,否則查詢數據庫。 值得注意的是,不同於一級緩存,因爲二級緩存是作用於應用的,那麼就存在一個髒讀的問題,所以就引入

原创 Zookeeper客戶端Curator實現分佈式鎖源碼探究

文章目錄導讀1 :獲取鎖:acquire()構造方法獲取鎖StandardLockInternalsDriver#createTheLock()LockInternals#internalLockLoop()2 釋放鎖:relea

原创 SpringBoot中的spi機制(1): 一個Demo瞭解什麼是spi

什麼是spi機制 英文是service provider interface,就是一種拓展點,服務發現的機制。 比如,Spring框架有個接口,框架已經提供三個實現,但是不滿足我的需求,我想寫一個自己的實現,被spring加載,

原创 Integer:顛覆你的認知

Integer:顛覆你的認知 本文涉及的知識點:值傳遞和引用傳遞、自動裝箱和拆箱、Integer緩存 一、裝箱拆箱 & Integer緩存 一道面試題 public static void main(String[] args)

原创 CyclicBarrier源碼解讀

首先看他的兩個構造方法: /** The number of parties */ private final int parties; /* The command to run when tripped */ private fin

原创 如何給特殊字符串加索引:如身份證、郵箱等

1 建表語句 CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `id_card` varchar(18) NOT NULL, `email` varc

原创 JDK8中HashMap源碼細節死扣

在《JDK8中HashMap源碼精讀》中有留下一些待扣問題,本篇將做解答,並會對7和8中HashMap做一些對比和補充問題。 loadFactor默認值爲啥是0.75? 加載因子越小,那麼Map更容易達到擴容的條件,擴容頻繁,帶來的好

原创 JDK8中HashMap源碼精讀

1 字段 1.1 字段解讀 //默認容量等於16 static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; //最大容量 static final int MAXIMUM_CAPACITY

原创 記錄鎖、間隙鎖和臨鍵鎖

記錄鎖、間隙鎖和臨鍵鎖 Record Lock A record lock is a lock on an index record. For example, SELECT c1 FROM t WHERE c1 = 10 FOR UP

原创 MVCC(multi version concurrency control):多版本併發控制

MVCC需要解決的問題? 解決事務一致性的問題,保證一個事務中前後兩次讀取數據一致,實現事務隔離。 這個問題也可以通過鎖來解決,但是這就不支持併發讀寫,從而導致數據讀寫效率低。   什麼是MVCC? 爲了保證一個事務中前後兩次讀取數據的一

原创 RocketMQ幾個核心概念

Producer A producer sends messages generated by the business application systems to brokers. RocketMQ provides multipl

原创 RocketMQ:事務消息

什麼是事務消息 What is transactional message? It can be thought of as a two-phase commit message implementation to ensure eve

原创 RocketMQ之消息的存儲

1、MQ消息消息存儲的選擇 1.1、消息存儲方式 主要分爲以下幾種: 分佈式KV存儲: 比如ActiveMQ中採用的levelDB、Redis, 這種存儲方式對於消息讀寫能力要求不高的情況下可以使用 文件存儲系統: 常見的比如kaf