资源描述
小议小议 Buffer 及及 cache 的区别的区别 我在开发中经常用到 buffer 及 cache 两类对象,在写文档时经常将缓冲及缓存用混。今天特意查找文档及词典后来给自己纠正这个顽疾。原文参考:一一Buffer 含义含义 下图是对 buffer 的一个理解。其中模块 A 代表一定代码行的逻辑模块,模块 B 代表另外一段代码行的逻辑模块。模块 A 通过 buffer 同模块 B 进行了间接连接。间接链接好处是两个模块的耦合关系降低了。图中,Buffer 的作用就是 将输入前 杂乱无规则的数据,经过整理后 变成规则有序的数据。真实的 buffer 的作用其实就是数据的加工与处理,这样便于后一个环节进行处理利用等。具体情况视不同的 buffer 而不同。以上仅仅是我个人的理解,那么是否正确?二二Buffer 的英文原义的英文原义 下面是 Buffer 的专业的定义,如下:网络定义如下:三三Buffer 小结小结 从上面两个定义可以知道 buffer 含义是缓冲的意思,在机械学上通过缓冲垫把两个系统链接到一起。其他定义都是有缓冲相关的意思。因此我们可以这么理解 1.Buffer 中一定至少存在两个物体或者事务。2.这个两个事务通过 buffer 进行连接 3.Buffer 起到一定减缓或者协调的作用。4.两个物体或者事务一定是相互知道或者了解,只是进行了间接的连接。四四Cache 的理解的理解 下图是 cache 的一种处理情况 如图,cache 系统中存在模块 A,模块 B,模块 B 包括若干实例,模块 A 也可以包括若干实例。模块 A 存数据到 cache 中。模块 B 获取数据从 cache 中。因此 cache 是个数据的临时存储场所,有的模块写入,有的模块获取。写入模块未必了解读取模块的存在,更准确的是读取模块实例的存在,同时写入模块也不关心这些事情,他只管写入。读取模块同样只关心数据的读取,没必要了解到写入的存在。五五Cache 的英文含义的英文含义 下面是 cache 的英文原义 从英文含义中我们可以获取到 cache 应该个存储东西的场所,他的核心功能是存储。六六Cache 小结小结 从上面两个定义可以知道 cache 含义是临时储存的一个场所。因此我们可以这么理解 1.Cache 是存储场所,一个临时的储存场所 2.Cache 系统中存在写入模块 A,可以包括多个实例,读取模块 B 可以包括多个实例。3.Cache 是两类模块的数据中转的地方 4.模块 A 仅仅需要知道 cache,模块 B 也仅仅需要知道 cache 的存在,他们相互间不需要相互了解。七七 Cache 及及 buffer 相同点相同点 1.Cache 及 buffer 都可以存储一定的数据 2.Cache 及 buffer 存储的数据一般都是临时性的,不是永久性的 3.Cache 及 buffer 系统中都存在若干模块的实例,一般至少需要两类模块的存在,模块 A 写入数据(生产数据),模块 B 读取数据(消费数据)八八Cache 及及 buffer 的区别的区别 1.Buffer 中,写入模块及读取模块之间是通过 buffer 做的间接连接,两个模块的特定实例之间是存在耦合关系的。2.Buffer 一般是特定实例特定实例对对之间专有的,其他实例不应该访问否则有可能造成问题,除非逻辑上做了处理。3.Buffer 中数据一般是有顺序的,写入顺序及读取顺序之间需要一定的对应关系。双方必须按照约定进行相应的读取操作。4.Cache 是个共享的方式,写入模块实例不需要了解读取模块的任何实例了解读取模块的任何实例 5.Cache 系统中各个实例之间只有同 cache 本身的耦合关系 6.Cache 数据的写入及读取都是没有顺序的 7.Cache 一般存在有效期,buffer 没有,一般 buffer 都是专用的,buffer 中数据有效期由专有实例管理就好了。Cache 中数据过期后将由 cache 进行淘汰出去。原文参考:
展开阅读全文