Buffer:我们知道,电脑里面很多东西是有最小size的要求的,例如HDD上的cluster size,例如UDP packet的 packet
size。我们以HDD为例子,假设我们的cluster size是32k,我需要写入一个40k的文件,但是我的软件分4次生成这个文件,每次10k,在没有buffer的情况下,这将会导致4次真正的硬盘动作,但是如果我们有32k的write
buffer的话,文件会被写进 write buffer,直到write buffer被写满,才会导致真正的硬盘操作。换句话说,在我们的例子里32k写buffer可以减少50% 硬盘操作,效率提高可想而知。buffer很重要的特点是,它像一个queue,尾巴进,头出,不能被随机访问。
Cache:cache 的作用,在于将经常被访问的数据保存在比较快的介质中。例如数据库系统的cache manager会把经常被访问到的数据保留在内存中,从而减少硬盘访问。CPU的cache会把内存中常被访问到的指令保存到cache中,从而减少内存访问。cache的特点是:可以被随机访问,假设cache里面有5 个page,cache的用户可以随机访问到第3个page而不需通过第1、2个。
Pool:这个东西就比较新了。我们以一个 web server为例子,我们知道建立一个线程是相当昂贵的,需要很多cpu cycle。假设这些线程在完成工作后马上被销毁,那么对于繁忙的 web
server来讲,很多cpu cycle都被浪费在建立和销毁线程上了,于是,聪明的人类想到了thread pool这个东西,完成使命的线程不是被销毁,而是被丢到一个pool里面,下一次使用的时候,再被从pool里面抓出来,周而复始。pool的特点:1.
pool里面的内容 stateless,换句话说,每个server thread被丢到pool里面以后必须有能力让自己忘掉之前发生的事情,否则的话,乐乐脱衣服就可能导致bobo身上光秃秃了。2.
只能保存同类物品,server thread pool里面抓不出 database connection,database
connection也不能被丢进去。
Cache:cache 的作用,在于将经常被访问的数据保存在比较快的介质中。例如数据库系统的cache
Pool:这个东西就比较新了。我们以一个 web