自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(49)
  • 收藏
  • 关注

原创 Linux进程崩溃排查方法

dmesgaddr2lineaddr2line接受的地址是相对偏移地址readelfnm/var/lib/apport/coredumpulimit -caddr2line -e libfun.so 112e

2022-03-07 18:55:01 4650

原创 run包原理

run 程序安装包实质上是一个安装脚本加要安装的程序,如下所示:|—————–——|| || 安装脚本 || ||—————–——|| || 程序 || ||—————–——|执行run包安装时,实际上仅执行脚本部分,以一个小程序为例:可执行程序:he

2022-01-16 21:48:03 836

原创 每日一题(21)

题目:最接近的三数之和题目描述给你一个长度为 n 的整数数组 nums 和 一个目标值 target。请你从 nums 中选出三个整数,使它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在恰好一个解。解题思路使用双指针来求解,那么首先将数组按照大小排序,固定一个数值,第二个和第三个从首尾依次移动,根据三数之和与target的大小来选择指针移动的方向。代码class Solution {public: int threeSumClosest(vector<i

2021-11-17 21:44:52 148

原创 每日一题(20)

题目:范围求和Ⅱ题目描述给定一个初始元素全部为 0,大小为 m*n 的矩阵 M 以及在 M 上的一系列更新操作。操作用二维数组表示,其中的每个操作用一个含有两个正整数 a 和 b 的数组表示,含义是将所有符合 0 <= i < a 以及 0 <= j < b 的元素 M[i][j] 的值都增加 1。在执行给定的一系列操作后,你需要返回矩阵中含有最大整数的元素个数。解题思路可以计算二维操作数组的重复区域,该重复区域则是累加次数最多的。此外i和j的值均是小于ab的,那么不会出

2021-11-07 21:56:03 117

原创 每日一题(19)

题目:键盘行题目描述给你一个字符串数组 words ,只返回可以使用在 美式键盘 同一行的字母打印出来的单词。键盘如下图所示。美式键盘 中:第一行由字符 “qwertyuiop” 组成。第二行由字符 “asdfghjkl” 组成。第三行由字符 “zxcvbnm” 组成。解题思路将每一行字符保存起来,然后把单词中的每个字符与其进行比较。首先考虑遍历顺序的问题,可以按照a~z的顺序去判断单词中每个字符所在的行数,当某个字符与单词的第一个字符不是在同一行时,停止遍历。代码class Solu

2021-10-31 21:33:02 128

原创 鸟哥的私房菜——shell脚本

shell脚本的作用目前我对于shell脚本的理解就是将多条命令行放入一个文件中,,通过执行这个文件来执行其中的命令,而不需要一个一个的去执行那些命令,将工作变简单。shell脚本的运行使用./或者bash命令来执行脚本时,都是在一个新的bash环境中执行脚本的命令,子进程执行结束后其中的变量就释放掉了,在父进程中无法看到。但是通过source执行脚本时,是在父进程中执行,就能获取变量的值。shell脚本的默认变量$0:执行的脚本文件名$1:第一个参数$#:表示脚本文件执行时后边接的参数个数

2021-10-26 22:44:45 196

原创 每日一题(18)

题目:下一个更大元素题目描述给你两个 没有重复元素 的数组 nums1 和 nums2 ,其中nums1 是 nums2 的子集。请你找出 nums1 中每个元素在 nums2 中的下一个比其大的值。nums1 中数字 x 的下一个更大元素是指 x 在 nums2 中对应位置的右边的第一个比 x 大的元素。如果不存在,对应位置输出 -1 。解题思路将nums2中的元素倒着放到栈中,保证栈中的元素排序是从栈顶按照从大向小排,这样就可以保证找到每一个元素右边第一个比他大的代码class Solu

2021-10-26 22:23:56 92

原创 每日一题(17)

题目:搜索二维矩阵题目描述编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性:每行的元素从左到右升序排列。每列的元素从上到下升序排列。解题思路从右上角往下搜索,这样的话,如果这个值比target大则这一列都比target大,如果这个值比target小,则这一行都比target小代码class Solution {public: bool searchMatrix(vector<vector<int>>

2021-10-25 21:57:03 113

原创 每日一题(16)

题目:最小操作次数使数组元素相等题目描述给你一个长度为 n 的整数数组,每次操作将会使 n - 1 个元素增加 1 。返回让数组所有元素相等的最小操作次数解题思路首先这是一个智商题,n-1个数加1,最终所有的数相等,等于一个数减1,最终所有的数相等相等值肯定是最小值,那么其他数减去最小数的和即为操作次数代码class Solution {public: int minMoves(vector<int>& nums) { int minNum = *

2021-10-20 21:58:06 176

原创 每日一题(15)

题目:数字的补数题目描述对整数的二进制表示取反(0 变 1 ,1 变 0)后,再转换为十进制表示,可以得到这个整数的补数。例如,整数 5 的二进制表示是 “101” ,取反后得到 “010” ,再转回十进制表示得到补数 2 。给你一个整数 num ,输出它的补数。解题思路计算二进制,然后取反,在计算十进制代码class Solution {public: int findComplement(int num) { string bin=""; whi

2021-10-18 22:31:48 136

原创 每日一题(14)

题目:二叉搜索树中第K小的元素题目描述给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查找其中第 k 个最小元素(从 1 开始计数)。解题思路二叉搜索树的每一个节点的左子树节点比其小,右子树的节点比其大,可以通过中序遍历的方法来选择第k小的数代码class Solution {public: int kthSmallest(TreeNode* root, int k) { stack<TreeNode*> sta; while (r

2021-10-17 17:24:00 51

原创 鸟哥的私房菜——正则表达式

通配符和正则表达式的区别语系会影响正则表达式

2021-10-17 16:26:21 259 1

原创 每日一题(13)

题目:外观数列题目描述题目较长,还是去力扣看吧解题思路根据题目描述的数列关系,使用string一个一个的计算代码class Solution {public: string countAndSay(int n) { string num="1"; if(n==1) return num; for(int i=2;i<=n;++i) { string r

2021-10-15 22:37:09 54

原创 每日一题(12)

题目:山峰数组的顶部题目描述符合下列属性的数组 arr 称为 山峰数组(山脉数组) :arr.length >= 3存在 i(0 < i < arr.length - 1)使得:arr[0] < arr[1] < … arr[i-1] < arr[i]arr[i] > arr[i+1] > … > arr[arr.length - 1]给定由整数组成的山峰数组 arr ,返回任何满足 arr[0] < arr[1] < … ar

2021-10-14 22:07:27 75

原创 每日一题(12)

题目:Fizz Buzz题目描述给你一个整数 n ,找出从 1 到 n 各个整数的 Fizz Buzz 表示,并用字符串数组 answer(下标从 1 开始)返回结果,其中:answer[i] == “FizzBuzz” 如果 i 同时是 3 和 5 的倍数。answer[i] == “Fizz” 如果 i 是 3 的倍数。answer[i] == “Buzz” 如果 i 是 5 的倍数。answer[i] == i 如果上述条件全不满足。解题思路能被15整除的数肯定是3和5的倍数Fizz

2021-10-13 22:30:13 87

原创 每日一题(11)

题目:两数相除题目描述给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。返回被除数 dividend 除以除数 divisor 得到的商。整数除法的结果应当截去(truncate)其小数部分,例如:truncate(8.345) = 8 以及 truncate(-2.7335) = -2解题思路不能使用乘除取余,那么在计算除法的时候可以使用移位,通过移位来找到最接近被除数的值,除数所增大的倍数就是商需要注意-2147483647

2021-10-12 23:22:53 76

原创 每日一题(10)

题目:整数转换英文表示题目描述将非负整数 num 转换为其对应的英文表示。解题思路从个位开始向前,再建一个map对应0~9的英文,还要十位、百位等的map代码class Solution {public: vector<string> singles = {"", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine"}; vector<string> teens

2021-10-11 22:05:41 63

原创 每日一题(9)

题目:排列硬币题目描述你总共有 n 枚硬币,并计划将它们按阶梯状排列。对于一个由 k 行组成的阶梯,其第 i 行必须正好有 i 枚硬币。阶梯的最后一行 可能 是不完整的。给你一个数字 n ,计算并返回可形成 完整阶梯行 的总行数。解题思路可以通过累加求和的方法,当和大于给定的硬币数量时停止根据求和公式列一元二次方程,对方程进行求解二分法,总行数只可能在1~n之间,通过求和公式来比较大小,得到最终的结果代码class Solution {public: int arrangeC

2021-10-10 22:04:35 113

原创 鸟哥的私房菜——BASH&Shell

shell是用户与内核沟通的桥梁,通过shell可以让内核知道我们输入的命令,然后内核再控制硬件完成工作。变量顾名思义是一个可以变化的量,通过使用变量,可以简化一些工作。最简单的例子,定义一个变量并给了一个初始值,在后边的代码中多次使用该变量,如果需要修改,则只对变量定义处修改,而后边所有使用该变量的地方均得到修改。设置与输出变量定义时等号两边不允许有空格bash中的’或"是成对出现的,如果定义一个值为VBird’s的变量,可以使用双引号内加单引号的方式,或者是转义,输出变量时一定要加上$符号,

2021-10-10 17:46:30 186

原创 每日一题(8)

题目:将数据流变为多个不相交区间题目描述给你一个由非负整数 a1, a2, …, an 组成的数据流输入,请你将到目前为止看到的数字总结为不相交的区间列表。实现 SummaryRanges 类:SummaryRanges() 使用一个空数据流初始化对象。void addNum(int val) 向数据流中加入整数 val 。int[][] getIntervals() 以不相交区间 [starti, endi] 的列表形式返回对数据流中整数的总结。解题思路首先定义一个区间的数据结构,题解中使

2021-10-09 22:41:15 49

原创 每日一题(7)

题目:重复的DNA序列题目描述所有 DNA 都由一系列缩写为 ‘A’,‘C’,‘G’ 和 ‘T’ 的核苷酸组成,例如:“ACGAATTCCG”。在研究 DNA 时,识别 DNA 中的重复序列有时会对研究非常有帮助。编写一个函数来找出所有目标子串,目标子串的长度为 10,且在 DNA 字符串 s 中出现次数超过一次。解题思路从第一个开始十个字符可能存在重复,从第二个开始十个字符也可能存在重复,以此类推,每十个都有可能,直到倒数第十个整一个map,十个单词为一组放到set里边;上面的方法内存空间占

2021-10-08 21:19:26 69

原创 每日一题(6)

题目:字符串中的单词数题目描述统计字符串中的单词个数,这里的单词指的是连续的不是空格的字符。请注意,你可以假定字符串里不包括任何不可打印的字符。解题思路以空格来区分单词连续空格的情况代码class Solution {public: int countSegments(string s) { if(s.empty()) return 0; int res=0; for(int i=0;i<s.size

2021-10-08 20:19:14 49

原创 鸟哥的私房菜——vim

vimvi是linux系统中标准编辑器,其地位相当于windows中记事本,vim可以看作vi的升级版vim的三种模式:一般指令模式,编辑模式,命令行模式三种模式之间的切换一般指令模式指令说明hjklCtrl+fCtrl+bCtrl+dCtrl+u左移下移上移右移向下翻页向上翻页向下半页向上半页+-n<space>0$HML光标移动到非空格符下一行光标移动到非空格符上一行光标移动到这一行的第n个字符移动到

2021-10-07 18:29:10 131

原创 每日一题(5)

题目:第三大的数题目描述给你一个非空数组,返回此数组中 第三大的数 。如果不存在,则返回数组中最大的数。解题思路数组的大小能否超过3有多个相同的数,而不相同的数能否超过3个遍历一遍数组,通过不同的方式来记录这些信息使用set存放数据,set会自动排序并保证数值的唯一性代码class Solution {public: int thirdMax(vector<int>& nums) { long max1=LONG_MIN, max2=LON

2021-10-06 21:20:14 60

原创 鸟哥的私房菜——文件压缩

目录文件压缩技术原理Linux文件压缩指令compressgzipbzip2xz打包文件压缩技术原理文件压缩最重要的一点是文件的准确性,要确保文件压缩前和解压后是完全相同的,根据鸟哥私房菜中所说,一种压缩方式是将空的bit位丢弃,来减少文件占用的内存空间;另一种是对重复的数据进行统计,采用计数的方法表示这些重复数据,来降低文件内存。Linux文件压缩指令compress一种比较古老的压缩命令,压缩后的文件会增加一个.z的后缀,在压缩多个目录时必须先打包。参数:c 输出结果至标准输出设备(一般指

2021-10-06 17:08:52 197

原创 每日一题(4)

题目:顶端迭代器题目描述请你设计一个迭代器,除了支持 hasNext 和 next 操作外,还支持 peek 操作。实现 PeekingIterator 类:PeekingIterator(int[] nums) 使用指定整数数组 nums 初始化迭代器。int next() 返回数组中的下一个元素,并将指针移动到下个元素处。bool hasNext() 如果数组中存在下一个元素,返回 true ;否则,返回 false 。int peek() 返回数组中的下一个元素,但 不 移动指针。解题

2021-10-05 20:38:22 62

原创 SVN使用教程(Linux)

目录导出到本地提交更新查看日志查看文件详细信息差异比较删除版本回退移除冲突状态查看文件列表创建纳入版本控制的目录文件合并官方文档:https://svnbook.red-bean.com/zh/1.6/index.html导出到本地svn checkout svn地址# 简写svn co svn地址提交在上传时首先将文件添加到版本控制中,添加成功状态是A,没有添加的时候是?,然后使用commit进行提交,在提交的时候加上-m参数,加入注释信息,如果没有写-m,会打开一个文本编辑器来提交相关信

2021-10-05 16:52:35 863

原创 每日一题(3)

题目 密钥格式化题目描述有一个密钥字符串 S ,只包含字母,数字以及 ‘-’(破折号)。其中, N 个 ‘-’ 将字符串分成了 N+1 组。给你一个数字 K,请你重新格式化字符串,使每个分组恰好包含 K 个字符。特别地,第一个分组包含的字符个数必须小于等于 K,但至少要包含 1 个字符。两个分组之间需要用 ‘-’(破折号)隔开,并且将所有的小写字母转换为大写字母。给定非空字符串 S 和数字 K,按照上面描述的规则进行格式化。解题思路本题是要将字符串重新分组,第一组的字符数量要特殊处理,来保证后边

2021-10-04 23:21:11 125

原创 每日一题(2)

题目 分数到小数给定两个整数,分别表示分数的分子 numerator 和分母 denominator,以 字符串形式返回小数 。如果小数部分为循环小数,则将循环的部分括在括号内。如果存在多个答案,只需返回 任意一个 。对于所有给定的输入,保证 答案字符串的长度小于 104 。解题思路是否会有溢出先计算整数部分,再计算小数部分对于循环小数,确定循环位置分子分母异号代码class Solution {public: string fractionToDecimal(int n

2021-10-03 23:35:15 66

原创 OD实战(1)

软件暴力破解软件破解软件TraceMe下载地址:https://pan.baidu.com/s/1bWWm3L6cZ0gOqFIsKXQqkw 提取码:uqcd破解软件运行以后需要输入用户名和序列号,通过文本比较,只有正确的账号信息才能够进入,我们所要作的就是通过OD工具对软件进行暴力破解,不需要输入账号就可以进入。思路就是找到判断输入的信息是否正确的位置,将这个位置进行修改,则完成破解。第一种方法就是我们逐步运行程序,每次到输入信息界面停止,然后再次执行程序,进入上次终止的函数内部,直到找

2021-10-03 22:19:30 2179

原创 OD使用说明

目录功能下载使用界面说明工具栏介绍功能ollydbg是一种动态反汇编工具,可以对代码进行调试下载我下载了吾爱破解专版,因为它集成了多种插件使用软件运行以后就是下面的界面界面说明工具栏介绍...

2021-10-03 16:40:08 789

原创 IDA使用说明

目录功能下载安装使用界面功能IDA是一款反汇编静态分析工具,将程序文件拖到IDA中,可以看到汇编代码。下载https://hex-rays.com/products/ida/support/download/安装默认next,可以自己选择安装路径使用运行软件以后,通过vs编写一个程序,生成可执行文件,在IDA中打开,文件拖入之后,会有一些提示选项,先默认选择yes、ok,一开始也看不懂~整体的界面显示如下,下面自上向下逐个介绍界面最上边是一些常规的菜单栏和工具栏下边这个长长的有

2021-10-03 13:21:17 1883

原创 每日一题(1)

题目:数字转换为十六进制数给定一个整数,编写一个算法将这个数转换为十六进制数。对于负整数,我们通常使用 补码运算 方法。注意:十六进制中所有字母(a-f)都必须是小写。十六进制字符串中不能包含多余的前导零。如果要转化的数为0,那么以单个字符’0’来表示;对于其他情况,十六进制字符串中的第一个字符将不会是0字符。给定的数确保在32位有符号整数范围内。不能使用任何由库提供的将数字直接转换或格式化为十六进制的方法。解题思路最笨的办法就是根据十进制与十六进制的转换方式,逐位计算,这种方法对于正数比较

2021-10-02 18:30:19 76

原创 SVN使用教程(三)

分支与合并分支合并分支在要创建分支的目录下点击鼠标右键,选择Branch/tag选择分支所在的目录,分支目录必须属于SVN服务端所存在的目录结构,可以选择最新的版本,也可以指定版本创建分支,分支创建完成以后仅仅在服务端创建成功,还需要update到本地。合并可以通过合并将两个分支或者是主干与分支之间进行内容的融合,例如在主干上做出了修改,需要将修改内容合并到分支上去,可以在主干的提交记录中选择相应的版本,选择Merge revision to,然后选择分支所在目录,即可完成合并。对主干下的

2021-09-30 21:25:51 117

原创 SVN使用教程(二)

撤销与恢复本地修改内容撤销提交以后撤销版本恢复忽略设置忽略撤销忽略操作本地修改内容撤销当你在文件中增加了错误内容后,并且文件内已经无法撤销,可以通过SVN进行还原,下面是还未文件状态,可以通过点击鼠标右键,选择Revert进行还原。或者是选择Commit,在提交页面中双击文件,可以显示文件内容,左边为未改动之前的文件内容,右边为改动之后的文件内容,通过两边的对比可以准确的发现修改位置在文件上右键,选择Revert也可以将文件进行还原。提交以后撤销文件已经提交到服务器以后再撤销,可以选择S

2021-09-29 22:31:02 109

原创 SVN使用教程(一)

SVN使用教程下载与安装安装过程服务器基本操作check out下载与安装tortoisesvn下载地址:https://tortoisesvn.net/downloads.html可以在上面的下载地址中下载汉化包安装过程选择next,直到下面的界面可以选择安装command line client tools,便于在idea中使用svn,然后选择想要安装的目录,最后选择next、install就可以了服务器如果是自己学习使用,推荐使用https://svnbucket.com/作为

2021-09-28 22:23:49 163

原创 ros下使用kinect2运行orbslam

kinect2驱动与标定kinect2的使用需要安装相应的驱动,可参考下面的文章kinect2驱动安装安装之后对于相机的标定,上面文章中也有说明,也可以参考官方说明github不过,我自己标定之后效果并不理想,之后直接使用ros中iai_kinect2/kinect2_bridge/data下提供的数据文件效果不错,需要将序列号改成自己的相机的序列号运行slam调用方式1在orbslam2的Examples/ros/orbslam2/src下的os_rgbd.cc中修改为message_f

2020-06-23 19:45:09 605

原创 ORBSLAM2_with_pointcloud_map安装与运行及保存

安装ORBSLAM2_with_pointcloud_map 安装安装g2o问题及解决方法点云图的保存在pointcloudmapping.h确认声明save()函数,然后在pointcloudmapping.cc文件中实现,添加如下代码void PointCloudMapping::save(){ pcl::io::savePCDFileBinary( "result.pcd", ...

2020-03-24 20:52:18 2061 5

原创 c++开发

【Linux】C++后台开发面试C++后台开发面试常见问题汇总C++后台开发校招面试常见问题

2020-03-06 19:55:26 179

原创 SLAM14讲阅读笔记(八)

2D光流光流是一种描述像素随时间在图像之间运动的方法,计算部分像素运动称为稀疏光流,以Lucas-Kanade光流为代表,计算所有像素的称为稠密光流,以Horn-Schunck光流为代表。使用光流法有一个前提:灰度不变假设,即同一个空间点的像素灰度值,在各个图像中是固定不变的。对左式进行泰勒展开根据灰度不变假设,则有除以dt,并写成矩阵形式上式中有两个变量,因此假设一个窗口内的...

2020-01-11 17:35:29 283

空空如也

空空如也

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

TA关注的人

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