原创 通用雙向鏈表及宏的使用

在看openflow源代碼的時候,發現各種宏定義,以及對鏈表的操作,簡單拿出來一個小例子,供學習使用。 #include <stdio.h> #include <string.h> #include <stddef.h> #defin

原创 java中的velocity

之前沒接觸過,在看別人代碼的時候,發現有用到。後來一查,原來velocity是實現MVC的一個好工具。 在我使用中遇到的一個問題是,如何把java中的list通過velocity呈現在界面上。如果list裏面是String類型的話,比較簡

原创 grep 命令好強大

想查找某個函數,但是又不知道目錄下的哪個文件,或者打印出匹配的前後文,man 了一下grep, 發現grep好強大,而且學會使用man會使使用很方便。 可以遞歸地匹配目錄, 即 -r -R 參數 (以前只知道匹配文件呢) 打印文件名: -

原创 重新設置全局PATH

在一個terminal中,直接修改PATH時,在其它的terminal中PATH  的值並沒有改變。 修改方法如下: 打開一個終端窗口,編輯/etc/profile,在該文件的末尾加入:     PATH=${PATH}:Your_pa

原创 數組下標爲0

長度爲0的數組——C語言的非標準用法之一  在標準C和C++中,長度爲0的數組是被禁止使用的。不過在GNU C中,存在一個非常奇怪的用法,那就是長度爲0的數組,比如Array[0];很多人可能覺得不可思議,長度爲0的數組是沒有什麼意義的,

原创 二叉樹的非遞歸遍歷

樹的遞歸遍歷比較簡單,就是兩三句話,相對來說理解二叉樹的非遞歸遍歷稍微難一點。 在數據結構上,有二叉樹的中序遍歷非遞歸算法。可以根據中序遍歷來寫出先序和後序遍歷。   在中序遍歷時,當非空元素進行出棧時進行訪問。訪問結束時,右子樹結點進棧

原创 通用棧

棧是一種用得比較多的數據結構,用處很廣。但很多時候,棧中的元素是不一樣的。那如何寫一個通用的棧呢。在C++中有模板,那如何用C實現通用的棧呢。 在C語言中,不同的數據類型,佔用的字節數不一樣。參考qsort對不同數據類型的排序方法,可以得

原创 C語言中如何使用宏 包括單雙井號 可變參數

C(和C++)中的宏(Macro)屬於編譯器預處理的範疇,屬於編譯期概念(而非運行期概念)。下面對常遇到的宏的使用問題做了簡單總結。 關於#和## 在C語言的宏中,#的功能是將其後面的宏參數進行字符串化操作(Stringficatio

原创 二分查找,要注意的地方

二分查找的思想,大家都知道,但是要寫出完整的二分查找,還是有幾點需要注意的。 在mid=(low+high)/2時,爲了防止兩個大數相加越界,我們可以使用 mid = low + (high-low)/2 同時要注意while的判斷條件,

原创 數組元素的其它賦值方法

原來數組元素還可以這樣賦值,C語言用法真多,表示知道的太少了。 struct A{ int a, b; }; struct A arr[] = { [0] ={1,2}, [1] = {3,4}}; 原來還可以通過指定下標的方式賦值,

原创 C/C++中的自增操作

轉自: http://developer.e800.com.cn/articles/2007/427/1177657988954238028_1.html 總之,在進行表達式運算的時候(不加register, volatile),有個原

原创 原來 C 裏,也有bool 類型

原來C裏面也有bool類型,以前只知道用 整型來判斷。 C99以後,在 <stdbool.h> 中也加入了bool類型。 bool flag = true;  true的時候, 值爲1, false 爲0

原创 windows的命令行窗口

每次看到命令行窗口,太小了,就調成了全屏模式,但是怎麼也回不去了。在網上查了一下用 alt + enter 就可以了。學習了。萬一再有類似問題,就懂

原创 getopt_long 與 optind

剛開始接觸 一些處理命令行參數的操作,開始不太明白,用例子測試了一下,感覺比以前明瞭多了。 命令行參數有長參數如version, 還有短參數 如 v, 那麼用這兩個都可以。程序處理的時候,會首先把長參數轉換成對應的短參數,如會把versi

原创 foxmail接收163郵件的問題

用foxmail客戶端接收郵件是挺方便的,但是對於163的郵箱,怎麼也接收不了郵件,在網上查了好多,有的也不能用,最後找到一個可以用的。主要是啓動安全。大家可以參考以下的鏈接: http://wap.mail.163.com/xm/sta