原创 C++ string split trim
</pre><pre name="code" class="cpp"></pre><pre name="code" class="cpp">//注意:當字符串爲空時,也會返回一個空字符串 void split(std::string& s
原创 C++靜態成員
we can provide in-class initializers for static members that have const integral type and must do so for static member
原创 查找文件
Linux: which 查看可執行文件的位置。 whereis 查看文件的位置。 (windows 下 where) locate 配合數據庫查看文件位置。 find 實際搜尋硬盤查詢文件名稱。 which命令的作用是,
原创 理解 __declspec(dllexport)和__declspec(dllimport)
考慮下面的需求,使用一個方法,一個是提供者,一個是使用者,二者之間的接口是頭文件。頭文件中聲明瞭方法,在提供者那裏方法應該被聲明爲__declspec(dllexport),在使用者那裏,方法應該被聲明爲__declspec(dllimp
原创 文件重定向
“i<&j”和“i>&j”的效果都是把j的指向複製給i。“echo hero >hero.txt 2>&1”這句的意思是,無論是標準輸出還是標準錯誤輸出都會被重定向到hero.txt中,具體過程:1的指向由con轉爲 hero.txt,“
原创 iterator做形參傳值,而不是傳引用。
在STL中,我們能見到很多函數的形參都是iterator的傳值,而不是傳引用。 你會不會問,爲什麼不是傳引用,傳引用不是效率更高嗎? 這是因爲我們通常這麼用: void print_vector(vector<int>::ite
原创 三次握手 resend
三次握手的第三個ACK包丟了——客戶端認爲連接建立,寫數據時,會觸發RST 當Client端收到Server的SYN+ACK應答後,其狀態變爲ESTABLISHED,併發送ACK包給Server
原创 socket tcp/ip
socket中TCP的三次握手建立連接詳解 我們知道tcp建立連接要進行“三次握手”,即交換三個分組。大致流程如下: 客戶端向服務器發送一個SYN J服務器向客戶端響應一個SYN K,並對SYN J進行確認ACK J+1客戶端再想服務
原创 map 對key 或 value排序
按KEY排序: 我們藉助map提供的參數接口,爲它指定相應Compare類,就可以實現對map按Key排序,是在創建map並不斷的向其中添加元素的過程中就會完成排序。 該如何實現Map的按Value排序呢? 第一反應是
原创 fsync的性能問題,與fdatasync
1、sync函數 sync函數只是將所有修改過的塊緩衝區排入寫隊列,然後就返回,它並不等待實際寫磁盤操作結束。 通常稱爲update的系統守護進程會週期性地(一般每隔30秒)調用sync函數。這就保證了定期沖洗內核的塊緩衝區。命令
原创 g++
一、gcc 編譯流程 1.預處理-Pre-Processing gcc -E test.c -o test.i //.i文件 2.編譯-Compiling gcc -S test.i -o test
原创 inline static varaible
void doSomething() { static int value ; } You must realise that the static variable inside the function, simply put
原创 const iterator 和const_iterator區別
如果你傳遞過來一個const類型的容器,那麼只能用const_iterator來遍歷。 void Method(const vector<int> vInt) { vector<int>::const_iterator iter; }
原创 operator ++
The difference lies in what signature you choose for your overload(s) of operator ++. Cited from the relevant art
原创 read copy update
In computer operating systems, read-copy-update (RCU) is a synchronization mechanism implementing a kind of mutual e