文档章节

LevelDB 编译安装(Debian 8)

norxiva
 norxiva
发布于 2016/07/13 13:53
字数 396
阅读 58
收藏 0
点赞 0
评论 0

环境信息

虚拟机节点(192.168.100.171<debian171>)

Debian jessie 8.5 

LevelDB 1.18

安装leveldb

sudo apt-get install libsnappy-dev
sudo tar xvf leveldb-1.18.tar.gz
cd leveldb-1.18/
sudo make
sudo cp libleveldb.so.1.18 /usr/local/lib
sudo cp libleveldb.a /usr/local/lib
sudo cp -R include/leveldb /usr/local/include
cd /usr/local/lib
sudo ln -s libleveldb.so.1.18 libleveldb.so
sudo ln -s libleveldb.so.1.18 libleveldb.so.1
sudo ldconfig

java代码

package surfin.example.leveldb.simpledemo;

import static org.iq80.leveldb.impl.Iq80DBFactory.asString;
import static org.iq80.leveldb.impl.Iq80DBFactory.bytes;
import static org.iq80.leveldb.impl.Iq80DBFactory.factory;

import java.io.File;
import java.io.IOException;

import org.iq80.leveldb.DB;
import org.iq80.leveldb.DBComparator;
import org.iq80.leveldb.DBIterator;
import org.iq80.leveldb.Options;
import org.iq80.leveldb.ReadOptions;
import org.iq80.leveldb.WriteBatch;
import org.iq80.leveldb.WriteOptions;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class SimpleDemoBootstrap {
	private static final Logger log = LoggerFactory.getLogger(SimpleDemoBootstrap.class);

	public static void main(String[] args) {

		Options options = new Options();
		options.createIfMissing(true);
		DB db = null;
		try {
			db = factory.open(new File("D:/leveldb-example/simpledemo"), options);
			
			//put get delete
			db.put(bytes("Tampa"), bytes("rocks"));
			byte[] tampa_b = db.get(bytes("Tampa"));
			log.info("Tampa: {}", asString(tampa_b));
			WriteOptions wo = new WriteOptions().sync(true);
			db.delete(bytes("Tampa"), wo);
			tampa_b = db.get(bytes("Tampa"));
			log.info("Tampa: {}", asString(tampa_b));

			//write batch
			WriteBatch wb = db.createWriteBatch();
			try{
				
				wb.put(bytes("Tampa"), bytes("green"));
				wb.put(bytes("London"), bytes("red"));
				db.write(wb);
			}finally{
				wb.close();
			}
			
			//Iterating key/values.
			DBIterator iter = db.iterator();
			try{
				for(iter.seekToFirst();iter.hasNext();iter.next()){
					String key = asString(iter.peekNext().getKey());
					String val = asString(iter.peekNext().getValue());
					log.info("iter {}:{}", key, val);
				}
				
			}finally{
				iter.close();
			}
			
			
			//Working against a Snapshot view of the Database.
			ReadOptions ro = new ReadOptions();
			ro.snapshot(db.getSnapshot());
			try {
				iter = db.iterator(ro);
				try{
					for(iter.seekToFirst();iter.hasNext();iter.next()){
						String key = asString(iter.peekNext().getKey());
						String val = asString(iter.peekNext().getValue());
						log.info("snapshot iter {}:{}", key, val);
					}
					
					log.info("snapshot Tampa: {}",asString(db.get(bytes("Tampa"), ro)));
					
				}finally{
					iter.close();
				}

			} finally {
			  // Make sure you close the snapshot to avoid resource leaks.
			  ro.snapshot().close();
			}
			
			//OUsing a custom Comparator.

			DBComparator comparator = new DBComparator(){
			    public int compare(byte[] key1, byte[] key2) {
			        return new String(key1).compareTo(new String(key2));
			    }
			    public String name() {
			        return "simple";
			    }
			    public byte[] findShortestSeparator(byte[] start, byte[] limit) {
			        return start;
			    }
			    public byte[] findShortSuccessor(byte[] key) {
			        return key;
			    }
			};
			
//			log.info(String.valueOf(System.currentTimeMillis()));
			

		} catch (IOException e) {
			log.error(e.getMessage(), e);
		}finally{
			if(db != null){
				try {
					db.close();
				} catch (IOException e) {
					log.error(e.getMessage(), e);
				}
			}
		}
	}
}

