原创 分佈式鎖(四)——基於zookeeper的分佈式鎖實例

zookeeper簡介 關於zookeeper之前簡單寫過兩篇博客進行總結,但是比較偏實例,關於zookeeper分佈式鎖的介紹可以參看這篇簡書——zookeeper的分佈式鎖。 之前的兩篇總結地址:curator基本操作,cur

原创 分佈式鎖(五)——基於redisson的分佈式鎖實例

Redisson簡介 Redisson是一個在Redis的基礎上實現的Java駐內存數據網格(In-Memory Data Grid)。它不僅提供了一系列的分佈式的Java常用對象,還提供了許多分佈式服務。redisson參考文檔

原创 數據結構(三)——二叉樹的相關操作

前言 這裏同樣不介紹二叉樹的相關概念,畢竟數據結構的基礎已經講過很多了,這裏不再贅述。至於一些平衡二叉樹,完全二叉樹,紅黑樹,B+樹等相關結構,這個已經有很多博客介紹了,這裏只是介紹一下二叉樹的一些基礎操作。 定義 這個應該見過多

原创 JVM(六)——各個內存劃分詳細總結

前言 前面一篇小結博客,簡單總結了JVM最終的劃分結果,並根據官網的描述看到了JVM爲何如此描述,這一篇博客就在那上面進一步總結一下各個區域的作用和結構。 Java虛擬機棧和棧幀 上一篇博客中關於方法調用,爲何有虛擬機棧,以及虛擬

原创 分佈式鎖(二)——基於數據庫的分佈式鎖實例

上一篇博客中簡單說了說什麼是分佈式鎖,搭建了基本的環境(非常簡單)這篇博客就需要開始正式體驗分佈式鎖 了,由於是在單機上開發,沒有做集羣,但是代碼方法的具體實現與集羣方面沒有二異,只能通過JMeter模擬多線程達到高併發的效果。

原创 分佈式鎖(一)——實例基本環境搭建

前言 其實針對分佈式鎖這個問題,我們並不陌生,這裏簡單說明一下什麼是分佈式鎖。 如果問一個問題:多線程環境下如何保證線程同步,其實我們可以有很多可說的——synchronized,cas鎖,可重入鎖等。但是這個只是針對單點系統下能

原创 分佈式鎖(三)——基於redis的分佈式鎖實例

之前介紹分佈式鎖的時候,給過一個漫畫介紹分佈式鎖的鏈接,傳送門——漫畫說明分佈式鎖這篇總結寫的確實不錯。但是有些地方我們可以按照其他思路來進行實現。 這裏先需要了解一下各種失敗機制,failover,failsafe,failfa

原创 數據結構(四)——圖的存儲

圖的一些算法比較複雜,這裏分多個博客進行總結 圖的相關概念 其實之前的幾種數據結構,其實比較簡單,之前的記憶還比較清晰,但是到圖這個地方,有些概念就有些模糊了,這裏還是現在總結一下圖的相關概念。 定義 定義:圖(graph)是由一

原创 JVM(九)——簡單調優實戰

前言 前面幾篇博客下來,對JVM整體應該算了解了,細節的部分,字節碼和類文件結構後續會詳細總結(其實這兩個可以深入仔細研究,但是非常花時間,後續空了會繼續總結)。但是針對所謂的JVM調優我們似乎還是沒有太好的理解,如何調優怎麼調優

原创 數據結構(二)——棧和隊列的基本操作

前言 總體來說,棧和隊列也是線性結構的一種,至於什麼是棧,什麼是隊列,這裏不會介紹,因爲這玩意太基礎。這裏就不總結了,只是說一下,這裏的棧和隊列的底層實現其實有數組和鏈表的兩種實現方式。 棧的基本操作 這裏採用鏈表的實現方式,一個

原创 RabbitMQ(五)——Spring boot集成RabbitMQ

前言 前面幾篇RabbitMQ的模式幾乎介紹清楚了RabbitMQ的基礎架構,以及消息確認機制,這裏打算將RabbitMQ集成到springboot中,便於日後工作查找 1、項目搭建 在idea中構建一個springboot項目,同時引入

原创 RabbitMQ(二)——工作隊列,分發消息到多個消費者

前言 在上一篇博客中,簡單介紹了MQ,並且建立了一個queue用於消息發送,這一篇博客的實例中我們將會建立一個隊列,這個隊列將會將待消費的任務發送給多個消費者。 工作隊列的主要作用,就是爲了避免出現同步等待執行資源密集型任務的情況,爲了支

原创 RabbitMQ(三)——發佈訂閱模式(引入交換機的概念)

前言 上一篇博客中我們創建了一個工作隊列,工作隊列中的每一條消息都被髮送給一個指定的消費者,這篇博客我們會玩一個完全不一樣的——將同一個消息發送給多個消費者(這個就是我們傳說中的發佈訂閱模式)。 官網的教程第三篇中,描述了一個日誌場景——

原创 RabbitMQ(一)hello world(安裝以及queue介紹)

前言 MQ這種中間件是今年的一個學習計劃,其實如果單純從使用角度來說MQ確實比較容易,但是也缺少一個完整的總結。這次的總結不打算參考其他資料了,主要會以RabbitMQ的官網爲準。其實這一個系列前幾篇可能更多的是官方文檔的一個自我翻譯。

原创 RabbitMQ(四)——選擇性的接受消息(引入routeKey)

前言 上一篇博客中,介紹了交換機的概念,同時完成了fanout類型交換機的介紹,引入了交換機這個物種。在這篇博客中,從消費者角度來說,如果我們不想訂閱全部日誌信息,只想訂閱ERROR級別的日誌信息(所有日誌信息的一個子集)在上一篇博客綁定