欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

區(qū)塊鏈常用數(shù)據(jù)庫leveldb用java來實現(xiàn)常規(guī)操作的方法

 更新時間:2021年02月03日 09:36:36   作者:向彪-blockchain  
這篇文章主要介紹了區(qū)塊鏈常用數(shù)據(jù)庫leveldb用java來實現(xiàn)常規(guī)操作,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

前言

LevelDB 是一種Key-Value存儲數(shù)據(jù)庫百度百科上介紹 性能非常強(qiáng)悍 可以支撐十億級這段時間在研究區(qū)塊鏈的時候發(fā)現(xiàn)的這個數(shù)據(jù)庫。LevelDB 是單進(jìn)程的服務(wù),性能非常之高,在一臺4核Q6600的CPU機(jī)器上,每秒鐘寫數(shù)據(jù)超過40w,而隨機(jī)讀的性能每秒鐘超過10w。 此處隨機(jī)讀是完全命中內(nèi)存的速度,如果是不命中 速度大大下降,LevelDB 只是一個 C/C++ 編程語言的庫, 不包含網(wǎng)絡(luò)服務(wù)封裝, 所以無法像一般意義的存儲服務(wù)器(如 MySQL)那樣, 用客戶端來連接它. LevelDB 自己也聲明, 使用者應(yīng)該封裝自己的網(wǎng)絡(luò)服務(wù)器.

引入SDK

<dependency>
		<groupId>org.iq80.leveldb</groupId>
		<artifactId>leveldb-api</artifactId>
		<version>0.10</version>
	</dependency>
	<dependency>
		<groupId>org.iq80.leveldb</groupId>
		<artifactId>leveldb</artifactId>
		<version>0.10</version>
	</dependency>

初始化DB

DBFactory factory = new Iq80DBFactory();
	Options options = new Options();
	options.createIfMissing(true);
	//folder 是db存儲目錄
	DB db = factory.open(new File(folder), options);

存儲Key Value 值

//levelDB 的api存儲都是字節(jié)數(shù)組 所以這里需要轉(zhuǎn)成字節(jié)數(shù)組
	db.put(Iq80DBFactory.bytes(key), Iq80DBFactory.bytes(value));

獲取Value

byte[] bytes = db.get(Iq80DBFactory.bytes(key));
	String value = Iq80DBFactory.asString(bytes);

刪除|更改

//刪除
	db.delete(Iq80DBFactory.bytes(key));
	
	//更改 重新put新的key - value即可
	db.put(Iq80DBFactory.bytes(key), Iq80DBFactory.bytes(value));

遍歷所有數(shù)據(jù)

	public LinkedHashMap<String, String> iteratorDb() {
    DBIterator iterator = db.iterator();
    LinkedHashMap<String, String> linkedHashMap = new LinkedHashMap<>();
    while (iterator.hasNext()) {
      Map.Entry<byte[], byte[]> next = iterator.next();
      String key = Iq80DBFactory.asString(next.getKey());
      String value = Iq80DBFactory.asString(next.getValue());
      linkedHashMap.put(key, value);
    }
    return linkedHashMap;
  }

測試插入一百萬條數(shù)據(jù)

基于SpringBoot搭建的控制器

隨機(jī)生成 指定數(shù)量的UUID 并且插入到LevelDB

從請求 到響應(yīng) 5.5秒左右 如果再拋掉生成UUID的時間 可能更快 哈哈

@ResponseBody
  @GetMapping("/generate")
  public ResponeEntity generate(Long count) {
    DB db = levelDb.getDb();
    //創(chuàng)建批量處理
    WriteBatch batch = db.createWriteBatch();
    for (int i = 0; i < count; i++) {
      String uuid = UUID.randomUUID().toString();
      batch.put(Iq80DBFactory.bytes(uuid), Iq80DBFactory.bytes(uuid));
    }
    //執(zhí)行寫入
    db.write(batch);
    return buildRespone(null);
  }

3404887b3eaa103ad6387e3.jpg

測試從一百萬數(shù)據(jù)中取出一條

