当前位置: 首页 > news >正文

企业顺德网站建设html5经典网站

企业顺德网站建设,html5经典网站,做网站js是什么,公众号软文怎么写目录 基本概述 数据结构 接口描述 具体实现 ngx_list_create ngx_list_init ngx_list_push 使用案例 整理自 nginx 1.9.2 源码 和 《深入理解 Nginx#xff1a;模块开发与架构解析》 基本概述 Nginx 中的 ngx_list_t 是一个单向链表容器#xff0c;链表中的每一个节…目录 基本概述 数据结构 接口描述 具体实现 ngx_list_create ngx_list_init ngx_list_push 使用案例 整理自 nginx 1.9.2 源码 和 《深入理解 Nginx模块开发与架构解析》 基本概述 Nginx 中的 ngx_list_t 是一个单向链表容器链表中的每一个节点同时又是数据数组。ngx_list_t 作为链表容器确定了 ngx_list_part_s 节点的存储空间容量、内存管理入口内存池和数据访问入口链表数组。 ngx_list_t  链表具体结构如下图所示。可灵活定义 ngx_list_part_s 中数据结构同时因为其内部存储地址连续可通过数组偏移进行快速访问。 数据结构 typedef struct ngx_list_part_s ngx_list_part_t; /*链表中的一个节点该节点中的 elts 记录一个数组的数据数组类型可以自定义 节点使用的数组容量成员个数已经固定由 ngx_list_t 中的 nalloc 确定使用 nelts 记录该数组已使用容量所以 nelts 肯定小于 nalloc */ struct ngx_list_part_s { void *elts; // 指向数组的起始地址。ngx_uint_t nelts; // 数组已使用了多少个元素ngx_list_part_t *next; // 下一个链表节点 };/*ngx_list_part_s 链表容器该结构体内确定了 ngx_list_part_s 的存储空间容量、内存管理入口和访问入口。 */ typedef struct { ngx_list_part_t *last; //指向链表的最后一个节点。ngx_list_part_t part; //链表的首个数组节点。// 限制 ngx_list_part_s elts 中每个数组元素的占用空间的大小size_t size; // 限制 ngx_list_part_s elts 中每个数组最大元素数量一旦分配后是不可更改的ngx_uint_t nalloc;// //链表中管理内存分配的内存池对象。用户要存放的数据占用的内存都是由 pool 分配的。ngx_pool_t *pool; } ngx_list_t; 接口描述 // 创建新的链表指定内存池对象和数组容量元素个数和每个元素大小 // 该函数调用后会返回一个链表该链表内至少有一个数组不会是空链表的 ngx_list_t *ngx_list_create(ngx_pool_t *pool, ngx_uint_t n, size_t size);// 初始化已有链表与 ngx_list_create 使用方法相似其实 ngx_list_create 里面也会调用 ngx_list_init static ngx_inline ngx_int_t ngx_list_init(ngx_list_t *list, ngx_pool_t *pool, ngx_uint_t n, size_t size)// 往链表中新增元素传入链表返回新元素的首地址供使用。注意此时返回的是 ngx_list_part_s 中的 elts 成员 void *ngx_list_push(ngx_list_t *list); 具体实现 ngx_list_create ngx_list_t * ngx_list_create(ngx_pool_t *pool, ngx_uint_t n, size_t size) //实际上就是为nginx_list_t的part成员创建指定的n*size空间并且创建了空间sizeof(ngx_list_t) {ngx_list_t *list;// 分配 ngx_list_t 大小的内存list ngx_palloc(pool, sizeof(ngx_list_t));if (list NULL) {return NULL;}// 对空链表进行初始化if (ngx_list_init(list, pool, n, size) ! NGX_OK) {return NULL;}return list; } ngx_list_init static ngx_inline ngx_int_t ngx_list_init(ngx_list_t *list, ngx_pool_t *pool, ngx_uint_t n, size_t size) {// 对链表的首个 ngx_list_part_s 元素中的数组分配内存大小为 n * sizen 为数组元素个数size 为数组内每个元素的大小我们可以看到这些配置在链表初始化的时候就已经写死了不可再改变除非再次初始化list-part.elts ngx_palloc(pool, n * size); if (list-part.elts NULL) {return NGX_ERROR;}// 对链表的一些属性进行赋值list-part.nelts 0;list-part.next NULL;// 初始化时链表只有一个节点所以首节点也是末尾节点list-last list-part;list-size size;list-nalloc n;list-pool pool;return NGX_OK; } ngx_list_push // 往链表的末尾节点中新增数组函数返回可用地址指针 void * ngx_list_push(ngx_list_t *l) {void *elt;ngx_list_part_t *last;last l-last;// 判断末尾节点的数组空间是否满了if (last-nelts l-nalloc) {/* the last part is full, allocate a new list part */// 若末尾节点空间满了则往链表中新增节点刷新末尾节点地址last ngx_palloc(l-pool, sizeof(ngx_list_part_t));if (last NULL) {return NULL;}last-elts ngx_palloc(l-pool, l-nalloc * l-size);if (last-elts NULL) {return NULL;}// 新的末尾节点last-nelts 0;last-next NULL;// 刷新末尾节点指针新节点变为末尾节点l-last-next last;l-last last;}elt (char *) last-elts l-size * last-nelts;last-nelts;return elt; } 使用案例 // 创建一个链表链表中每个数组长度限制为 4每个数组元素数据类型为 ngx_str_t // 创建链表的时候内部会调用 ngx_list_init ngx_list_t* testlist ngx_list_create(r-pool, 4, sizeof(ngx_str_t)); if (testlist null ) {return NGX_ERORR; }// 往链表中添加数据该数据会添加到链表末尾节点的数组中若该数组剩余容量不足会往链表中新增节点 ngx_str_t* str ngx_list_push(testlist); if ( str null ) {return NGX_ERROR; } str-len sizeof(hello world); str-value he11o world;// 遍历链表 // part 用于指向链表中的每一个 ngx_list_part_t 数组刚开始执行链表中第一个节点 ngx_list_part_t* part testlist.part; //根据链表中的数据类型把数组里的 elts 转化为该类型使用 ngx_str_t* str part-elts; // i 表示元素在链表的每个 ngx_list_part_t 数组里的序号 for (i ; 0; /* void */; i) {// 如果数组已使用的数组元素已经遍历完则需要跳转到链表中下一个节点if ( i part-nelts ){if ( part - next NULL ){// 如果某个 ngx_list_part_t 数组的 next 指针为空// 则说明已经遍历完链表了break;}// 访问下一个 ngx_list_part_tpart part-next;header part-elts;// 将 i 序号置为 0准备重新访问下一个数组i 0;}// 遍历每个链表节点数组内的元素printf(list element : %*s\n, str[i].len, str[i].data); } ------------------------------------以下为废话不需要再阅读------------------------------------------ NGINX是一款高性能的HTTP服务器和反向代理服务器它以其稳定性、丰富的功能集、以及轻量级架构而闻名。在互联网技术栈中NGINX扮演着至关重要的角色广泛应用于负载均衡、静态内容服务以及作为反向代理来提高应用的可用性和扩展性。它的事件驱动架构使其能够支持高并发连接处理大量请求而不显著增加延迟。 NGINX的配置文件采用简洁明了的语法使得用户可以轻松地进行性能调优和功能定制。通过模块化设计NGINX不仅支持HTTP/2协议还提供了对TLS/SSL的全面支持确保数据传输的安全性。此外它还具备WebSocket支持使得实时通信应用能够无缝运行。 NGINX的反向代理能力尤为突出它可以根据URL路径、头部信息等多种规则将客户端请求智能地转发到后端服务器群中的某一台或多台服务器上实现请求的高效分发。同时NGINX还支持健康检查机制能够自动剔除故障节点保证服务的高可用性。 对于静态内容的高效处理也是NGINX的一大亮点。它可以快速响应并交付HTML页面、图片、CSS文件等静态资源极大地提升了网站访问速度。结合其缓存机制NGINX能有效减轻后端服务器的压力优化整体系统性能。 NGINX还提供了丰富的第三方模块如安全防护、流量控制等进一步增强了其功能性。无论是小型网站还是大型企业级应用NGINX都能提供灵活且强大的解决方案是现代Web架构中不可或缺的组成部分。 NGINX是一款高性能的HTTP服务器和反向代理服务器它以其稳定性、丰富的功能集、以及轻量级架构而闻名。在互联网技术栈中NGINX扮演着至关重要的角色广泛应用于负载均衡、静态内容服务以及作为反向代理来提高应用的可用性和扩展性。它的事件驱动架构使其能够支持高并发连接处理大量请求而不显著增加延迟。 NGINX的配置文件采用简洁明了的语法使得用户可以轻松地进行性能调优和功能定制。通过模块化设计NGINX不仅支持HTTP/2协议还提供了对TLS/SSL的全面支持确保数据传输的安全性。此外它还具备WebSocket支持使得实时通信应用能够无缝运行。 NGINX的反向代理能力尤为突出它可以根据URL路径、头部信息等多种规则将客户端请求智能地转发到后端服务器群中的某一台或多台服务器上实现请求的高效分发。同时NGINX还支持健康检查机制能够自动剔除故障节点保证服务的高可用性。 对于静态内容的高效处理也是NGINX的一大亮点。它可以快速响应并交付HTML页面、图片、CSS文件等静态资源极大地提升了网站访问速度。结合其缓存机制NGINX能有效减轻后端服务器的压力优化整体系统性能。 NGINX还提供了丰富的第三方模块如安全防护、流量控制等进一步增强了其功能性。无论是小型网站还是大型企业级应用NGINX都能提供灵活且强大的解决方案是现代Web架构中不可或缺的组成部分。
http://www.dnsts.com.cn/news/165384.html

