zoukankan      html  css  js  c++  java
  • 高速缓存

    关于硬件的高速缓存的详细讨论超出了本文的讨论范围。但是在有些情况下软件高速缓存能被用于加速I/O。考虑从一个文本文件里面以随机顺序读取一行的情况,这样做的一个方法是读取所有的行,然后把它们存入一个ArrayList (一个类似Vector的集合类):

    import java.io.*;

    import java.util.ArrayList;

    public class LineCache {

       private ArrayList list = new ArrayList();

       public LineCache(String fn) throws IOException {

            FileReader fr = new FileReader(fn);

            BufferedReader br = new BufferedReader(fr);

            String ln;

            while ((ln = br.readLine()) != null)

                list.add(ln);

            br.close();

       }

       public String getLine(int n) {

            if (n < 0)

                throw new IllegalArgumentException();

            return (n < list.size() ? (String) list.get(n) : null);

       }

       public static void main(String args[]) {

            if (args.length != 1) {

                System.err.println("missing filename");

                System.exit(1);

            }

            try {

                LineCache lc = new LineCache(args[0]);

                int i = 0;

                String ln;

                while ((ln = lc.getLine(i++)) != null)

                     System.out.println(ln);

            } catch (IOException e) {

                System.err.println(e);

            }

       }

    }

    getLine 方法被用来获取任意行。这个技术是很有用的,但是很明显对一个大文件使用了太多的内存,因此有局限性。一个代替的方法是简单的记住被请求的行最近的100行,其它的请求直接从磁盘读取。这个安排在局域性的访问时很有用,但是在真正的随机访问时没有太大作用。

     

  • 相关阅读:
    Hibernate(十三)迫切内连接fetch
    SQL多表联合查询(交叉连接,内连接,外连接)
    Hibernate入门(十二)离线条件检索
    Java基础IO流(二)字节流小案例
    Java基础IO流(一)
    Hibernate入门(十一)多对多案例
    mysql下载安装及常见问题
    数据库表数据恢复
    linux的自有(内置)服务
    linux下的别名机制
  • 原文地址:https://www.cnblogs.com/borter/p/9434271.html
Copyright © 2011-2022 走看看