原创 快速排序中的partition算法
簡介 partition算法用途是:有一個數組array[]和其中任意一個數組元素x,修改數組,將數組中小於x的元素都移到x的左邊,將大於x的元素都
原创 Libevent 學習--------(eventop)事件多路分發器
一、事件多路分發器一般使用I/O複用接口。 Libvent中使用eventop 結構作爲後端I/O複用的統一接口, libevent裏面稱之爲後端, 也就是一種用於檢測哪種事件已經就緒的方法。 /** Structure to
原创 centos安裝snort
1. 安裝libpcap與libpcap-devel yum install libpacp* 2. 安裝libpcre yum install pcre* 3. 安裝libnet 下載libnet (http:/
原创 KMP 算法 ---經典
The Knuth-Morris-Pratt Algorithm in my own words (http://www.ruanyifeng.com/blog/2013/05/Knuth%E2%80%93Morris%E2%80%93
原创 Libevent學習-------定時器事件
定時器事件的創建 Libevent 一般調用evtimer_new來定義一個定時器事件 #define evtimer_new(b, cb, arg) event_new((b), -1, 0, (cb), (arg
原创 linux 內核學習----------模塊(LKM:loading kernel module)
可加載內核模塊(LKM) Linux內核是模塊化組成的,允許內核在運行的時候以模塊的形式動態地添加或刪除代碼。 優點:保證基本內核小,動態增加和刪除 module_init /module_exit module_init 將模
原创 pthread_exit ---- 不能使用局部變量作爲參數返回
在使用pthread_exit 返回一個void型指針,該指針指向的數據必須不能是線程內部的局部變量,因爲隨着線程的退出,局部變量被摧毀,變成不確定的內存內容了。 下面的程序比較了使用線程內部的局部變量和全局變量作爲pthrea
原创 設計模式學習之------State模式(狀態模式)
什麼是狀態模式 狀態模式允許對象在內部狀態改變時改變它的行爲,對象看起來好像修改了它的類。 1. 這個模式將狀態封裝成爲獨立的類,並將動作委託到代表當前狀態的對象,我們知道行爲會隨着內部狀態而改變。 2. 使用組合通過簡單因爲
原创 c++ Eclipse 中文亂碼
c++ 代碼使用Eclipse時,cout 輸出中文時是亂碼。 修改: 在Window->Preferences->General->Workspace 面板Text file encoding 選擇UTF-8
原创 Libevent學習-----Reactor的事件處理機制
1. 普通函數的調用機制: 主程序調用某函數à函數執行,保存入參和返回寄存器地址,主程序等待à 函數處理完將結果和控制權返回給主程序 à主程序繼續執行 void func () {
原创 snort -------DEBUG_WRAP
在看snort源碼的時候,經常看到調用DEBUG_WRAP函數輸出的debug信息。研究了一下怎麼打開這個debug開關,以下是具體的步驟 1. 在configure 選項中添加--enable-debug-msgs 和--enable-
原创 Libevent學習----信號事件
信號是一種異步事件:信號處理函數和程序的主循環是兩條不同的執行路線。很明顯,信號處理函數需要儘可能快地執行完畢,以確保該信號不被屏蔽太久(信號在處理期間,系統不會再次觸發它)。 上面這幅圖是網上找到的,很好地從整體上表述了
原创 libevent 學習----------尾隊列 tail queue
libevent裏面的尾隊列TAILQ 一、TAILQ的隊列頭 TAILQ把整個隊列頭單獨抽象爲一個結構體TAILQ_HEAD,如下: #ifndef TAILQ_HEAD #define TAILQ_HEAD(name, t
原创 查看linux系統發行版信息
[root@localhost ~]# cat /etc/issue CentOS release 6.4 (Final) Kernel \r on
原创 查看linux下進程的環境變量
AH-3f7440:/tmp/root# ps | grep dhcpc 9528 root 47976 S /opt/ah/bin/dhcpc 10595 root 2796 S grep dhc