原创 解決哈希衝突---開鏈法

在上篇博客中,已經提出了兩種解決哈希衝突的辦法:線性探測,二次探測。下面呢,在介紹一種解決衝突的辦法---開鏈法(哈希桶)哈希桶的實現:主要是將哈希衝突的那些值存到鏈表中。代碼實現:(支持字典查詢)#pragma once #include

原创 linux中的ctags與make命令

ctags命令ctags是vim下方便代碼閱讀的工具。       首先呢,先創建ctag.h,ctag.c,test.c三個文件。       ctag.h 中爲函數的聲明。       test.c中爲函數的定義。       ctag

原创 文件壓縮(小項目)

簡介:利用哈夫曼樹實現一個文本文檔的壓縮,以及對壓縮文件的解壓思路:在壓縮文件時,首先要統計字符出現的次數,構建哈夫曼樹,生成哈夫曼編碼,壓縮到文件。      在解壓文件時,讀取壓縮文件,將編碼與字符相對應,最後將字符寫到文件中。  在解

原创 I/O多路轉接之select

系統提供select函數來實現多路複用輸入/輸出模型。select系統調用時用來讓我們程序監視多個文件句柄的狀態變化的。程序會停在select這裏等待,直到被監視的文件句柄有一個或多個發生了狀態改變。關於文件句柄,其實就是一個整數,我們最熟

原创 進程間通信---共享內存

什麼是共享內存?    共享內存就是允許兩個不相關的進程訪問同一塊物理內存。進程可將同一段共享內存連接到它們自己的地址空間中,所有進程都可以訪問共享內存中的地址。如果某一個進程向共享內存中寫入數據,所做的改動將立即影響到可以訪問同一段共享內

原创 死鎖

死鎖的定義在一組進程發生死鎖的情況下,這組死鎖進程中的每一個進程,都在等待另一個死鎖進程所佔有的資源。或者說每一個進程所等待的事件是該組進程釋放所有佔有的資源。但由於所有的這些進程都已無法運行,因此誰也不能釋放資源,致使沒有任何一個進程可被

原创 進程間通信---管道

  每個進程各自有着不同的用戶地址空間,任何一個進程的全局變量在另一個進程中是看不到的,所以進程之間要交換數據必須通過內核,在內核中開闢一塊緩衝區,進程1把數據從用戶空間拷到內核緩衝區,進程2在從內核中把數據讀走,內核提供的這種機制稱爲進程

原创 進程間的關係

進程組    進程組是一個或多個進程的集合。每個進程除了有一個進程ID之外,還屬於一個進程組。每個進程組有一個唯一的進程組ID。每一個進程組都可以有一個組長進程。(一般來說,第一個進程爲組長進程)組長進程的標識是,其進程組ID等於其進程的I

原创 生產者與消費者問題

    生產者-消費者問題是一個著名的進程同步問題。它描述的爲:有一羣生產者進程在生產產品,並將這些產品提供給消費者進程消費。爲使生產者進程與消費者進程能併發執行,在兩者之間設置一個具有n個緩存區的緩衝池,生產者進程將其所生產的產品放入一個

原创 進程調度算法

   進程調度算法主要有輪轉調度算法(RR)、優先級調度算法、多隊列調度算法、多級反饋隊列算法。   下面就這幾種算法一一來介紹:1、輪轉調度算法(RR)  (1) 輪轉法的基本原理  在輪轉法中,系統將所有的就緒進程按先來先服務(FIFC

原创 TCP協議

TCP段格式:主要介紹下U6個標誌位:URG(緊急位):緊急指針是一個正的偏移量,和序號字段中的值相加表示緊急數據最後一個字節的序號。TCP的緊急方式是發送端向另一端發送緊急數據的一種方式。緊急指針指向包含數據段的某個字節(數據從第一字節到

原创 進程間通信---消息隊列

    什麼是消息隊列?    消息隊列提供了一種從進程向另一個進程發送一個數據塊的方法。每個數據塊都被認爲是有一個類型,接收者進程的數據塊可以有不同的類型值。    消息隊列與管道的區別:消息隊列是基於消息的,而管道是基於字節流的,且消息

原创 信號(signal)

   所謂信號,就簡單場景來說,啓動一個前臺進程,用戶按下Ctrl_C可將進程終止。   在這呢,簡單說說後臺進程能否用Ctrl_C終止?   一個命令後面加個&便可在後臺執行。這樣Shell不必等待進程結束就可以新的命令,啓動新的進程。S

原创 生產者與消費者問題

    生產者-消費者問題是一個著名的進程同步問題。它描述的爲:有一羣生產者進程在生產產品,並將這些產品提供給消費者進程消費。爲使生產者進程與消費者進程能併發執行,在兩者之間設置一個具有n個緩存區的緩衝池,生產者進程將其所生產的產品放入一個

原创 I/O多路轉接之select

系統提供select函數來實現多路複用輸入/輸出模型。select系統調用時用來讓我們程序監視多個文件句柄的狀態變化的。程序會停在select這裏等待,直到被監視的文件句柄有一個或多個發生了狀態改變。關於文件句柄,其實就是一個整數,我們最熟