原创 殭屍進程

什麼是殭屍進程? 當一個子進程終止的時候,父進程存在但是沒有調用wait或這waitpid獲取子進程的退出狀態。這樣,這個子進程就不能完全從內存中清楚,從而變成殭屍狀態。 子進程自己爲什麼不完全退出呢? 因爲子進程結束時,父進程可能需要獲

原创 traits編程技巧

最近在學習《STL源碼剖析》,對書中介紹的traits很有感。 搜到的前輩的博客,這篇博文寫的很好,感謝。 自己在寫一下,加深自己的理解。 舉例:加入我們現在有一個算法,可以對傳入的迭代器前進N步。 template <typenam

原创 Makefile定義變量 = 和 := 的區別

Makefile中變量的定義有兩種方式。 第一種: = 例如name=chen info=$(name) 第二種: := 例如name=chen info:=$(name) 這兩種定義變量的區別主要是對引用的其它變量的展開時機不同。 第

原创 初識Makefile

三個文件,hello.h  hello.cpp  main.cpp hello.h #ifndef MAKE_FILE_OO1 #define MAKE_FILE_001 void printHello(); #endif hell

原创 TCP三次握手連接及seq和ack號的正確理解

原文:http://blog.chinaunix.net/uid-25513153-id-187780.html 三次握手Three-way Handshake 一個虛擬連接的建立是通過三次握手來實現的 1. (B) –> [

原创 讓Makefile自動推導依賴關係

用到4個文件:hello.h hello.cpp main.cpp Makefile hello.h #ifndef MAKE_FILE_TEST #define MAKE_FILE_TEST void hello(); #endif

原创 Makefile變量---簡單的文本替換

這次的試驗,只有一個Makefile,別的沒有任何文件,通過一個僞目標show來演示變量的使用,好奇葩啊。 cc=gcc src=a.c b.c .PHONY:show show: @echo $(cc) @echo $(src)

原创 I/O多路複用 select模型

情景分析: 現在要編寫一個echo服務器,就是接收每個客戶端的鏈接,打印出客戶端發送的一串文本。同時,再增加一項功能,可以處理標準輸入。所以,服務器必須能夠響應兩個獨立的I/O事件: 1:來自客戶端發起的socket連接 2:標準輸入 也

原创 Lambda Expressions in C++

關於Lambda表達式 許多編程語言提供了匿名函數,Lambda表達式是與匿名函數有關的編程方法。匿名函數就是一個只有函數實體,而沒有函數名字的函數。Lambda表達式隱式的定義了一個函數對象類(有關函數對象簡介),並且構造了一個該類的對

原创 讀libevent源碼學習網絡庫對定時器和信號的處理

讀了一下libevent的部分代碼,主要是timer,signal,epoll相關的,學習了網絡庫如何處理定時器事件和信號。 大多數網絡模塊的庫應該都是這樣實現的,很巧妙。 首先說timer,libevent通過一個小根堆結構來保存定時

原创 僞目標.PHONY

這次只有一個main.cpp和一個Makefile文件。 main.cpp #include <iostream> using namespace std; int main() { cout<<"hello world!"<<end

原创 Makefile文件的重建過程

最近在理解Makefile自動推導依賴關係時,總感覺理解不動。原因是對Makefile的重建過程不清楚。所以學習一下。 感謝《GNU make中文手冊》。 下面時書中makefile文件重建的原文: Makefile 可由其它文件生成,

原创 I/O多路複用 select模型【續集】

上一篇文章介紹了基本的select模型,使用select模型編寫了一個功能超級簡單的echo服務器,可以同時監聽一個套接口(用戶接受客戶端連接)和標準輸入。對於每一個客戶端連接都是輸出客戶端的內容後,立馬終止與客戶端的連接,這一片文章中,

原创 listen函數中backlog的含義

TCP中服務器端調用listen函數監聽客戶端的連接,listen函數的第二個參數backlog到底是什麼意思呢? 可以這樣理解: 服務器端TCP內核模塊維護有2個隊列,我們稱之爲A,B吧。 客戶端向服務器端connect的時候,揮發送

原创 Nagle算法與ACK延遲算法

昨天在小組的技術分享上,組長教我們怎樣去調試一個服務器程序,收穫很大。 1:ping 典型的 80或者23 這些端口,看看機器還活着麼 2:telnet 看看我們的程序端口開着麼(當然前提是TCP) 3:tcpdump 抓包,可以看看網絡