2 レベル キャッシュの実装の第 2 レベルに取り組んでいます。この機能はJDKに含まれているため、標準のJavaシリアライズメカニズム(Serializable)を使用したシリアライズオブジェクトのオプションを検討しています。入力オブジェクトについて私が知っているのは、それらが Serializable インターフェイスを実装するということだけです。私が知る限り、Java Input/OutputObject ストリームは、いくつかのオブジェクトのシリアル化と逆シリアル化をサポートしています。次に例を示します。
ObjectOutputStream oout = new ObjectOutputStream(
new FileOutputStream("output.bin"));
oout.writeObject(o1);
oout.writeObject(o2);
oout.writeObject(o3);
oout.flush();
oout.close();
ObjectInputStream oin = new ObjectInputStream(
new FileInputStream("output.bin"));
Object ob1 = oin.readObject();
Object ob2 = oin.readObject();
Object ob3 = oin.readObject();
しかし、ここでは読み取りの順序が 1 つしかなく、バイナリ ファイル "output.bin" に対してランダムなオブジェクトを追加/削除/更新することはできません。これが必要なのは、キャッシュの第 2 レベルのアイデアが hashmap/hashtable に実装されているのと同じメカニズムを使用しているためです。そのため、バケットはディレクトリになり、チェーンはファイルになります。
そのため、複数のオブジェクトをファイルに保存し、同時にバイナリファイルからランダムオブジェクトを追加/削除できるときに、このようなバイナリシリアル化を実装する方法の正しい方法を探しています。それについて教えていただけますか?
ありがとう。