原创 【linux】線程的基本概念!!!

在linux裏面是沒有實際的線程的結構,但是在linux裏面爲了描述線程,將進程分爲很多的輕量級進程,這些輕量級的進程被稱之爲線程。 兩個區別: 進程是系統分配資源的基本單位 線程是系統調度的基本單位 由於線程在進程的內部運行

原创 【Linux】多進程和多線程的調試!!

在gdb調試多線程好人多進程的程序上面,默認的是調試主程序。但是gdb是支持調試多線程和多進程的。 調試多進程 在調試多進程的時候需要設置follow-fork-mode(默認parent) 和 detach-on-fork(

原创 【linux】共享內存!!

在system V IPC裏面,共享內存是所有進程間通信速度最快的。因爲在消息隊列裏面,在消息傳遞的時候需要進行兩次拷貝(將數據拷貝到隊列節點裏面,從隊列節點裏面拷貝到內存)。 基本原理: 注:進程間通訊的本質就是將不同的

原创 【C++】標準文件的輸入輸出!!!

在C++裏面的IO都是以流的形式存在的,所以在對文件進行操作的時候也是以流的形式操作的。 主要的流:ifstream、ofstream、fstream,都包含於fstream頭文件裏面。 ifstream:從內存將文件數據讀在

原创 【數據結構】hash算法!!!

Hash表是一種可以將查找元素的時間複雜度降爲O(1)的高效算法。 基本原理:將所有的數據通過hash函數映射到hash表裏面,如果需要查找元素的時候再通過hash函數來計算出來元素在hash表裏面的位置,從而一次將需要的元素找

原创 【Linux】設計模式-----簡單工廠模式

概念:簡單工廠模式即,只需要輸入實例化對象的名稱,工廠類就可以實例化出來需要的類。 核心:實現工廠模式的核心就是多個派生類public繼承基類,同時根據用戶的需求在簡單工廠類裏面實例化基類的對象,從而根據基類裏面的虛函數來實現對

原创 【Linux】設計模式---單例模式

概念:單例模式即在單例類實例化對象的時候只能實例化出來一個對象。 單例模式實現的要點: 單例類只能實例化出來一個單例對象 必須能夠自行創建實例對象 必須能夠向整個系統提供這個實力對象 單例模式的優點: 單例模式只能夠創建一

原创 【linux】信號!!

在linux裏面使用kill -l命令可以顯示系統的信號列表 這裏的1~31是普通信號,34~64是實時信號,這裏只研究普通信號 內核裏面的信號 信號的產生 用戶在鍵盤上按下某些鍵的時候,驅動會發送信號給前臺進程。 硬

原创 【數據結構】實現紅黑樹!!!

相對於AVL樹來說,紅黑樹去掉了AVL樹裏面的平衡因子,利用樹節點的顏色來調整數的平衡。 紅黑樹的創建原則: 每個節點的顏色不是黑色就是紅色 樹的根節點是黑色的 如果一個節點的顏色是紅色的,那麼它的裏兩個孩子結點顏色是黑色的

原创 【linux】管道!!!

進程間通訊的方式有: 管道 消息隊列 共享內存 信號量 在這裏面管道是最古老的進程間通訊方式,管道又分爲匿名管道和命名管道。 匿名管道 侷限性: 只能夠在具有親緣關係的進程裏面使用 管道提供流式服務 管道的生命週期隨進程 內

原创 【Linux】進程終止方式--exit的調用過程!!!

在linux裏面的進程終止的方法有8種。 五種正常終止: 從main函數返回 調用exit函數 調用_exit或者_Exit 最後一個線程從啓動實例返回 從最後一個線程調用pthread_exit 三種議程終止: 調用ab

原创 【Linux】死鎖!!!

死鎖概念 在多線程程序裏面多個線程因爲競爭資源而產生的僵持現象。 產生死鎖的四個條件 互斥條件:每個資源每次只能被一個進程使用,即在一度那時間內得某資源僅爲一個進程所佔有。此時若有其他的進程請求該資源,則請求進程只能等待。 請

原创 【linux】頁表的簡單理解!!!

在使用的計算機內存(4G)上面用戶可以使用的內存只有0~3G,3~4G是系統內核使用的區域。 但是在物理內存上面,任何的區域和位置都是可讀可寫操作的,假如進程直接訪問的是物理內存,那麼系統就會存在很大的不安全性。 頁表 頁表

原创 【數據結構】歸併排序!!!

歸併排序 整體思想:將數據分成很多的部分,每次排序數據的一部分,然後將兩部分的數據進行整體排序,這樣一步一步將整體數據排序。 如圖: 注:將需要排序的數據進行分塊,當每個塊的數據足夠的少的時候就可以進行效率高的排序方法,

原创 【數據結構】二叉搜索樹!!!

二叉搜索樹的結構類似於二分查找的思想,在二叉樹結構裏面,將數據的大小分爲樹的左右子樹,從而在搜索的時候類似於二叉搜索。 如圖: 當搜索一個二叉搜索樹的時候時間複雜度就是O(logN). 構建搜索二叉樹: