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

局域网内网站建设2024网站推广

局域网内网站建设,2024网站推广,美食网站页面设计模板,上海松江区建设局官方网站最近在学习环形数组以及缓存管理的实例,一直有一个疑问那就是“既然已经有了环形数组的数据结构,以及操作环形数组的相关算法,为什么还有再更进一步将其封装成缓存管理的数据结构以及相关算法呢”?我感觉主要是有以下几点原因。一…

最近在学习环形数组以及缓存管理的实例,一直有一个疑问那就是“既然已经有了环形数组的数据结构,以及操作环形数组的相关算法,为什么还有再更进一步将其封装成缓存管理的数据结构以及相关算法呢”?我感觉主要是有以下几点原因。

一、实现“算法到数据结构”的转换,理解这一句话的前提是“程序=数据结构+算法(操作数据结构)”,也就是说缓存管理buffer_manager_struct将对环形数组ringbuffer的相关操作封装成一个个函数,通过传参的方式实现数据转换。整个过程就像将一个函数要实现的工作转换为对应数据的变化。我们后面只需要操纵数据就可以实现某些功能。从宏观上,我们无需知道函数内部是如何操作的,我们只需要知道调用哪些函数,就可以实现数据结构的读写。(有点像算法转换为了数据结构)

二、更加体现一句话:“函数就是一个数据处理器”。也就是说函数的目的是问了对数据结构对应变量进行“读+写”、“生产+消费”等操作,通过对数据结构这种操作就实现了要实现的具体功能。

typedef struct
{signed int count;signed int cnt;unsigned char ReadFlag;unsigned char SendFlag;signed int ReadLen;signed int SendLen;/**用户可自由使用以上变量 */int32_t value;      /**结构体内部使用,用户不可使用 */signed int len;     /**结构体内部使用,用户不可使用 */rb_t Buff;      /**缓存数组 */rb_t ManageBuff;    /**管理缓存数组 */
}buff_manage_struct;void BufferManageCreate(buff_manage_struct *bms, void *buff, uint32_t BuffLen, void *ManageBuff, uint32_t ManageBuffLen);
void BufferManageWrite(buff_manage_struct *bms, void *buff, uint32_t BuffLen, int *result);
void BufferManageRead(buff_manage_struct *bms, void *buff, int *DataLen);

上述代码就是缓存管理的具体实现方式。我们如果想实现具体功能,只需要定义结构体buff_manage_struct,并操作create、write、read三个相关函数即可,无需知道函数内部的具体细节。使得我们的注意力集中在数据结构上而非难懂的算法上。而且,数据结构buff_manage_struct将用到或者用不到的变量封装到了一次。我们只需要将注意力集中到这个数据结构内部成员即可。

三、ringbuff相关数据结构以及算法还是太复杂了,增加一层封装能简化应用层操作。

typedef struct
{u32 rbCapacity;  /**相当于数组长度 */char *rbHead;   /**读:头指针 */char *rbTail;    /**写:尾指针 */        /**尾插头取 */char *rbBuff;   /**数组首地址 */
}rb_t;/**心得:函数中的参数列表也相当于定义内存变量 */
void rbCreate(rb_t *rb, void *buff, u32 buff_len);
void rbDelete(rb_t *rb);
int32_t rbCapacity(rb_t *rb);
int32_t rbCanRead(rb_t *rb);    /**能读取的数据个数 */
int32_t rbCanWrite(rb_t *rb);   /**能写入的数据个数 */
int32_t rbRead(rb_t *rb, void *buff, u32 len);  /**读环形缓存到缓存中 */
int32_t rbwrite(rb_t *rb, const void *buff, u32 len); /**将缓存中的数值写到缓存中 */
int32_t PutData(rb_t *rb, void *buf, u32 len);      /**将缓存数据写到rb中 */

上述代码是ringbuffer的相关数据结构以及算法,发现算法还是很负载,而且实现的功能还是更倾向于驱动底层,我们编程的目的是利用好驱动相关程序编写好应用程序。所以封装一层能更好隐藏细节。

总之:函数是一个数据处理器,函数的内部操作最终表现就是数据结构的变化;操纵函数实现了数据结构的变化,也就是实现了应用业务逻辑。


文章转载自:

http://YHAODecS.rnytd.cn
http://rOcTGKzF.rnytd.cn
http://pfBTCTvQ.rnytd.cn
http://bdZJg5PN.rnytd.cn
http://LLRZ3ZFY.rnytd.cn
http://Y3kvTIru.rnytd.cn
http://SlcNrpaB.rnytd.cn
http://NcKW0RAD.rnytd.cn
http://LzcnreMt.rnytd.cn
http://z44eBopB.rnytd.cn
http://jYJuCVZs.rnytd.cn
http://XWQdB7Qh.rnytd.cn
http://55sFNate.rnytd.cn
http://0kwJEJZm.rnytd.cn
http://NvV8Ae46.rnytd.cn
http://TJbLPEDw.rnytd.cn
http://O8WACJ2V.rnytd.cn
http://zzSJpw8J.rnytd.cn
http://llluUvtJ.rnytd.cn
http://MgvAzBsc.rnytd.cn
http://tBqj8IGD.rnytd.cn
http://6gt9hGpk.rnytd.cn
http://QIqhFD7D.rnytd.cn
http://kWfKOzyn.rnytd.cn
http://qiSH3E03.rnytd.cn
http://6TgGuRFb.rnytd.cn
http://HF9j1Dhg.rnytd.cn
http://o83DbdEY.rnytd.cn
http://9IsF9112.rnytd.cn
http://lzTXMm9n.rnytd.cn
http://www.dtcms.com/wzjs/647296.html

相关文章:

  • 平面网站模版网站开发seo要求
  • wordpress进网站慢seo整站优化解决方案
  • 网站维护属于什么部门小程序开发费用多少钱
  • 网站制作前的图片路径网站利用微信拉取用户做登录页
  • 网站建设 phpwordpress中文免费企业模板
  • 马鞍山天立建设网站南昌企业网站建设费用
  • 专业做化妆品的网站ac域名网站
  • 服装网站建设教程金寨县住房和城乡建设部网站
  • 网易严选的网站建设wordpress get author
  • 网站建设内容与实现功能淮海中路街道网站建设
  • 淘宝客建网站ios+wordpress
  • 网站 如何做 中英文切换中盛浩瀚建设有限公司网站
  • 做住宿的有几个网站WordPress搭建社区网站
  • 太仓网站公司软件开发工程师证
  • 做网站要会编程么大型网站建设机构
  • 电商站外推广平台有哪些搬瓦工搭建wordpress
  • 布吉商城网站建设自己怎么做网站游戏
  • 网站更换备案号wordpress 响应模板
  • 网站开发要先买服务器吗备案网站名称注意事项
  • 广东网站建设模版淘宝导购网站怎么做
  • 深圳专业建设网站服务建设班级网站 沟通无限
  • 保定建站包装材料营销型网站
  • wordpress 全站密码网站问题seo解决方案
  • 做网站公司长沙哪家好家在深圳龙光城
  • 石家庄网站制作招聘聊城做网站网络公司
  • h5网站开发价格互联网广告代理商
  • 闸北区网站建设网页设计广西南宁小程序开发公司
  • 深圳专业做网页的公司南昌seo优化
  • 织梦可以做家教网站吗wordpress 主题名字
  • 酷站网wordpress post插件