首页 >

Nginx的数据结构–整型和字符串

后端开发|php教程Nginx的数据结构--整型和字符串
Nginx,ngx,str,numbering,typedef
后端开发-php教程
Nginx的数据结构–整型和字符串
springmvc源码包,vscode添加到右键菜单,ubuntu安装winne,tomcat7.0源码,svg反爬虫,温州php招聘,长沙关键词seo优化销售lzw
Tags: Nginx数据结构
随便下源码,vscode更改行高,ubuntu切换kali,项目tomcat启动太快,sqlite3数据库远程,爬虫软件程序员和财务负责人,php zend源码,seo工具怎么样,jsp免费网站系统,web聊天模板lzw

考虑到跨平台、高效率、统一规范,Nginx封装了许多的数据结构,大多数都是我们在其他开发项目中经常用到的一些,当然还有一些复杂的容器,笔者每篇文章会对其中一至两个点进行分析和练习讲解。

android表白app源码,vscode可以对比代码吗,ubuntu中cd,tomcat内存溢出修改,爬虫脚本程序,威海php培训,东莞关键词seo哪家强lzw
整型封装

typedef intptr_t ngx_int_t;typedef uintptr_t ngx_uint_t'

字符串类型

在Nginx中,使用Ngx_str_t表示字符串,它的定义如下:

typedef struct {    size_t      len;    u_char     *data;} ngx_str_t;

我们可以看到它是一个简单的结构体,只有两个成员,data指针指向字符串起始地址,len表示字符串的长度。
这里你可能会产生疑惑,C语言中的字符串只需要有一个指针就能表示了,为什么这里还需要一个长度呢?这是因为C语言中我们常说的字符串,其实是以’\0’结尾的一串字符,约定俗称的,一旦读取到这个标记则表示字符串结束了,在C++中建立字符串的时候编译器会自动在后面加上’\0’标记。但是Ngx_str_t中的data指针却不是指向C语言中的字符串,而只是一串普通字符的起始地址,这串字符串不会特别的使用’\0’标记作为自己的结尾,所以我们需要len来告诉使用者字符串的长度。
那这样做有什么好处呢?作为网络服务器,Nginx当然更多考虑的这一方便开发的需求,在网络请求中,我们最多接触的就是URL地址,请求头信息,请求实体等,就拿URL地址来说,例如用户请求:

GET /test/string?a=1&b=2http/1.1\r\n

那如果我们使用了一个Ngx_str_t结构体来存储了这个值,现在我们想获取请求类型,是GET还是POST或是PUT?我们不需要拷贝一份内存,我们要做仅仅是做一个新的ngx_str_t,里面的data指针是指向和原先的ngx_str_t一个地址,然后将len改为3即可。
当然,这只是个一个最简单的应用,字符串类型几乎是各种业务系统也好,网络框架也好使用十分广泛的一种基本类型,良好的设计结构是Nginx低内存消耗的重要保证。

ngx_str_t的操作

有了字符串这个简单的一个结构体其实并不是特别的方便,在Java,Python这样的现代高级语言中,都提供了丰富对于字符串类型的操作,Nginx也提供了不少的字符串操作公共函数,尽管有些看上去并不是那么容易用好,那么我们来一一看下这些函数。

睡觉了,明天来写吧

‘).addClass(‘pre-numbering’).hide();
$(this).addClass(‘has-numbering’).parent().append($numbering);
for (i = 1; i <= lines; i++) { $numbering.append($('').text(i)); }; $numbering.fadeIn(1700);}); });

以上就介绍了Nginx的数据结构–整型和字符串,包括了方面的内容,希望对PHP教学有兴趣的朋友有所帮助。


Nginx的数据结构--整型和字符串
  • Django + ninx + uwsgi配置和环境搭建
  • Django + ninx + uwsgi配置和环境搭建 | Django + ninx + uwsgi配置和环境搭建 ...

    Nginx的数据结构--整型和字符串
  • PHP之判断是不是素数
  • PHP之判断是不是素数 | PHP之判断是不是素数 ...

    Nginx的数据结构--整型和字符串
  • PHP入门5 C++和PHP二进制传输
  • PHP入门5 C++和PHP二进制传输 | PHP入门5 C++和PHP二进制传输 ...