原创 Red Hat內核升級過程記錄

項目中因爲要用到一些新的系統調用,需要升級當前所用的Red Hat5.2,於是就從Linux內核官方網站上下載源碼進行編譯。 準備工作 1.確認內核及版本信息 2.安裝軟件 編譯安裝新內核,依賴於開發環境和開發庫 # yum

原创 關於文件描述符的close-on-exec標誌位

引言 我們在使用一些系統調用對文件描述符進行操作時,常常會碰到是否爲文件描述符賦予CLOEXEC屬性的情況,例如: // open函數中的flags參數可指定O_CLOEXEC標誌 int open(const char *pat

原创 muduo網絡庫學習筆記(6):單例類(線程安全的)

muduo用pthread_once實現了線程安全的Singleton。 文件名:Singleton.h template<typename T> class Singleton : boost::noncopyable { p

原创 nginx學習筆記(4):通過instance標誌位處理過期事件

什麼是過期事件 舉個例子,假設epoll_wait一次返回3個事件,在第1個事件的處理過程中,由於業務的需要,所以關閉了一個連接,而這個連接恰好對應第3個事件。這樣的話,在處理到第3個事件時,這個事件就已經是過期事件了,一旦處理必

原创 nginx學習筆記(3):TCP反向代理基本配置

何謂反向代理 一般來說,反向代理方式是指用代理服務器來接受 Internet 上的連接請求,然後將請求轉發給內部網絡中的上游服務器,並將從上游服務器上得到的結果返回給 Internet 上請求連接的客戶端,此時代理服務器對外的表現

原创 條件變量的虛假喚醒(spurious wakeups)問題

引言 條件變量是我們常用的同步原語之一,它的正確使用方式一般如下圖: 在wait端,我們必須把判斷布爾條件和wait()放到while循環中,而不能用if語句,原因是可能會引起虛假喚醒。 那麼,究竟什麼是虛假喚醒,導致虛假喚醒

原创 muduo網絡庫學習筆記(12):TcpServer和TcpConnection類

TcpServer類的主要功能是管理accept(2)獲得的TcpConnection,TcpConnection則表示的是“一次TCP連接”,一旦連接斷開,這個TcpConnection對象就沒啥用了。 由於TcpConnect

原创 muduo網絡庫學習筆記(11):有用的runInLoop()函數

runInLoop()函數的有用之處 “EventLoop有一個非常有用的功能:在它的IO線程內執行某個用戶任務回調,即EventLoop::runInLoop(const Functor& cb),其中Functor是boos

原创 muduo網絡庫學習筆記(14):chargen服務示例

chargen簡介 chargen(Character Generator Protocol)是指在TCP連接建立後,服務器不斷傳送任意的字符到客戶端,直到客戶端關閉連接。 它生成數據的邏輯如下: for (int i = 33;

原创 muduo網絡庫學習筆記(10):定時器的實現

傳統的Reactor通過控制select和poll的等待時間來實現定時,而現在在Linux中有了timerfd,我們可以用和處理IO事件相同的方式來處理定時,代碼的一致性更好。 爲什麼選擇timerfd 常見的定時函數有如下幾種:

原创 Linux文本處理命令sed基本使用示例

最近在項目中遇到了對配置文件做局部修改的需求,用到了Linux下的文本操作神器sed,本篇根據酷殼網《sed 簡明教程》(http://coolshell.cn/articles/9104.html)來學習和記錄一下sed命令的基

原创 nginx學習筆記(1):配置項的解析

前言 nginx.conf默認存放在目錄/usr/local/nginx/conf下。 nginx配置文件的格式是由作者自己定義的,它沒有采用像語法分析生成器LEMON那種經典的LALR(1)來描述配置信息,而是採用一種近似key

原创 nginx學習筆記(2):開發一個簡單的HTTP模塊

準備工作 nginx模塊需要用C(或者C++)語言來編碼實現,每個模塊都要有自己的名字。我們這裏把編寫的HTTP模塊命名爲ngx_http_mytest_module,源代碼文件命名爲ngx_http_mytest_module.

原创 Linux網絡管理小結

基礎概念 1.IP地址 所謂IP地址就是給每個連接在互聯網上的主機分配的一個32位地址。 (1)除上圖的分類外,還有D類和E類地址。 D類地址稱爲廣播地址,供特殊協議向選定的節點發送信息時用,D類地址範圍:224.0.0.0

原创 結構體內部存儲中的對齊問題

舉個例子 我們考慮如下的這個結構體: struct ALIGN { char a; int b; char c; }; 如果某個機器的整型值長度爲4個字節,並且它的起始存儲位置必須能