Time of Update: 2018-12-03
調用關係太複雜了,每個函數裡面都做了很多事情,詳細的過程有空再寫。 // 當前串連過來時:ngx_http_init_connection會被調用ngx_http_init_connection->ngx_http_init_request->ngx_http_process_request_line->ngx_http_process_request_headers->ngx_http_process_request->ngx_http_handler->
Time of Update: 2018-12-03
轉載申明:本文可以任意轉載,但需註明原文地址,謝謝! Nginx的高效能應該算是事件驅動的功勞。Nginx事件處理的相關代碼位於src/event目錄中,事件驅動是Nginx的核心,所以代碼量相對也比較大。事件驅動初始化的過程主要由中的三步組成。 第一步:解析設定檔的初始化在Nginx的啟動初始化過程中,將調用ngx_conf_parse()解析設定檔,此過程將遇到類似如下的配置項:events { worker_connections
Time of Update: 2018-12-03
轉載申明:本文可以任意轉載,但需註明原文地址,謝謝! 上一篇博文分析了master進程,本文著手分析一下worker進程的情況。首先找到worker進程的入口地方——ngx_worker_process_cycle。這個函數不光是worker進程的入口函數,同時也是worker進程迴圈工作的主體函數,看函數名含有一個cycle嘛。進入這個cycle函數,第一件事就是調用ngx_worker_process_init(cycle,
Time of Update: 2018-12-03
用netstat命令發現大量的TIME_WAIT現象:netstat -ae|grep 1521|grep root……TIME_WAIT rootTIME_WAIT rootTIME_WAIT rootTIME_WAIT rootTIME_WAIT rootTIME_WAIT rootTIME_WAIT rootTIME_WAIT rootTIME_WAIT rootTIME_WAIT rootTIME_WAIT rootTIME_WAIT
Time of Update: 2018-12-03
在上一篇文章中,我們研究了日誌類的實現。比較簡單,也比較實用。這次,我們來研究一個對線程的簡單管理方案。在分析源碼之前,我們先來看一個使用線程類的例子,上代碼: #include <stdio.h>// 引用標頭檔#include <tbsys.h>using namespace tbsys;// 寫我們繼承的線程類class Myrunable : public Runnable { // 此處是我們的線程函數 void run(CThread
Time of Update: 2018-12-03
//xk> 鋪墊1:fork()和exec Unix中派生一個新的進程的唯一方法是fork()函數(有些系統可能提供它的各種變體)。父進程中開啟的所有描述符在fork()之後由子進程分享。
Time of Update: 2018-12-03
在nginx源碼中提供了一個比較重要的hash結構,可以為我們帶來高效的kv尋找。該hash的實現比較簡單,但卻非常的高效。該hash結構是唯讀,在建立之後,以後只能提供查詢功能。該hash結構體,剛開始理解起來比較費勁,而且在使用時也會有不爽的感覺,需要好幾個結構體,以及好幾個函數配合才能完成初始化及尋找。在本文中,對於萬用字元的使用,我們先不作介紹。 我們先看看如何使用吧。建立一個hash結構體的過程是:1. 構造一個ngx_hash_key_t為成員的數組,然後用我們需要hash的key、
Time of Update: 2018-12-03
轉載申明:本文可以任意轉載,但需註明原文地址,謝謝! 前面單獨分析了master進程和worker的工作情況,本文就大概看一下master進程和worker進程之間是如何使用channel來完成通訊的。這部分實現的源碼主要分佈於src/os/unix/channel.h和channel.c兩個檔案中。實現極其簡單,沒有什麼複雜的邏輯。下面,我繪製了一個簡單的master進程和worker進程間的關係,圖中的箭頭符號指出資料是由master進程傳給worker進程,而沒有從worker到maste
Time of Update: 2018-12-03
關於 error_log 指令的解析---- nginx-1.0.9 ---error_log 配置:error_log logs/xxx.log error | debug_core | debug_allocmain(){ //... prefix = ./configure --prefix ngx_init_cycle(ngx_cycle_t *old_cycle) { log.log_level = NGX_LOG_NOTICE;
Time of Update: 2018-12-03
Expires、Cache-Control、Last-Modified、 ETag是RFC 2616(HTTP/1.1)協議中和網頁緩衝相關的幾個欄位。前兩個用來控制緩衝的失效日期,後兩個用來驗證網頁的有效性。要注意的是,
Time of Update: 2018-12-03
本文講述: nginx hash結構ngx_int_tngx_hash_init(ngx_hash_init_t *hinit, ngx_hash_key_t *names, ngx_uint_t nelts){ u_char *elts; size_t len; u_short *test; ngx_uint_t i, n, key, size, start, bucket_size;
Time of Update: 2018-12-03
怎麼訪問映像元素(座標起點相對於映像原點 image origin 從 0 開始,或者是左上方 (img->origin=IPL_ORIGIN_TL) 或者是左下角 (img->origin=IPL_ORIGIN_BL) 假設有 8-bit 1-通道的映像 I (IplImage* img): I(x,y) ~ ((uchar*)(img->imageData + img->widthStep*y))[x]假設有 8-bit 3-通道的映像 I (IplImage* i
Time of Update: 2018-12-03
使用ssh、scp時不再輸入密碼1 目的: 在 A機器:192.168.1.2 上使用ssh、scp對 B機器:192.168.1.11 操作時不再輸入密碼。2 方法: 使用 ssh-keygen 產生目前使用者公開金鑰和私密金鑰,公開金鑰內容追加到目的主機的對應使用者的home目錄下的 ~/.ssh/authorized_keys;這樣使用私密金鑰就可以不輸入密碼ssh或者scp目的主機3 具體:3.1 ssh-keygen 常用選項 -f 指定密鑰檔案名稱-N 提供一個金鑰組密碼-
Time of Update: 2018-12-03
nginx有兩個重要標頭檔:ngx_config.h和ngx_core.h。src/core/ngx_config.h檔案中包含的是和作業系統相關的宏定義和標頭檔,其中又會包含objs/ngx_auto_headers.h和src/os/unix/ngx_<os name>_config.h,前面提到過,這個標頭檔是自動指令碼檢驗作業系統後產生的,這個標頭檔中包含了一些宏定義,這些宏定義說明了存在哪些與特定作業系統有關的標頭檔,並依此判斷出作業系統的種類(linux、freebsd、
Time of Update: 2018-12-03
tcpdump 抓包與分析 1 tcpdump 與 wireshark tcpdump抓的包內容可以用wireshark進行解析,如: $> tcpdump -c1000 -w /tmp/tcpdump.test.cap $> sz /tmp/tcpdump.test.cap #將抓到的包內容下載到本地 wireshark是開源軟體windows和linux下都可以運行,我在windows下測試的,用wireshark開啟 tcpdump.
Time of Update: 2018-12-03
歡迎大家轉載,轉載請註明出處。http://blog.csdn.net/yankai0219/article/details/8005795 來自你的朋友 yankai0219一、Nginx模組概述 1.Nginx模組的三種角色 2.Nginx模組的處理流程一、Nginx模組概述 1.Nginx模組的三種角色 1)Handlers 處理模組:處理Http請求,並輸出內容 2)Filters過濾模組:用於過濾Handler的輸出內容
Time of Update: 2018-12-03
ssh詳細登入過程 首先說下相關概念:明文:需要秘密傳送的訊息。密文:明文經過密碼變換後的訊息。加密:由明文到密文的變換。解密:從密文恢複出明文的過程。破解:非法接收者試圖從密文分析出明文的過程。密碼編譯演算法:對明文進行加密時採用的一組規則。解密演算法:對密文進行解密時採用的一組規則。密鑰:加密和解密時使用的一組密碼資訊。對稱式加密:是採用單鑰密碼系統的加密方法,使用同一金鑰組資訊進行加密和解密的加密方法。非對稱式加密:需要兩個密鑰:公用密鑰和私人密鑰,它們成對出現,公開金鑰加密的資料有且只有
Time of Update: 2018-12-03
cURL libcurl API curl_formaddcurl_formadd.3 -- man pageNAMEcurl_formadd - add a section to a multipart/formdata HTTP POSTcurl_formadd----用於為multipart/formdata HTTP
Time of Update: 2018-12-03
內容一、源碼整體認識1.重要檔案configure2.auto子目錄3.configure與auto子目錄指令碼的關係4.src是源碼存放目錄5.代碼部分簡要介紹6.關於Nginx啟動7.nginx有兩個重要標頭檔:ngx_config.h和ngx_core.h。8.總論:一、源碼整體認識 源碼解壓後,根目錄有幾個子目錄和檔案,重要的子目錄是auto和src,重要的檔案是configure 1.重要檔案configure
Time of Update: 2018-12-03
文章內容:一、學習方法如下:二、概括如下:我的總結 2.1Nginx的啟動是在/src/core/nginx.c中進行 2.2主要概括為兩部分: 2.2.1載入和初始化各個模組 2.2.2建立進程和進程間的通訊機制三、三張調用圖片說明:關於Nginx初始化以及啟動,有很多內容在介紹,也有很多人介紹的非常詳細。這兒我就說一下我學習這部分的方法。一、學習方法如下: