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行,其它的请求直接从磁盘读取。这个安排在局域性的访问时很有用,但是在真正的随机访问时没有太大作用。

     

  • 相关阅读:
    java将文件夹md5为名的图片与数据库查询对应md5后导入相应图片到某分类下
    java 导入图片时忘了导入诊断报告,查询报告并将缺失的报告插入对应分类图片中
    安装nginx
    python,opencv,8位图转24位图
    python 笔记
    python,opencv图像增强
    问卷星的使用教程
    考研数据结构复习随笔-基本概念(一)
    按字寻址 按字节寻址
    在数据结构中用顺序栈解决括号匹配问题
  • 原文地址:https://www.cnblogs.com/borter/p/9434271.html
Copyright © 2011-2022 走看看