原创 nginx的配置文件及指令介紹
nginx的配置文件是由一系列的指令構成的。指令可以分爲三種:註釋,普通指令和塊指令。nginx在解析配置文件時,只會解析普通指令和塊指令,直接忽略註釋,如下面的示例配置所示: #user nobody; worker_process
原创 構造螺旋矩陣
void fill_spiral_matrix(int row, int col, int **a) { int start, i, j, min, cnt; int totalnum = row * col; int currow
原创 生成隨機長度的字符串
#include <stdio.h> #include <sys/time.h> #include <stdlib.h> #include <string.h> #define STRSIZE 8 #define LOOP 100 c
原创 linux下sqlite3插入性能測試
今天上班的時候,突發奇想,不知道sqlite3的插入性能如何,於是做了如下測試。 1. 創建空表userinfo CREATE TABLE userinfo ( "username" TEXT, "address" TEX
原创 linux環境純命令行俄羅斯方塊C語言版
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <termios.h> #include <pthread.h> #include <signal.h
原创 解數獨算法,用C語言遞歸實現
前幾天在看離散數學及其應用第七版的時候,看到了數獨的相關章節,就自己寫了一個數獨的解法,先記下來。生成數獨的方法以後再寫 #include <stdio.h> // 尋找下一個未填充的單元 int find_next_empty(int
原创 nginx事件模塊之ngx_epoll_module源碼分析
ngx_epoll_module是nginx衆多事件模塊的其中一個,它利用linux的epoll模型實現nginx事件框架所定義的事件模塊接口。運行在linux系統上的nginx默認使用該模塊作爲事件框架的底層實現。ngx_epoll_m
原创 nginx的模塊加載順序
nginx是按照模塊類型的先後順序來加載模塊的,如下所示 核心模塊 > 事件模塊 > 線程池模塊 > http模塊 > 郵件模塊 > stream模塊 > 其它模塊 核心模塊加載順序 ngx_core_module ngx_errlog
原创 nginx字符串格式化函數
nginx自定義/重命名了很多數據類型,爲了在打印日誌時能夠方便的打印這些數據類型,nginx實現了自己的字符串格式化函數,其中核心是ngx_vlsprintf,它支持多種自定義數據類型的格式化,如下所示: * supported fo
原创 nginx事件處理框架及源碼解析
nginx的中的事件可以分爲兩類:系統事件和定時器事件。系統事件指的是由操作系統通知給nginx的事件,例如各種IO多路複用api(select,epoll_wait等)返回的事件,定時器事件是指由nginx的定時器模型產生的超時事件。由
原创 nginx的基本數據結構
ngx_str_t 源碼文件:ngx_string.h|c 定義: struct ngx_str_s { size_t len;//字符串長度 u_char *data;//字符串起始地址 } ngx
原创 nginx的http模塊配置接口以及http框架配置內存佈局
http模塊是nginx中數量最多,也是配置最複雜的模塊。http模塊的配置最多可以分爲三級,分別是http級別,server級別和location級別。nginx爲http模塊定義了一組接口,用於模塊創建,設置,合併各級別的配置項。在配
原创 nginx核心模塊ngx_core_module分析
ngx_core_module是nginx中最爲核心的一個模塊,也是第一個被加載的模塊。爲什麼它是第一個被加載的呢?我們先看它的配置結構體定義: typedef struct { ngx_flag_t
原创 nginx配置解析過程分析
nginx在啓動,reload和平滑升級時,都會重新加載配置。重新加載配置分成兩步: 1. 重新加載命令行參數(-g)中定義的全局配置 2. 重新加載配置文件中的配置 解析配置的核心函數是ngx_conf_parse,不論是解析命令行定義
原创 nginx配置的內存佈局
nginx的配置系統很靈活,不但支持模塊自定義配置項,而且支持多級配置以及合併多級配置項。這樣的設計使得nginx的配置在內存中的佈局也是分成多級的,比較複雜。因此,這裏採用一種自頂向下的方式進行逐級剖析。 這裏需要先說明一下nginx指