- 博客(19)
- 资源 (2)
- 收藏
- 关注
原创 leveldb NVM改造
NVM(Non-volatile Memory),非易失性内存,是一种新型的高速非易失性存储设备,具有百纳秒级的读写延迟和远高于SSD的读写吞吐能力,并且具有字节可寻址的特性,CPU能直接访问到NVM上的数据,不需要经过内存。
2024-09-03 17:45:37 401
原创 leveldb 代码阅读七
布隆过滤器(英语:Bloom Filter)是1970年由一个叫布隆的小伙子提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都远远超过一般的算法,缺点是有一定的误识别率和删除困难。
2024-08-28 17:39:12 908
原创 leveldb 代码阅读六
为了加快读取操作,LevelDB采取compaction方式对已有记录进行整理,通过这种方式,来删除掉一些不再有效的KV数据,减少数据规模和文件数量,compaction方式在LevelDB中具体为两种:minor和major。所有的Block格式都是相同的,一个Block默认大小为4KB【options.block_size】,当Block所占内存空间大于4KB则flush到文件中。index block用来存储所有datablock的相关索引信息。
2024-08-27 18:05:29 741
原创 leveldb 代码阅读五
MANIFEST文件是Level DB的元信息文件,记录的是版本管理。与log 格式相同,一个menfiest 记录的是一个record。
2024-08-20 10:42:11 145
原创 Redis 代码阅读二
redis-3.0.0编译安装1、前言 redis是常用的no-sql数据库,常用于缓存数据,同时,他也可以持久化数据。他是C语言开发的,所以安装的时候需要编译。2、单机版redisyum install gcc-c++(安装C语言编译环境)3、编译安装源码:https://github.com/huangz1990/redis-3.0-annotated.git编译:make安装:make install PREFIX=~/workspace/lhh/redis注:PREFIX
2024-08-16 16:50:31 118
原创 leveldb 代码阅读二
WriteOption 结构WriteOptions 就是保存了一个是否 sync 的 bool 变量可以看到对于 Put 单个 kv 的情况,leveldb 默认实现也将它封装成一个 WriteBatch。
2024-08-16 11:27:21 439
原创 leveldb 代码阅读一
函数示例编码函数解码函数函数实现uint8_tuint8_tuint8_tuint8_tuint8_tuint64 同理constuint8_tuint32_tuint32_tuint32_tuint32_t函数解读。
2024-08-16 11:26:02 230
原创 [LevelDB] 编译和使用
LevelDB是Google开源的持久化KV单机数据库,具有很高的随机写,顺序读/写性能,但是随机读的性能很一般,也就是说,LevelDB很适合应用在查询较少,而写很多的场景。LevelDB应用了LSM (Log Structured Merge) 策略,lsm_tree对索引变更进行延迟及批量处理,并通过一种类似于归并排序的方式高效地将更新迁移到磁盘,降低索引插入开销,关于LSM,本文在后面也会简单提及。
2024-08-16 11:23:34 267
原创 python课程学习
1. 问题现象进程卡死,程序sip信令卡住在invite 没有响应2. 问题堆栈3. 堆栈分析3.1 区分堆栈信息将原有的堆栈信息区分为10种:Thread 331 (Thread 0x7f7bca7fc700 (LWP 15497)):#0 0x00007f7c72d3f945 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0#1 0x00007f7c73012e1d in ACE_Condition_Th
2021-03-07 15:21:55 83
原创 Freeswitch学习
1、Freeswitch 配置文件转载配置文件解读配置文件默认的目录是 /usr/local/freeswitch/confconf/目录和文件说明|——vars.xml一些常用变量|——autoload_configs目录、存放自动加载的配置文件| |——modules.conf.xml配置当FreeSWITCH启动时自动装载哪些模块| |——*.xml一般来说每个模块都有一个配置文件|——dialplan拨号计划| |——default.
2020-12-31 10:39:45 282
原创 STL 常用容器的底层数据结构
STL 常用容器的底层数据结构实现1.vector 底层数据结构为数组 ,支持快速随机访问2.list 底层数据结构为双向链表,支持快速增删3.deque 底层数据结构为一个中央控制器和多个缓冲区,详细见STL源码剖析P146,支持首尾(中间不能)快速增删,也支持随机访问deque是一个双端队列(double-ended queue),也是在堆中保存内容的.它的保存形式如下:[堆1] --> [堆2] -->[堆3] --> …每个堆
2020-12-25 10:28:13 1154
原创 leveldb 学习
leveldb 学习一1. leveldb 下载编译1.1 下载1.2 编译2. 代码阅读1. leveldb 下载编译1.1 下载下载链接:https://github.com/google/leveldb.gitGoogle test:https://github.com/google/googletest.git1.2 编译mkdir -p build && cd buildcmake -DCMAKE_BUILD_TYPE=Release .. &&
2020-06-21 13:56:22 166 1
原创 SQL 学习
1. 安装1.1 安装检查命令:sudo service mysql start结果:未安装:mysql: unrecognized service1.2 安装安装 MySQL 服务端、核心程序sudo apt-get install mysql-server#安装 MySQL 客户端sudo apt-get install mysql-client验证安装sudo netstat -tap | grep mysql使用sudo service mysql startmys
2020-05-17 23:08:55 183
原创 Linux 命令学习二
在学习linux系统知识中常会遇到命令模糊情况,本文主要记录linux常用命令二。1. 压缩命令压缩命令压缩与解压示例zip压缩:zip -r -q -o shiyanlou.zip /home/shiyanlou/Desktop 解压:unzip -q shiyanlou.zip -d ziptesttar压缩:tar -P -cf shiyanlou.tar /home/shiyanlou/Desktop 解压:tar -xf shiyanlou.tar -C tar
2020-05-10 22:33:30 215
原创 linux常用命令
在学习linux系统知识中常会遇到命令模糊情况,本文主要记录linux常用命令。1、ubuntu命令含义使用查看网卡lspci | grep -i net查询网络ifconfig eth0查询网络ifconfig eth0查看网络ipvi /etc/hosts查看挂载mount挂载内存mount -t ramfs -o size=1...
2020-05-05 17:25:43 124
原创 完成malefile模板
TARGET := test_file.outCFLAGS := -g -WallCC := gccSOURCE := $(wildcard *.c)OBJ := $(patsubst %.c, %.o, $(SOURCE))$(TARGET):$(OBJ)$(CC) $(CFLAGS) $^ -o $
2018-01-14 22:05:27 386
51单片机与PC串口间通讯设计与分析
2013-06-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人