亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何序列化復雜的磁盤映射?

如何序列化復雜的磁盤映射?

白板的微信 2022-08-03 16:44:10
我有一個簡單的內存緩存使用.我希望該緩存在重新啟動后繼續存在。這意味著,在關機時,我想將內容寫入本地磁盤。在應用程序啟動時,我想將本地內容讀入緩存映射中。ConcurrentHashMap我不需要在本地磁盤緩存上進行任何查詢查找。//simple key-value storeprivate final Map<String, Wrapper> cache = new ConcurrentHashMap<>();public static class Wrapper {    public List<Transaction> transactions;    public LocalDateTime timestamp;    public static class Transaction {        public String request;        public String response;    }}問題:你能建議一個現有的庫,可以簡單地將如此復雜的內容寫入/讀取到本地文件嗎?Map我考慮過將整個內容序列化為對象,但是由于我需要在應用程序重新啟動時讀取該緩存,因此性能很重要。使用json可能不是最好的選擇。json
查看完整描述

2 回答

?
繁花如伊

TA貢獻2012條經驗 獲得超12個贊

您可以編寫自己的方法來序列化和反序列化對象。請注意,使用共享資源 IO 庫中的 FileUtils 來寫入文件和讀取文件。


public void serializeAndWriteToFile(Object o) {

    try {

        ByteArrayOutputStream baos = new ByteArrayOutputStream();

        ObjectOutputStream oos = new ObjectOutputStream(baos);

        oos.writeObject(o);

        FileUtils.writeByteArrayToFile(new File("D:\\Test.txt"), baos.toByteArray());

    } catch (IOException ioe) {

        // Handle exception

    }

}


public void readFromFileAndDeserialize() {

    try {

        ByteArrayInputStream bais = new ByteArrayInputStream(FileUtils.readFileoByteArray(new File("D:\\Test.txt")));

        ObjectInutStream ois = ne ObjectInutStream(bais);

        Object o = ois.readObject();

        // Type cast o to your object before using it

    } catch (IOException | ClassNotFoundException e) {

        // Handle exception

    }

}


查看完整回答
反對 回復 2022-08-03
?
HUX布斯

TA貢獻1876條經驗 獲得超6個贊

你可以看看MapDB。

它完全符合您的要求。


查看完整回答
反對 回復 2022-08-03
  • 2 回答
  • 0 關注
  • 99 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號