加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 使用LinkedHashMap的多维字节数组…有更好的方法吗?

发布时间:2020-12-15 02:22:50 所属栏目:Java 来源:网络整理
导读:我是 Java编程的新手,所以请原谅我的新问题:). 我正在使用LinkedHashMap作为我正在修改的应用程序的文件缓存,以帮助开发.我这样做是为了减少I / O开销,从而提高性能.这个问题是以许多其他方式引入开销. 相关来源看起来像这样. // Retrieve Data From LinkedH
我是 Java编程的新手,所以请原谅我的新问题:).

我正在使用LinkedHashMap作为我正在修改的应用程序的文件缓存,以帮助开发.我这样做是为了减少I / O开销,从而提高性能.这个问题是以许多其他方式引入开销.

相关来源看起来像这样.

// Retrieve Data From LinkedHashMap  
byte grid[][][] = null;  
if(file.exists())
{  
    if (!cache.containsKey(file))  
    {
        FileInputStream fis = new FileInputStream(file);
        BufferedInputStream bis = new BufferedInputStream(fis,16384);
        ObjectInputStream ois = new ObjectInputStream(bis);
        cache.put(file,ois.readObject());
        ois.close();
    }
    grid = (byte[][][]) cache.get(file);
} else {
    grid = new byte[8][8][];
}

以下是我用来保存数据的内容.加载数据的方法恰恰相反.

ByteArrayOutputStream baos = new ByteArrayOutputStream();
GZIPOutputStream gos = new GZIPOutputStream(baos){{    def.setLevel(2);}};
BufferedOutputStream bos = new BufferedOutputStream(gos,16384);
DataOutputStream dos = new DataOutputStream(bos);
// Some code writes to dos
dos.close();
byte[cx][cz] = baos.toByteArray();
baos.close();
cache.put(file,grid);

这是缓存的声明.

private static LinkedHashMap<File,Object> cache = new LinkedHashMap<File,Object>(64,1.1f,true)
{protected boolean removeEldestEntry(Map.Entry<File,Object> eldest) 
    {
        return size() > 64;
    }
}

由于我对Java流礼仪非常不熟悉,因此上述代码很可能看起来很草率.我也确信有更有效的方法来完成上述操作,例如放置缓冲区的位置.

无论如何,我的主要问题是:每当我需要对单个块做任何事情时,我必须将所有网格数据转换为对象,将其发送到缓存,然后编写文件.这是一种非常低效的做事方式.我想知道是否有更好的方法来做到这一点,所以我没有得到();当我只需要访问那一个块时,整个byte [8] [8] []数组.我喜欢做chunk = cache.get [cx] cz这样的事情,但我确信它并不那么简单.

无论如何,正如我先前所说,请原谅问题,如果答案是显而易见的,我只是一个不起眼的新事物:D.我非常感谢任何输入:).

谢谢.

解决方法

如果您的目标是减少I / O开销,那么如何将byte [] [] []对象放在一个包装对象中,这会添加脏标志的概念?

这样,您可以减少修改时写入文件的次数,只有在使用缓存完成后才将脏对象写入磁盘,或者在插入完整缓存时即将删除最旧的对象.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读