原创 三種模型結構——OSI、TCP/IP、五層協議的體系結構

三種模型結構:  在傳輸層的數據叫段, 網絡層叫包,數據鏈路層叫幀,物理層叫比特流,這樣的叫法叫PDU(協議數據單元

原创 虛函數 多重繼承 動態綁定

class A { public: virtual void vfunc1(); virtual void vfunc2(); void func1(); void func2(); private:

原创 虛繼承 虛基類的子類內存佈局

1、普通多繼承的內存佈局 class A { public: int dataA; }; class B : public A { public: int dataB; }; class C : public A { publi

原创 HTTP的長連接和短連接

1. HTTP協議與TCP/IP協議的關係 HTTP的長連接和短連接本質上是TCP長連接和短連接。HTTP屬於應用層協議,在傳輸層使用TCP協議,在網絡層使用IP協議。 IP協議主要解決網絡路由和尋址問題,TCP協議主要解決如何在IP層之

原创 sizeof和strlen的區別

一、strlen計算字符串的實際長度,以'\0'爲結束標誌,不包含'\0' char *p = "asdvb"; strlen(p) = 5; sizeof(p) = 4;(是指針所佔的字節大小)(32位系統) 二、sizeof siz

原创 判斷棧的增長方向

一、解決方案:    設計兩個函數,一個作爲調用方(main函數),另一個作爲被調用方(fun函數)。被調用方以一個地址(也就是指針)作爲自己的入口參數,調用方傳入的地址是自己的一個局部變量的地址,然後,被調用方比較這個地址和自己的一個局

原创 FTP協議

FTP 概述 FTP工作在TCP/IP模型的應用層,基於的傳輸協議是TCP,FTP客戶端和服務器之間的連接是可靠的,面向連接的,爲數據的傳輸提供了可靠的保證。 文件傳輸協議(FTP)作爲網絡共享文件的傳輸協議,在網絡應用軟件中具有廣泛的應

原创 分治法——全排列、整數劃分、最近點對問題、棋盤覆蓋

一、分治法的求解過程: (1)劃分:既然是分治,當然需要把規模爲n的原問題劃分爲k個規模較小的子問題,並儘量使這k個子問題的規模大致相同。 (2)求解子問題:各子問題的解法與原問題的解法通常是相同的,可以用遞歸的方法求解各個子問題,有時遞

原创 I/O複用——select/poll/epoll的比較

select: select本質上是通過設置或者檢查存放fd標誌位的數據結構來進行下一步處理。這樣所帶來的缺點是: 1、 單個進程可監視的fd數量被限制,即能監聽端口的大小有限。       一般來說這個數目和系統內存關係很大,具體數目可

原创 二叉樹的構建

一、利用先序遍歷的結果創建 1: void CreateTree4(BtNode *&ptr,ElemType *&str) { if(NULL == str || *str == '#') { ptr = NULL; }

原创 KMP算法

一、KMP算法思想:定義兩個整形變量 i、j,i 在源串的起始位置,j 在子串的起始位置,然後i、j同時開始向後走,如果i、j對應的值匹配就都++,如果不匹配,則 i 不動,j回退到k位置,這個k是存在next數組裏的值,稍後說next數

原创 線索二叉樹

一、線索二叉樹:就是將二叉樹線索化,充分利用二叉鏈表中的空鏈域,將遍歷過程中結點的前驅、後繼信息保存下來。在一棵有n個結點的二叉樹中,共有2n個指針域,其中有n+1個空指針域,可以利用這些空指針域來指示其前驅和後繼 lchild ltag

原创 BST(C實現)

BST樹:(也稱二叉排序樹或二叉搜索樹)   特點:如果左孩子不空,則左孩子一定比根結點值要小,如果右孩子不空,則右孩子一定比根節點值要大 頭結點的組成如下: Lchild(指向BST最小結點) parent(指向BST的根) data(

原创 位運算

一、運算符: (1)“&”:0跟任何數字與的時候都是0,1和某位與的時候不改變它 (2)“|” : 0跟任何數字或的時候不變,1和數字或的時候把它變成1 (3)“^”  :0跟某位異或不改變,1和某位異或的時候取反 (4)“>>”:最右邊

原创 四種類型轉換

C語言支持類型強制轉換,C++爲什麼要引入其他類型轉換,原因如下:  1、C風格的轉換格式很簡單,但是有不少缺點的: (1)轉換太過隨意,可以在任意類型之間轉換。你可以把一個指向const對象的指針轉換成指向非const對象的指針,把一個