原创 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