C++ STL: 超详细 容器 deque 以及 适配器queue 和 stack 源码分析 is a project mainly written in , based on the .文章目录前言deque 实现deque类_Deque_iterator 类deque 的元素插入 insert函数deque如何模拟空间连续queue 实现stack 的实现...
《DDIA》读书笔记 is a project mainly written in , based on the .数据存储系统的经典书籍: 从数据系统的特性开始,先讲单机存储引擎 再到 分布式存储系统,最后到一些数据流的处理方式,作者深入浅出,译者更是精雕细琢,本书需要细品。 将持续阅读整理,先从理论走一轮,再找一些系统做一做实验。...
G-git 相关命令 及其 基本原理探索(二):git 在工作中的常用命令操作 ,超级实用!!! is a project mainly written in , based on the .文章目录1. 分离头指针2. 通过HEAD 来进行不同提交的差异对比3. 删除不需要的分支4. 对当前分支最近一次提交的message 做变更5. 基于当前分支,修改老旧的commit信息6. 把连续多个commit 整合为一个commit7. 合并多个不连续的commit信息8. 比较 暂存区 和 HEAD 最新内容的差异9. 比较...
Google gflags的参数解析,便捷实用 is a project mainly written in , based on the .命令行参数解析,一直是我们后段开发人员需要经常使用的一个功能,用来从终端解析接口的输入 ,并做出对应的处理。这里为使用C++/python的开发人员推荐一个便捷的命令行解析接口集 gflags。 我们之前使用C的getopt/getopt_long 函数需要自己使用其接口并编写大量的周边代码达到解析参数的目的,如果转到C++还使用上...
Mac上 如何快速玩起rocksdb is a project mainly written in , based on the .想要自己随时随地写一写rocksdb的代码,并且快速测试,但是公司的物理机登陆过于麻烦,想要验证功能的话其实在自己的电脑就完全可以了。 安装 brew install rocksdb,默认二进制文件安装在/usr/local/bin在~/.bashrc或者自己正在使用的shell的rc文件中 加入rocksdb的bin文件所在路径...
《DDIA》读书笔记(一):可靠性、可扩展性、可维护性 is a project mainly written in , based on the .这一节描述了密集型应用的基本思考方式。 可靠性。意味着系统发生故障,也能保持正常的运行。故障会集中在三个方面,硬件故障(通常是随机和不相关的)、软件故障(通常是系统性的bug,较难发现,较难处理),人为故障(不可避免得时不时出错)。 提供合理的容错技术能够隐藏某一些类型的故障。可扩展性。意味着在负载增加的情况下也有保持性能的策略。...
Rocksdb 事务(一): 隔离性的实现 is a project mainly written in , based on the .文章目录前言1. 隔离性2. Rocksdb实现的隔离级别2.1 常见的四种隔离级别2.2 Rocksdb 支持的隔离级别及基本实现2.2.1 ReadComitted 隔离级别的测试2.2.2 ReadCommitted的实现2.2.3 RepeatableRead的实现2.2.4 事务并发处理3. 一些总结...
《Bigtable:a distributed storage system for struct data》笔记 is a project mainly written in , based on the .Bigtable 可以说是log-structed以及page-oriented 两种存储引擎的整合体,我们性能优越的单机存储引擎leveldb和rocksdb就是基于google的bigtable存储系统实现的。 论文地址Bigtable: A Distributed Storage System for Structured Da...
Rocksdb DeleteRange实现原理 is a project mainly written in , based on the .文章目录1. 基本介绍2. 两种接口使用及简单性能对比3. DeleteRange 的基本实现3.1 写流程的实现3.2 读流程的实现 -- skyline算法...
Rocksdb iterator和snapshot 接口 is a project mainly written in , based on the .Rocksdb提供迭代器来来访问整个db中的数据,就像STL中的迭代器功能一样,用来访问容器中的具体的数据。 访问形式以及访问接口有如下几种: 遍历所有的key-value//打开db,并初始化一个迭代器指针 rocksdb::Iterator* it = db->NewIterator(rocksdb::ReadOptions(...
Linux 下 进程运行时内部函数耗时的统计 工具:pstack,strace,perf trace,systemtap is a project mainly written in , based on the .简单记录一些 在linux下 统计进程内部函数运行耗时的统计工具,主要是用作性能瓶颈分析。当然以下工具除了pstack功能单一之外,其他的工具都非常强大,这里仅仅整理特定场景的特定用法,用作协同分析。 以下工具需要追踪具体的进程,如果想要打印信息更全,建议编译的时候将符号信息都编译到二进制文件之中,-g选项 strace str...
Mac 上使用 Clion 阅读C++源码的一些操作 is a project mainly written in , based on the .一直在尝试一些写代码方便,阅读代码也很方便的工具,因为使用的是Mac,所以阅读源码上面sourceInsight就没办法用了。 从vscode – sublime – clion 想要可配置性强一点,软件轻一点,也能提供足够的便捷操作,不论是写代码还是快速索引源码,都希望在检索上面节省足够的时间。 vscode 和 sublime...
关于 Rocksdb 性能分析 需要知道的一些“小技巧“ -- perf_context的“内功” ,systemtap、perf、 ftrace的颜值 is a project mainly written in , based on the .文章目录内部工具包含头文件接口使用核心指标Perf ContextIOStats Context外部工具Systemtap 工具Perf工具Ftrace 工具...
使用 sched_setaffinity 将线程绑到CPU核上运行 is a project mainly written in , based on the .linux 提供CPU调度函数,可以将CPU某一个核和指定的线程绑定到一块运行。 这样能够充分利用CPU,且减少了不同CPU核之间的切换,尤其是在IO密集型压力之下能够提供较为友好的性能。 通过sched_setaffinity 设置 CPU 亲和力的掩码,从而将该线程或者进程和指定的CPU绑定 一个CPU的亲合力掩码用一个cpu...
数据结构 -- 散列表 is a project mainly written in , based on the .散列表作为一种能够提供高效插入,查找,删除 以及遍历的数据结构,被应用在很多不同的存储组件之中。 就像rocksdb中的hashskiplist,redis的有序集合,java的 LinkedHashMap 等 都是一些非常有特色的核心数据结构,来提供线上高效的数据操作能力。 本节对工业级散列表的基本实现 探索一番,希望加深自己对存...
一文带你看透 GDB 的 实现原理 -- ptrace真香 is a project mainly written in , based on the .文章目录Ptrace 的使用GDB 的基本实现原理Example1 通过ptrace 修改 被追踪进程的内存数据Example2 通过ptrace 对被追踪进程进行单步调试Ptrace的实现PTRACE_TRACEMEPTRACE_ATTACHPTRACE_CONTPTRACE_SINGLESTEPPTRACE_PEEKDATAPTR...
数据结构 -- 图与图存储 is a project mainly written in , based on the .我们在使用像QQ ,微信,微博,快手,抖音等社交软件的过程中经常需要添加好友,关注好友和被好友关注。这个过程中 这样的社交网络中的好友关系就需要被存储下来,存储在各个公司的后台服务器之上,都会作为每个公司的数据资产来进行自己核心业务的开发(视频推荐、好友推荐。。。) 这个用来保存好友关系的数据结构就是 图,接下来探索一下这个非线性数...
Vim 成“神“之路 (一) is a project mainly written in , based on the .文章目录1. 安装1.1 linux1.2 MacOs的安装1.3 Windows的安装1.4 vim中文帮助文档安装2. vim基本概念和基础命令2.1 基本的键位映射如下:2.2 vim模式2.3 vim的选项和基本配置2.3.1 备份和跨会话撤销文件2.3.2 vim中支持鼠标3. vim 常用命令 -- 应对稍复杂任务3.1...
分布式一致性(共识)算法(Paxos,raft,ZAB)的一些总结 is a project mainly written in , based on the .文章目录前言CAP理论C consistency 一致性A availability 可用性P partition tolerance 分区容错性一致性模型弱一致性强一致性强一致性算法需要明确的问题强一致算法: 主从同步强一致性算法:多数派强一致算法:PaxosBasic PaxosMulti Paxos第一个版本:使用Propose...
设计模式 之美 -- 策略模式 is a project mainly written in , based on the .策略模式作为行为型设计模式中的一种,主要封装相同功能的不同实现算法,用于在用户程序内部灵活切换。对用户来说能够快速替换对应的算法,能够让算法的实现独立于使用的用户。 基本的UML类图如下: 用户使用Stratey的实例能够快速得在不同的Cache算法之间灵活切换(直接使用对应的Cache实例来设置到Strategy之中即可。),...