zoukankan      html  css  js  c++  java
  • leveldb阅读心得

    From:http://hi.baidu.com/mryuan0/item/62876af79667c6d76325d2f2

    1. 对于用户传递过来的数据,通过转换以其他格式存储,move消耗的时间并不多,关键要设计一个好的内存分配器,比如说memtable的设计。

    2.所有类的数据成员以_结束

    3.序列化,数据格式统一little endian, 测试代码可以这样做, 其中网络字节序列是big endian,而很多机器是little endian, 因为google采用变长整数编码,它就只能使用little endian,这和编码过程密切相关的。陈硕在其muduo中使用的endian.h头文件的函数在机器序列和字节序列之间转换,转换函数为bexxtoh htobexx xx表示64,32

      union w
      {
       int a;
       char b;
      } c;
      c.a = 1;
      return (c.b == 1);

    采用google的变长字节编码,可以极大的优化系统的性能

    采用snappy压缩算法,包含头文件snappy.h

    该文件在/usr/local/include/snappy.h, 里面提供了很多接口,其中可以使用下面的两个接口,看上去比较好用




    size_t Compress(const char* input, size_t input_length, string* output);

    bool Uncompress(const char* compressed, size_t compressed_length,

    string* uncompressed);



    对于数据序列化需要buffer,可以通过string作为buffer,也可以封装vector< char >, 这两者分别被leveldb和陈硕使用

    4,对于不抛出异常的系统,new抛出的异常不算,设计一个status,记录错误的原因, 执行的系统状态,可以极大的简化系统的设计,对于一些不容易出错的情况,比方说系统没有内存,可以不考虑系统的错误,因为这种错误发生,将无法恢复,直接刮掉。

  • 相关阅读:
    shell脚本中生成延时
    linux小技巧
    自定义微信圈分享带的图片和内容
    OOM killer
    svn报错
    Fatal error: Call-time pass-by-reference has been removed
    ThinkPHP3.1.3源码分析---php文件压缩zlib.output_compression 和 ob_gzhandler
    确保 PHP 应用程序的安全
    判断来自电脑还是手机
    以About Us为范例在Zen cart中增加页面
  • 原文地址:https://www.cnblogs.com/xiangshancuizhu/p/2840712.html
Copyright © 2011-2022 走看看