1. 程式人生 > >levelDB使用教程(個人理解)

levelDB使用教程(個人理解)

準備操作

 1.首先levelDB使用k-v形式儲存,但是k-v都是byte[]形式儲存,在區塊鏈中主要是儲存區塊標頭檔案,所以要將hash值和資料轉換為byte[]陣列形式。
 2.java的序列化與反序列化
 3.其次是levelDB的配置
pom.xml
<dependency>
    <groupId>org.iq80.leveldb</groupId>
    <artifactId>leveldb</artifactId>
    <version>0.7</version>
</dependency>
<dependency>
    <groupId>org.iq80.leveldb</groupId>
    <artifactId>leveldb-api</artifactId>
    <version>0.7</version>
</dependency>

java的序列化與反序列化:
1.強制轉化(byte)
2.String string = “hello world”;
string轉化為byte[]陣列
byte[] bytes = string.getBytes();
byte[]轉為string
String s = new String(bytes);
3.實現Serializable介面:
1.首先宣告class XXX implements Serializable{}
2.宣告一個工具類 public class SerializeUtil
{
//傳輸儲存的檔案位置
private static String file_name = “d://obj.bin”;

        //序列化方法
        public void writeObj(Serializable s){  ObjectOutputStream oos = new ObjectOutputStream(new   FileOutputStream(file_name));
        oos.writeObject(s);
        System.out.println("序列化成功");
        oos.close();

}
//反序列化方法
public object readobject(){
ObjectInputStream input = new ObjectInputStream(new FileInputStream(file_name));
obj = input.readObejct();
input.close();

return object;}

    }
    3.實現工具類物件,顯示把xxx作為引數傳入序列化方法中,隨後反序列化方法(有時候需要進行型別轉化,不過傳來為object型,轉換挺方便的)

———-levelDB操作:
準備好資料之後,先宣告三個物件:(三個類都為匯入的類,不用自己編寫)
DBFactory factory = new Iq80DBFactory();
Options options = new Options().createIfMissing(true);
DB db = factory.open(new File(path), options);
db.put(byte[],byte[]);//寫操作
宣告個操作物件
DBIterator iterator=db.iterator();
while(iterator.hasNext()) {
Map.Entry