【leveldb果断学习系列-1】模仿写个小程序体验一下

简介: 从今日起开始学习google大神开发的高性能key-value数据库leveldb,版本1.12,并不定期地分享学习心得。之所以取名为果断学习,是有点给自己施压的意思,其实很早就想学了,只是由于时间关系拖到现在。如今要狠下心来把此开源技术吃透,并不一定要懂得全部源码,但要知道它是怎么设计的,这一点为什么要这么做,设计者是怎么想的等等,这才是真正应该学习的地方。 基本介绍网上都有,我就不说

从今日起开始学习google大神开发的高性能key-value数据库leveldb,版本1.12,并不定期地分享学习心得。之所以取名为果断学习,是有点给自己施压的意思,其实很早就想学了,只是由于时间关系拖到现在。如今要狠下心来把此开源技术吃透,并不一定要懂得全部源码,但要知道它是怎么设计的,这一点为什么要这么做,设计者是怎么想的等等,这才是真正应该学习的地方。

基本介绍网上都有,我就不说太多了。虽然个人学习免不了要先学习别人的,但既然自己要做,就要做得个性化,把别人东西直接复制粘贴这种事,懒得做;学习顺序还是老规矩,先模仿编译、写个示例,体验一下,有个感性认识,其余任何文字介绍都以后再说!当然啦,既然是用C++写的,读者肯定得要懂C++了,否则看起来就很吃力了。

好,我在这里找了个示例代码,包装如下:

#include <iostream>
#include <cassert>
#include "leveldb/db.h"

using namespace std;
//以下用到的类型都在leveldb中,所以事先声明
//如果有类型名称碰巧与其它库冲突,可在其前
//加上域解析符
using namespace leveldb;

int main()
{
	DB* db;
	Options opt;
	opt.create_if_missing = true;
	string dbpath = "dbpath";//数据库数据目录,自己指定
	Status s = DB::Open(opt,dbpath,&db);
	assert(s.ok());
	cout << "db open ok\n";

	//key-value键值对
	string key = "name";
	string val = "cshi";
	string val2;
	//写入
	s = db->Put(WriteOptions(),key,val);
	if (s.ok())
		//读出
		s = db->Get(ReadOptions(),key,&val2);
	cout << "value:" << val2 << endl;
<span style="white-space:pre">	</span>delete db;
	return 0;
}

上述文件起名为test.cpp,放在了leveldb-1.12/mycode下,源码已经由make编译生成了相应的静态与动态库libleveldb.a和leveldb.so.*

为方便起见,随手写了个makefile,如下:

test:test.cpp
	g++ -o $@ $< -g -I../include ../libleveldb.a -lpthread

生成test执行文件后,终端执行:



此时我们查看dbpath文件夹后就会发现生成了以下文件:

000003.log  CURRENT  LOCK  LOG  MANIFEST-000002

至于文件是干嘛的,不如放在下一节讲吧。从字面上看,log是日志文件,表明干了什么操作,LOCK貌似属于锁,不知道锁什么,CURRENT,MANIFEST就猜不出啥了。

在这顺便吐槽一下百度的搜索,输入leveldb结果中竟然没有官方网站(http://leveldb.org/),其排名有这么低吗?我还是bing中搜到的。。


目录
相关文章
|
1月前
|
小程序 Devops 开发工具
支付宝小程序入门学习之一:如何创建支付宝小程序并在手机上预览
支付宝小程序入门学习之一:如何创建支付宝小程序并在手机上预览
30 0
|
2月前
|
JSON 小程序 前端开发
微信小程序框架(五)-全面详解(学习总结---从入门到深化)
微信小程序框架(五)-全面详解(学习总结---从入门到深化)
33 0
|
2月前
|
存储 缓存 JSON
微信小程序框架(四)-全面详解(学习总结---从入门到深化)
微信小程序框架(四)-全面详解(学习总结---从入门到深化)
151 0
|
1月前
|
存储 小程序 JavaScript
基于微信小程序的移动学习平台的设计与实现_kaic
基于微信小程序的移动学习平台的设计与实现_kaic
|
5天前
|
小程序 JavaScript Java
基于SpringBoot+Vue+uniapp微信小程序的英语学习交流平台的详细设计和实现
基于SpringBoot+Vue+uniapp微信小程序的英语学习交流平台的详细设计和实现
21 2
|
5天前
|
小程序 JavaScript Java
基于SpringBoot+Vue+uniapp微信小程序的移动学习平台的详细设计和实现
基于SpringBoot+Vue+uniapp微信小程序的移动学习平台的详细设计和实现
30 1
|
1月前
|
小程序 JavaScript 容器
微信小程序入门学习02-TDesign中的自定义组件
微信小程序入门学习02-TDesign中的自定义组件
|
1月前
|
JSON 小程序 前端开发
微信小程序开发入门学习01-TDesign模板解读
微信小程序开发入门学习01-TDesign模板解读
|
1月前
|
小程序 JavaScript 前端开发
【原力计划小程序】1、一篇文章深入了解小程序的学习路线(以项目驱动的方式带你学习微信小程序)
【原力计划小程序】1、一篇文章深入了解小程序的学习路线(以项目驱动的方式带你学习微信小程序)
53 1
|
2月前
|
小程序 JavaScript 前端开发
微信小程序框架(二)-全面详解(学习总结---从入门到深化)
微信小程序框架(二)-全面详解(学习总结---从入门到深化)
94 0

热门文章

最新文章