原创 HTTPS 原理 對稱加密 非對稱加密 CA證書

HTTPS 原理 對稱加密 非對稱加密 CA證書 先介紹對稱加密 通信的雙方,使用同一個secretKey,可以對密文進行解密,得到明文。 問題:在開放的internet如何交換secretKey,這本身就是個問題。這個交換的過程

原创 ES pinyin 插件 拼音搜索 原理 match_phase

背景 中文搜索很多時候都要用到pinyin搜索,基本繞不開這個插件;如搜索人名之類的; 介紹 插件github:地址 在README的最後,舉的例子挺有意思;經過一系列操作之後,對劉德華建index,竟然搜liudh,劉dh,各種

原创 CAS Spring 中文文檔

原文鏈接 Spring官方文檔 譯文 32.CAS鑑權 32.1 概述 JA-SIG 搞了一個 企業範圍內的單點登錄系統:就是聞名天下的CAS。跟其他替代品不一樣的地方在於,JA-SIG的中心鑑權服務是開源的,被廣泛是用的,容易理

原创 redis實現分佈式鎖 單實例情況 多實例情況 RedLock

背景 多個實例搶一個任務,需要分佈式鎖協調,只有一個實例能搶到鎖並執行任務。 如何實現一個分佈式鎖? 基於redis的實現 版本1:單實例情況 使用setnx命令獲取鎖,再加上簡單的Lua腳本來釋放鎖。 例如,要獲取key foo

原创 SSO登錄流程 原理 詳解 舉例

參考 文章 + b站視頻 小結 其實一切細節都已經在這個官網的圖中: 舉一反三說個應用場景 用戶登錄了釘釘,再訪問內部應用,如釘釘日曆,釘釘文檔的時候,無需再次登錄,這是怎麼做到的呢? 參照上面的泳道圖,咱們也來畫一個😂 純屬舉

原创 ScheduledLock 如何實現定時

背景 用到了 就得懂 是不是 源碼 還是從註解出發,這回我們從@Scheduled註解出發(因爲定義了以什麼頻率執行) 我們點一下cron點進去,發現ScheduledAnnotationBeanPostProcessor這個有

原创 Multi-Paxos Raft 原理 流程

Multi-Paxos Raft 前言 分佈式一致性算法中鼎鼎有名的Paxos算法,有以下的特點 1、理論上證明了是可靠的 2、但是這個證明,這個原理,是真他喵的難懂😂 3、就算真懂了也很難真正實現 4、有live lock的問題 於是人

原创 k-d-b樹 對 k-d樹的改進 原理 圖文解析

背景 上文講到k-d樹 下面來看k-d-b樹 參考這篇文章: 介紹 類比二叉搜索樹,樹會太高,對磁盤io不友好 k-d樹就更高了,樹是真的高,那麼我們能不能引入b+樹的思想來解決這個問題呢? k-d-b樹就是這麼搞的。 首先我們想

原创 scheduledThreadPoolExecutor 原理 delayedQueue

背景 這種定時器也常用,不好奇怎麼實現的嗎?! 參考 https://juejin.im/post/5d63ce9b6fb9a06b28635ecf demo 先看個demo吧 package com.vava.ecommers

原创 b-k-d樹 原理 圖文解析

背景 前文介紹了 k-d樹 和 k-d-b樹 今天再來這個b-k-d樹已經幾乎沒啥可以參考的資料了 只能硬啃兩篇文章了 一個是:medium 一個是發明者的論文 挺好的,人還是要耐着性子讀一些難啃的東西 開始介紹 關鍵點 這個b-

原创 mybatis uuid主鍵 auto_increment列 回顯id keyGenerator

背景 我們的系統是使用的tk.mybatis,原來線上的一個表用的uuid主鍵。來了一個業務需求,需要新增一個自增的索引列(ALTER TABLEtestADD COLUMNuniq_indexBIGINT AUTO_INCREM

原创 Guava RateLimiter 原理 理解

背景 項目中限流可以用Guava RateLimiter,不想了解原理是啥嗎?! 這篇文章已經寫的很好了 沒啥可補充了,加一些個人思考吧 思考 如果讓你來造一個限流器,有啥想法? 直觀想法1,對應參考文章的漏桶算法 就是用一個固定

原创 mysql text能保存多長的字符串呢?

背景 需要做一個字符串的存儲(列表的json化字符串),需要大概估算一下,使用text能保存多少個數據 列表的每個元素是uuid,長度是36 搜尋資料 https://dev.mysql.com/doc/refman/8.0/en

原创 基於mysql實現分佈式鎖

維護一個鎖表 CREATE TABLE `dist_lock` ( `id` bigint PRIMARY KEY NOT NULL AUTO_INCREMENT COMMENT '自增主鍵',

原创 SchedulerLock 分佈式鎖 原理

背景 使用@SchedulerLock可以實現比較輕量級的簡單的定時任務,也可以實現分佈式鎖,那具體的原理是啥? 一探究竟 不熟悉的同學可以先看一下用法: https://www.baeldung.com/shedlock-spr