微機原理或組合語言總結(全篇)
看到一篇講解微機原理或者組合語言蠻詳細的,因此分享給大家!
1、在計算機中數的表示方式
因為計算機中只能儲存二進位制數,所以一般都是通過二進位制直接進行儲存,但是為了方便閱讀和程式設計師的編碼簡單化,就出現了八進位制、十進位制、十六進位制,一般在彙編的學習過程中以二、十、十六進位制為主。
四種資料的表示形式符號是:B(二進位制)、O(八進位制),D(十進位制),H(十六進位制)
二進位制、八進位制、十六進位制轉化為十進位制都是通過數值為乘以權值,然後求和得出;
十進位制轉換為相應的進位制都是通過除以相應的基數取餘後,逆序達到相關的表示法。
2、在計算中通常通過數值的原碼、反碼、補碼來進行表示。
對於無符號數,討論三碼沒有什麼意義;
對於有符號數,一般第一位代表的是符號位,0代表+,1代表—,同時在表示的過程中,因為儲存器的位數可能存在資料為的擴充套件,一般都是擴充套件符號位。
對於正整數而言,原碼=反碼=補碼,符號擴充套件位為0;
對於負整數而言,原碼 按位取反 = 反碼,反碼+1 = 補碼,符號位保證不變。
求負數的補碼一般有兩種方法:
(1)先寫出其絕對值的原碼,然後把符號位也參加在內進行取反,在加1即可。
(2)按照上面給出負數的求補即可。
補碼的相關規則
(a+b)補 = (a)補+(b)補
(a-b)補 = (a)補-(b)補
3、對8086體系結構中暫存器的認識
(1)存在14個16位的暫存器和8個8位暫存器
通用暫存器包括如下幾類
通用暫存器:傳送、暫存資料和接受相關的運算結果。
1、16位資料暫存器,儲存運算元和操作結果,縮短了訪問記憶體的時間和並且不會佔用相關的系統總數
AX(累加器、被除數的低16位和除法結果) = AH + AL(8位)<兩個獨立的暫存器,下面的相同>
BX(基址暫存器) = BH + BL(8位)<用於基址定址,唯一一個作為儲存器指標使用的暫存器>
CX(字串操作、控制迴圈次數) = CH + CL (移位的時候使用,儲存移位的位數)(8位)
DX(32位乘除法,存放被除數的高16位,或者保留餘數,AX保留結果) = DH + DL(8位)
8個八位暫存器
AH 、AL 、BH、 BL、 CH、 CL、 DH、 DL
指標暫存器:儲存某個儲存單元的地址或者是一段儲存單元的起始地址
2、16位指標暫存器
BP(基址指標 base point 堆疊資料區基址的偏移 )
SP(堆疊指標 stack pointer <push pop 指令的時候使用,儲存棧頂地址>)
上面兩個指標一般是和SS合用
3、16位變值暫存器<一般在字串操作的時候用的比較多>
DI (目的地址 destination )
SI(源地址 source)
上面的兩個暫存器一般是和DS、ES合用
控制暫存器
IP(指令指標)<下一條指令的地址,但是不代表是下次將會執行的指令>
在計算機的組成原理中還有PC(程式計數器,始終指向下一條將要執行的指令,有時候PC和IP的內容相同,有時候又不同,個人理解?)
FLAG(標誌暫存器),其中包含了9個標誌,主要反映儲存器的狀態和相關的運算狀態
前6個運算結果標誌,後3個控制標誌
0 CF (carry flag ) 進位標誌 反映運算是否產生進位或者借位<加法和減法>
2 PF (parity flag ) 奇偶標誌 反映運算結果中1的個數是奇數還是偶數(偶數則置為1)
4 AF(assist flag ) 輔助標誌 在位元組操作中,發生低半位元組向高半位元組進位或借位;在字操作中,低半字向高半字進位或者借位
6 ZF(zero flag ) 零標誌 反映運算結果是否為0
7 SF(signed flag )符號標誌 反映運算結果的符號位,與運算結果的最高位相同
11 OF(over flag) 溢位標誌 反映有符號數加減運算是否引起溢位
8 TF(trace flag ) 跟蹤標誌 置為1後,cpu進入單步方式。主要用於除錯,cpu執行一條指令後被中斷
9 IF(interrupt flag)中斷標誌 決定CPU是否相應外部可遮蔽中斷請求,1則響應,0則不響應
10 DF(direction flag) 方向標誌 決定串操作指令執行時有關指標暫存器調整方向,為1,則串操作指令按減方式改變有關暫存器的值,反之則用加方式
16位段暫存器<定址1M的實體地址空間的時候需要使用它,在計算機的記憶體中程式碼<指令>和資料是放在不同的儲存空間中>
放操作的資料
DS(資料段,一般配合bx作為偏移 data segment)
ES(附加段 extend segment)
放指令
CS(程式碼段,一般和IP連用 code segment)
儲存相關的暫存器值等,放在這裡方便函式返回的時候在恢復現場
SS(堆疊段 stack segment)
2、地址分段和定址
一、明確地址分段的原因
因為在8086中CPU的地址線是20位,那麼實際可用的最大實體地址空間是1MB,但是因為暫存器都是隻有16位和8位之分,最大定址範圍是64KB,為了尋找到所有的實體地址,需要對實體地址空間進行分段。
分段一般是由段首地址+段內偏移地址組成。
但是對於段的首地址不是隨意亂取,通常都以“小段的起始地址為主”
“小段”即是在實體地址中從00000H開始,每16個位元組而劃分的,那麼整個實體地址空間就可以劃分為64K個小段,且首地址的最後四位均為0(用二進位制表示時),所以是16的倍數。
進行分段後,段與段之間就會有重疊、相鄰、不會相干的現象產生。
一般實體地址= 段首地址*16+段內偏移地址。
前者為實體地址,後者斷首地址:偏移地址為邏輯地址。所以一個實體地址可能對應多個邏輯地址的表示。
二、定址方式
(1)彙編程式碼是由兩部分組成:操作碼+運算元
一般操作碼在相應的機器指令體系中有相關的表示,但是運算元的儲存就會不同了。
運算元儲存在如下地方:
一、直接在彙編程式碼中:那麼這種定址方式就是立即數定址 mov ax, 1234H
二、存放在暫存器中:那麼這種定址方式就是暫存器定址 mov ax,bx
三、存放在記憶體中,那麼這種定址方式就比較多了
定址方式:(以源運算元的定址為例)
1、立即數定址 mov ax,1234H
2、暫存器定址 mov ax,bx
3、直接定址 mov ax,【1234H】 (ax) = (ds*16+1234H)
4、暫存器間接定址
mov ax,【bx】 (ax) = (ds*16+bx)
mov ax,【BP】 (ax)=(ss*16+bp)
因為bp的預設是通過ss來定址,不過也可以通過段地址字首來進行強加了
mov ax,ds:[BP] (ax) = (ds*16+bp)
5、暫存器相對定址
mov ax,[bx+1234H] (ax) = (ds*16+bx+1234H)
也可以表示為
mov ax,1234H【bx】
同4,也存在這樣的關係
6、基址變址定址
mov ax,【bx+si】 (ax)= (ds*16+bx+si) <bx是基址暫存器,預設是和ds合用>
也可以表示為
mov ax,【bx】【si】或者是mov ax,【si】【bx】
7、相對基址變址定址
mov ax,【bx+si+1234H】 (ax)=(ds*16+bx+si+1234H)
因為對於其中的很多暫存器都是可以變換的,所以不在這裡一一列舉
但是對於以上7中定址方式到底應該在什麼情況下進行使用還需要進一步的學習。
彙編程式碼是由兩部分組成:操作碼(mov)+運算元,既然有運算元的參與,那麼對於運算元必然需要儲存。
在計算機中,對於運算元的存取至少有兩種方式:暫存器和儲存器,那麼相對而言就產生了各種尋找運算元的方式,本文一一介紹
1、立即定址方式
運算元就包含在指令程式碼中,它作為指令的一部分跟在操作碼後放在程式碼段(CS)中。
這種運算元被稱作立即數,立即數可以是8位的也可以是16位的。
如果立即數是16位的就按照“高高低低”的原則儲存<主要是針對暫存器,與儲存單元的大端和小端沒有關係>
指令示例:mov ax,1234H<H代表的是16位>
AH = 12, AL=34
但是彙編指令在程式碼段中的儲存方式需要依據儲存器的大小端格式來定。
2、暫存器定址方式
運算元放在CPU內部的暫存器中,指令指定暫存器的編號。
對於16位的運算元,暫存器可以如下:
資料暫存器(AX/BX/CX/DX)
地址暫存器(DI/SI)
指標暫存器(SP/BP)
對於8位的運算元,可以是第一節的8個8位的暫存器
因為運算元在暫存器中,不需要佔有系統匯流排,訪問速度快。
指令示例:mov ax,bx
如果執行前:(AX) = 3064H,(BX)=1234H,指令執行後
(AX)= 1234H
3、直接定址方式
指令直接包含運算元的有效地址(偏移地址)
運算元的有效地址一般儲存在程式碼段中,運算元放在資料段中,預設的是ds段
所以運算元的地址由DS加上偏移地址得到有效地址,取出有效地址中的資料進行操作。
指令示例:
MOV AX,[1234H]
假設DS = 4567H,記憶體中(468A4H) = 0001H,那麼有效地址 = (4567H)*16+(1234H) = (468A4H)
那麼暫存器AX = 0001H
因為預設的是DS暫存器,其實也可以指定字首暫存器,即所謂的段超越字首
MOV AX, SS:[1234]H
AX = SS*16+(1234H)
4、暫存器間接定址方式
運算元在暫存器中,運算元的有效地址在SI\DI\BX(DS), BP(SS)
在這四個暫存器之一種,一般情況下如果有效地址在SI、DI、 BX中,則預設段地址是DS
如果在BP中,則預設是SS
不過和上面一樣,指令中也可以指定段超越字首來取得其他段中的資料
指令示例:
MOV AX,[SI] 引用的段暫存器是DS
MOV AX,ES:[SI],引用的段暫存器是ES
MOV [BP],AX,引用的段暫存器是SS
5、暫存器相對定址方式
運算元放在儲存器中,運算元的有效地址是一個基址暫存器(BX、BP)或者是變址暫存器的(SI 、DI)內容加上指令中給定的8位
或者是16位的位移偏移量之和
其中和上面的一樣,引用段地址的時候,BX、SI、DI的段地址暫存器是DS,BP的是SS,不過也可以採用段地址超字首。
其中給定的8位或者是16位採用補碼形式表示。如果偏移量是8位,則需要進行符號擴充套件到16位
MOV AX,[BX+1234H] ,引用段暫存器是DS,有效實體地址=DS*16+BX+1234H,(AX)=(DS*16+BX+1234H)
MOV [BP+1234H],AX,引用段暫存器是SS
MOV ES:[SI+1234H],AX,引用段暫存器是ES
有時候指令也可以表示如左:MOV AX,1234H[BX]等。
6、基址加變址定址方式
運算元在儲存器中,運算元的有效地址由基址暫存器(BX、BP)的內容與變址暫存器(DI、SI)之一的內容相加
如果有BP則段暫存器是SS,其他的是DS
指令示例:
MOV AX,[BX][DI] 等價於 MOV AX,[BX+DI]
有效地址 = DS*16+BX+DI ,(AX) =(有效地址)
同時也允許段超越字首
MOV DS:[BP+SI],AX
定址方式適合於陣列操作,利用基址儲存陣列的首地址,變址儲存元素的相對地址
7、相對基址加變址定址方式
運算元在儲存器中,運算元的有效地址由基址暫存器之一的內容+變址暫存器之一的內容+8位或者是16位的偏移量之和。
段暫存器和相關的符號擴充套件同前面。
如果得到的有效地址超過FFFFH時,取64K的模。
大多數指令既可以處理字資料,也可以處理位元組資料。
算術運算和邏輯運算不侷限於暫存器,儲存器運算元也可以直接參加算術邏輯運算。
指令系統分為如下六個功能組:
(1)資料傳送
(2)算術運算
(3)邏輯運算
(4)串操作
(5)程式控制
(6)處理器控制
指令的一般格式分為四個部分
[標號:] 指令助記符 [運算元1][,運算元2][;註釋]
指令是否帶有運算元完全取決於指令
標號的使用取決於程式的需要,但是不被彙編程式識別,與指令系統無關。
標號有點類似於C語言中的goto語句中的標號,做為一個偏移。
指令助記符代表操作碼,從二進位制的操作碼到助記符的一個翻譯過程。
功能組一:資料傳送指令
1、傳送指令格式:
MOV DST(目的運算元),SRC(源運算元)
源運算元:累加器(AX),暫存器,儲存單元和立即數
目的運算元:不能是立即數
操作後不改變源運算元。
(1)CPU內部之間的傳送(兩個都是暫存器)
MOV AH,AL
MOV DL,DH
MOV BP,SP
MOV AX,CS
源運算元和目的運算元兩個不能都是段暫存器
程式碼段(CS)不能作為目的運算元
指令指標(IP)既不能作為源運算元也不能作為目的運算元
(2)立即數送通用暫存器和儲存單元
MOV AL,3
MOV SI,-3
MOV VARB,-1;VARB是變數名,代表一個儲存單元
MOV VARW,3456H;VARW是一個字變數
MOV [SI],6543H
主要:立即數不能直接傳送給段暫存器
立即數不能是目的運算元
(3)暫存器與儲存器之間的資料傳送
MOV AX,VARW ;VARW是一個字變數,為直接定址
MOV BH,[DI];為暫存器間接定址
MOV DI,ES:[SI+3];為暫存器相對定址,段超越字首
MOV VARB,DL;為暫存器直接定址
MOV DS:[BP],DI;暫存器基址變址定址
MOV VARW,DS;暫存器直接定址
MOV ES,VARW;直接定址
注意:
源運算元和目的運算元型別一樣(byte和word等),除了串操作外
不能同時是儲存器運算元,兩個運算元必須有一個暫存器除立即定址以外。
如果需要在兩個儲存單元中進行資料傳送,可以利用一個暫存器過渡
MOV AX,VARW1
MOV VARW2,AX
實現了VARW1->VARW2的資料傳送。
運算元不能同時為段暫存器,那麼同上也可以進行過渡。
MOV BX,OFFSET TABLE
把TABLE的偏移地址送到BX暫存器中,其中OFFSET為屬性操作符。
傳送指令不影響FLAG暫存器
2、交換指令
利用交換指令可以方便的實現通用暫存器之間或者是與儲存器之間的資料交換
指令格式:
XCHAG OPRD1,OPRD2
此指令把運算元OPRD1與OPRD2的內容進行交換必須保證資料型別的一致。
通過上面的分析,操作指令中必須有一個暫存器,並且儲存器之間,段暫存器之間不能直接通過MOV進行操作。
例如:
XCHAG AL,AH
XCHAG SI,BX
OPRD可是通用暫存器和儲存單元,但是不能包括段暫存器<一定要通過通用暫存器來交換>
還不能有立即數,可以採用各種暫存器和儲存器的定址方式。
指令示例:
XCHAG BX,[BP+SI]; 基址加變址定址方式,基址暫存器和儲存器的資料呼喚[SS]
此指令不影響FLAG
3、地址傳送指令
(1)指令LEA( load effective Address)
傳送有效地址指令,格式如下:
LEA REG,OPRD
該指令把運算元OPRD的有效地址傳送到運算元REG中。
運算元OPRD必須是一個儲存器運算元
運算元REG必須是一個16位的通用暫存器(AX BX CX DX BP SP DI SI)
操作的結果是把偏移地址送給REG,記住不是實體地址,是偏移地址
指令示例:
LEA AX, BUFFER [AX]=BUFFER
LEA DS,[BS+SI] [DS] = BS+SI
LEA SI,[BP+DI+4] [SI] = BP+DI+4
(2)LDS( Load pointer into DS)
段值和段內偏移構成32位的地址指標。
該指令傳送32為地址指標,其格式如下:
LDS REG, OPRD
執行操作: (REG) <- (SRC)
(DS) <- (SRC+2)
該指令把運算元OPRD作為基址所含的一個32位的記憶體中的內容前兩個位元組送到REG中,後兩個位元組送到資料段暫存器DS
運算元OPRD必須是一個32為的儲存器運算元,
運算元REG可以是一個16位的通用暫存器,但實際使用的往往是變址暫存器或者是指標暫存器。
(3)LES(Load pointer into ES)
操作和上面的完全相同。
4、堆疊指令
在8086/8088系統中,堆疊實際是一段隨機訪問RAM區域。
稱為棧底的一端地址較大,稱為棧頂的一端地址較小。
堆疊的段值在堆疊暫存器SS中
堆疊的指標暫存器SP始終指向棧頂
堆疊是以“後進先出”方式工作
堆疊的存取必須以字為單位(16bit = 2Btye)
堆疊的指令分為如下兩種:
(1)進棧指令PUSH
格式如下:PUSH SRC(源運算元)
該指令把源運算元SRC壓棧。
執行過程是:先把棧頂指標SP值減2,SP = SP-2
再把SRC中的值放入SP所指的棧頂中即 [SS*16+SP] = [SRC]
SRC可以是通用暫存器和段暫存器,也可以是字儲存單元
(2)出棧指令POP
格式如下:POP DST(目的運算元)
該指令把棧頂的元素放到DST中,然後把SP加2
執行過程如下:先把堆疊指標SP指的資料放到DST中,【DST】=【SS*16+SP】
再使SP = SP + 2
DST可以是通用暫存器和段暫存器(但是CS除外),也可以是字儲存單元。
注意:
(1)上面兩條指令PUSH和POP只能是字操作
(2)可以使用除立即定址外的其他任何方式
(3)POP指令不允許使用CS暫存器
此兩條指令不影響FLAG標誌位
利用這兩條指令可以是實現兩個段暫存器的資料交換
例如:實現DS、ES的資料交換
PUSH DS
PUSH ES
POP DS
POP ES
在彙編的過程中,堆疊操一般實現“現場儲存”和“現場恢復”,作為引數的傳遞緩衝區等。
彙總:
資料交換有三種方式:
傳送指令、交換指令、堆疊指令
舉例:交換DS、AX的資料
利用傳送指令
MOV BX,AX
MOV AX,DS
MOV DS,BX
利用交換指令
XCHG AX,DS<不能同時是段暫存器>
利用堆疊操作指令如上面的示例。
5、標誌操作指令
(1)標誌傳送指令
1、LAHF(Load AH Flags)
把FLAG暫存器的低八位送到AH,即把CF PF AF ZF SF送到AH中。
不影響標誌暫存器。
2、SAHF(Store AH into Flags)
把AH暫存器的八位傳送到FLAG暫存器的低八位中,剛好和上面的指令作用相反。
影響標誌暫存器。但是不影響8-15中的標誌位。
相關推薦
微機原理或組合語言總結(全篇)
看到一篇講解微機原理或者組合語言蠻詳細的,因此分享給大家! 1、在計算機中數的表示方式 因為計算機中只能儲存二進位制數,所以一般都是通過二進位制直接進行儲存,但是為了方便閱讀和程式設計師的編碼簡單化,就出現了八進位制、十進位制、十六進位制,一般在彙編的
組合語言總結(1)
電子計算機的最小資訊單元:bit (位元),即一個二進位制位 微機的儲存單元可以儲存 1位元組(Byte):8bit 一個儲存器 128個儲存單元 地址匯流排決定CPU的定址能力,也就是CPU能訪問的最大記憶體空間的大小; 資料匯流排決定CPU對資料的讀寫能力
《逆向工程核心原理》學習總結(四)
介紹 PE檔案是windows作業系統的可執行檔案格式(包括.exe、.scr、.dll、.sys、.obj等檔案),PE檔案指32位的可執行檔案,也稱為PE32。64位可執行檔案稱為PE+或PE32+,是PE32檔案的一種擴充套件形式。 基本結構 P
【數據結構】ArrayList原理及實現學習總結(2)
!= 需要 但是 object count def 原理 arrays 位置 ArrayList是一個基於數組實現的鏈表(List),這一點可以從源碼中看出: transient Object[] elementData; // non-private to si
java基礎學習總結(十):可變長度引數以及foreach迴圈原理
一、語法糖 語法糖是一種幾乎每種語言或多或少都提供過的一些方便程式設計師開發程式碼的語法,它只是編譯器實現的一些小把戲罷了,編譯期間以特定的位元組碼或者特定的方式對這些語法做一些處理,開發者就可以直接方便地使用了。這些語法糖雖然不會提供實質性
組合語言--微機CPU的指令系統(五)(標誌位操作指令)
(2)標誌位操作指令 標誌位操作指令是一組對標誌位置位、復位、儲存和恢復等操作的指令。 1、進位CF操作指令 Ø 清進位指令CLC(Clear Carry Flag):CF←0 Ø 置進位指令STC(Set Carry Flag):CF←1 Ø 進位取反指令CMC(Complement Carry
組合語言--微機CPU的指令系統(五)(算術運算指令)
(3)算術運算指令 算術運算指令是反映CPU計算能力的一組指令,也是程式設計時經常使用的一組指令。它包括:加、減、乘、除及其相關的輔助指令。 該組指令的運算元可以是8位、16位和32位(80386+)。當儲存單元是該類指令的運算元時,該運算元的定址方式可以是任意一種儲存單元定址方式。 1、加法指令&nb
組合語言--微機CPU的指令系統(五)(移位操作指令)
(5) 移位操作指令 移位操作指令是一組經常使用的指令,它包括算術移位、邏輯移位、雙精度移位、迴圈移位和帶進位的迴圈移位等五大類。 移位指令都有指定移動二進位制位數的運算元,該運算元可以是立即數或CL的值。在8086中,該立即數只能為1,但在其後的CPU中,該立即數可以是1··31之內的數。 1、算術移
組合語言--微機CPU的指令系統(五)(比較運算指令)
(7)比較運算指令 在程式中,我們要時常根據某個變數或表示式的取值去執行不同指令,從而使程式表現出有不同的功能。為了配合這樣的操作,在CPU的指令系統中提供了各種不同的比較指令。通過這些比較指令的執行來改變有關標誌位,為進行條件轉移提供依據。 1、比較指令CMP(Compare Instruction)
組合語言--微機CPU的指令系統(五)(迴圈指令)
(8)迴圈指令 迴圈結構是程式的三大結構之一。為了方便構成迴圈結構,組合語言提供了多種迴圈指令,這些迴圈指令的迴圈次數都是儲存在計數器CX或ECX中。除了CX或ECX可以決定迴圈是否結束外,有的迴圈指令還可由標誌位ZF來決定是否結束迴圈。 在高階語言中,迴圈計數器可以遞增,也可遞減,但組合語言中,CX或E
組合語言--微機CPU的指令系統(五)(轉移指令)
(9)轉移指令 轉移指令是組合語言程式設計師經常使用的一組指令。在高階語言中,時常有“儘量不要使用轉移語句”的勸告,但如果在組合語言的程式中也儘量不用轉移語句,那麼該程式要麼無法編寫,要麼沒有多少功能,所以,在組合語言中,不但要使用轉移指令,而且還要靈活運用,因為指令系統中有大量的轉移指令。 轉移指令分無
Mybatis總結(2)-Mybatis的原理及搭建
在Mybatis搭建前,應該先了解其執行基本原理 1. 讀取Mybatis的配置檔案-Mybatis-config.xml 2. 由配置檔案的mapper來載入對映檔案mapper.xml 3. 構造一個SqlSessionFactory工廠 4. 用工廠來例項化一個SqlSess
Redis哨兵原理總結(一)
本博文主要總結關於哨兵的一些理論知識,主要關注點有一下幾個方面: 一、哨兵解決了什麼問題? 二、哨兵是如何解決“問題一”的? 三、如何使用哨兵? 四、Redis Sentinel客戶端實現的原理是什麼?Java如何操作Redis Sentinel? 一、哨兵解決
編譯原理期末複習考點總結(一) 通俗易懂的方式解釋概念(純手打)
編譯原理總結 基礎概念 編譯程式是什麼? 能把源語言程式轉換成目標語言程式的程式。 編譯過程 詞法分析: 掃描源程式,將其分解為詞法單元后輸出。 方法:正規式,有限自動
RPC入門總結(一)RPC定義和原理
一、RPC 1. RPC是什麼 RPC(Remote Procedure Call Protocol)——遠端過程呼叫協議,它是一種通過網路從遠端計算機程式上請求服務,而不需要了解底層網路技術的協議。RPC協議假定某些傳輸協議的存在,如TCP或UDP,為通訊程式之間
Docker學習總結(29)——Docker核心技術與實現原理
提到虛擬化技術,我們首先想到的一定是 Docker,經過四年的快速發展 Docker 已經成為了很多公司的標配,也不再是一個只能在開發階段使用的玩具了。作為在生產環境中廣泛應用的產品,Docker 有著非常成熟的社群以及大量的使用者,程式碼庫中的內容也變得非常龐大。同樣,由於
HBase總結(九)Bloom Filter概念和原理
Bloom Filter是一種空間效率很高的隨機資料結構,它利用位陣列很簡潔地表示一個集合,並能判斷一個元素是否屬於這個集合。Bloom Filter的這種高效是有一定代價的:在判斷一個元素是否屬於某個集合時,有可能會把不屬於這個集合的元素誤認為屬於這個集合(false
Redis哨兵原理總結(四):原始碼分析
目錄 本博文主要總結關於哨兵的一些理論知識,主要關注點有一下幾個方面: 一、哨兵解決了什麼問題? 二、哨兵是如何解決“問題一”的? 三、如何使用哨兵? 四、Redis Sentinel客戶端實現的原理是什麼?Java如何操作Redis Sentinel?
Redis哨兵原理總結(三)
目錄 三、如何使用哨兵? 3.1、哨兵環境部署 3.2、主節點、從節點、哨兵節點配置檔案解釋 3.3、哨兵節點日誌分析 本博文主要總結關於哨兵的一些理論知識,主要關注點有一下幾個方面: 一、哨兵解決了什麼問題? 二、哨兵是如何解決“問
Redis哨兵原理總結(二)
目錄 二、哨兵是如何解決“問題一”的? 2.1 、主從模式哨兵部署 2.2、三個定時監控任務 2.3、主觀下線與客觀下線 2.4、領導者哨兵節點選舉 2.5、故障轉移 本博文主要總結關於哨兵的一些理論知識,主要關注點有一下幾個方面: 一、哨兵解決了