原创 pthread mutex 屬性

mutex互斥鎖有四種屬性,分別是NORMAL, ERRORCHECK, RECURSIVE, DEFAULT,通過pthread_mutexattr_settype 對互斥鎖進行屬性設置。 PTHREAD_MUTEX_NORMA

原创 libevent信號機制

evsignal_info struct evsignal_info { struct event ev_signal; /* 整體作爲一個事件,加入epoll中 */ int ev_signal_pair[2];

原创 libevent事件循環

事件循環 1. 糾正時間,因爲用戶可能手動更改本地時間,而超時是針對時間點的,這樣導致時間不準確,超時事件受到影響。 2. 獲取堆頂元素超時時間,與當前時間相減,得到差值,該差值傳給epoll,讓其最晚在差值時間後返回。     如果

原创 二進制炸彈實驗報告

接觸《深入理解計算機系統》這本書很久了,但一直都處於看的階段,但懂是一回事,做出來又是另一回事。 於是就試着做了幾個實驗,發現這個二進制炸彈特別好玩,於是乎就有了此文。 知識儲備 調試: 停在地址處:   break  *0x8012

原创 最長公共子串

本文地址:http://blog.csdn.net/spch2008/article/details/38942175 描述 之前寫過一篇最長公共子序列, 今天來補上最長公共子串. 子序列:  不要求字符串聯繫,只要順序一致即可. 子串

原创 開題吧

    接觸NGINX有半年多的時間啦,這半年可是挫折多多,煩惱多多,實習找的一塌糊塗,身心俱疲。 不想再去折騰,想清閒一陣,總結總結,然後再來。於是乎,把自己學習NGINX的一些心得記錄下來, 於是就有了這一系列的文章。 點

原创 env export set declare區別

顯示 1. env     顯示當前系統的環境變量  G_BROKEN_FILENAMES=1 HISTCONTROL=ignoredups HISTSIZE=1000 HOME=/root HOSTNAME=www.nginx.com

原创 libevent示例代碼

僅僅演示libevent的使用過程,不去考慮各種異常。 Server #include <stdio.h> #include <event.h> #include <stdlib.h> #include <string.h> #incl

原创 中綴轉後綴求值

中綴轉後綴 1. 掃描字符串,遇到數字輸出,遇到操作符c     棧頂操作符的權值小於c,直接入棧     棧頂操作符的權值大於等於c,依次彈出,直到棧頂權值小於c,c入棧 2. 括號需要特別處理,入棧之前與入棧之後,括號的優先級發生

原创 內存地址對齊

做過一些內存地址對齊的題,總覺得理解的不是很清楚,於是決定研究一番,遂有此文。 本文以32位機來說明內存地址對齊問題。 內存構成 通常採用4組存儲體,每組存儲體存儲一個字節。如下圖所示,每組數據線對應一個存儲體,共4組存儲體,32位數據

原创 epoll 驚羣

起因: 最近,一直在學習nginx。對於事件模塊所解決的”驚羣“現象完全不明白,遂產生了此文。 套接字: 可以將服務器端的套接字分爲 監聽套接字 與 連接套接字。 監聽套接字負責等待用戶連接,而通過accept,獲得一個新的套接字, 該

原创 NGINX 內存池

內存池結構 1. 主要數據結構 typedef struct { u_char *last; u_char *end; ngx_pool_t

原创 libevent開篇

    libevent是一個基於事件的網絡庫,用於管理定時器事件,網絡IO事件,以及信號事件三種事件類型。libevent是一個 單線程的網絡處理庫。但它可以支持多線程,通過創建多個libevent實體(event_base)來實現,m

原创 libevent定時器機制

超時機制 時間是時間點,比如8:40:35超時,那麼獲得當前時間,如果小於等於該時間,則視爲超時。   添加超時事件 添加超時事件的時候,添加相對時間,比如8s後超時,在內部會進行處理,即取得當前時間,加上超時時間,得到超時時間點。 s

原创 NGINX 時間管理機制

         nginx 自己維護了一個時間,用戶向用戶提供時間,它使用緩存時間的機制,這樣避免了頻繁的系統調用(gettimeofday),加快處理速度。 但緩存時間,又必須要及時更新時間,否則時間將不準確。所以, NGINX配套了