- 1、本文档共6页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
小议Buffer及cache的区别2.
小议Buffer及cache的区别
我在开发中经常用到buffer及cache两类对象,在写文档时经常将缓冲及缓存用混。今天特意查找文档及词典后来给自己纠正这个顽疾。
原文参考:
一.Buffer含义
下图是对buffer的一个理解。
其中模块A代表一定代码行的逻辑模块, 模块B代表另外一段代码行的逻辑模块。
模块A通过buffer同模块B进行了间接连接。间接链接好处是两个模块的耦合关系降低了。
图中,Buffer的作用就是 将输入前 杂乱无规则的数据,经过整理后 变成规则有序的数据。真实的buffer的作用其实就是数据的加工与处理,这样便于后一个环节进行处理利用等。具体情况视不同的buffer而不同。
以上仅仅是我个人的理解,那么是否正确?
二.Buffer的英文原义
下面是Buffer的专业的定义,如下:
网络定义如下:
三.Buffer小结
从上面两个定义可以知道buffer含义是缓冲的意思,在机械学上通过缓冲垫把两个系统链接到一起。其他定义都是有缓冲相关的意思。
因此我们可以这么理解
Buffer中一定至少存在两个物体或者事务。
这个两个事务通过buffer进行连接
Buffer起到一定减缓或者协调的作用。
两个物体或者事务一定是相互知道或者了解,只是进行了间接的连接。
四.Cache的理解
下图是cache的一种处理情况
如图,cache系统中存在模块A, 模块B,模块B包括若干实例, 模块A也可以包括若干实例。 模块A存数据到cache中。 模块B获取数据从cache中。
因此cache是个数据的临时存储场所,有的模块写入,有的模块获取。 写入模块未必了解读取模块的存在,更准确的是读取模块实例的存在,同时写入模块也不关心这些事情,他只管写入。读取模块同样只关心数据的读取,没必要了解到写入的存在。
五.Cache的英文含义
下面是cache的英文原义
从英文含义中我们可以获取到cache应该个存储东西的场所,他的核心功能是存储。
六.Cache小结
从上面两个定义可以知道cache含义是临时储存的一个场所。因此我们可以这么理解
Cache是存储场所,一个临时的储存场所
Cache系统中存在写入模块A,可以包括多个实例,读取模块B可以包括多个实例。
Cache是两类模块的数据中转的地方
模块A仅仅需要知道cache, 模块B也仅仅需要知道cache的存在,他们相互间不需要相互了解。
Cache及buffer相同点
Cache及buffer都可以存储一定的数据
Cache及buffer存储的数据一般都是临时性的,不是永久性的
Cache及buffer系统中都存在若干模块的实例,一般至少需要两类模块的存在,模块A写入数据(生产数据),模块B读取数据(消费数据)
Cache及buffer的区别
Buffer中,写入模块及读取模块之间是通过buffer做的间接连接,两个模块的特定实例之间是存在耦合关系的。
Buffer一般是特定实例对之间专有的,其他实例不应该访问否则有可能造成问题,除非逻辑上做了处理。
Buffer中数据一般是有顺序的,写入顺序及读取顺序之间需要一定的对应关系。双方必须按照约定进行相应的读取操作。
Cache是个共享的方式, 写入模块实例不需要了解读取模块的任何实例
Cache系统中各个实例之间只有同cache本身的耦合关系
Cache数据的写入及读取都是没有顺序的
Cache一般存在有效期,buffer没有,一般buffer都是专用的,buffer中数据有效期由专有实例管理就好了。Cache中数据过期后将由cache进行淘汰出去。
原文参考:
文档评论(0)