原创 c實現的動態順序表

    第一篇文章中用c實現了靜態順序表,但是使用靜態順序表還有不足的地方。當我們需要存儲的數據很少時,如果靜態順序表的數組容量較大就會造成空間的浪費;當我們需要存儲的數據很多時,如果靜態順序表的數組容量較小可能就會造成數據丟失。所以一般情

原创 字符串長度的三種求取方法

1.遍歷字符串,只要不遇到字符0,計數器就加1. int my_strlen(const char *str)//加const修飾更安全 { int count=0; while(*str) { count++; str++;

原创 Linux下的find命令

    Linux下find命令在目錄結構中搜索文件,並執行指定的操作。並且提供了相當多的查找條件,功能很強大。1.命令格式: find pathname -options [-print -exec -ok ...]2.命令功能:用於在文

原创 TCP三次握手與四次揮手

        建立TCP需要三次握手才能建立,而斷開連接則需要四次握手。整個過程如下圖所示:一、三次握手(建立連接)    1.客戶端發出段1,SYN位表示連接請求。序號是1000,這個序號在網絡通訊中用作臨時的地址,每發一個數據字節,這

原创 TCP服務器

一、socket編程    1.socket    在TCP/IP協議中,“IP地址+TCP或UDP端口號”唯一標識網絡通訊中的一個進程,“IP地址+端口號”就稱爲socket。    在TCP協議中,建立連接的兩個進程各自有一個socke

原创 五種I/O模型

一、I/O簡介     Unix下共有五種I/O模型:阻塞I/O、非阻塞I/O 、I/O複用(select和(e)poll)、信號驅動、I/O(SIGIO)、異步I/O(Posix.1的aio_系列函數)。      IO請求分兩步:   

原创 I/O多路轉接之select、poll、epoll

一、select    1.select簡介    系統提供select函數來實現多路複用輸入/輸出模型。select系統調用是用來讓我們的程序監視多個文件句柄的狀態變化的。程序會停在select這裏等待,直到被監視的文件句柄有一個或多個發

原创 linux中的死鎖

    死鎖:一般情況下,如果同一個線程先後兩次調用lock,在第二次調用時,由於鎖已經被佔用,該線程 會掛起等待別的線程釋放鎖,然而鎖正是被自己佔用着的,該線程又被掛起而沒有機會釋放鎖, 因此 就永遠處於掛起等待狀態了,這叫做死鎖(Dea

原创 守護進程

一、守護進程定義    守護進程也稱精靈進程( Daemon),是運行在後臺的一種特殊進程。它獨立於控制終端並且週期性地執行某種任務或等待處理某些發生的事件。守護進程是一種很有用的進程。 Linux的大多數服務器就是用守護進程實現的。比如,

原创 操作系統中進程調度算法

    調度算法是指根據系統的資源分配策略所規定的資源分配算法。    調度算法要達到的目標:(1)公平性考量: 讓每個進程儘量平均的佔用CPU;(2)效率考量: 儘量增大CPU的吞吐率,讓CPU在所有時間基本上處於忙碌狀態;(3)響應時間

原创 shell腳本的簡易進度條

一、簡易進度條的基礎    1.數組    bash支持一維數組(不支持多維數組),並且沒有限定數組的大小。類似於C語言,數組元素的下標由0開始編號。獲取數組中的元素要利用下標,下標可以是整數或算術表達式,其 值應大於或等於0。     定

原创 進程控制PCB

        PCB(process control block),進程控制塊,是我們學習操作系統後遇到的第一個數據結構描述,它是對系統的進程進行管理的重要依據,和進程管理相關的操作無一不用到PCB中的內容。一般情況下,PCB中包含以下內

原创 I/O多路轉接之select、poll、epoll

一、select    1.select簡介    系統提供select函數來實現多路複用輸入/輸出模型。select系統調用是用來讓我們的程序監視多個文件句柄的狀態變化的。程序會停在select這裏等待,直到被監視的文件句柄有一個或多個發

原创 TCP三次握手與四次揮手

        建立TCP需要三次握手才能建立,而斷開連接則需要四次握手。整個過程如下圖所示:一、三次握手(建立連接)    1.客戶端發出段1,SYN位表示連接請求。序號是1000,這個序號在網絡通訊中用作臨時的地址,每發一個數據字節,這

原创 TCP服務器

一、socket編程    1.socket    在TCP/IP協議中,“IP地址+TCP或UDP端口號”唯一標識網絡通訊中的一個進程,“IP地址+端口號”就稱爲socket。    在TCP協議中,建立連接的兩個進程各自有一個socke