原创 c++ assert() 使用方法

ssert宏的原型定義在<assert.h>中,其作用是如果它的條件返回錯誤,則終止程序執行,原型定義:#include <assert.h>void assert( int expression ); assert的作用是現計算表達

原创 關於HTTP協議,一篇就夠了

HTTP簡介 HTTP協議是Hyper Text Transfer Protocol(超文本傳輸協議)的縮寫,是用於從萬維網(WWW:World Wide Web )服務器傳輸超文本到本地瀏覽器的傳送協議。 HTTP是一個基於TCP/

原创 程序的內存分配之堆和棧的區別

堆棧概述   在計算機領域,堆棧是一個不容忽視的概念,堆棧是兩種數據結構。堆棧都是一種數據項按序排列的數據結構,只能在一端(稱爲棧頂(top))對數據項進行插入和刪除。在單片機應用中,堆棧是個特殊的存儲區,主要功能是暫時存放數據和地

原创 Linux系統目錄結構以及簡單說明

Linux系統目錄結構以及簡單說明  linux目錄圖: / root --- 啓動Linux時使用的一些核心文件。如操作系統內核、引導程序Grub等。home --- 存儲普通用戶的個人文件ftp --- 用戶所有服務http

原创 數據結構――堆的基本概念及其操作

 在我剛聽到堆這個名詞的時候,我認爲它是一堆東西的集合...       但其實吧它是利用完全二叉樹的結構來維護一組數據,然後進行相關操作,一般的操作進行一次的時間複雜度在   O(1)~O(logn)之間。       可謂是相

原创 Linux系統結構詳細解讀

我以下圖爲基礎,說明Linux的架構(architecture)。(該圖參考《Advanced Programming in Unix Environment》) 最內層是硬件,最外層是用戶常用的應用,比如說firefox瀏覽器,

原创 Linux中的shell到底是什麼?

【一】 shell的含義: 首先shell的英文含義是“殼”; 它是相對於內核來說的,因爲它是建立在內核的基礎上,面向於用戶的一種表現形式,比如我們看到一個球,見到的是它的殼,而非核。 Linux中的shell,是指一

原创 strcmp函數與strcpy函數

(一)strcmp函數            strcmp函數是比較兩個字符串的大小,返回比較的結果。一般形式是:                    i=strcmp(字符串,字符串);          其中,字符串1、字符串2均可

原创 二叉樹的線索化詳解

首先,什麼是二叉樹的線索化,爲什麼要對二叉樹線索化? 二叉樹是一種非線性結構,遍歷二叉樹幾乎都是通過遞歸或者用棧輔助實現非遞歸的遍歷。用二叉樹作爲存儲結構時,取到一個節點,只能獲取節點的左孩子和右孩子,不能直接得到節點的任一遍歷序列的

原创 linux中fork()函數詳解

 一、fork入門知識      一個進程,包括代碼、數據和分配給進程的資源。fork()函數通過系統調用創建一個與原來進程幾乎完全相同的進程,也就是兩個進程可以做完全相同的事,但如果初始參數或者傳入的變量不同,兩個進程也可以做不同的事。

原创 g++與gcc的區別

一:gcc與g++比較 編譯c/c++代碼的時候,有人用gcc,有人用g++,於是各種說法都來了,譬如c代碼用gcc,而 c++代碼用g++,或者說編譯用gcc,鏈接用g++,一時也不知哪個說法正確,如果再遇上個extern "C",分歧

原创 C++ 詳解深貝與淺拷貝

當用一個已初始化過了的自定義類類型對象去初始化另一個新構造的對象的時候,拷貝構造函數就會被自動調用。也就是說,當類的對象需要拷貝時,拷貝構造函數將會被調用。以下情況都會調用拷貝構造函數:(1)一個對象以值傳遞的方式傳入函數體  (2)一

原创 Linux 通信機制 I/O多路複用之select

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