原创 棧&隊列&棧幀&遞歸
*棧的定義——Stack 棧是隻允許在末端進行插入和刪除的線性表,棧具有後進先出的特徵(LIFO,Last In First Out). *棧的應用 棧很大意義上模擬了壓棧,實現了遞歸轉非遞歸。還有算術表達式求值
原创 TCP協議字段中的URG和PSH
一、基本概念 URG緊急指針,當URG=1時,表明分段中有緊急數據應當加速傳送。URG=0時,緊急指針沒有意義。 PSH緊急位,當PSH=1時,要求發送方馬上發送該分段,而接收方儘快將報文交給應用層,不做隊
原创 進程通信之管道
在談管道之前我們先了解一下什麼是進程間通信。 每個進程各自有不同的用戶地址空間,任何一個進程的全局變量在另一個進程中都看不到,所以進程間要交換數據必須通過內核,在內核中開闢一塊緩衝區,進程1把數據從用戶空間
原创 C++中的對象模型
所謂多態,即“多種形態“。 C++中虛函數的主要作用就是實現多態,每一個具有虛函數的類都叫做多態類。這個虛函數或者是從基類繼承來的,或者是自己新增的。C++編譯器爲每一個多態類至少創 建一個虛函數表(vtable),他其
原创 CRC校驗
一、什麼是CRC校驗 CRC即循環榮譽校驗碼(Cyclic Redundancy Check):是數據通訊領域中最常用的一種差錯校驗碼,其特徵是信息字段和校驗字段的長度可以任意選定。CRC的基本原理: 在K位信
原创 Linux中exit()函數和atexit函數
main函數 當內核使用一個exec函數執行C程序時,在調用main函數之前先調用一個特殊的啓動例程,可執行程序將此例程指定爲起始地址。啓動例程從內核獲取命令行參數和環境變量,然後爲調用main函數做好準備。 進程終止 進程終止的方式有
原创 生產者消費者模型
生產者消費者模型: 兩個進程共享一個緩衝區,一個進程稱爲生產者,它向緩衝區裏放數據,另一個進程稱爲消費者,他向緩衝區裏取數據,當生產者向緩衝區裏放數據是就必須進入掛起狀態, 知道消費者從緩衝區中取走數據後生
原创 Linux中文件指針和文件描述符的區
文件描述符 在linux系統中打開文件就會獲得文件描述符,它是個很小的正整數。每個進程在PCB(Process Control Block)中保存着一份文件描述符表,文件描述符就是這個表的索引,其實就是文件數組下標,文件描
原创 Linux進程描述
廣義上,所有的進程信息被放在一個叫做進程控制塊的數據結構中,可以理解爲進程屬性的集合。 進程控制塊 每個進程在內核中都有一個進程控制塊(PCB)來維護進程相關的信息,Linux內核的進程控制塊是tack_struct.結構體。下面我們將全
原创 守護進程
一、守護進程 守護進程也稱精靈進程(Daemon),是運行在後臺的一種特殊進程。它獨立於控制終端並且週期性地執行任務或等待處理某些發生的事件。守護進程是一種很有用的進程。Linux的大多數服務器就是守護進程實現的。比如,I
原创 二叉樹
在介紹二叉樹之前大家一定要對樹有一定的瞭解,二叉樹是一種特殊的樹結構,二叉樹每個節點最多有兩個孩子節點,分別爲左孩子和右孩子。 *滿二叉樹:高度爲N的滿二叉樹有2^n-1個節點的二叉樹。 *完全二叉樹:若設二叉樹的
原创 對比線程安全和可重入函數
一、線程安全函數 1、什麼是線程安全 一個函數被稱爲線程安全,當且僅當它被多個併發的進程反覆調用時,它會一直產生正確的結果。反之,如果一個函數不是線程安全的,我們就稱它是不安全的。 線程安全主 要是針對數據競爭來說的,就
原创 Linux下的crond和crontab
一、基本概念 1、crond crond的概念和crontab是不可分割的。crond是一個命令,常見於Linux/Unix系統之中,用於設置週期性被執行的命令。 crontab命令常用於從標準輸入設備中讀取指
原创 使用gdb調試多進程多線程程序
一、gdb基礎知識 1、gdb是Linux環境下的一種調試工具,使用時在源程序生成是加上-g選項。 2、開始使用:gdb binFile;退出使用:ctrl+d或quit。 3、調試過程中常用的命令有: (1)list命令
原创 C++異常
對於每位編程人員來說,程序的編譯或運行錯誤是很常見的,今天我在這裏粗略的總結一下C++中的異常 1、錯誤處理技術: 傳統的錯誤處理辦法: (1)終止程序(如段錯誤等) (2)返回錯誤碼 (3)返回和法值,讓程序出於某種非法的狀態。(太坑了