pom依赖

<dependency>
	<groupId>org.iq80.leveldb</groupId>
	<artifactId>leveldb</artifactId>
</dependency>

参考资料

https://gist.github.com/dustismo/6203329

https://techoverflow.net/blog/2012/12/14/compiling-installing-leveldb-on-linux/

© 著作权归作者所有

共有 人打赏支持
norxiva
粉丝 0
博文 11
码字总数 5308
作品 0
徐汇
高级程序员
一个参考ssdb,使用go类似的实现redis高性能nosql:ledisdb

起因 ledisdb是一个參考ssdb。採用go实现,底层基于leveldb,相似redis的高性能nosql数据库,提供了kv,list,hash以及zset数据结构的支持。 我们如今的应用极大的依赖redis。但随着我们用户...

mickelfeng ⋅ 06/08 ⋅ 0

ActiveMQ集群方案(下)

版权声明:欢迎转载,但是看在我辛勤劳动的份上,请注明来源:http://blog.csdn.net/yinwenjie(未经允许严禁用于商业用途!) https://blog.csdn.net/yinwenjie/article/details/51205822 目...

yunlielai ⋅ 04/15 ⋅ 0

RocksDB 5.13.3 发布,引入压缩库默认级通知方法

RocksDB 5.13.3 发布了,RocksDB 是一个来自 Facebook 的可嵌入的支持持久化的 key-value 存储系统,也可作为 C/S 模式下的存储数据库。RocksDB 基于 LevelDB 构建。 此次发布更新内容如下:...

达尔文 ⋅ 06/09 ⋅ 0

key-value 存储系统 RocksDB v5.13.3 发布,Bug 修复

RocksDB v5.13.3 已发布。该版本主要是修复了 bug。具体如下: Fix assertion when reading bloom filter of SST files containing range deletions but no data 主要是在当读取包含范围删除...

局长 ⋅ 06/08 ⋅ 0

RocksDB 5.13.2 发布,引入压缩库默认级通知方法

RocksDB 5.13.2 发布了,RocksDB 是一个来自 Facebook 的可嵌入的支持持久化的 key-value 存储系统,也可作为 C/S 模式下的存储数据库。RocksDB 基于 LevelDB 构建。 此次发布更新内容如下:...

雨田桑 ⋅ 05/27 ⋅ 0

16- 深度学习之神经网络核心原理与算法-caffe&keras框架图片分类

之前我们在使用cnn做图片分类的时候使用了CIFAR-10数据集 其他框架对于CIFAR-10的图片分类是怎么做的 来与TensorFlow做对比。 Caffe Keras 安装 官方安装文档: https://github.com/IraAI/ca...

天涯明月笙 ⋅ 06/04 ⋅ 0

开源分布式 NewSQL 关系型数据库 - TiDB

TiDB 是国内 PingCAP 团队开发的一个分布式 SQL 数据库。其灵感来自于 Google 的 F1 和 Google spanner, TiDB 支持包括传统 RDBMS 和 NoSQL 的特性。 TiDB 的源码已经托管在 Git@OSC 上,详情...

goroutine ⋅ 2015/09/06 ⋅ 37

ActiveMq笔记2-消息持久化

为了避免意外宕机以后丢失信息,需要做到重启后可以恢复消息队列,消息系统一般都会采用持久化机制。 ActiveMQ的消息持久化机制有JDBC,AMQ,KahaDB和LevelDB, 无论使用哪种持久化方式,消息...

狂小白 ⋅ 02/25 ⋅ 0

[Notes]深度学习——caffe工具使用

