首页 > 社交 > 科普中国

「LevelDB从前门到后门」之蜻蜓点水篇

常驻编辑 科普中国 2022-10-15 前门   蜻蜓点水   后门   底层   抽象   静态   模块   接口   版本   代码   数据库   文件   官方
  • include/leveldb/write_batch.h:原子地将多个操作应用到数据库。
  • include/leveldb/slice.h:类似 string,维护着指向字节数组的指针和对应的长度。
  • include/leveldb/status.h:许多公共接口都会返回 Status,用于报告成功或各种错误。
  • include/leveldb/env.h:操作系统环境的抽象,该接口的 posix 实现位于 util/env_posix.cc 中.
  • include/leveldb/table.h, include/leveldb/table_builder.h:底层的模块,大多数用户可能不会直接用到。
  • 我们可以编写一段代码,来进行简单的测试:DSd拜客生活常识网

    #include 
    #include 
    #include 
    #include 
    using namespace leveldb;
    
    int main()
    
    {
        leveldb::DB* db;
        leveldb::Options options;
        options.create_if_missing = true;
        // 打开一个数据库,不存在就创建
        leveldb::Status status = leveldb::DB::Open(options, "/tmp/testdb", &db);
        assert(status.ok());
    
       // 插入一个键值对
        status = db->Put(leveldb::WriteOptions(), "hello", "LevelDB");
        assert(status.ok());
    
       // 读取键值对
        std::string value;
        status = db->Get(leveldb::ReadOptions(), "hello", &value);
    
        assert(status.ok());
        std::cout << value << std::endl;
    
        delete db;
        return 0;
    }

    编译命令:DSd拜客生活常识网

    g++   test_db.cc  -o test_db  -L /usr/local/lib64  -lleveldb -lpthread -D_GLIBCXX_USE_CXX11_ABI=0  -std=c++11

    指定静态库路径:-L /usr/local/lib64 ,静态库名称:-lleveldb D_GLIBCXX_USE_CXX11_ABI:GCC版本1.5前后接口兼容性问题闭坑参数。DSd拜客生活常识网

    执行test_db文件后,进入/tmp/testdb目录下,看到以下几个文件:DSd拜客生活常识网

    [root@localhost testdb]# cd /tmp/testdb/
    [root@localhost testdb]# ll
    total 16
    -rw-r--r-- 1 root root 34 Oct 14 03:45 000003.log
    -rw-r--r-- 1 root root 16 Oct 14 03:45 CURRENT
    -rw-r--r-- 1 root root  0 Oct 14 03:45 LOCK
    -rw-r--r-- 1 root root 77 Oct 14 03:45 LOG
    -rw-r--r-- 1 root root 50 Oct 14 03:45 MANIFEST-000002
    [root@localhost testdb]# pwd
    /tmp/testdb
    [root@localhost testdb]#

    喜欢用Java的同学可以引入对应的文件包同样可以完成上面的操作,POM文件:DSd拜客生活常识网

    
          org.iq80.leveldb
          leveldb-api
          0.12
    
    
          org.iq80.leveldb
          leveldb
          0.12
    

    Java代码:DSd拜客生活常识网

    import org.iq80.leveldb.DB;
    import org.iq80.leveldb.DBFactory;
    import org.iq80.leveldb.Options;
    import org.iq80.leveldb.impl.Iq80DBFactory;
    import java.io.File;
    import java.io.IOException;
    
    public class TestLevelDB {
        public static void main(String[] args) throws IOException {
            DBFactory factory = new Iq80DBFactory();
            Options options = new Options();
            options.createIfMissing(true);
            DB db = factory.open(new File("/tmp/testdb"), options);
            db.put(Iq80DBFactory.bytes("leveldb") , Iq80DBFactory.bytes("It is leveldb."));
            byte[] bytes = db.get(Iq80DBFactory.bytes("leveldb"));
            System.out.println(Iq80DBFactory.asString(bytes));
        }
    }    

    相关阅读:

  • 探访|“叮叮当当……” 前门大街人气儿回来啦!
  • 大前门多少钱一包 2022年最新价格表
  • 趣味保龄球、棒球九宫格,前门街道体育文化节让居民感受
  • 【走进北京网红打卡地】前门大栅栏街区国潮咖啡
  • 新能源车疯狂涨价,大哥索性花6万买了台二手MINI
  • 前门大栅栏
  • 怀旧之渑池车站
  • 美国前总统千金1.7亿豪宅曝光!网友:不止身材火辣,还很懂
  • 自从老婆学会了开车,你都经历了什么?
  • 国产中大型车到底该怎么选择
    • 网站地图 |
    • 声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。文章内容仅供参考,不做权威认证,如若验证其真实性,请咨询相关权威专业人士。