自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

天行健,地势坤

远离颠倒梦想,究竟涅槃

  • 博客(41)
  • 资源 (2)
  • 收藏
  • 关注

原创 从一致性hash到ceph crush算法演进图谱(持续更新)

参考文档:https://ceph.com/wp-content/uploads/2016/08/weil-crush-sc06.pdfCeph剖析:数据分布之CRUSH算法与一致性Hash

2019-11-30 14:09:24 666

原创 b-btrace,blktrace,blkparse,btt工具使用图谱(持续更新)

以下为几个工具结合使用的图谱关于命令的使用,这里仅加入了基本分析命令

2019-11-28 22:12:01 583

原创 g-gdb工具使用图谱(持续更新)

如下为整个GDB的学习导图

2019-11-27 22:59:40 403

原创 shell脚本自动执行,top命令无输出

shell脚本在系统启动时推后台自动执行,发现其中/usr/bin/top -n 1 -c -b -u ceph 命令并无输出但是系统启动之后手动执行脚本,&推后台脚本中的top仍然能够正常输出,仅仅是系统发生重启,该功能就不生效了stackoverflow 推荐增加 -w 参数即/usr/bin/top -n 1 -c -b -u ceph -w 200 设置输出的命令宽度,在-b...

2019-11-25 14:33:28 1492 1

原创 哈希表的分类,创建,查找 以及相关问题解决

总体的hash学习导图如下:文章目录定义分类字符hash排序hash链式hash(解决hash冲突)创建链式hash查找指定数值STL map(hash)哈希分类 完整测试代码应用(常见题目)1. 回文字符串(Longest Palindrome)2. 词语模式(Word Pattern)3. 同字符词语分组(Group Anagrams)定义需要拥有关键字 key维护一个key和va...

2019-11-24 17:15:24 535

原创 分布式存储(ceph)技能图谱(持续更新)

一下为个人结合其他人对分布式存储 所需的技能进行总结,绘制成如下图谱,方便针对性学习。这里对分布式存储系统接触较多的是ceph,所以在分布式存储系统分治上偏向ceph的学习。如有分类有问题或者分支不合理,欢迎大家批评指正,目的是为了大家共同提升...

2019-11-21 13:07:54 3865

原创 s-systemtap工具使用图谱(持续更新)

整体的学习思维导图如下,后续持续更新完善

2019-11-19 21:58:05 1804

原创 linux系统目录树/内核源码目录树

关于系统目录树和源码目录树的结构图如下系统:centos 7.0内核版本:3.10.0-957-5.1.e17

2019-11-19 13:15:54 633

原创 二叉树:二叉搜索树实现 逆序数问题

