• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

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

php 搞代码 4年前 (2022-01-23) 22次浏览 已收录 0个评论

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

Tags: Nginx数据结构


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

整型封装

<code><span>typedef</span> intptr_t ngx_int_t;<span>typedef</span> uintptr_t ngx_uint_t'</code>

字符串类型

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

<code><span>typedef</span> struct {    size_t      len;    u_char     *<span><span>data</span>;</span>} ngx_str_t;</code>

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

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

那如果我们使用了一个Ngx_str_t结构体来存储了这个值,现在我们想获取请求类型,是GET还是POST或是PUT?我们不需要拷贝一份内存,我们要做仅仅是做一个新的ngx_str_t,里面的data指针是指向和原先的ngx_str_t一个地址,然后将l

!本文来源gaodai.ma#com搞##代!^码网(

搞gaodaima代码en改为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); }); }); </script>

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


    搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
    转载请注明原文链接:Nginx的数据结构–整型和字符串

    喜欢 (0)
    [搞代码]
    分享 (0)
  • 发表我的评论
    取消评论

    表情 贴图 加粗 删除线 居中 斜体 签到

    Hi,您需要填写昵称和邮箱!

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址