自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

LITTENg的博客

刚开始学习编程的菜鸟

  • 博客(113)
  • 收藏
  • 关注

原创 __attribute__((constructor))和__attribute__((destructor))的用法

最近在学习FIO源码的时候,一开始总是没能理解FIO是怎么注册ioengine,运行到main里面的时候engine_list已经插入了所有的ioengine. 后来发现原来是因为FIO在注册ioengine函数之前加上了属性:__attribute__((constructor)), 本着不懂就学的态度,立马去查阅了相关的资料。汇总如下以作记录。首先在GNU gcc的官网文档中查看__attribute__的有关资料:属性说明符用于描述函数,变量,类型(比如结构体,联合和枚举)标签,枚举器,语句的属性

2022-05-08 17:57:02 858

原创 GNU GCC 常见函数属性__attribute__的用法

首先在GNU gcc的官网文档中查看__attribute__的有关资料:属性说明符用于描述函数,变量,类型(比如结构体,联合和枚举)标签,枚举器,语句的属性。编译器可以根据这些指定属性做出相应的优化。属性说明符的形式为 __attribute__ ((attribute-list))。 属性列表是一个可能为空的以逗号分隔的属性序列,其中每个属性是以下之一:空,会被编译器忽略#include <stdio.h>__attribute__(()) int main(void){

2022-05-08 17:30:53 1395

原创 如何单独编译Linux源代码中的驱动模块,比如NVMe驱动?

的确,在下载了Linux的源代码之后,Linux的Makefile提供个很完善灵活的编译方法,比如:`make menuconfig` 可以让我们非常方便的编译一个完整的内核。但是,对于模块开发来说我们不需要编译一个完整的内核,而只更改对应模块中的部分代码。那么本文就一步一步的告诉你该怎么编译一个驱动模块,比如NVMe驱动(默认你已经下载了完整的Linux源代码)。确定将要运行你新编译的模块的平台的Linux版本信息uname -r 笔者的平台信息是:5.13.0-41-generic 如

2022-05-06 20:19:54 2847 7

原创 pyinstaller的学习和使用(一):打包python脚本,跨平台使用

平时写好的python脚本如果需要运行的话,就需要你的电脑上安装有python解释器。并且需要安装改脚本所有的依赖库。这无疑限制了python脚本的跨平台使用。此时pyinstaller就是一个解决这些问题的方法之一。pyinstaller可以通过分析您所编写的python代码,找到该脚本执行所需要的所有其他模块和库,包括python解释器,将它们的副本放在一个文件夹中或者可选的放在一个可执行文件中,这样其它用户无需安装python解释器和依赖库就可以运行打包好的可执行文件。 它支持为不同的操作系统平台:

2022-02-26 18:02:05 2242 1

原创 Cannot find color scheme ‘solarized‘

我是使用的Vbundle管理VIM插件的。但是按照VimAwesome上的描述安装之后报了下面的错误:Error detected while processing /home/longtao/.vimrc:line 15:E185: Cannot find color scheme ‘solarized’Press ENTER or type command to continue后来发现是因为VIM在运行的时候找不到文件路径,后来把路径加入到VIM的runtimepath改过之后就行了s

2021-01-22 19:15:29 2087 2

原创 Window10 WSL2 Linux子系统文件目录路径

我在将WSL1更新到WSL2之后发现以前可以从Window文件系统中直接访问的Linux文件的方式不能用了C:\Users\LongtaoGao\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\LocalState\rootfs\后来在对比了官网的描述之后,原来是WSL2 建议不要跨操作系统使用文件。但是我们仍然可以通过以下方式直接在Window系统的基础上访问到Linux的文件比如

2020-11-20 17:51:52 23592 1

原创 VIM 如何安静的执行外部命令

VIM 如何安静的执行外部命令?我之前使用cscope的时候想要自动检测当前目录下是否有cscope.out文件,如果没有的话,VIM能够自动生成。然后加了以下几行到.vimrc中: if filereadable("cscope.out") cs add cscope.out else !cscope -Rkb cs add cscope.out endif但是用下来发现有个很烦的事情就是VIM会先让你按回车键才会往下执行::

2020-11-03 10:16:21 480

原创 解决Raspberry PI 4 ssh远程连接时connect refused

直接参照官方文档,写的很清楚:https://www.raspberrypi.org/documentation/remote-access/ssh/Enable SSHAs of the November 2016 release, Raspbian has the SSH server disabled by default. It can be enabled manually fr...

2019-09-26 19:02:32 1490

原创 cannot move location counter backwards

在链接的过程中, 出现这种问题, 不用怀疑了, 就是因为linker在把编译好的数据放在对应的section的时候, 超过了这段section的大小, 即越界了。要想解决, 要么把这个section扩大, 要么在代码里面将一些code放到其它的section...

2019-01-09 12:56:39 3995 2

原创 安装YouCompleteMe中遇到的问题:/libclang.so: file format not recognized; treating as linker script

我在安装llvm+clang的时候总是会在最后遇到这个问题。。。/usr/bin/ld:/root/shell/llvm/lib/libclang.so: file format not recognized; treating as linker script/usr/bin/ld:/root/shell/llvm/lib/libclang.so:1: syntax error百思不得其解...

2018-12-09 12:43:44 2528

原创 编译YouCompleteMe的问题:File .vim/*/YouCompleteMe/third_party/ycmd/build.py does not exist

编译YouCompleteMe的问题:File .vim/*/YouCompleteMe/third_party/ycmd/build.py does not exist之后运行git submodule update --init --recursive多次没有任何反应笔者试了一下圈。。。都不行。 最后发现是因为我从github上直接下载的压缩包, 所以运行这个命令不行。而应该直接用gi...

2018-11-28 09:00:00 4439 1

原创 vim 自动补全各种类型的括号和单双引号(),{}, [], "", '',并且光标调到括号的中间或者自动换行

vim的使用怎么才能在使用vim的过程中自动补全各种类型的括号?vim ~/.vimrc将以下内容复制进去inoremap { {}inoremap ( ()inoremap &amp;amp;amp;lt; &amp;amp;amp;lt;&amp;amp;amp;gt;inoremap [ []inoremap &amp;amp;quot; &amp;amp;quot;&amp;amp;quot;inoremap ' ''之后在使用过

2018-11-27 22:16:39 3833 2

原创 windows环境之下如何添加NVMe VSC 命令

work with NVMe driver Vendor Specific Command 笔者刚开始使用pass through发送VSC的命令总是不能成功,最后发现是这个问题。 windows Inbox Driver 的pass through 机制要求如果要支持VSCcommand, 那么必须要有Command Support and Effects log,这个log里面填写所有主...

2018-07-01 14:53:12 2683

原创 231. 2的幂

题目分析: 除了特殊数字1之外,凡是2的幂的整数,在整除2的时候余数都为0,并且一直除以2最后总能得到商是1。 此外还需要注意0这个情况。//C++class Solution {public: bool isPowerOfTwo(int n) { while(n &gt;= 2 &amp;&amp; n % 2 == 0){ ...

2018-06-19 16:08:22 271

原创 2. 两数相加--类似两条链表的合并

题目描述: 给定两个非空链表来表示两个非负整数。位数按照逆序方式存储,它们的每个节点只存储单个数字。将两数相加返回一个新的链表。你可以假设除了数字 0 之外,这两个数字都不会以零开头。示例:输入:(2 -&gt; 4 -&gt; 3) + (5 -&gt; 6 -&gt; 4) 输出:7 -&gt; 0 -&gt; 8 原因:342 + 465 = 807 题目分析:这道题目就...

2018-05-05 10:54:07 330

原创 507. 完美数

题目描述: 对于一个 正整数,如果它和除了它自身以外的所有正因子之和相等,我们称它为“完美数”。给定一个 正整数 n, 如果他是完美数,返回 True,否则返回 False示例:输入: 28 输出: True 解释: 28 = 1 + 2 + 4 + 7 + 14注意:输入的数字 n 不会超过 100,000,000. (1e8)题目分析:易知一个数n一半的因子都在 ...

2018-05-05 09:45:12 1378

原创 解决cmake使用过程中The C compiler identification is unknown 或者The CXX compiler identification is unknown问题

属于编译器没有进行安装,可以根据你的系统选择在命令行中运行下面的命令。 RedHat-basedyum install gcc gcc-c++Debian/Ubuntu-basedapt-get install cmake gcc g++如果你权限不够,在命令前面加上sudo执行 最后重新编译你的project即可...

2018-05-03 22:51:29 19778 6

原创 61. 旋转链表

题目分析:分析题目的要求之后,有点像先找到链表的倒数第k个结点,然后将链表首位相连在一起成环状,然后从倒数第k个结点成为新的头节点,从其前面断开。 先让q指针从head出发往后遍历k+1个结点,开始让p也从head出发和q一起同时往后挪动,当q到链表的最后一个结点的时候,p所指的结点就是倒数第k+1个结点。/** * Definition for singly-linked list. ...

2018-04-29 22:35:58 354

原创 189. 旋转数组--三次区间翻转

题目描述; 给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。示例 1:输入: [1,2,3,4,5,6,7] 和 k = 3 输出: [5,6,7,1,2,3,4] 解释: 向右旋转 1 步: [7,1,2,3,4,5,6] 向右旋转 2 步: [6,7,1,2,3,4,5] 向右旋转 3 步: [5,6,7,1,2,3,4] 示例 2:输入: [-...

2018-04-29 22:05:21 519

原创 397. 整数替换---坑点

题目描述: 给定一个正整数 n,你可以做如下操作:如果 n 是偶数,则用 n / 2替换 n。如果 n 是奇数,则可以用 n + 1或n - 1替换 n。 n 变为 1 所需的最小替换次数是多少? 题目分析: 因为第二步有两种选择使用n+1或者n-1替换,又要求最少的次数。思考之后使用递归的方法,递归边界是:n==1,返回0。其中有个注意点是如果n的初始值是int类型的最大值(是个...

2018-04-29 21:50:04 831

原创 204. 计数质数---筛选法

题目:统计所有小于非负数整数 n 的质数的数量。示例:输入: 10 输出: 4 解释: 小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。 题目分析:其实就是判断小于n的所有质数的个数。我使用的是筛选法: 设置标记数组flag[n+1],初始化都为false,已知2是质数,那么可以肯定的是凡是2的倍数的数都不是质数了,将这些数的标记都置为true。然后往下遍历发现...

2018-04-29 21:40:17 1718

原创 572. 另一个树的子树

题目分析:另外写一个函数用于判断两颗二叉树是不是相同的。然后依次挪动s的位置,对s当前指的节点调用上面的函数,进行判断。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeN...

2018-04-29 10:34:34 290

原创 111. 二叉树的最小深度--递归

题目分析: 因为是求的最小深度,一个注意点就是:如果该节点为空,那么其深度为0,如果一个节点的左子树为空,那么可以肯定的是该节点的最小深度一定不是其左子树决定的,同样如果一个节点的右子树为空,那么该节点的最小深度也一定不是其右子树决定的,如果两个子树都为空,那么其最小深度就是1。这样递归判断即可/** * Definition for a binary tree node. * s...

2018-04-29 10:13:04 319

原创 693. 交替位二进制数--一行代码搞定

题目描述: 给定一个正整数,检查他是否为交替位二进制数:换句话说,就是他的二进制数相邻的两个位数永不相等。示例 1:输入: 5 输出: True 解释: 5的二进制数是: 101 示例 2:输入: 7 输出: False 解释: 7的二进制数是: 111 示例 3:输入: 11 输出: False 解释: 11的二进制数是: 1011 示例 4:输入...

2018-04-24 20:37:12 696

原创 43. 字符串相乘

题目描述: 给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。示例 1:输入: num1 = “2”, num2 = “3” 输出: “6” 示例 2:输入: num1 = “123”, num2 = “456” 输出: “56088” 说明:num1 和 num2 的长度小于110。num...

2018-04-22 21:25:53 349

原创 415. 字符串相加

题目描述: 给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。注意:num1 和num2 的长度都小于 5100.num1 和num2 都只包含数字 0-9.num1 和num2 都不包含任何前导零。 你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式。 题目分析: 没什么难点,设置两个变量i,j分别从num1和num2的...

2018-04-22 20:27:07 916

原创 23. 合并K个排序链表--有序链表的合并问题

题目描述: 合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。示例:输入: [ 1-&gt;4-&gt;5, 1-&gt;3-&gt;4, 2-&gt;6 ] 输出: 1-&gt;1-&gt;2-&gt;3-&gt;4-&gt;4-&gt;5-&gt;6 题目分析: 首先写一个将两个有序链表合并为一个链表的函数,使用此函数将lists中...

2018-04-22 16:37:52 1579

原创 520. 检测大写字母

题目分析: 注意点: 1. 只有一个字母的时候,都是对的直接返回true. 2. 如果首字母是小写的,只要后面没有大写字母就是true 3. 如果首字母是大写,只要后面不同时出现大小写字母,则trueclass Solution {public: bool detectCapitalUse(string word) { ...

2018-04-22 14:29:32 494

原创 389. 找不同

题目分析: 将两个字符串按照字母序进行排序,然后从头开始遍历,找出第一个不相等的元素即为所求。class Solution {public: char findTheDifference(string s, string t) { sort(s.begin(),s.end()); sort(t.begin(),t.end()); ...

2018-04-22 13:37:41 477

原创 766. 托普利茨矩阵

题目分析: [i,j]位置对应的对角线上的下一个元素的位置为[i+1,j+1];class Solution {public: bool isToeplitzMatrix(vector&lt;vector&lt;int&gt;&gt;&amp; matrix) { for(int i=0;i&lt;matrix.size();i++){ ...

2018-04-22 12:40:56 564

原创 538. 把二叉搜索树转换为累加树

题目分析: 其实只要看到BST就应该立马想到它的一个重要的性质:其中序遍历序列是非递减的。因此本题目的思路就是:先求树中所有结点值的和sum,然后中序遍历BST,用sum代替之前的结点值,然后更新sum。 请看下面的代码:class Solution {public: void inorder(TreeNode*root,int &amp;sum){ ...

2018-04-22 12:25:57 1601

原创 617. 合并二叉树

题目分析: 题目要求将两个二叉树实现合并,那么可以使用递归的思想,首先判断t1和t2的性质: 1. 如果都不空,那么t1的结点值更新为两者的结点值之和,之后t1的新左子树就是递归处理t1和t2的左子树得到结果,同理可得t1的新的右子树。 2. 如果只有t2不空,那么返回t2结点即可; 3. 如果只有t1不空,直接返回t1结点; 4. 如果两结点都为...

2018-04-22 11:43:00 2409

原创 226. 翻转二叉树--递归

题目分析: 直接递归即可,代码如下:/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), ...

2018-04-22 10:39:43 300

原创 806. 写字符串需要的行数

题目描述: 我们要把给定的字符串 S 从左到右写到每一行上,每一行的最大宽度为100个单位,如果我们在写某个字母的时候会使这行超过了100 个单位,那么我们应该把这个字母写到下一行。我们给定了一个数组 widths ,这个数组 widths[0] 代表 ‘a’ 需要的单位, widths[1] 代表 ‘b’ 需要的单位,…, widths[25] 代表 ‘z’ 需要的单位。现在回答两个问题:...

2018-04-22 10:30:53 627 2

原创 728. 自除数

题目描述: 自除数 是指可以被它包含的每一位数除尽的数。例如,128 是一个自除数,因为 128 % 1 == 0,128 % 2 == 0,128 % 8 == 0。还有,自除数不允许包含 0 。给定上边界和下边界数字,输出一个列表,列表的元素是边界(含边界)内所有的自除数。示例 1:输入: 上边界left = 1, 下边界right = 22 输出: [1, 2, ...

2018-04-21 16:52:42 1689

原创 762. 二进制表示中质数个计算置位

题目描述: 给定两个整数 L 和 R ,找到闭区间 [L, R] 范围内,计算置位位数为质数的整数个数。(注意,计算置位代表二进制表示中1的个数。例如 21 的二进制表示 10101 有 3 个计算置位。还有,1 不是质数。)示例 1:输入: L = 6, R = 10 输出: 4 解释: 6 -&gt; 110 (2 个计算置位,2 是质数) 7 -&gt; 111 (3 ...

2018-04-21 10:42:43 912

原创 477. 汉明距离总和

题目描述: 两个整数的 汉明距离 指的是这两个数字的二进制数对应位不同的数量。计算一个数组中,任意两个数之间汉明距离的总和。示例:输入: 4, 14, 2输出: 6解释: 在二进制表示中,4表示为0100,14表示为1110,2表示为0010。(这样表示是为了体现后四位之间关系) 所以答案为: HammingDistance(4, 14) + HammingDistanc...

2018-04-21 09:59:28 1612

原创 461. 汉明距离--位运算

题目描述: 两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。给出两个整数 x 和 y,计算它们之间的汉明距离。注意: 0 ≤ x, y &lt; 231.示例:输入: x = 1, y = 4输出: 2解释: 1 (0 0 0 1) 4 (0 1 0 0) ↑ ↑上面的箭头指出了对应二进制位不同的位置。 题目分析...

2018-04-20 15:46:23 649

原创 350. 两个数组的交集 II

题目描述: 给定两个数组,写一个方法来计算它们的交集。例如: 给定 nums1 = [1, 2, 2, 1], nums2 = [2, 2], 返回 [2, 2].注意:输出结果中每个元素出现的次数,应与元素在两个数组中出现的次数一致。 我们可以不考虑输出结果的顺序。 跟进:如果给定的数组已经排好序呢?你将如何优化你的算法? 如果 nums1 的大小比 nums2 ...

2018-04-20 15:34:41 188

原创 349. 两个数组的交集

题目描述: 给定两个数组,写一个函数来计算它们的交集。例子:给定 num1= [1, 2, 2, 1], nums2 = [2, 2], 返回 [2].提示:每个在结果中的元素必定是唯一的。 我们可以不考虑输出结果的顺序。 题目分析: 要找到两个数组的交集,先对两个数组进行排序,之后从每个数组的开始进行遍历,如果是公共元素,那么放入set容器当中。class Sol...

2018-04-20 15:28:58 355

空空如也

空空如也

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

TA关注的人

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