gpt4 book ai didi

java - 如何持久化 Guava AtomicLongMap ?

转载 作者:行者123 更新时间:2023-11-30 02:12:57 25 4
gpt4 key购买 nike

我有这样的要求,我需要我的应用程序生成持久序列。通常,我会使用数据库,但不幸的是,我的数据库不支持任何序列。

在这种情况下,我想开发一个 API 来持久化,我从 Google 的 Guava 库中找到了这个类 - AtomicLongMap,这正是我所需要的。问题是,我需要我的值(value)观在重新启动后持续存在,有什么办法可以使其持续存在并在崩溃中幸存下来吗?

提前致谢,问候,

最佳答案

由于 java 应用程序在重新启动后将不会运行,因此您需要 JVM 之外的东西来存储数据。

通常这可以是数据库,但听起来这个选项不适合您。

另一种选择是将数据写入文件。当应用程序启动时,它将读取该文件并填充 AtomicLongMap。

以下是如何从文件读取状态和向文件写入状态的示例:

导入

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.HashMap;
import java.util.Map;

从文件中读取

@SuppressWarnings("unchecked")
public AtomicLongMap<String> readFromFile(File file) throws IOException, ClassNotFoundException {

try(FileInputStream fis = new FileInputStream(file);

ObjectInputStream ois = new ObjectInputStream(fis);) {


Map<String,Long>readObj = (Map<String, Long>)ois.readObject();

return AtomicLongMap.create(readObj);

}


}

写入文件

public void writeToFile(AtomicLongMap<String>map, File file) throws IOException {
HashMap<String, Long>newMap = new HashMap<>( map.asMap());

try(FileOutputStream fout = new FileOutputStream(file);
ObjectOutputStream oos = new ObjectOutputStream(fout);) {

oos.writeObject(newMap);

}

}

关于java - 如何持久化 Guava AtomicLongMap ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49561620/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com