您现在的位置是:首页 > 正文

buffer和cache的区别

2024-01-30 23:54:48阅读 0

一,计算机硬件组成


转载自: buffer和cache的区别.
计算机硬件组成:CPU,存储器,输入输出设备(I/O),其他(主板,电源等)
CPU:运算器,控制器
存储器:内部存储器(ROM/RAM),外部存储器(磁盘等)
I/O:输入设备(鼠标/键盘),输出设备(显示器/打印机)
从性能分析:
-CPU缓存>内存>磁盘>数据库
从性能来看内存是介于CPU和磁盘,在实际中内存是CPU和磁盘的桥梁。buffer和cache是内存的不同的体现,接下来简单分析对buffer和cache的理解。

二、buffer和cache


1.buffer:
A buffer is something that has yet to be “written” to disk.翻译过来就是:buffer就是写入到磁盘。buffer是为了提高内存和硬盘(或其他I/O设备)之间的数据交换的速度而设计的。buffer将数据缓冲下来,解决速度慢和快的交接问题;速度快的需要通过缓冲区将数据一点一点传给速度慢的区域。例如:从内存中将数据往硬盘中写入,并不是直接写入,而是缓冲到一定大小之后刷入硬盘中。

2.cache:
A cache is something that has been “read” from the disk and stored for later use.翻译过来就是:cache就是从磁盘读取数据然后存起来方便以后使用。cache实现数据的重复使用,速度慢的设备需要通过缓存将经常要用到的数据缓存起来,缓存下来的数据可以提供高速的传输速度给速度快的设备。例如:将硬盘中的数据读取出来放在内存的缓存区中,这样以后再次访问同一个资源,速度会快很多。

3.buffer和cache的特点
共性:
都属于内存,数据都是临时的,一旦关机数据都会丢失。
差异:(先理解前两点,后两点有兴趣可以了解)
A.buffer是要写入数据;cache是已读取数据。
B.buffer数据丢失会影响数据完整性,源数据不受影响;cache数据丢失不会影响数据完整性,但会影响性能。
C.一般来说cache越大,性能越好,超过一定程度,导致命中率太低之后才会越大性能越低。buffer来说,空间越大性能影响不大,够用就行。cache过小,或者没有cache,不影响程序逻辑(高并发cache过小或者丢失导致系统忙死除外)。buffer过小有时候会影响程序逻辑,如导致网络丢包。
D.cache可以做到应用透明,编写应用的可以不用管是否有cache,可以在应用做好之后再上cache。当然开发者显式使用cache也行。buffer需要编写应用的人设计,是程序的一部分。


转载自: sed_‘s/M18/黑匣子/’.
在这里插入图片描述

网站文章

  • 测试用例设计方法

    测试用例设计方法

    测试用例设计方法如何全面系统地组织测试等价类是建立在这种思想之上——即我们不可能进行穷举测试,那么我们就 必须对输入进行分类,而这种分类是建立在我们知道计算机程序设计原理和 计算机处理单元的工作原理基...

    2024-01-30 23:54:41
  • JDK的安装与环境变量配置

    JDK安装与环境变量配置JDK介绍JDK (JAVA Development Kit) 是整个Java的核心,包括Java运行环境、Java工具和Java基础的类库。当用户要对Java程序进行编译时,...

    2024-01-30 23:54:34
  • Linux :: 【基础指令篇 :: 用户管理:(3)】::删除用户 :: userdel

    Linux :: 【基础指令篇 :: 用户管理:(3)】::删除用户 :: userdel

    本篇介绍:Linux创建用户基本指令:userdel 的 基本语法、基本用法、注意点及补充:关于新建的用户存储位置(及添加用户操作实例测试)

    2024-01-30 23:54:05
  • vue在生产环境清除console.log

    vue在生产环境清除console.log

    在开发环境中我们喜欢用console.log测试代码,但是部署到生产环境我们不可能一个一个把console.log给手动删除了。在build/webpack.prod.conf.js文件里加上这样一段代码即可new UglifyJsPlugin({ uglifyOptions: { mangle: { ...

    2024-01-30 23:53:58
  • tomcat8启动startup.bat闪退的问题

    今天遇到Tomcat启动startup.bat闪退的问题。看了网上的解决办法大同小异。首先我在cmd中执行了netstat -ano|findstr "8080",并没有找到有占用端口的进程。然后因为我本地存在两个Tomcat版本,一个是8.0一个是8.5,所以我把两个的路径分别写进了系统变量CATALINA_BASE、CATALINA_HOME、TOMCAT_HOME。当然JAVA_HO...

    2024-01-30 23:53:51
  • java~真~四舍五入保留2位小数

    计算个人所得税,需要四舍五入保留2位小数 csdn有很多篇文章讲述了四舍五入保留2位小数的多种方法,经过实测,下面这种方法最准确 通过对多个边缘值的测试,均无问题 public class MathUtil { private MathUtil() { } private static String formatDoubleLeafTwo(double d) { ...

    2024-01-30 23:53:24
  • 使用BootStrap搭建主页

    使用BootStrap搭建主页

    使用Bootstrap来搭建主页

    2024-01-30 23:53:17
  • 在eclipse中安装Spring Tool Suite(STS)

    在eclipse中安装Spring Tool Suite(STS)

    1.打开eclipse,Help→Eclipse Marketplace 2. 3.全选,点击confirm 4.接受协议 5.等待安装完成,下载完成后会自动弹出一个弹窗,点击确认重启,安装过程比较久 6.安装完成后,在window→preference中查看由spring选项,则安装完成 ...

    2024-01-30 23:53:01
  • js 替换字符串中所有满足条件的字符

    js 替换字符串中所有满足条件的字符

    网上找材料时,趴下来的文件是带其他条件的(我们不需要的),需要替换掉很明显我需要将去掉,用node进行了replace(‘’,‘\r\n’),做了个换行处理,发现跟我想要的不太一样。原来这是常规的replace这时候就需要用到正则了需要注意的是,用正则的话是不要引号的!!!...

    2024-01-30 23:52:54
  • C++模板-29-什么是模板和一个简单的例子

    C++模板-29-什么是模板和一个简单的例子

    这篇开始进入模板的学习,接下来要学习模板,各种函数模板和类模板,然后学习几个标准的类,例如string类的,然后过度到学习各种容器。1.什么是模板模板就是建立通用模具,大大提高代码复用性。2.没有模板...

    2024-01-30 23:52:24