相关文章:

  • jsp网站开发总结宁波专业网站制作服务
  • wap电影网站建设昆山做网站
  • 虚拟主机建设网站两个公司网络架构
  • 福建省建设注册执业资格管理中心网站网店货源一件代发货
  • 外贸网站 设计公司网站制作内容
  • 网站设计团队介绍wordpress 新浪博客
  • 电子商务网站cms手机app开发 网站建设
  • 杭州煜灿网络科技有限公司网站开发股票推荐怎么做网站
  • 北京建设信源网站 怎么打不开网站的备案信息域名不一样
  • 婚纱摄影的网站怎么做岗网站制作
  • 张家界公司网站建设网站建设三方合同范本
  • 深圳哪做网站做网站收广告费
  • 建设手机银行网站网站百度收录是什么意思
  • 精通网站开发书籍世界建设企业网站
  • SEO案例网站建设上海企业网站建设费用
  • wordpress 文章回收站在线作图软件有哪些
  • 长治网站建设公司我要做电商怎么做
  • 设计师图片素材网站海安网站开发
  • 外贸seo网站建站贵州省建设厅公示网站
  • 网站设计方案书ppt百度推广登陆平台登录
  • 贵州旅游网站建设策划书旅游网站建设流程
  • 注册网站要多久怎么做网站在里面填字
  • 网站后台管理系统 asp免费视频模板网站
  • 做装饰公司网站6动漫设计是什么
  • 县级网站建设培训会桐梓网站开发
  • 网站开发生命周期模型如何学习网站开发编程
  • 大气金融网站企业展厅公司
  • 网站系统cms整站排名服务
  • 游戏卡充值可以做网站吗做商城网站的项目背景图片
  • 给网站怎么做tag标签淘宝详情页设计模板