关于逆序数的问题描述如下:已知数组nums,求新数组count,count[i]代表了在nums[i]右侧且比 nums[i]小的元素个数。例如:nums = [5, 2, 6, 1], count = [2, 1, 1, 0];nums = [6, 6, 6, 1, 1, 1], count = [3, 3, 3, 0, 0, 0];nums = [5, -7, 9, 1, 3, 5,...

2019-11-17 21:10:38 656

原创 二叉树:二叉搜索树的编码和解码

二叉搜索树的编码和解码描述:编码:即将一个二叉搜索树编码,节点数值转换为字符串解码:即将一个字符串解码,数值转换为对应的二叉搜索树的节点过程导图如下:针对性编码实现如下:/*数字转字符串*/void change_num_to_string(int val, string &tmp) { string buf; while(val) { buf += val % 10...

2019-11-17 14:37:56 865

原创 二叉树:二叉搜索树的创建和插入

二叉搜索树又名二叉排序树。大概简略的思维导图如下,方便记忆特性基本二叉搜索树创建过程如下/*数据结构如下*/typedef struct tree{ int data; struct tree *left = NULL; struct tree *right = NULL;}Tree,*TreeNode;/*Node 为二叉树根节点,insert为插入的节点*/void ...

2019-11-16 20:42:48 941 1

原创 二分法:查找区间search for a range

问题描述:给定一个排序数组nums(nums中有重复元素)与目标值target,如果 target在nums里出现,则返回target所在区间的左右端点下标,[左端点, 右端点],如果target在nums里未出现,则返回[-1, -1]。例如:arr = [2,3,4,4,4],target = 4,最终结果为[2,4]arr = [2,3,4,5,6],target = 4,最终结果为...

2019-11-14 21:46:57 860

原创 二分法:search insert position 插入位置

问题描述:给定一个排序数组nums(无重复元素)与目标值target,如果target在nums里 出现,则返回target所在下标,如果target在nums里未出现,则返回target应该 插入位置的数组下标,使得将target插入数组nums后,数组仍有序。例如:数组 arr = [2,3,4,6]target = 1时, 插入位置应为 index = 0target = 5时,...

2019-11-14 21:23:47 256

原创 二分法:二分查找(递归+非递归)实现

二分查找又称折半查找,首先,假设表中元素是按升序排列,将 表中间位置的关键字与查找关键字比较:如果两者相等,则查找成功;否则利用中间位置将表分成前、后两个子表:1)如果中间位置的关键字大于查找关键字,则进一步查找前一子表2)否则进一步查找后一子表 重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。例如:target = 200arr = [-1...

2019-11-13 21:39:57 481

原创 t-top 命令详解

前言展示操作系统进程信息。动态得,实时得展示正在运行的操作系统进程信息。 所显示的系统摘要信息的类型以及为进程显示的信息的类型,顺序和大小都是用户可配置的,并且可以使配置在重新启动后保持不变。该程序为流程操作提供了一个有限的交互式界面,并为个人配置提供了更为广泛的界面-涵盖了其操作的各个方面语法格式top -hv | -bcHiOSs -d secs -n max -u|U user -p ...

2019-11-13 20:12:15 2459

原创 二叉树:最近的公共祖先 Lowest Common Ancestor of a Binary Tree

已知二叉树,求二叉树中给定的两个节点的最近公共祖先。 最近公共祖先: 两节点v与w的最近公共祖先u,满足在树上最低(离根最 远),且v,w两个节点都是u的子孙。如上二叉树,6和8号节点的公共祖先有4,1;但是最近的公共祖先仅为4这里我们发现,想要快速获取两个节点的最近的公共祖先节点,首先需要知道两个节点各自从根节点到当前的路径,即:6号节点的路径为:[1,4,6]8号节点的路径为:[1,...

2019-11-12 23:29:37 189

原创 二叉树:路径之和 Path Sum

给定一个二叉树与整数sum,找出所有从根节点到叶结点的路径,这些路 径上的节点值累加和为sum即创建一个二叉树,要求二叉树中有一个路径从根节点到叶节点到路径加起来代表到和为 给定的sum如下二叉树给定路径之和为18,则需要输出两条路径:[1,4,5,8][1,4,6,7]同样,这个过程我们可以使用先序深度优先搜索,同时需要使用临时数据结构保存搜索过程中出现的根节点,方便回溯。实现...

2019-11-12 23:12:36 349

原创 二叉树(C++):创建,前中后序遍历(递归+非递归),获取叶子节点个数,获取树的高度

文章目录前言创建二叉树先序遍历中序遍历后序遍历获取叶子节点个数获取树的高度测试代码前言现有如下二叉树:关于二叉树的相关操作,我们能够发现二叉树从根节点到子节点,以及每个中间节点基本都能够拆分为若干个子节点的操作,且每个子节点的操作都和其头节点操作一致。所以我们针对二叉树的操作都可以使用分治算+回溯/归并算法进行完整测试代码见文末创建二叉树二叉树数据结构:typedef stru...

2019-11-11 21:59:09 717

原创 递归/归并:count of smaller numbers求逆序数

已知数组nums,求新数组count,count[i]代表了在nums[i]右侧且比 nums[i]小的元素个数。例如:nums = [5, 2, 6, 1], count = [2, 1, 1, 0];nums = [6, 6, 6, 1, 1, 1], count = [3, 3, 3, 0, 0, 0];nums = [5, -7, 9, 1, 3, 5, -2, 1], count...

2019-11-10 21:16:54 233

原创 递归/分治:归并排序

前言分治算法:将一个规模为N的问题分解为K个规模较小的子问题,这些子问题相互独立且与原问题性质相同。求出 子问题的解后进行合并,就可得到原问题的解。步骤如下:分解,将要解决的问题划分成若 干规模较小的同类问题;求解,当子问题划分得足够小时 ,用较简单的方法解决;合并,按原问题的要求,将子问题 的解逐层合并构成原问题的解。归并排序在描述归并排序之前,我们先来看看如何合并两个有序数...

2019-11-10 20:51:34 220

原创 递归/回溯:八皇后问题N-Queens

N皇后问题是计算机科学中最为经典的问题之一,该问题可追溯到1848年,由国 际西洋棋棋手马克斯·贝瑟尔于提出了8皇后问题。将N个皇后放摆放在N*N的棋盘中,互相不可攻击,有多少种摆放方式,每种摆 放方式具体是怎样的?8皇后即 8*8的棋盘中,将8个皇后放置在棋盘上,且皇后之间无法俩俩攻击到对方。关于国际象棋中皇后的实力:国际象棋棋局中实力最强的一种棋子,也是最容易被吃掉的棋子。后可横直斜走,...

2019-11-10 16:25:29 416

原创 递归/回溯:Generate Parentheses生成合法括号

已知n组括号,开发一个程序,生成这n组括号所有的合法的组合可能。 例如:n = 3结果为: ["((()))", “(()())”, “(())()”, “()(())”, “()()()”]首先思考如何生成所有的括号组合的可能性,即例如2组括号,总共4个符号组合的可能型,那么每个位置就有两种括号的可能性,要么左括号,要么右括号,此时可以写出如代码:void generate(string ...

2019-11-10 13:34:57 237

原创 递归/回溯:Combination Sum II数组之和

问题如下:已知一组数(其中有重复元素),求这组数可以组成的所有子集中,子 集中的各个元素和为整数target的子集,结果中无重复的子集。例如: nums[] = [10, 1, 2, 7, 6, 1, 5], target = 8结果为: [[1, 7], [1, 2, 5], [2, 6], [1, 1, 6]]同样之前有类似的相关的问题递归/回溯:Subsets II求子集(有重复元素...

2019-11-10 12:04:44 269

原创 递归/回溯:Subsets II求子集(有重复元素)

上一篇描述了针对数组中没有重复元素进行子集的求取过程递归/回溯:subsets求子集但是当出现如下数组时:例如: nums[] = [2, 1, 2, 2]结果为: [[], [1], [1,2], [1,2,2], [1,2,2,2], [2], [2,2], [2,2,2]]注意: [2,1,2]与[1,2,2]是重复的集合,则不满足集合的要求。思考:同样的递归回溯方式,即每一个元...

2019-11-10 11:42:01 458

原创 递归/回溯:subsets求子集

前言回溯法又称为试探法,但当探索到某一步时,发现原先选择达不到 目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法。已知一组数(其中无重复元素),求这组数可以组成的所有子集。 结果中不可有无重复的子集。例如: nums[] = [1, 2, 3]结果为: [[], [1], [1, 2], [1, 2, 3], [1, 3], [2], [2, 3], [3]]以上的初始数组...

2019-11-10 11:28:59 537

原创 s-seq 生成序列化数字

前言seq命令用于产生从某个数到另外一个数之间的所有整数。命令格式seq [OPTION]... LASTseq [OPTION]... FIRST LASTseq [OPTION]... FIRST INCREMENT LAST支持将指定范围的数字打印出来,按照指定的递增规律-f, --format=格式 使用printf 样式的浮点格式-s, --separator=字符串...

2019-11-08 20:20:38 330

原创 贪心:expedition 最优加油方法

int cmp(pair<int,int> a,pair<int,int> b) { return a.first > b.first;}int get_least_expedition(int L, int P,vector<pair<int,int>> &stop) { priority_queue<in...

2019-11-08 09:21:40 328

原创 贪心:Burst Balloons 最少次数完成射击气球

已知在一个平面上有一定数量的气球,平面可以看作一个坐标系,在平面的x轴的不同位 置安排弓箭手向y轴方向射箭,弓箭可以向y轴走无穷远;给定气球的宽度 xstart ≤ x ≤ xend,问至少需要多少弓箭手,将全部气球打爆?例如: 四个气球 : [[10,16], [2,8], [1,6], [7,12]],至少需要2个弓箭手。如下过程在射击的过程中想要安排最少的弓箭手保证能够完成所有气球的...

2019-11-08 09:05:19 406

原创 linux 文件查找命令集:find,locate,wheres,which,type

前言在linux系统中一切皆文件,此时我们想要从海量的文件中快速定位中我们想要的文件来,需要指定的命令来操作。以下为收集的各个命令,以及其优劣,使用方式。find命令centos下:rpm包findutils-4.5.11-3.el7.x86_64find是最常用也是最强大的查找命令,它可以查找任何类型的文件。命令格式:find [-H] [-L] [-P] [-D debugopts...

2019-11-07 16:08:31 337

原创 r-route 命令 显示/配置ip路由表

文章目录前言语法格式命令使用输出含义使用实例前言route命令用于显示和配置IP路由表,在不同节点间的网络通信,想要实现同一局域网之间的通信就需要交换机,不同局域网之间的通信就需要路由器。而路由器的存在是为了提供NAT转换,即提供ip地址和物理地址之间的映射关系,因为不同局域网节点之间的通信是需要直到对方局域网的外网ip,此时数据包只能通过外网ip经过NAT(依赖ip 路由表)转换之后获取到局...

2019-11-06 21:03:50 1792

原创 贪心:jump 游戏(获取最少跳跃的次数以及跳跃路径)

一个数组存储了非负整型数据,数组中的第i个元素a[i],代表了可以从数组第i个 位置最多向前跳跃a[i]步;已知数组各元素的情况下,求是否可以从数组的第0个位置跳跃到数组的最后一个元素的位置,返回最少跳跃的次数以及跳跃过程的路径(以数组下标标识)例如:nums = [2, 3, 1, 1, 4] ,可以从nums[0] = 2 跳跃至 nums[4] = 4; 最少跳跃次数为2,跳跃路径为[0...

2019-11-06 13:30:15 860

原创 贪心:Jump Game 跳跃游戏

一个数组存储了非负整型数据,数组中的第i个元素a[i],代表了可以从数组第i个 位置最多向前跳跃a[i]步;已知数组各元素的情况下,求是否可以从数组的第0个位置跳跃到数组的最后一个元素的位置,返回最少跳跃的次数例如:nums = [2, 3, 1, 1, 4] ,可以从nums[0] = 2 跳跃至 nums[4] = 4;nums = [3, 2, 1, 0, 4] ,不可以从nums[0...

2019-11-06 00:22:50 465

原创 贪心:remove K digits移除K个数字

问题描述:已知一个使用字符串表示的非负整数num,将num中的k个数字移 除,求移除k个数字后,可以获得的最小的可能的新数字。例如:num = “1432219” , k = 3在去掉3个数字后得到的很多很多可能里,如1432、4322、2219、1219、1229…; 去掉数字4、3、2得到的1219最小!贪心规律:根据以上举例,移除三个数的过程中每一次我们移除一个数的时候,想...

2019-11-05 23:25:11 328

原创 n-netstat 查看网络状态命令

文章目录前言语法格式输出含义使用实例列出端口占用情况 (包括监听和未监听的)列出所有处于监听状态的 Sockets显示每个协议的统计信息在 netstat 输出中显示 PID 和进程名称在 netstat 输出中不显示主机,端口和用户名 (host, port or user)持续输出 netstat 信息显示系统不支持的地址族 (Address Families)显示核心路由信息查询进程运行端口...

2019-11-05 20:44:35 3080

原创 贪心:Wiggle Subsequence 摇摆序列

一个整数序列,如果两个相邻元素的差恰好正负(负正)交替出现,则该序列被称为摇摆序列。一个小于2个元素的序列直接为摇摆序列。给一个随机序列,求这个序列满足摇摆序列定义的最长子序列的长度:输入[1,17,5,10,13,15,10,5,16,8],结果为7([1,17,10,13,10,16,8] )序列 [1, 7, 4, 9, 2, 5],相邻元素的差 (6, -3, 5, -7, 3),则...

2019-11-03 20:31:30 586

原创 贪心:assign cookies分糖果

贪心算法的核心:遵循某种规律,使用最少的资源来完成目标所以在了解贪心算法的时候需要明确两点寻找共有的规律每一步的迭代使用最优的策略(消耗最少的资源)问题如下:已知一些孩子和一些糖果,每个孩子有需求因子g,每个糖果有大小s,当 某个糖果的大小s >= 某个孩子的需求因子g时,代表该糖果可以满足该孩子;求使用这 些糖果,最多能满足多少孩子?(注意,某个孩子最多只能用1个糖果满足)...

2019-11-03 20:12:31 233

原创 C++的 STL堆 实现获取中位数

前言堆数据结构 使用的是优先级队列实现,创建堆的时候需要指定堆中元素的排列方式,即最大堆或者最小堆最大堆即 堆顶元素为堆中最大的元素最小堆即 堆顶元素为堆中最小堆元素如下为一个最大堆中位数:一组数排序后,如果元素个数如下奇数个数n:(int) n/2 的数偶数个数n: (int) n/2 和(int) n/2 +1的平均数同样此时想要获取一组数列中的中位数,且同样使用时间复...

2019-11-03 14:11:05 1870

原创 C++的STL 堆 实现获取数组堆第K大的数

前言堆数据结构 使用的是优先级队列实现,创建堆的时候需要指定堆中元素的排列方式,即最大堆或者最小堆最大堆即 堆顶元素为堆中最大的元素最小堆即 堆顶元素为堆中最小堆元素如下为一个最大堆回到文章标题,获取一个数组中第K大的数,要求时间复杂度是O(n),即一次遍历即可获取到该值。所以普通的先排序,再获取第k个数值的方式显然不满足要求,排序最快的快速排序也需要O(log2 n)这里就是我...

2019-11-03 13:41:06 1009

原创 C++的STL 栈 实现四则运算

使用栈实现四则运算,支持+,-,*,/,(,)输入为字符串,输出为计算好的数值,如不符合四则运算的规定,则异常退出这个实现借用了栈以及字符处理状态机的思想:维护两个栈:一个用于数值,另一个用于存放计算符号字符状态机用于遍历输入的字符串过程中进行对应数值处理和计算符号处理的状态转换在第一个思想中:符号栈中存在优先级,即*和/的优先级高于+和-,同时括号的优先级高于*和/,所以符号栈的入...

2019-11-02 20:21:17 763

原创 C++的STL 栈实现 判断栈的出栈顺序是否合理

有这样的题目:已知从1至n的数字序列,按顺序入栈,每个数字入栈后即可出栈, 也可在栈中停留,等待后面的数字入栈出栈后,该数字再出栈,求该数字序列的出栈序列是否合法?类似如下:已知栈的出栈序列为:3 2 5 4 1,判断该栈的出栈序列是否合法过程如下:第一次1-5顺序入栈:1,2,3第二次 3 出栈:1,2第三次 2 出栈:2第四次 4,5 入栈:1,4,5第五次 5 出栈:1,4...

2019-11-02 19:16:27 807

systemtap beginner guide

systemtap基本介绍 以及 用户态探针基本用法,内核态探针基本用法,一些报错异常处理 还有非常多的基本案例,适合内核调试入门

2020-12-15

分部署存储 技能树.svg

分布式存储技能图谱,较为全面的分布式存储技能学习路线。 建域本人接触分布式存储系统中的ceph开源分布式存储较多,所以关于具体的分布式系统主要偏向于ceph的技能; 除此之外,其他的技能基本是一个好得分布式开发工程师通用的技能路线;依据该路线,我们仅仅是有一个学习的广度拓展,至于深度拓展仍需要各位看官自己评估

2019-12-06

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除