原创 關於C語言switch case語句中定義變量的問題

今天在完善通訊錄項目的時候發現一個小問題,就是在switch case 語句中定義變量時會報錯,出現下面的問題 函數中當時我是這樣寫的 問題處在哪裏呢?很簡單,大家看下面的例子 switch(num){

原创 Linux---進程組/作業/會話

1、進程組 每個進程除了自己本身的ID之外,還屬於一個進程組。進程組(Process Group)是一個或多個進程的集合。 進程組ID等於組長進程的進程ID,組長進程可以創建一個進程組 每個進程組都有一個組長進程,如果組長進程終

原创 Linux---Linux系統下的進程間通信詳解

進程間通信(IPC)介紹 進程間通信的本質就是讓兩個毫不相關的進程看到一份共同的資源,大概意思就是實現不同進程間的傳播或交換信息 進程間通信的主要方式有管道,消息隊列,共享內存,信號量,Socket,Streams等,這篇博客主

原创 C語言實現簡單網絡版五子棋(服務器與客戶端)

本小遊戲是在Linux下實現的(因爲我不會Windows網絡編程),這次實現的僅僅是服務器與客戶端之間進行互動,彼此只要互相發送下點的座標就ok,用結構體存放座標,各自收到座標後進行下子,以及判斷結果。 本篇文章裏只涉及部分代碼

原创 數據結構---動態順序棧實現

棧:一種特殊的線性表,其只允許在固定的一端進行插入和刪除操作,進行數據插入和刪除操作的一端被稱爲棧頂,另一端稱爲棧底。不含任何元素的棧稱爲空棧,內存中的“棧區”也是通過這樣的棧結構實現的,即通常所說的數據先進先出 動態順序棧 我

原创 數據結構---鏈式棧實現

鏈式棧,顧名思義,就是規定一個只能頭插頭刪或者尾插尾刪的鏈表,來實現棧結構先進先出原則 在這裏我們選用頭插和頭刪的方法,因爲尾插和尾刪都需要遍歷鏈表,時間複雜度較高。 不多比比,直接通過代碼演示 結構體聲明 typedef c

原创 TCP保證可靠性的舉措

連接管理 TCP是面向連接的,三次握手和四次揮手都是爲了保證本次數據傳送的可靠性,這裏不做贅述 如果想了解具體的三次握手和四次揮手,請戳這裏->TCP三次握手四次揮手詳解 序號 保證數據段的按序到達 TCP是面向字節流的,

原创 數據結構---堆的基本操作及堆排序

介紹 首先我們要將數據結構中的堆和內存中的堆區區分開來,內存中的堆區是操作系統管理的,和數據結構中的堆沒有半毛錢關係。堆只有兩種,大堆和小堆。 大堆(大根堆):父節點的值大於左右孩子結點的值,也就是說大堆的根節點是整個堆中的最大

原创 數據結構---二叉樹的基本操作

何爲二叉樹 概念:一棵二叉樹是結點的一個有限集合,該集合或者爲空,或者是由一個根節點加上兩棵分別稱爲左子樹和右子樹的二叉樹組成 特點: 每個結點最多有兩棵子樹 二叉樹的子樹有左右之分,其子樹的次序不能顛倒 基本操作介紹 二叉

原创 Linux---死鎖

什麼是死鎖 死鎖是指兩個或兩個以上的進程在執行過程中,由於競爭資源或者由於彼此通信而造成的一種阻塞的現象,若無外力作用,它們都將無法推進下去。此時稱系統處於死鎖狀態或系統產生了死鎖,這些永遠在互相等待的進程稱爲死鎖進程。 死鎖產生

原创 數據結構---C語言簡單實現哈希表

當你看這篇的時候我認爲你已經懂得哈希表的基本原理和一些具體方法實現了,如果你是想清晰的理解哈希表原理,點這個哈希表(散列表)原理詳解 閉散列 我們往哈希表中插入數據時往往會發生哈希衝突,即兩個不一樣的 key 通過散列函數求出

原创 數據結構---還原一個二叉樹

要求 給出一個二叉樹前序的遍歷結果(數組),結果中包含有空結點(空結點用’#’表示),還原這個二叉樹。 給出一個二叉樹前序和中序的遍歷結果,不包含空結點,還原這個二叉樹。 思考 1.給出帶有空結點的前序遍歷結果還原二叉樹 我

原创 操作系統---fork函數解析與例題詳解

fork的基本知識 函數原型:pid_t fork( void);    返回值: 若成功調用一次則返回兩個值,子進程返回0,父進程返回子進程ID;否則,出錯返回-1 一個現有進程可以調用fork函數創建一個新進程

原创 數據結構---順序隊列實現

隊列即爲只允許在一端進行插入數據隊列,在另一端進行刪除數據操作的特殊線性表。但也有一些例外,如優先級隊列。 隊列具有先進先出的特性,即最先進入隊列的元素將被最先出隊列 有時也需要把進入隊列中的元素分優先級(比如線程調度),出隊列時

原创 內存池、進程池、線程池

池的概念 由於服務器的硬件資源“充裕”,那麼提高服務器性能的一個很直接的方法就是以空間換時間,即“浪費”服務器的硬件資源,以換取其運行效率。這就是池的概念。池是一組資源的集合,這組資源在服務器啓動之初就完全被創建並初始化,這稱爲靜