栈 -- 顺序栈、链式栈的实现 及其应用(函数栈,表达式求值,括号匹配) is a project mainly written in , based on the .文章目录实现顺序栈实现链式栈实现应用函数栈 的应用表达式求值中 的应用括号匹配中 的应用 我们使用浏览器的时候经常会用到前进、后退功能。 依次访问完一串页面 a – b – c之后点击后退功能,则能够依次看到c – b – a的页面。 但是这个过程中,如果后退到了页面b,点击了新的页面d,则再点击前进无法回到页面c。 这个...
数据结构和算法 -- 学习导图 is a project mainly written in , based on the .数据结构和算法 是作为程序员写出高效代码的基础,为了今后的两年在高效代码之路上持续精进,将按照此学习导图进行 算法和数据结构的刻意练习,同时也希望为同样有高效代码追求的伙伴们提供一条学习路径,共同进步。 以下为今后持续学习精进的导图概览:...
Ceph bluestore 源码分析:ceph-osd内存查看方式及控制源码分析 is a project mainly written in , based on the .文章目录内存查看内存控制内存控制源码分析通过gperftools接口获取osd进程实际内存 动态设置cache大小动态调整cache比例trim释放内存 本文通过对ceph-osd内存查看跟踪的5种手段以及osd内存控制的方式进行源码层面的说明,并未通过修改相关源码进行控制(水平不够),仅限于使用社区已开发好的参数进行相关配置的...
Ceph bluestore源码分析:非对齐写逻辑 is a project mainly written in , based on the .文章目录环境原理说明总结 环境 ceph:12.2.1 场景:ec 2+1 部署cephfs,执行如右写模式:dd if=/dev/zero of=/xxx/cephfs bs=6K count=4 oflag=direct 关键配置: bluestore_min_alloc_size_hdd = 65536 bluesto...
Ceph bluestore源码分析:admin_socket实时获取内存池数据 is a project mainly written in , based on the .环境: 版本:ceph 12.2.1 部署完cephfs 使用ceph-fuse挂载,并写入数据 关键参数: debug_mempool = true 将该参数置为true即可查看详细的blustore管理的内存池的数据 命令: ceph daemon osd.id dump_mempools该命令为admin_socket线程实时...
关于ceph源码 backtrace 打印函数调用栈 is a project mainly written in , based on the .当集中精力看一个问题的时候,时间久了就会有这样一个状态,天空飘来五个字,那都不算事 ceph源码庞大的体量以及复杂的设计让很多人望而却步,尤其是大量的纯虚函数更是让读者迷失在代码的海洋,这个时候函数调用栈是一个救命的东西,因为它节约了你大量的重复查找的时间 查看最终效果 如下为我想要查看bluestore在处理shareblob的释...
Ceph bluestore 源码分析:刷缓存(trim)逻辑 is a project mainly written in , based on the .环境 ceph版本:12.2.1 部署模式:ec 2+1 osd: 3个 且资源池已经有数据 执行命令:ceph daemon osd.0 flush_store_cache 进行刷缓存。即将dump_mempools内存池管理的bluestore cache中的无用数据进行释放 主要参数: bluestore_cache_tr...
C++ 泛型编程 -- 函数模版 is a project mainly written in , based on the .文章目录定义声明调用方式函数模版的重载函数模版的特点...
G-gdb 调试多线程 is a project mainly written in , based on the .代码调试工具gdb是一个能够让我们在工作中高效排查代码异常根源的利器。 在此将gdb针对多线程的调试方式做一个笔记,也方便后续回顾以及分享大家。 本文采用的是一个简单的多线程代码示例,同时调试是在mac上进行的 mac安装gdb brew install gdb即可 基本命令介绍 开始之前先简单介绍几个gdb调试多线程的子命令...
Rocksdb 与 TitanDb 原理分析 及 性能对比测试 is a project mainly written in , based on the .文章目录前言Rocksdb的compaction机制compaction作用compaction分类level style compaction(rocksdb 默认进行的compaction策略)level 的文件存储结构compaction过程compaction中的level target sizeuniversal style...
Rocksdb 写流程,读流程,WAL文件,MANIFEST文件,ColumnFamily,Memtable,SST文件原理详解 is a project mainly written in , based on the .文章目录前言Rocksdb写流程图WAL 原理分析概述文件格式查看WAL的工具创建WAL清理WALMANIFEST原理分析概述查看MANIFEST的工具创建 及 清除 MANIFEST文件内容CcolumnFamily 详解概述API介绍核心数据结构创建以及删除MEMTABLE 实现概述实现Rocksdb写入逻辑概述实现总结关于写的一...
Skiplist跳表的 实现 is a project mainly written in , based on the .文章目录前言跳表结构时间复杂度空间复杂度高效的动态插入和删除跳表索引的动态更新总结详细实现...
Linux创建线程时 内存分配的那些事 is a project mainly written in , based on the .文章目录问题描述问题分析针对问题1 的猜测:针对问题2 的猜测:原理追踪总结...
C++ 中emplace_back和push_back差异 is a project mainly written in , based on the .前言 最近看rocskdb源码,发现了大量的设计模式和C++高级特性,特此补充一下,巩固基础。 问题描述 其中关于动态数组的元素添加,代码中基本将push_back抛弃掉了,全部替换为emplace_back进行元素的添加。 看了一下官网描述: 原来的push_back 一个右值元素的时候 过程分为如下几步: 使用右值数据类...
C++ STL: 基本六大部件概览 及 各个容器使用方式和底层实现概览 is a project mainly written in , based on the .文章目录STL六大部件容器的使用Arrayvectorlistdequemutisetmultimapunordered_multiset/set...
Rocksdb 内存“不释放”问题 分析 is a project mainly written in , based on the .文章目录问题场景描述问题复现编写随机写 测试工具使用工具抓取内存分配过程源码分析memtable逻辑table_cache逻辑总结...
C++ STL: lower_bound 和 upper_bound is a project mainly written in , based on the .接口声明
以下有两个不同的版本
lower_bound
template
C++ STL: 分配器allocators 源码分析 is a project mainly written in , based on the .STL 基本的六大组件作用以及功能如下: 可以看到allocator是数据存储组件container的幕后支持者,负责为其数据存储分配对应的存储空间。 operator::new 在详细介绍alloctor之前,先描述一下new运算符,我们使用C++ new一个对象的时候就是调用底层operator::new运算符,实现如下:...
C++ STL: 容器vector源码分析 is a project mainly written in , based on the .文章目录前言vector的核心接口vector push_back实现vector 的 Allocatorvector 的 push_back总结...
G-git 相关命令 及其 基本原理探索 (一) is a project mainly written in , based on the .文章目录git 最小配置作用域git 创建本地仓库git log 查看版本演进.git 目录refs目录objectsgit 三种对象类型详解 (commit ,tree,blob)...