guava cache 为什么删除元素时移动元素

guava cache 为什么删除元素时移动元素,第1张

在guava中数据的移除分为被动移除主动移除薯薯两种

被动移除数据方式,guava默认提供了三种方式:

基于大小的移除

 看字面意思就知道就是按照缓存的大小来移除,如果即将到达指定的大小,那就会把不常用的键值对从cache中移除。

guava提供了两个基于时间移除的方法

  expireAfterAccess(long, TimeUnit)  这个方法是根据某个键值对最后一次访问之后多少时间后移除

  基于引用的缓碰移除

   这种移除方式主要是基于java的垃圾回收机制,根据键或者值的引用关系决定移除,个人对垃圾回收这块不是非常了解,窃以为不太可靠。。也不常用。。所以没有研究,数哪者欢迎补充。

主动移除数据方式

主动移除有三种方法:

单独移除用 Cache.invalidate(key)

批量移除用 Cache.invalidateAll(keys)

移除所有用 Cache.invalidateAll()

复制文件

//通过guava 实现文件复制

private static String from = "D:\\自定义代码\\Guava\\guava\\src\\1.txt"

private static String to = "D:\\自定义代码\\Guava\\guava\\src\\2.txt"

Files.copy(new File(from),new File(to))

//通过java NIO实现文件复制

java.nio.file.Files.copy(Paths.get(from),

Paths.get(to), StandardCopyOption.REPLACE_EXISTING)

2、移动文件

//to若存在,将被删除,重新生成

Files.move(new File(from),new File(to))

3、按山前锋行读取文件

//读取文件悔闭第一行

String configJson = Files.readFirstLine(file, Charsets.UTF_8)

//将文件每一行读到list里逗晌

List readLines = Files.readLines(file, Charsets.UTF_8)

//按照条件,将文件每行读到list里

Files.readLines(file, Charsets.UTF_8, new LineProcessor>() {

List list = new ArrayList()

@Override

public List getResult() {

return list

}

@Override

public boolean processLine(String arg0) throws IOException {

// TODO Auto-generated method stub

return false

}

})

4、计算文件hashcode (可对比两个文件是否一样)

//Hashing.md5()Hashing.sha256()

HashCode hash = Files.asByteSource(new File(to)).hash(Hashing.sha512())


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12332350.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存