知识大全 Java程序性能优化-装饰者模式(4)

Posted

篇首语:赚钱之道很多,但是找不到赚钱的种子,便成不了事业家。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Java程序性能优化-装饰者模式(4)相关的知识,希望对你有一定的参考价值。

Java程序性能优化-装饰者模式(4)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

     装饰者模式( )

  系统的核心类 它实现了向文件写入数据 使用DataOutputStream可以在FileOutputStream的基础上 增加对多种数据类型的写操作支持 而BufferedOutputStream装饰器 可以对FileOutputStream增加缓冲功能 优化I/O的性能 以BufferedOutputStream为代表的性能组件 是将性能模块和功能模块分离的一种典型实现

  public static void main(String[] args) throws IOException

  //生成一个有缓冲功能的流对象

  DataOutputStream dout=

  new DataOutputStream(new BufferedOutputStream(new FileOutputStream

  ( C:\\\\a txt )))

  //没有缓冲功能的流对象

  //DataOutputStream dout=new DataOutputStream(new FileOutputStream

  ( C:\\\\a txt ))

  long begin=System currentTimeMillis()

  for(int i= ;i< ;i++)

  dout writeLong(i)

  System out println( spend: +(System currentTimeMillis() begin))

  

  以上代码显示FileOutputStream的典型应用 加粗部分是两种建立OutputStream的方法 第一种加入了性能组件BufferedOutputStream 第二种则没有 因此 第一种方法产生的OutputStream拥有更好的I/O性能

  注意 JDK中OutputStream和InputStream类族的实现是装饰者模式的典型应用 通过嵌套的方式不断地将对象聚合起来 最终形成一个超级对象 并使之拥有所有相关子对象的功能

  下面来看一下装饰者模式如何通过性能组件增强I/O性能 在运行时 工作流程如图 所示

  图   装饰者模式的工作流程

  在FileOutputStream write()的调用之前 会首先调用BufferedOutputStream write() 它的实现如下

  public synchronized void write(byte b[] int off int len) throws IOException

  if (len >= buf length)         //如果要写入的数据数量大于缓存容量

  flushBuffer()               //写入所有缓存

  out write(b off len)      //直接将数据写入文件

  return;

  

  if (len > buf length count)

  flushBuffer()

  

  System arraycopy(b off buf count len)

  //如果写入的数据比较少 则写入缓存

  count += len;

  

  private void flushBuffer() throws IOException

  if (count > )

  out write(buf count)    //这里的out对象就是FileOutputStream

  count = ;

  

  

  可以看到 并不是每次BufferedOutputStream write()调用都会去磁盘写入数据 而是将数据写入缓存中 当缓存满时 才调用FileOutputStream write()方法 实际写入数据 以此实现性能组件与功能组件的完美分离

       返回目录 Java程序性能优化 让你的Java程序更快 更稳定

  编辑推荐

       Java程序设计培训视频教程

       J EE高级框架实战培训视频教程

       J ME移动开发实战教学视频

  Visual C++音频/视频技术开发与实战

  Oracle索引技术

cha138/Article/program/Java/gj/201311/27821

相关参考

知识大全 Java程序性能优化-装饰者模式(2)

Java程序性能优化-装饰者模式(2)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!   

知识大全 Java程序性能优化-装饰者模式(3)

Java程序性能优化-装饰者模式(3)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!   

知识大全 Java程序性能优化-代理模式(4)

Java程序性能优化-代理模式(4)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!   

知识大全 Java程序性能优化-代理模式(7)

Java程序性能优化-代理模式(7)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!   

知识大全 Java程序性能优化-代理模式(1)

Java程序性能优化-代理模式(1)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!   

知识大全 Java程序性能优化-代理模式(2)

Java程序性能优化-代理模式(2)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!   

知识大全 Java程序性能优化-代理模式(3)

Java程序性能优化-代理模式(3)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!   

知识大全 Java程序性能优化-代理模式(5)

Java程序性能优化-代理模式(5)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!   

知识大全 Java程序性能优化-代理模式(6)

Java程序性能优化-代理模式(6)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!   

知识大全 Java程序性能优化-享元模式(1)

Java程序性能优化-享元模式(1)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!