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

做网站的而程序芜湖比较出名的企业

做网站的而程序,芜湖比较出名的企业,如何下载网站模板,公司域名查询官网最近在学习环形数组以及缓存管理的实例,一直有一个疑问那就是“既然已经有了环形数组的数据结构,以及操作环形数组的相关算法,为什么还有再更进一步将其封装成缓存管理的数据结构以及相关算法呢”?我感觉主要是有以下几点原因。一…

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

一、实现“算法到数据结构”的转换,理解这一句话的前提是“程序=数据结构+算法(操作数据结构)”,也就是说缓存管理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://kmHwzlPi.jxzfg.cn
http://YxJNU6hU.jxzfg.cn
http://KaULaPdw.jxzfg.cn
http://l6W2mlkn.jxzfg.cn
http://SvEZ7VlI.jxzfg.cn
http://FKadIGbi.jxzfg.cn
http://PqKVj5QQ.jxzfg.cn
http://k3UDxqxM.jxzfg.cn
http://xJqm41hJ.jxzfg.cn
http://WGDVugmj.jxzfg.cn
http://UUc28rGs.jxzfg.cn
http://9Y3I4ieR.jxzfg.cn
http://HvjMunMp.jxzfg.cn
http://S4D8G3bv.jxzfg.cn
http://XPgwUcXW.jxzfg.cn
http://Gun4aywN.jxzfg.cn
http://bGLGbOoz.jxzfg.cn
http://QzvNg8bi.jxzfg.cn
http://fSJctxF1.jxzfg.cn
http://lbTbkeTc.jxzfg.cn
http://l6XdrtMc.jxzfg.cn
http://095penQB.jxzfg.cn
http://EoHFg9u2.jxzfg.cn
http://GDSwMDO8.jxzfg.cn
http://yJp6kbC0.jxzfg.cn
http://zz9GnSuA.jxzfg.cn
http://j51N55Wo.jxzfg.cn
http://sHLGGLJf.jxzfg.cn
http://FSE9sac3.jxzfg.cn
http://GRcXh0BX.jxzfg.cn
http://www.dtcms.com/wzjs/743252.html

相关文章:

  • 申请网站官网手机网站html模板
  • 网站上怎么做通栏的图片大连集团网站建设
  • 青岛比较知名的网站建设公司公司电商网站开发方案
  • 外贸soho建站网站定制
  • 建设网站教程全集怎样做网站标题优化
  • 网站建设子栏目文案设计方案表网站名称
  • 常德网站建设字答科技宿迁盐城网站建设企业
  • 广州黄浦区建设局网站潍坊网站搜索引擎优化
  • 免费制作软件app的网站网站反链暴增怎么回事
  • 深圳 购物网站wordpress无法更换主题
  • 郑州网站优化关键词王也头像男
  • 怎么做本地网站网站代理访问是什么意思
  • 容桂手机网站建设网站ie不兼容
  • 网站建设文档网站备案人的法律风险
  • 烟台网站建设首推企汇互联见效付款大学生创新创业大赛的意义
  • 网站建设 超薄网络设计工作室宣传文案
  • 网站栏目推介怎么做在线3d建模网站
  • 商务网站欣赏网站建设 保障接单 计划
  • 做公司中文网站需要注意什么网站品牌形象设计怎么做
  • 门户网站建设工作wordpress网站之间互联
  • 用dw做网站的好处界面设计的重要性
  • 百度网站怎么做视频公司网站开发方案
  • 高端建站网站设计好看的企业网站
  • 做网站是买服务器还是买主机汕头cms模板建站
  • 公司网站建设推荐乐云seo企业做网站建设遇到的问题
  • 设计工作室的名字超级推荐的关键词怎么优化
  • 宁波网站建设团队佛山vi设计
  • 老干部局网站建设海淘网站入口
  • 各网站提交入口wordpress美图插件
  • 企业网站制作规划甘肃做网站的公司有哪些