Twemproxy源码走读(2):数据结构

Twemproxy内部定义了若干种数据结构,如概述中所述,包括自定义的数据结构和关键数据结构,本章将讲述两种数据结构,为后面的复杂的逻辑分析扫清障碍。

  • 自定义的数据类型: nc_array.c、nc_array.h、nc_string.c、nc_string.h
  • 关键数据结构和算法: nc_rbtree.h、nc_rbtree.c、nc_queue.h、nc_request.c、nc_response.c、nc_mbuf.c、 nc_mbuf.h、nc_message.c、nc_message.h、nc_server.c、nc_server.h

(1)    数组(nc_array)

数组是一个很常见的数据存储方式,其特点比如连续存储、随机访问等在此就不累述,这里只讲解在NC中的实现。

NC的array实现需要熟练操作指针,基本所有的数组操作都是内存指针的操作。根据元素个数和元素大小申请一块连续的内存,像array_idx获取元素index、array_get获取指定index处的元素、array_top等操作比较简单,array_push需要考虑数组已经满了的情况,如果出现这种情况,为了减少内存分配和释放的次数,NC会重新申请当前数组长度两倍的内存,然后才能将新元素放入数组。

还有一点,nc_array实际上是一个栈的操作,只能在array的尾部执行添加(push)和删除(pop)操作,但是查看元素不限位置,只需知道元素的index就可查看该index上的元素。

(2)    字符串&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值