原创 Linux操作系統學習筆記(七)任務調度

一. 前言   在前文中,我們分析了內核中進程和線程的統一結構體task_struct,並分析進程、線程的創建和派生的過程。在本文中,我們會對任務間調度進行詳細剖析,瞭解其原理和整個執行過程。由此,進程、線程部分的大體框架就算是介

原创 Linux操作系統學習筆記(六)進程、線程的創建和派生

一. 前言   在前文中,我們分析了內核中進程和線程的統一結構體task_struct,本文將繼續分析進程、線程的創建和派生的過程。首先介紹如何將一個程序編輯爲執行文件最後成爲進程執行,然後會介紹線程的執行,最後會分析如何通過已有

原创 leetcode解題思路分析(二十八)200—206題

島嶼數量 給你一個由 ‘1’(陸地)和 ‘0’(水)組成的的二維網格,請你計算網格中島嶼的數量。 島嶼總是被水包圍,並且每座島嶼只能由水平方向或豎直方向上相鄰的陸地連接形成。 本題可用BFS或DFS求解 class Solut

原创 leetcode解題思路分析(二十七)193 - 199題

有效電話號碼 給定一個包含電話號碼列表(一行一個電話號碼)的文本文件 file.txt,寫一個 bash 腳本輸出所有有效的電話號碼。你可以假設一個有效的電話號碼必須滿足以下兩種格式: (xxx) xxx-xxxx 或 xxx-

原创 Linux操作系統學習筆記(五)進程的核心——task_truct

一. 前言   在前文中,我們分析了內核啓動的整個過程以及系統調用的過程,從本文開始我們會介紹Linux系統各個重要的組成部分。這一切就從進程和線程開始,在 Linux 裏面,無論是進程,還是線程,到了內核裏面,我們統一都叫任務(

原创 Linux操作系統學習筆記(四)系統調用

前言   通過前面幾篇文章,我們分析了從按下電源鍵到內核啓動、完成初始化的整個過程。在後面的文章中我們將分別深入剖析Linux內核各個重要部分的源碼。考慮到後面的部分我們會從用戶態的代碼開始入手一步一步深入,因此在分析這些之前,我

原创 leetcode解題思路分析(二十六)187 - 192題

重複的DNA序列 編寫一個函數來查找 DNA 分子中所有出現超過一次的 10 個字母長的序列(子串)。 class Solution { public: vector<string> findRepeatedDnaSe

原创 Linux操作系統學習筆記(三)內核初始化

前言   前文分析到Linux內核正式啓動,完成了實模式到保護模式的切換,並做好了各種準備工作。下來就要看開始內核初始化工作了,源碼位置位於init/main.c中的start_kernel(),源碼如附錄所示。這包括了一系列重要

原创 leetcode解題思路分析(二十五)178 - 185題

分數排名 編寫一個 SQL 查詢來實現分數排名。 如果兩個分數相同,則兩個分數排名(Rank)相同。請注意,平分後的下一個名次應該是下一個連續的整數值。換句話說,名次之間不應該有“間隔”。 MySQL常用窗口函數有rank,

原创 leetcode解題思路分析(二十四)168 - 177題

excel表格名稱 給定一個正整數,返回它在 Excel 表中相對應的列名稱。 進制轉換 class Solution { public: string convertToTitle(int n) {

原创 Linux操作系統學習筆記(二)內核運行

前言   上文中,我們分析了從按下電源鍵到BootLoader完成加載的過程。加載完成之後,就要正式啓動Linux內核了,而在這之前首先要完成從實模式到保護模式的切換。本文主要分析以下幾部分內容 新舊中斷的交替 打開A20 進入

原创 Linux操作系統學習筆記(一)啓動

前言   Linux操作系統內核是服務端學習的根基,也是提高編程能力、源碼閱讀能力和進階知識學習能力的重要部分,本文開始將記錄Linux操作系統中的各個部分源碼學習歷程。   關於如何學習源碼,個人覺得可以從以下角度入手,有效地提

原创 leetcode解題思路分析(二十三)155 - 167題

最小棧 實現一個棧,可以常數時間返回最小值 很簡單的一道題,沒啥說的 class MinStack { public: /** initialize your data structure here. */ M

原创 leetcode解題思路分析(二十二)148 - 154題

排序鏈表 在 O(n log n) 時間複雜度和常數級空間複雜度下,對鏈表進行排序。 歸併排序三部曲: fast-slow找中點:直到快的走到了末尾,然後慢的所在位置就是中間位置,這樣就分成了兩段 將鏈表分成兩部分 合併兩個有

原创 閱讀筆記(二十四)Raft算法《in search of an understandable consensus algorithm》

一. 簡介   paxos算法是Lamport大神提出的共識算法,在衆多分佈式系統中均有使用,在前文中有對Paxos算法的分析,以及谷歌運用該算法遇到的問題。但是paxos本身實現起來較爲複雜,因此業界出現了另一種更爲方便實現的共