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

flash网站代码自己建网站怎么推广

flash网站代码,自己建网站怎么推广,长沙做网站的有哪些,深圳福田搬家公司最近在学习环形数组以及缓存管理的实例,一直有一个疑问那就是“既然已经有了环形数组的数据结构,以及操作环形数组的相关算法,为什么还有再更进一步将其封装成缓存管理的数据结构以及相关算法呢”?我感觉主要是有以下几点原因。一…

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

一、实现“算法到数据结构”的转换,理解这一句话的前提是“程序=数据结构+算法(操作数据结构)”,也就是说缓存管理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://www.dtcms.com/wzjs/481014.html

相关文章:

  • 宁波做网站多少钱google网站推广
  • 曲靖网站微信建设seo查询seo优化
  • 网站百度百科怎么做不受国内限制的搜索引擎
  • ip提取网站源码带后台竞价网站推广
  • 石家庄市规划建设局网站有道搜索引擎入口
  • 情人节网站怎么做杭州网站优化公司
  • dz网站恢复数据库查询网站流量
  • 网站策划的步骤惠州短视频seo
  • 信誉好的徐州网站建设b2b
  • 品牌网站开发免费广告发布平台
  • jQuery EasyUI网站开发实战营销策略都有哪些方面
  • 做环保网站案例分析百度图片搜索入口
  • 厦门市建设局官方网站怎么建免费网站
  • 哪里有网站建设培训班站长之家ip地址归属查询
  • 免费网页制作神器桂林seo
  • 如何做百度网站2017网站页面排名优化
  • 一个公司为什么要做网站站长工具综合查询
  • 网站建设需要学习哪些seo优化服务是什么
  • 商城网站建设服务器百度开户公司
  • 南京网站设计公司大全seo超级外链发布
  • WordPress SMTP open SSL志鸿优化设计官网
  • 做网站去哪里可以找高清的图片东莞关键词优化平台
  • 淄博做网站的营销培训机构哪家最专业
  • 订阅号怎么做网站百度公司总部在哪里
  • 哪些网站做外链网站测试报告
  • 网站改版建设的目的谷歌seo和百度区别
  • 青岛做网站的好公司活动推广软文
  • 网站首页制作过程成都关键词快速排名
  • 网站免费申请注册长春网站优化咨询
  • 用visual做的网站定制营销型网站建设