Nginx的数据结构--整型和字符串
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Nginx的数据结构--整型和字符串,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2049字,纯文字阅读大概需要3分钟。
内容图文
![Nginx的数据结构--整型和字符串](/upload/InfoBanner/zyjiaocheng/157/99b036929c5c4832a1197275190fcd7e.jpg)
Tags: Nginx数据结构
考虑到跨平台、高效率、统一规范,Nginx封装了许多的数据结构,大多数都是我们在其他开发项目中经常用到的一些,当然还有一些复杂的容器,笔者每篇文章会对其中一至两个点进行分析和练习讲解。
整型封装
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的数据结构--整型和字符串全部内容,希望文章能够帮你解决Nginx的数据结构--整型和字符串所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。