Rocksdb 的优秀代码(二)-- 工业级 打点系统 实现分享 is a project mainly written in , based on the .文章目录前言数据结构选型打点代码设计耗时打点请求计数打点打点总结...
字符串匹配算法 -- BM(Boyer-Moore) 和 KMP(Knuth-Morris-Pratt)详细设计及实现 is a project mainly written in , based on the .文章目录1. 算法背景2. BM(Boyer-Moore)算法2.1 坏字符规则(bad character rule)2.2 好后缀规则(good suffix shift)2.3 复杂度及完整代码3. KMP(Knuth Morris Pratt)算法3.1 好前缀 和 坏字符规则3.2 高效构建 失效函数3.3 复杂度及完整代码...
Pmdk -- libpmemlog 介绍 is a project mainly written in , based on the .文章目录1. libpmemlog 应用背景2. libpmemlog 使用方式2.1 基本接口2.2 接口使用3. Libpmemlog 性能3.1 write sys call 性能3.2 libpmemlog 性能...
字符串匹配数据结构 --Trie树 高效实现搜索词提示 / IDE自动补全 is a project mainly written in , based on the .文章目录1. 算法背景2. Trie 树实现原理2.1 Trie 树的构建2.2 Trie树的查找2.3 Trie树的遍历2.4 Trie树的时间/空间复杂度2.5 Trie 树 Vs 散列表/红黑树3. Trie树的应用 -- 搜索词提示功能...
Git submodule 使用场景汇总 is a project mainly written in , based on the .文章目录1. 前言2. 基础命令介绍2.1 场景一:已有仓库,添加一个子模块2.2 场景二:已有仓库,添加一个子模块的特定分支2.3 场景三:已有仓库,更新子模块内容2.4 场景四:已有仓库,变更子模块分支2.5 场景五:手动修改.gitmodules不生效问题3. 总结...
字符串匹配算法 -- AC自动机 基于Trie树的高效的敏感词过滤算法 is a project mainly written in , based on the .文章目录1. 算法背景2. AC自动机实现原理2.1 构建失败指针2.2 依赖失败指针过滤敏感词3. 复杂度及完整代码...
WiredTiger引擎编译 及 LT_PREREQ(2.2.6)问题解决 is a project mainly written in , based on the .近期需要为异构引擎做准备, wiredtiger 以其优异的性能(B-tree和LSM-tree都支持)和稳定性(Mongodb的默认存储引擎) 被我们备选为异构引擎里的一个子引擎,后续将深入wiredtiger 引擎原理。这里简单记录一下Wiredtiger 存储引擎的编译记录。 Environment CPU:Intel(R)...
贪心算法简单实践 -- 分糖果、钱币找零、最多区间覆盖、哈夫曼编解码 is a project mainly written in , based on the .1. 贪心算法概览 贪心算法是一种算法思想。希望能够满足限制的情况下将期望值最大化。比如:Huffman编码,Dijkstra单源最短路径问题,Kruskal最小生成树 等问题都希望满足限制的情况下用最少的代价找到解决问题的办法。 这个办法就是贪心算法的思想。 实际用贪心算法解决问题可以有如下几步: 当看到这类问题时 我们能够联...
Clion 远程开发 配置 is a project mainly written in , based on the .文章目录1. 增加远端服务工具2. 配置远端服务器3. 配置编译选项4. 设置远端开发路径...
Rocksdb 的优秀代码(三)-- 工业级 线程池实现分享 is a project mainly written in , based on the .文章目录前言1. Rocksdb线程池概览2. Rocksdb 线程池实现2.1 基本数据结构2.2 线程池创建2.3 线程池 调度线程执行2.4 线程池销毁线程2.5 线程池优先级调度2.6 动态调整线程池 线程数目上限3. 总结...
Rocksdb 写入数据后 GetApproximateSizes 获取的大小竟然为0? is a project mainly written in , based on the .项目开发中需要从引擎 获取一定范围的数据大小,用作打点上报,测试过程中竟然发现写入了一部分数据之后通过GetApproximateSizes 获取写入的key的范围时取出来的数据大小竟然为0。。。难道发现了一个bug?(欣喜) 因为写入的数据是小于一个sst的data-block(默认是4K),会不会因为GetApproximate...
Vim 键盘宏操作 -- 大道至简 is a project mainly written in , based on the .最近利用vim做一些文本处理时 发现vim 支持的键盘宏是一个好东西啊,高效优雅得处理大量需要重复性操作的文本,让人爱不释手!!! 希望接下来对键盘宏的分享能够实际帮助到大家。 后文中描述的一些vim操作会汇集成指令字符串,方便大家参考。 1. 场景描述 在分享键盘宏之前,先看这样一个文本操作需求: 对如下文本增加ma...
Rocksdb 获取当前db内部的有效key个数 (估值) is a project mainly written in , based on the .文章目录1. 基本接口2. Memtable key个数统计3. Immutable Memtable key个数统计4. Sstables key个数统计5. 疑问...
从BloomFilter到Counter BloomFilter is a project mainly written in , based on the .文章目录前言1. Traditional BloomFilter2. Counter BloomFilter...
Linux NUMA 架构 :基础软件工程师需要知道一些知识 is a project mainly written in , based on the .文章目录前言从物理CPU、core到HT(hyper-threading)UMA(Uniform memory access)NUMA架构NUMA下的内存分配策略1. MPOL_DEFAULT2. MPOL_BIND3. MPOL_INTERLEAVE4. MPOL_PREFERRED5. 一些NUMA架构下的内核配置总结参考...
Rocksdb Slice使用中的一个小坑 is a project mainly written in , based on the .本文记录一下使用Rocksdb Slice过程中的一个小小坑,差点没一口老血吐出来。 rocksdb的Slice 数据结构是一个小型得不可变类string数据结构,设计出来的目的是为了保证rocksdb内部处理用户输入的key在从内存到持久化磁盘的整个处理链路是不会被修改的,比较方便得从user_key 解码出internal_ke...
TitanDB 中使用Compaction Filter ,产生了预期之外几十倍的读I/O is a project mainly written in , based on the .Compaction过程中 产生大量读I/O 的背景 项目中因大value 需求,引入了PingCap 参考Wisckey 思想实现的key-value分离存储 titan, 使用过程中因为有用到Rocksdb本身的 CompactionFilter功能,所以就直接用TitanDB的option 传入了compaction filt...
Rocksdb 利用recycle_log_file_num 重用wal-log文件 is a project mainly written in , based on the .recycle_log_file_num 复用wal文件信息, 优化wal文件的空间分配,减少pagecache中文件元信息的更新开销。 为同事提供了一组rocksdb写优化参数之后有一个疑惑的现象被问到,发现之前的一些代码细节有遗忘情况,同时也发现了这个参数的一些小优化,这里做个总结。 在参数: opts.recycle_lo...
BitCask 持久化hash存储引擎 原理介绍 is a project mainly written in , based on the .文章目录前言引擎背景引擎原理1. 磁盘数据结构2. 内存数据结构3. 读流程4. 数据合并总结...
从JoinBatchGroup 代码细节 来看Rocksdb的相比于leveldb的写入优势 is a project mainly written in , based on the .文章目录1. Rocksdb写入模型2. LevelDB写入的优化点3. Rocksdb 的优化1. Busy Loop2. Short Wait -- SOMETIMES busy Loop3. Long-wait4. 测试验证4. 总结...