一、注解類型 源碼注解。作用:對(duì)源碼進(jìn)行注釋,編譯成class文件后去除,通常是為了規(guī)范源碼的格式。常見的有:Override, Class注解。作用:在ClassLoade...
一、注解類型 源碼注解。作用:對(duì)源碼進(jìn)行注釋,編譯成class文件后去除,通常是為了規(guī)范源碼的格式。常見的有:Override, Class注解。作用:在ClassLoade...
一、動(dòng)態(tài)庫(kù)的版本號(hào) libxxx.so.x.y.z:動(dòng)態(tài)庫(kù)必須以lib開頭,xxx為其庫(kù)名,so表示其是動(dòng)態(tài)庫(kù),x是主版本號(hào),y是次版本號(hào),z是發(fā)布版本。主版本之間不做兼容性...
一、系統(tǒng)設(shè)計(jì)目標(biāo) 高可用的大文件分布式文件系統(tǒng)。 二、關(guān)鍵點(diǎn) Architecture-架構(gòu):有哪些Server,每個(gè)Server的功能。 Master存儲(chǔ)的MetaData...
HDFS官方文檔鏈接[https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/HdfsDe...
1. 計(jì)算機(jī)組成和計(jì)算機(jī)結(jié)構(gòu)的概念區(qū)分 計(jì)算機(jī)結(jié)構(gòu):指的是能被程序員所看到的已經(jīng)實(shí)現(xiàn)的計(jì)算機(jī)屬性(或者稱之為功能)。如乘法指令功能。計(jì)算機(jī)組成:指的是如何實(shí)現(xiàn)計(jì)算機(jī)結(jié)構(gòu)中的所...
簡(jiǎn)介 主從服務(wù)器的功能區(qū)別。 主從服務(wù)器的連接建立。 主從服務(wù)器之間的數(shù)據(jù)同步流程。 連接建立時(shí)的全量數(shù)據(jù)同步。 主從狀態(tài)同步后的增量同步更新。 主從服務(wù)器的功能 主服務(wù)器接...
簡(jiǎn)介 RDB數(shù)據(jù)落地的2種方式。 3種觸發(fā)RDB數(shù)據(jù)落地的方式。 RDB的主要流程。 object落地的序列化。 RDB數(shù)據(jù)落地的互斥。 2種落地方式方式 自身進(jìn)程阻塞式的進(jìn)...
一、原理 1.1 數(shù)組+鏈表的底層數(shù)據(jù)結(jié)構(gòu) 字典是用hash實(shí)現(xiàn)的,通過(guò)數(shù)組+鏈表解決hash沖突。通過(guò)hash函數(shù)計(jì)算出key的index后,在對(duì)應(yīng)的鏈表上進(jìn)行數(shù)據(jù)的增刪查...
簡(jiǎn)介 redis版本:6.0+ 一、關(guān)鍵點(diǎn) 1.事件驅(qū)動(dòng)架構(gòu)圖,從下往上分別是aeFileEvent, connection, client。2.消息處理流程,主要有:a、主...
redis版本 redis 6.0+ 關(guān)鍵點(diǎn) 配置修改。 有足夠的IO并發(fā)壓力。 一、配置修改 設(shè)置io-thread的值為想要的io線程數(shù),設(shè)置io-threads-do-...
redis版本 redis6.0+ socket連接建立的要素 網(wǎng)絡(luò)連接的建立離不開socket,socket在不同操作系統(tǒng)下有不同的接口,這里以epoll為例。 socke...
簡(jiǎn)介 基于Linux0.11內(nèi)核代碼,主要參考資料為L(zhǎng)inux0.11內(nèi)核注釋。 系統(tǒng)調(diào)用的一些基本概念。 系統(tǒng)調(diào)用的處理流程。 源碼分析。 基本概念 如何觸發(fā),何時(shí)觸發(fā)。調(diào)...
簡(jiǎn)介 1.基于Linux0.11代碼進(jìn)行分析。2.中斷類型分類以及具體的中斷。3.中斷向量的注冊(cè)。4.中斷處理流程。5.各類型中斷的具體執(zhí)行流程。 中斷的類型及具體的種類 1...
為什么要剖析Linux源碼 熱愛。就是想要知道自己心心念念的Linux到底是如何實(shí)現(xiàn)的。 職業(yè)發(fā)展需要。深耕后端,就不得不和Linux打交道,所有服務(wù)器都是運(yùn)行在Linux上...
目錄 一、聲明 二、epoll基礎(chǔ) 三、net包到底層類圖 四、連接的建立 五、異步的數(shù)據(jù)讀寫 六、調(diào)度有網(wǎng)絡(luò)消息的G 七、帶超時(shí)時(shí)間的讀寫 八、總結(jié) 聲明 下面的分析均基于...
聲明 下面的分析均基于Golang1.14版本。 M的狀態(tài) M只有Running和Stop這2個(gè)狀態(tài),還有一個(gè)spinning中間態(tài),當(dāng)從Running轉(zhuǎn)為Stop時(shí),會(huì)先s...
聲明 下面的分析均基于Golang1.14版本。 狀態(tài)圖 主要流程 1.procresize創(chuàng)建,Go程序初始化時(shí)初始CPU數(shù)量個(gè)P。2.acquirep進(jìn)入運(yùn)行狀態(tài)。當(dāng)有新...
聲明 下面的分析均基于Golang1.14版本。以下數(shù)據(jù)結(jié)構(gòu)均做了裁剪,只留了部分調(diào)度密切相關(guān)的重要結(jié)構(gòu)。 一、G的定義 裁剪了大部分字段,后面填坑把其它字段的作用及用途整理...
G狀態(tài)轉(zhuǎn)換圖 聲明 下面的分析均基于Golang1.14版本。 Gosched--主動(dòng)讓出 在用戶代碼中執(zhí)行runtime.Gosched()時(shí)執(zhí)行以下代碼。 執(zhí)行完Gosc...
聲明 golang使用的是plan9匯編,不少調(diào)度的底層代碼都是通過(guò)plan9實(shí)現(xiàn),因此了解plan9匯編對(duì)Go源碼剖析有非常重要的意義,以下的內(nèi)容均針對(duì)golang中使用的...