简介
leveldb是一种快速键值存储库,提供从字符串键到字符串值的有序映射。
下载安装
直接在OpenHarmony-SIG仓中搜索leveldb并下载。
使用说明
以OpenHarmony 3.1 Beta的rk3568版本为例
-
库代码存放路径:./third_party/leveldb
-
修改添加依赖的编译脚本,路径:/developtools/bytrace_standard/ohos.build
{
"subsystem": "developtools",
"parts": {
"bytrace_standard": {
"module_list": [
"//developtools/bytrace_standard/interfaces/innerkits/native:bytrace_core",
"//developtools/bytrace_standard/bin:bytrace_target",
"//developtools/bytrace_standard/bin:bytrace.cfg",
"//developtools/bytrace_standard/interfaces/kits/js/napi:bytrace",
"//third_party/leveldb:leveldb"
],
"inner_kits": [
{
"type": "so",
"name": "//developtools/bytrace_standard/interfaces/innerkits/native:bytrace_core",
"header": {
"header_files": [
"bytrace.h"
],
"header_base": "//developtools/bytrace_standard/interfaces/innerkits/native/include"
}
}
],
"test_list": [
"//developtools/bytrace_standard/bin/test:unittest"
]
}
}
}
-
用命令 ./build.sh --product-name rk3568 --ccache 编译
-
测试文件编译
在 developtools/hiperf/BUILD.gn 中的 group(“hiperf_all”) 添加leveldb 的UT测试程序入口: deps += [ “//third_party/leveldb/test:leveldbtest”, ]
然后在编译时指定 --build-target hiperf_all参数:
./build.sh --product-name rk3568–ccache --build-target hiperf_all
编译生成的UT测试程序在 \out\rk3568\tests\unittest\developtools\hiperf\ 目录下。 将以下UT测试程序推送到开发板上依次执行即可。 ./arena_test ./autocompact_test ./bloom_test ./c_test ./cache_test ./coding_test ./corruption_test ./crc32c_test ./db_bench ./db_test ./dbformat_test ./env_posix_test ./env_test ./fault_injection_test ./filename_test ./filter_block_test ./hash_test ./issue178_test ./issue200_test ./issue320_test ./log_test ./logging_test ./memenv_test ./no_destructor_test ./recovery_test ./skiplist_test ./status_test ./table_test ./version_edit_test ./version_set_test ./write_batch_test
接口说明
- 打开一个名为 name 的数据库
Open(const Options& options, const std::string& name, DB** dbptr)
- 将 <key, value> 对写入数据库, 成功返回 OK, 失败返回错误状态
Put(const WriteOptions& options, const Slice& key, const Slice& value)
- 从数据删除指定键为 key 的键值对
Delete(const WriteOptions& options, const Slice& key)
- 对数据库进行批量更新写操作
Write(const WriteOptions& options, WriteBatch* updates)
- 查询键为 key 的数据项, 如果存在则将对应的 value 地址存储到第二个参数中
Get(const ReadOptions& options, const Slice& key, std::string* value)
- 返回基于堆内存的迭代器, 可以用该迭代器遍历整个数据库的内容.
NewIterator(const ReadOptions& options)
- 返回当前 DB 状态的一个快照
GetSnapshot()
- 释放一个之前获取的快照, 释放后, 调用者不能再使用该快照了
ReleaseSnapshot(const Snapshot* snapshot)
- 导出自身状态相关的信息
GetProperty(const Slice& property, std::string* value)
- 将 key 范围 [*begin,*end] 对应的底层存储压紧
CompactRange(const Slice* begin, const Slice* end)
约束与限制
在下述版本验证通过:
DevEco Studio 版本:3.1 Beta1(3.1.0.200),SDK:API9 Beta5(3.2.10.6)
目录结构
|---- leveldb
| |---- cmake #cmake的相关文件
| |---- db #主要机制的实现,包括版本管理,compact,业务读写等功能机制实现
| |---- doc #文档
| |---- helpers
| |---- memenv #简单完全内存的文件系统,提供操作目录文件接口
| |---- include
| |---- leveldb #头文件,外部工程使用leveldb时引用的头文件
| |---- issues #测试问题
| |---- test #单元测试用例
| |---- third_party #三方库代码
| |---- util #通用功能实现
| |---- README.md #安装使用方法
为了能让大家更好的学习鸿蒙(HarmonyOS NEXT)开发技术,这边特意整理了《鸿蒙开发学习手册》(共计890页),希望对大家有所帮助:https://qr21.cn/FV7h05
《鸿蒙开发学习手册》:
如何快速入门:https://qr21.cn/FV7h05
- 基本概念
- 构建第一个ArkTS应用
- ……
开发基础知识:https://qr21.cn/FV7h05
- 应用基础知识
- 配置文件
- 应用数据管理
- 应用安全管理
- 应用隐私保护
- 三方应用调用管控机制
- 资源分类与访问
- 学习ArkTS语言
- ……
基于ArkTS 开发:https://qr21.cn/FV7h05
- Ability开发
- UI开发
- 公共事件与通知
- 窗口管理
- 媒体
- 安全
- 网络与链接
- 电话服务
- 数据管理
- 后台任务(Background Task)管理
- 设备管理
- 设备使用信息统计
- DFX
- 国际化开发
- 折叠屏系列
- ……
鸿蒙开发面试真题(含参考答案):https://qr18.cn/F781PH
鸿蒙开发面试大盘集篇(共计319页):https://qr18.cn/F781PH
1.项目开发必备面试题
2.性能优化方向
3.架构方向
4.鸿蒙开发系统底层方向
5.鸿蒙音视频开发方向
6.鸿蒙车载开发方向
7.鸿蒙南向开发方向