Nginx
文章平均质量分 83
unix21
这个作者很懒,什么都没留下…
展开
-
redis源码分析--zslRandomLevel位运算解析
与&0376的二进制就是1111 1110,二进制的与运算规则是,只有两个数同时为1时,则结果才为1,只要有一个数为0,则结果就为0。比如1&1=1; 1&0=0; 0&1=0; 0&0=0;因此把一个字符与二进制1111 1110进行与运算的结果就是把最后位设为0,而其他位不变。作个比喻假设a的二进制表示为1010 0111我们先不管这个数表示的是什么,我们来把这个数与1111 1110原创 2013-08-22 19:19:26 · 3613 阅读 · 3 评论 -
Nginx配置
# 注释指令总是以;结束work_process只接受一个数字值include 对特定文件的包含指令块 指令由模块提供,例如events{}不同区段能互相嵌套http{location ...{}}原创 2015-09-22 17:37:15 · 849 阅读 · 0 评论 -
Linux环境Nginx安装多版本PHP
关于Linux环境Nginx安装与调试以及PHP安装参考此文即可:http://blog.csdn.net/unix21/article/details/8544922所谓多版本多版本PHP就是php5.4和5.5以及其他版本在同一台服务器。假如php5.5是主版本已经安装在/usr/local/php目录下,那么再安装其他版本的php再指定不同安装目录即可。原创 2015-08-14 10:17:39 · 1615 阅读 · 0 评论 -
Nginx内存池--pool代码抽取(链表套路)
作为自由软件的旗舰项目,Richard Stallman 在十多年前刚开始写作 GCC 的时候,还只是把它当作仅仅一个 C 程序语言的编译器;GCC 的意思也只是 GNU C Compiler 而已。经过了这么多年的发展,GCC 已经不仅仅能支持 C 语言;它现在还支持 Ada 语言、C++ 语言、Java 语言、Objective C 语言、Pascal 语言、COBOL语言,以及支持函数式编程原创 2013-09-26 18:38:11 · 1349 阅读 · 0 评论 -
Linux守护进程实现
Linux守护进程#include #include #include #include int daemonize(void){ int fd; switch(fork()) { case -1: return (-1); case原创 2013-03-20 22:56:14 · 1060 阅读 · 0 评论 -
函数指针--Nginx和Redis中两种回调函数写法
Nginx和Redis中两种回调函数写法#include //仿Nginx的写法//定义函数指针类型typedef void (*ngx_connection_handler_pt)(int c);//redis风格typedef void redisCommandProc(int c);typedef struct{int a;//第一步:定义void (*pshow)原创 2013-08-11 16:41:44 · 2001 阅读 · 0 评论 -
指针的本质2-void和void*及其应用在nginx中的应用
char **p,a[6][8]; 问p=a是否会导致程序在以后出现问题? 直接用程序说明:编译,然后就会发现通不过,报错:错误 1 error C2440: “=”: 无法从“char [6][8]”转换为“char **” 于是乎,我看了下《C专家编程》里10.5节—使用指针向函数传递一个多维数组。方法一,函数是 void fun(int arr[2][3]); 这种方法只原创 2013-10-21 16:53:20 · 1829 阅读 · 0 评论 -
从Nginx绑定80端口学套接字编程
-E 只激活预处理,这个不生成文件,你需要把它重定向到一个输出文件里面. 例子用法: gcc -E hello.c > pianoapan.txt gcc -E hello.c | more 慢慢看吧,一个hello word 也要与处理成800行的代码 -E选项,表示让gcc只进行“预处理”就行了。 所谓的预处理,就是把原创 2013-10-11 09:35:44 · 1567 阅读 · 0 评论 -
仿照redis写的nginx开机画面
1、获取文件的flags,即open函数的第二个参数:flags = fcntl(fd,F_GETFL,0);2、设置文件的flags:fcntl(fd,F_SETFL,flags);3、增加文件的某个flags,比如文件是阻塞的,想设置成非阻塞:flags = fcntl(fd,F_GETFL,0);flags |= O_NONBLOCK;fcntl(fd,F_SET原创 2013-03-29 17:48:37 · 1160 阅读 · 0 评论 -
nginx源码分析--内存对齐处理
一级指针做形参:首先一定要明白形参和你传递参数的那个实参是两个不同的变量,即使同名也还依然不同。指针传递的是一个变量或者一个值的地址,但是它本身还是采用值传递的方式。即你不能使它指向另外一块地址,但是你可以改变它指向的空间里存的值。二级指针做形参:二级指针也是传值,但是他指向的地址是个一维指针,所以可以改变二维指针指向的地址空间里的内容也就是要申请空间的一维指针,不能改变二维指针本身的值,即不原创 2013-10-21 16:56:12 · 3167 阅读 · 0 评论 -
指针的本质--u_char*指针在Nginx源码中的应用及原因
首先,在C语言中,实际上字符型数据在内存中是以二进制形式存放的,并不是真正的把一个字符存进内存里。在对字符型数据进行相加减运算的时候,系统会首先会将char型数据以隐形的方式转化成int型数据再进行相加减运算的。因此,由字符型数据在内存的存储方式来看,字符型数据是可以进行数值运算的,对字符型数据做数字运算实际上就是对字符本身对应的ASSIC码进行相应的数值运算。 然后 “ 整型”和“字符型原创 2013-08-05 14:13:01 · 3877 阅读 · 1 评论 -
利用TCMalloc替换Nginx和Redis默认glibc库的malloc内存分配
TCMalloc的全称为Thread-Caching Malloc,是谷歌开发的开源工具google-perftools中的一个成员。与标准的glibc库的Malloc相比,TCMalloc库在内存分配效率和速度上要高很多,这在很大程度上提高了服务器在高并发情况下的性能,从而降低了系统的负载。1.安装libunwind库 可以从http://download.savannah.gnu.or原创 2013-09-28 09:26:53 · 5173 阅读 · 0 评论 -
Nginx模块开发
最简单的Nginx模块开发,虽然简单,但是是最重要的第一步。主要是看:http://blog.codinglabs.org/articles/intro-of-nginx-module-development.html 1.准备模块文件在nginx-1.4.2安装目录新建一个自己的模块的目录# mkdir myModule再新建ngx_http_echo目录#mkdir原创 2013-08-01 16:03:54 · 1203 阅读 · 0 评论 -
Nginx源码分析--基本数据类型的别名
typedef intptr_t ngx_int_t;typedef uintptr_t ngx_uint_t;typedef intptr_t ngx_flag_t;intptr_t在# /usr/include/stdint.h中,下面是stdint.h部分代码#ifndef _STDINT_H#define _STDINT_H原创 2013-08-12 15:51:00 · 981 阅读 · 0 评论 -
Nginx源码分析--字符串处理
ngx_string.cvoid ngx_strlow(u_char *dst, u_char *src, size_t n); 将src的前n个字符转换成小写存放在dst字符串当中,调用者需要保证dst指向的空间大于等于n。操作不会对原字符串产生变动。如要更改原字符串,可以:ngx_str_t str = ngx_string("hello world"); ngx_strlow(s原创 2013-08-11 16:56:26 · 2066 阅读 · 0 评论 -
Linux系统轻量级监控工具monitorix和munin安装
提到监控工具,大家都会想到zabbix等重量级的,这些好是好,但是需要安装数据库等等,如果有时候希望简单点其实可以借助一些轻量级的监控工具,例如monitorix和munin。需要做点前置工作开启Nginx和php-fpm的status,因为可以利用监控工具monitorix和munin甚至于zabbix等来监控,要的就是实时的快照数据。1.开启Nginx的status原创 2016-02-26 19:00:15 · 1616 阅读 · 0 评论