原创 學習分佈式一致性協議:自己實現一個Raft算法

前言 MIT6.824是麻省理工學院開設的一個很棒的分佈式系統公開課程,課程的Schedule在這裏 ,這門課程的學習方式主要是通過教授的 lecture 講解、Paper閱讀、FAQ答疑,以及實踐lab來完成的,是一個學習理論

原创 設計模式之訪問者模式(十五)(ASM原理分析)

文章目錄前言訪問者模式元素操作小結動態雙分派分析ASM使用ASM進行AOP編程ASM源碼分析 前言 本篇文章會以訪問者設計模式爲出發點,來分析ASM框架動態生成類的底層原理,上半部分講解訪問者模式,相信看懂了上半部分的訪問者模式,

原创 阻塞隊列的首選之隊列超集LinkedTransferQueue

文章目錄前言隊列的語義切換線程安全的隊列Hand-off(SynchronousQueue語義)無界的阻塞隊列LTQ原理分析假設阻塞特性1. 來一個線程存數據2. 又來一個線程存數據3. 來一個線程取數據總結 前言 這次討論的議題

原创 高性能MySQL優化要點整合

本篇文章爲《高性能MySQL》一書的讀書筆記,主要提取了幾點在開發中會用到的高性能的做法與一些MySQL的介紹 1. MySQL架構 MySQL最重要、最與衆不同的特性是它的存儲引擎架構。這種架構的設計將查詢處理及其他系統任

原创 高性能查找之基礎數據結構與各類算法思想的碰撞

文章目錄前言1. 快速查找的幾種方式1.1 二分查找單值查找範圍查找1.2 跳錶單值查找範圍查找1.3 字典表設計字典表散列函數裝載因子散列衝突策略散列與鏈表的相輔相成1.4 查找樹2. Redis選擇跳錶實現有序列表3. MyS

原创 從Java線程池實現原理到如何配置一個合適的線程池

文章目錄前言爲什麼要使用線程池線程池的運行原理的源碼分析線程池狀態啓動線程池創建線程線程池的工人 “Worker”啓動工人,開啓線程工人獲取任務拒絕策略默認拒絕策略(拋異常)最舊淘汰策略(丟棄)關閉線程池溫和關閉線程池暴力關閉線程

原创 生產-消費模型之"阻塞隊列"的源碼分析

文章目錄前言阻塞隊列API存放元素boolean add(E e)boolean offer(E e)boolean offer(E e, long timeout, TimeUnit unit) throws Interrupt

原创 從RefreshScope實現原理看刷新配置失效問題

前言 在SpringIOC中,我們熟知的BeanScope有單例(singleton)、原型(prototype), Bean的Scope影響了Bean的創建方式,例如創建Scope=singleton的Bean時,IOC會保存實

原创 Reactive聲明式響應式編程到底帶給我們什麼?

前言 希望有reactive庫的使用經驗的小夥伴閱讀,會比較有體會 記得我第一次接觸Reactive是在讀一本知秋大佬寫的RxJava書的時候,書名叫《Java編程方法論:響應式RxJava與代碼設計實戰》,這本書讓我初識了R

原创 2020年學習計劃(優化的計劃制定)

前言 計劃必須有,但趕不上變化是常態。因爲計劃的作用是使我們有一個大致前進的方向,像是指南針不斷修正你的方向。 爲什麼是每年開年這個時間點來寫總結和計劃: 筆者是2018年春節左右正式畢業且入坑Java,所以每年的春節(2月份

原创 從分佈式CAP理論到分佈式一致性協議

文章目錄前言CAP理論分佈式一致性協議協議的幾個規則數據複製領導者選舉如何保證一致性總結回答開篇 前言 在分佈式開發中,我認爲具備CAP理論與瞭解Raft、Zab等分佈式一致性協議是十分有必要的,例如分佈式鎖的選擇,你是選擇Red

原创 從分佈式理論到如何做一個生產級別的分佈式鎖

文章目錄前言1. AP還是CP?1.1 CP模型CP模型存在的問題?1.2 AP模型AP模型的好處?RedLockTips1.3 總結2. 宕機鎖釋放問題2.1 Redis宕機鎖釋放問題Redisson是怎麼做的2.2 Zooke

原创 Java程序員技術書籍指南

開篇 “夫夷以近,則遊者衆;險以遠,則至者少”,希望讀者可以在知識的海洋裏不輕言放棄,當您面臨挑戰時,那纔是成長的開始。 —小馬哥mercyBlitz 文章總覽 Java  多線程與併發 框架與中間件與存儲

原创 從數據結構之跳錶分析到Redis的有序集合淺析

前言 個人認爲,大部分的數據結構都是基於鏈表(二叉樹這種也算一種鏈式結構,其節點會保存了左右節點的指針)與數組組成的,所以鏈表與數組是數據結構中的一個基石,在上一篇數據結構分析 文章中我結合了查找這一場景,突出了數組與鏈表的特點