原创 kafka 實現原理分析,包括:名詞解釋,與zookeeper關係、controller選舉、leader選舉、消息日誌文件,消息查詢定位
名詞解釋 1.broker Kafka單個節點稱爲broker,一個Kafka服務就是一個broker,多個broker可以組成一個Kafka集羣. 2.topic (主題) 數據存儲在(log.dir配置的目錄下) topi
原创 mysql 分庫分表分區總結
Mysql目錄結構 一個庫一個目錄 MyISAM引擎 InnoDB引擎 分庫分表分區總結 對於分區分表 都可以進行橫向(按表字段分),縱向分(按數據行分),此文暫時值考慮橫向分。 對於分庫:分庫 分區 說明 分區和分表類
原创 mysql 7種日誌及相關配置
MySQL中有以下日誌文件,分別是: 1:重做日誌(redo log) 2:回滾日誌(undo log) 3:二進制日誌(binlog) 4:錯誤日誌(errorlog) 5:慢查詢日誌(slow query log)
原创 java的對象物理結構,以及對象頭中MarkWord與鎖的關係
關於鎖升級可參看 https://blog.csdn.net/u013378306/article/details/106538659 java 對象頭 我們都知道,Java對象存儲在堆(Heap)內存。那麼一個Java對象到底包含什麼呢
原创 mysql 索引,以及sql優化總結
sql問題 where執行順序 如果查詢的所有條件都沒有索引,則不分先後順序(在500W數據下試過,沒有太大差別),如果有索引,mysql會根據sql條件進行優化,比如先執行查詢符合索引的條件。 下面這個因爲test2表的a字段是索引,所
原创 zookeeper 集羣 和 kafka集羣 配置簡述
前言 使用官網下載下來的kafka.tgz包,裏面包含zookeeper 解壓後複製三分kafka,注意目錄不要太深否則會報錯。也是搞笑了啊。。。。。 zookeeper集羣 在zookeeper_data/data下創建三個目錄,
原创 mysql redolog undolog binlog
前言 mysql 先寫日誌,再寫磁盤。undolog 存儲 修改前的原始記錄(邏輯日誌,如果insert操作,會添加一條相反的delete的sql),redolog存儲新的修改數據(記錄物理數據頁的修改,指定磁盤上數據物理頁的地址,兩
原创 zookeeper 半數選舉過程
前言 在講解流程之前,先說明一下選舉流程中涉及到的角色,以及涉及到的關鍵類和變量(源碼參考版本:3.4.9): 要半數以上的機器投票自己,自己才能是leader。若是4臺則必須 是3臺投自己。 怎麼算機器總數,是在配置文件中配置的節點數(
原创 mysql 物理存儲 數據頁
MySQL Innodb 數據頁結構分析 頁(Page)是 Innodb 存儲引擎用於管理數據的最小磁盤單位。常見的頁類型有數據頁、Undo 頁、系統頁、事務數據頁等,本文主要分析的是數據頁。默認的頁大小爲 16KB,每個頁中至少存儲有
原创 java鎖的到底是鎖的什麼??
鎖作用的對象 類代碼塊鎖 對多個線程使用的多個此類A的代碼加鎖,即使多個線程多個對象也 會只有一個線程進入到此代碼塊,與對象個數,線程個數無關。 實現方式 (1)類代碼塊 synchronized(A.class){} (2)靜態lock
原创 二叉搜索樹、平衡二叉樹、B樹、B+樹、B*樹
二叉查找樹 二叉查找樹,由於不平衡,如果連續插入的數據是有順序的、會導致如下圖B的所示,此時搜索會退化到O(N) 二叉查找樹,也稱二叉搜索樹,或二叉排序樹。其定義也比較簡單,要麼是一顆空樹,要麼就是具有如下性質的二叉樹: (1)若任意
原创 mysql數據庫爲什麼使用B+樹
首先要了解mysql的io過程 前面提到了訪問磁盤,那麼這裏先簡單介紹一下磁盤IO和預讀,磁盤讀取數據靠的是機械運動,每次讀取數據花費的時間可以分爲尋道時間、旋轉延遲、傳輸時間三個部分,尋道時間指的是磁臂移動到指定磁道所需要的時間,主
原创 Java併發之AQS與自旋鎖(利用CAS實現)
一、概述 談到併發,不得不談ReentrantLock;而談到ReentrantLock,不得不談AbstractQueuedSynchronizer(AQS)! 類如其名,抽象的隊列式的同步器,AQS定義了一套多線程訪問共享資源
原创 java 多線程 CountDownLatch、CyclicBarrier、Semaphore
在java 1.5中,提供了一些非常有用的輔助類來幫助我們進行併發編程,比如CountDownLatch,CyclicBarrier和Semaphore,今天我們就來學習一下這三個輔助類的用法。 以下是本文目錄大綱: 一.Cou
原创 Redis的五大數據類型的底層實現
1、簡介 Redis的五大數據類型也稱五大數據對象;前面介紹過6大數據結構,Redis並沒有直接使用這些結構來實現鍵值對數據庫,而是使用這些結構構建了一個對象系統redisObject;這個對象系統包含了五大數據對象,字符串對象(stri