原创 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指