PostMan 請求到響應(yīng)時間 19毫秒

@ResponseBody
  @GetMapping("/getLevel")
  public ResponeEntity getLevel(String key) {
    byte[] bytes = db.get(Iq80DBFactory.bytes(key));
    String value = Iq80DBFactory.asString(bytes);
    return buildRespone(value);
  }

3404887000e3622dd0561ce.jpg

到此這篇關(guān)于區(qū)塊鏈常用數(shù)據(jù)庫leveldb用java來實現(xiàn)常規(guī)操作的文章就介紹到這了,更多相關(guān)區(qū)塊鏈常用數(shù)據(jù)庫leveldb用java來實現(xiàn)常規(guī)操作內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Reactor定制一個生產(chǎn)的WebClient實現(xiàn)示例

    Reactor定制一個生產(chǎn)的WebClient實現(xiàn)示例

    這篇文章主要為大家介紹了Reactor定制一個生產(chǎn)的WebClient實現(xiàn)示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • Java和Python現(xiàn)在都挺火,我應(yīng)該怎么選?

    Java和Python現(xiàn)在都挺火,我應(yīng)該怎么選?

    這篇文章主要介紹了Java和Python現(xiàn)在都挺火,我應(yīng)該怎么選?本文通過全面分析給大家做個參考,需要的朋友可以參考下
    2020-07-07
  • Java IO字符流緩沖區(qū)實現(xiàn)原理解析

    Java IO字符流緩沖區(qū)實現(xiàn)原理解析

    這篇文章主要介紹了Java IO字符流緩沖區(qū)實現(xiàn)原理解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-05-05
  • JavaWeb實現(xiàn)學(xué)生信息管理系統(tǒng)(3)

    JavaWeb實現(xiàn)學(xué)生信息管理系統(tǒng)(3)

    這篇文章主要為大家詳細(xì)介紹了JavaWeb實現(xiàn)學(xué)生信息管理系統(tǒng)第三篇,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • JavaWeb倉庫管理系統(tǒng)詳解

    JavaWeb倉庫管理系統(tǒng)詳解

    這篇文章主要為大家詳細(xì)介紹了JavaWeb倉庫管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Java多線程之鎖的強(qiáng)化學(xué)習(xí)

    Java多線程之鎖的強(qiáng)化學(xué)習(xí)

    Java多線程的鎖都是基于對象的,Java中的每一個對象都可以作為一個鎖。這篇文章主要來通過一下示例為大家強(qiáng)化一下鎖的相關(guān)知識的掌握,希望對大家有所幫助
    2023-02-02
  • Java中的StringBuilder性能測試

    Java中的StringBuilder性能測試

    這篇文章主要介紹了Java中的StringBuilder性能測試,本文包含測試代碼和測試結(jié)果,最后得出結(jié)論,需要的朋友可以參考下
    2014-09-09
  • java 中歸并排序算法詳解

    java 中歸并排序算法詳解

    這篇文章主要介紹了java 中歸并排序算法詳解的相關(guān)資料,歸并排序算法又稱為合并排序算法,是一種時間復(fù)雜度為O(N logN)的排序算法,因而其在平常生活工作中應(yīng)用非常廣泛,需要的朋友可以參考下
    2017-09-09
  • spring boot異步(Async)任務(wù)調(diào)度實現(xiàn)方法

    spring boot異步(Async)任務(wù)調(diào)度實現(xiàn)方法

    在沒有使用spring boot之前,我們的做法是在配置文件中定義一個任務(wù)池,然后將@Async注解的任務(wù)丟到任務(wù)池中去執(zhí)行,那么在spring boot中,怎么來實現(xiàn)異步任務(wù)的調(diào)用了,下面通過本文給大家講解,需要的朋友參考下
    2018-02-02
  • eclipse下配置Spring環(huán)境的方法步驟

    eclipse下配置Spring環(huán)境的方法步驟

    這篇文章主要介紹了eclipse下配置Spring環(huán)境的方法步驟,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-07-07

最新評論