原创 數據結構與算法之美(四)

一,拓撲排序 如果 a 先於 b 執行,也就是說 b 依賴於 a,那麼就在頂點 a 和頂點 b 之間,構建一條從 a 指向 b 的邊。而且,這個圖不僅要是有向圖,還要是一個有向無環圖,也就是不能存在像 a->b->c->a 這樣的循環依賴

原创 Redis設計與實現(一)對象

Redis對象系統中包含字符串對象、列表對象、哈希對象、集合對象、有序集合對象。 實現了基於引用計數的內存回收機制。 一,對象的類型與編碼 Redis使用對象來表示數據庫中的鍵和值。 /* * Redis 對象 */ typede

原创 C/C++知識點總結(四)

一,用C++設計一個不能被繼承的類 首先想到的是在C++中,子類的構造函數會自動調用父類的構造函數。同樣,子類的析構函數也會自動調用父類的析構函數。要想一個類不能被繼承,只要把它的構造函數和析構函數都定義爲私有函數。那麼當一個類試圖從它那

原创 Redis設計與實現(一)數據結構

1,簡單動態字符串(SDS) redis的字符串不是直接用c語言的字符串,而是用了一種稱爲簡單動態字符串(SDS)的抽象類型,並將其作爲默認字符串。 redis中包含字符串值的鍵值對在底層都是由SDS實現的。 (1)SDS定義 /*

原创 C/C++知識點總結(一)

1.struct和class的區別 C++中的struct對C中的struct進行了擴充,它已經不再只是一個包含不同數據類型的數據結構了,它已經獲取了太多的功能。 struct能包含成員函數嗎? 能! struct能繼承嗎? 能!! st

原创 極客時間Linux操作系統(二)內存管理

一,內存管理 1,操作系統的內存管理分爲三部分: 物理內存的管理 虛擬內存的管理 虛擬地址和物理地址如何映射 2,虛擬空間分爲兩部分: 內核空間 用戶空間 Text segment存放二進制可執行代碼的位置 data segment存放

原创 gdb調試總結

一,gdb調試基礎 (1)用gdb編譯程序時,首先在編譯程序時加-g gcc test.c -o gdb_test -g (2)運行程序 gdb + 編譯後的文件名 在命令行中先輸入gdb,按回車,再輸入file + 編譯後的文件 (3)

原创 玩轉算法面試(九):貪心算法

455. 分發餅乾 假設你是一位很棒的家長,想要給你的孩子們一些小餅乾。但是,每個孩子最多隻能給一塊餅乾。對每個孩子 i ,都有一個胃口值 gi ,這是能讓孩子們滿足胃口的餅乾的最小尺寸;並且每塊餅乾 j ,都有一個尺寸 sj 。如果 s

原创 (二)策略模式

簡單工廠模式只是解決對象的創建問題,而且由於工廠本身包括了所有的收費方式,商場可能經常性的更改打折額度和返利額度,每次維護或者擴展收費方式都要改動這個工廠,以致代碼需要重新編譯部署,這不是一種好方法。而且爲了創建不同的對象產品使用了swi

原创 玩轉算法面試:(七)遞歸和回溯法

回溯問題可以轉化成樹形問題 回溯法是暴力解法的一個主要手段 17. 電話號碼的字母組合 給定一個僅包含數字 2-9 的字符串,返回所有它能表示的字母組合。 給出數字到字母的映射如下(與電話按鍵相同)。注意 1 不對應任何字母。 示例:

原创 (一)簡單工廠模式

實例化對象的時候不再使用 new Object()形式,可以根據用戶的選擇條件來實例化相關的類。對於客戶端來說,去除了具體的類的依賴。只需要給出具體實例的描述給工廠,工廠就會自動返回具體的實例對象。 場景:採用簡單工廠模式設計一款運算器可

原创 (三)進程調度

1.調度的目標 Response time(響應時間) Throughput(系統吞吐量) Processor efficiency(處理機效率) Fairness(公平性,防止進程飢餓) 2.調度的類型 (1)按OS的類型劃分: 批處理

原创 二叉樹和遞歸

111. 二叉樹的最小深度 給定一個二叉樹,找出其最小深度。 最小深度是從根節點到最近葉子節點的最短路徑上的節點數量。 說明: 葉子節點是指沒有子節點的節點。 示例: 給定二叉樹 [3,9,20,null,null,15,7],    

原创 https和http對比

原文鏈接:https://blog.csdn.net/howgod/article/details/89596638 轉載自:https://blog.csdn.net/howgod/artic

原创 (二)進程描述與控制

進程是程序在一個數據集合上的運行過程,是系統進行資源分配和調度的一個獨立的單位。 (1)進程結構 程序 數據 PCB (2)進程狀態 五狀態模型 執行 就緒 阻塞 新狀態 退出 使用消息隊列的進程狀態轉換 (3)swaping(交