简单的数据类型
在core/ngx_confing.h中定义了基本的数据类型的映射,大部分都映射到c语言自身的数据类型:
typedef intptr_t ngx_int_t;
typedef uintptr_t ngx_uint_t;
typedef intptr_t ngx_flag_t;
其中ngx_int_t,ngx_flag_t都映射为intptr_t;ngx_uint_t映射为uintptr_t。
这两个类型在/usr/include/stdint.h的定义为:
看到这里大家应该理解,基本操作应该都是一样的。
字符串的数据类型
nginx对c语言字符串类型进行了简单的封装,core/ngx_string.h/c里面包含了这些封装的内容。其中定义了
ngx_str_t,
ngx_keyval_t,
ngx_variable_value_t
这几个基础类型:
ngx_str_t 包含两个属性:len即长度, data为数据;初始化使用ngx_string宏进行:
#define ngx_string(str) {sizeof(str) -1,(u_chart*)str }
该模块在ngx_string.h和ngx_string.c中。字符串的操作一般包括:初始化,复制,格式化输出,大小写转换,查找子字符,查找子字符串,字符串转换成数字,字符串编码类型相关函数,字符串比较,trim,split等函数。在这个类中间没有调用其他模块的函数,作为一个http服务器,还需要实现URL转换,简单的html转换等函数。字符串的结构体非常简单实用,是非常值得刚入门的linux开发工程师学习的。
函数 说明
ngx_string
初始化函数
ngx_null_string
初始化空字符串函数
ngx_tolower字符转小写函数
ngx_toupper
字符转大写函数
ngx_strncmp
比较指定长度的字符串是否相同
ngx_strcmp比较字符串是否相同
ngx_strstr
从字符串中找到需要的字符串
ngx_strlen
字符串的长度
ngx_strchr
在字符串中找到匹配的字符,返回 0为匹配
ngx_strlchr
在字符串中找到匹配的字符,返回匹配的指针
ngx_memzero
把一片内存区设置为0
ngx_memset把一片内存区设置为指定的数
ngx_memcpy
复制内存,没有返回
ngx_cpymem
复制内存,返回复制完了dst的最后一个字符的下一个字符的指针
ngx_copy同ngx_cpymem
ngx_memcmp
比较内存中的数据是否相同
ngx_strlow
把字符串都转换成小写
ngx_cpystrn
复制字符串,并且返回字符串的最后一个字符的下一个字符的指针
ngx_pstrdup
复制字符串到pool,返回字符串的指针
ngx_sprintf把各种类型的数据格式化输出到buf,最大的长度为65536
ngx_snprintf把各种类型的数据格式化输出到指定长度的buf
ngx_strcasecmp不分大小写比较两个字符串是否相同
ngx_strncasecmp指定长短不分大小写比较两个字符串是否相同
ngx_strnstr
在指定大小一个字符串中是否有子字符串
ngx_strstrn 在一个字符串中是否有子指定大小的字符串
ngx_strcasestrn
在一个字符串中是否有子指定大小的字符串,不区分大小写
ngx_rstrncmp
从后往前比较两个字符串是否相同,返回相同的位置
ngx_rstrncasecmp
从后往前比较两个字符串是否相同,返回相同的位置,不区分大小写
ngx_memn2cmp比较两个指定长度的内存是否相同,也比较长的内存是否包含短的内存
ngx_atoi
指定长度的字符串转换成数字
ngx_atosz指定长度的字符串转换成ssize_t类型数字
ngx_atoof
指定长度的字符串转换成off_t类型数字
ngx_atotm
指定长度的字符串转换成time_t类型数字
ngx_hextoi指定长度的字符串转换成十六进制数字
ngx_hex_dump把数字转换成16进制的字符串
ngx_encode_base64 base64编码
ngx_decode_base64base64解码
ngx_utf8_decode
把 utf8字符解码成双字节的 unicode或是单字节字符,但是该函数会移动*p的值,
请注意
ngx_utf8_length
得到utf8编码的字符占几个字节
ngx_utf8_cpystrn 赋值utf8字符串,保证完整的复制
ngx_escape_uri
对uri进行编码
ngx_unescape_uri 对uri的进行解码
ngx_escape_html
对html进行编码
ngx_sort
排序,主要是用于数组排序
ngx_qsort
快速排序
ngx_value 把宏数字转换成字符串
为了测试,我们可以用以下两种方式打印出来
1 ngx_str_t str ;
2 printf (” %* s” , str . len , str . data );
3 prinrf (”%V”, & str );
分享到:
相关推荐
Nginx 源码分析笔记 自己的源码分析笔记,未完。
自己的nginx源码学习资料,包含《Nginx模块开发指南》和《深入理解Nginx》等,方便初学者了解nginx设计思想以及源码
mac无坑安装nginx(csdn)————程序
nginx源码nginx源码nginx源码nginx源码nginx源码nginx源码nginx源码nginx源码nginx源码nginx源码
nginx学习笔记.zip
nginx源码说明;其他下载即可,没下载分了,大家互相帮忙。其他情况大概就这些吧,其他也没什么好说的了,看文档即可
nginx笔记nginx笔记nginx笔记nginx笔记nginx笔记nginx笔记nginx笔记nginx笔记
nginx代理 从入门到实践 详细讲解分析,入门到精通,满足企业部署,反向代理,静态资源部署,并发
Nginx学习笔记
搭建nginx php时参考的网页,具体搭建过程见我的博客
收集的 nginx 源码 解析 ,非常全 architecture.png Emiller的Nginx模块开发指南.docx Nginx(en).pdf nginx@taobao.pdf nginx_internals.pdf nginx核心讲解(0.2).doc nginx核心讲解(0.4).doc Nginx模块开发指南中文...
带有详细注释的nginx源码,能帮你有效地阅读和学习nginx源码
nginx开机自启动配置文件,在[CentOS 7.6 64位]系统下运行正常。 编译安装nginx后,将该配置文件放在服务器的/usr/lib/systemd/system/目录下,然后启动nginx服务。
压缩包内有四个版本的nginx,可根据自己的需求安装相应的软件包。使用方法:下载资源包--->将需要的版本导入到linux主机中--->tar解压得到nginx源码包--->源码编译安装
这是我自学nginx的学习笔记,上传只是为了更好的督促自己学习,如果你也有同感,加入一起学习吧。
Nginx教程
本人在银行工作,基于生产环境搭建方法编写的Nginx源码安装手册,生产环境可参考此手册。
nginx源码,1.0版本的,适合学习nginx的工作原理,欢迎码农朋友们下载学习。
nginx-rtmp + ffmpeg;rtsp视频转流所需工具;livepush.war包
nginx源码分析nginx源码分析nginx源码分析nginx源码分析nginx源码分析nginx源码分析nginx源码分析nginx源码分析nginx源码分析nginx源码分析