原创 【數據結構與算法】 二叉堆

什麼是二叉堆?  二叉堆本質上是一種完全的二叉樹,它分爲兩個類型。 1.最大堆 2.最小堆 什麼是最大堆?最大堆的任何一個父節點的值,都大於或等於它左、右孩子節點的值。 什麼是最小堆?最小堆的任何一個父節點的值,都小於或等於它左、右孩子節

原创 JVM常見問題排查系列【001】常見服務器端命令以及相應功能描述

本文命令摘自:深入理解JVM虛擬機 JVM常見排查命令: 名稱 主要作用 jps JVM Proces status Tool,顯示指定系統內所有的HotSpot虛擬進程 jstat JVM Statistics Monitoring T

原创 【RocketMQ】源碼系列研究-消息存儲Broker(概要設計)

1.RocketMQ存儲概要設計     RocketMQ主要存儲的文件包括Comitlog文件、ConsumeQueue文件、IndexFIle文件。RocketMQ將所有主題的消息存儲在同一個文件中,確保消息發送時順序寫文件,盡最大的

原创 JVM常見問題排查系列【002】 常用命令案例

書接上篇: 上篇博文 講解了  jps 命令獲取Java進程pid 和 啓動參數,jstat 獲取了相應的 堆的狀況以及垃圾回收的情況 此篇着重講解: 1.jinfo:Java 配置信息工具 作用: jinfo (Configuratio

原创 JVM常見問題排查系列【003】 常用命令案例

書接上篇:上篇介紹了 jmap 命令 主要是查堆的相關情況 1.jstack : Java堆棧跟蹤工具 (可以自己參閱 深入理解JAVA虛擬機 書籍) jstack (stack Trace for java )命令用於生成虛擬機當前時刻

原创 【RocketMQ】源碼系列研究之【002】NameServer

1.NameServer整體架構   消息中間件的設計思路-一般基於主題的訂閱發佈機制,消息生產者(Producer)發送某一主體的消息到消息服務器,消息服務器負責該消息的持久化存儲,消息消費者(Consumer)訂閱感興趣的主體,消息服

原创 【二叉樹的平衡策略】 AVL樹

談起AVL樹,就要說起 AVL樹的由來 。普通的二叉搜索樹到底遇到了什麼問題呢?它到底能解決什麼問題呢?  傳統二叉搜索樹存在以下問題    1. 二分查找在大多數情況下很快,但是如果 這個二叉樹生成的時候有順序,就可能 單一的偏左,或者

原创 【解析 數據結構與算法-二叉樹】

(1)爲什麼要使用二叉樹?     因爲它通常結合了另外兩種數據結構的優點:1:有序數組,2:鏈表。在樹中查找數據項的速度和在有序數組中查找一樣快,並且插入數據項和刪除數據項也和鏈表一樣。    有序數組優缺點:        優點: 隨

原创 分佈式調度框架Tbschedule結構分析【01】

說起分佈式調度框架Tbschedule 先從 Tbschedule-console 分析 對應實體類: com.taobao.pamirs.schedule.strategy.ScheduleStrategy 1.策略名稱:strat

原创 分佈式調度框架Tbschedule結構分析【02】

對應: com.taobao.pamirs.schedule.taskmanager.ScheduleTaskType 1.任務名稱baseTaskType:同 策略裏面的任務名稱 2. dealBeanName:處理任務的BeanNa

原创 【數據結構與算法之排序】1.冒泡排序

算法原理: 它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個算法的名字由來是因爲越小的元素會經由交換慢慢“浮”到數列的頂端。

原创 JVM常見問題排查系列【004】從jstack分析線程狀態

線程幾種狀態定義: 1. 初始(NEW):新創建了一個線程對象,但還沒有調用start()方法。 2. 運行(RUNNABLE):Java線程中將就緒(ready)和運行中(running)兩種狀態籠統的成爲“運行”。 線程對象創建後,其

原创 【序列化協議】RESP(Redis Serialization Protocol) Redis序列化協議

RESP 是 Redis 序列化協議的簡寫。它是一種直觀的文本協議,優勢在於實現異常簡單,解析性能極好。 Redis 協議將傳輸的結構數據分爲 5 種最小單元類型,單元結束時統一加上回車換行符 號\r\n。 1、單行字符串 以 + 符號開

原创 常見分佈式ID生成策略總結

分佈式ID需求 1.全局唯一:不能出現重複ID 2.高可用:ID生成系統是基礎系統,被許多關鍵系統調用,一旦宕機,就會造成嚴重影響。   1.Java 的UUID方案 它是在一定的範圍內(從特定的名字空間到全局),唯一的機器生成的標識符,

原创 【IO專欄】多線程的Reactor反應器模式

書接上篇: 既然Reactor反應器和Handler處理器,擠在一個線程中會造成非常嚴重的性能缺陷。那麼,可以使用多線程,對基礎的反應器模式進行改造和演進。   多線程池Reactor 反應器演進 多線程池Reactor反應器的演進,分爲