本篇文章是我利用 caffe进行深度学习的知识点总结,包含别人学习笔记链接 caffe简介 caffe的作者为UC Berkeley大学的贾扬清。caffe是一个c++/CUDA架构,支持命令行、Python、Matlab接口,可以...

nanbei2463776506 ⋅ 04/24 ⋅ 0

比特币源码研读之一随机种子生成

本文由【区块链研习社】优质内容计划支持,更多关于区块链的深度好文,请点击【区块链研习社】 本文作者:区块链研习比特币源码研读班 韬声依旧在路上 从今天开始我为大家解读比特币源码的随...

韬声依旧在路上 ⋅ 05/07 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Day 17 vim简介与一般模式介绍

vim简介 vi和Vim的最大区别就是编辑一个文件时vi不会显示颜色,而Vim会显示颜色。显示颜色更便于用户编辑,凄然功能没有太大的区别 使用 yum install -y vim-enhanced 安装 vim的三种常用模式...

杉下 ⋅ 32分钟前 ⋅ 0

【每天一个JQuery特效】根据可见状态确定是否显示或隐藏元素(3)

效果图示: 主要代码: <!DOCTYPE html><html><head><meta charset="UTF-8"><title>根据可见状态确定 是否显示或隐藏元素</title><script src="js/jquery-3.3.1.min.js" ty......

Rhymo-Wu ⋅ 41分钟前 ⋅ 0

OSChina 周四乱弹 —— 初中我身体就已经垮了,不知道为什么

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @加油东溪少年 :下完这场雨 后弦 《下完这场雨》- 后弦 手机党少年们想听歌,请使劲儿戳(这里) @马丁的代码 :买了日本 日本果然赢了 翻了...

小小编辑 ⋅ 今天 ⋅ 10

浅谈springboot Web模式下的线程安全问题

我们在@RestController下,一般都是@AutoWired一些Service,由于这些Service都是单例,所以并不存在线程安全问题。 由于Controller本身是单例模式 (非线程安全的), 这意味着每个request过来,...

算法之名 ⋅ 今天 ⋅ 0

知乎Java数据结构

作者:匿名用户 链接:https://www.zhihu.com/question/35947829/answer/66113038 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 感觉知乎上嘲讽题主简...

颖伙虫 ⋅ 今天 ⋅ 0

Confluence 6 恢复一个站点有关使用站点导出为备份的说明

推荐使用生产备份策略。我们推荐你针对你的生产环境中使用的 Confluence 参考 Production Backup Strategy 页面中的内容进行备份和恢复(这个需要你备份你的数据库和 home 目录)。XML 导出备...

honeymose ⋅ 今天 ⋅ 0

JavaScript零基础入门——(九)JavaScript的函数

JavaScript零基础入门——(九)JavaScript的函数 欢迎回到我们的JavaScript零基础入门,上一节课我们了解了有关JS中数组的相关知识点,不知道大家有没有自己去敲一敲,消化一下?这一节课,...

JandenMa ⋅ 今天 ⋅ 0

火狐浏览器各版本下载及插件httprequest

各版本下载地址:http://ftp.mozilla.org/pub/mozilla.org//firefox/releases/ httprequest插件截至57版本可用

xiaoge2016 ⋅ 今天 ⋅ 0

Docker系列教程28-实战:使用Docker Compose运行ELK

原文:http://www.itmuch.com/docker/28-docker-compose-in-action-elk/,转载请说明出处。 ElasticSearch【存储】 Logtash【日志聚合器】 Kibana【界面】 答案: version: '2'services: ...

周立_ITMuch ⋅ 今天 ⋅ 0

使用快嘉sdkg极速搭建接口模拟系统

在具体项目研发过程中,一旦前后端双方约定好接口,前端和app同事就会希望后台同事可以尽快提供可供对接的接口方便调试,而对后台同事来说定好接口还仅是个开始、设计流程,实现业务逻辑,编...

fastjrun ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部