自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 [C++] typedef与#define的区别

1.  typedef typedef故名思意就是类型定义的意思,但是它并不是定义一个新的类型而是给已有的类型起一个别名,在这一点上与引用的含义类似,引用是变量或对象的别名,而typedef定义的是类型的别名。typedef的作用主要有两点: 1.1  简化复杂的类型声明 简化复杂的类型声明,或给已有类型起一含义明确的别名;如: typedef bool (*FuncPointe...

2021-04-05 10:46:35 291

原创 [办公] 打印机解决方案

场景我们用Word或者WPS打印文件时,会出现“打印机无法连接”等错误解决方案我们可以按照以下思路排错:打开任务管理器启动下面服务:在上述任意进程右键调出打开服务,然后手动启动Print Spooler服务若经过上述两步骤,问题依然没有解决,再按照下面步骤做:打开设备管理器,检查打印机,并更新驱动程序至此,在重复前面(1)和(2)步骤。资料https://www.jiaochengzhijia.com/digital/taishi/30318.html...

2021-03-09 19:28:24 423

原创 [Linux]内存管理分析

Linux的功能是分模块进行管理的,因此在解剖Linux时,可以对分解着剖析对应模块。Linux模块主要有进程管理、内存管理、文件系统、块层、驱动等。这个章节主要分析内存管理。推荐阅读资料:linux内存管理–用户空间和内核空间mmap内核源码分析Linux内存管理复习总结...

2021-02-27 23:11:15 321

转载 [C++][Linux] Linux C/C++编译链接分析

C/C++编译错误的问题之前也遇到过很多,困扰良久,目前看到下面这边文章总结,有学习价值,特此转载,仅为学习目的,若侵权则删除,文章版权归原作者所有,特此声明。原文链接:https://my.oschina.net/u/4526289/blog/4651990?_from=gitee_rec

2021-02-26 11:47:23 272

转载 [Git]git中submodule子模块的添加、使用和删除

声明:本文转载自https://blog.csdn.net/guotianqing/article/details/82391665,仅用于学习,侵权则删 背景 项目中经常使用别人维护的模块,在git中使用子模块的功能能够大大提高开发效率。 使用子模块后,不必负责子模块的维护,只

2021-02-22 09:05:44 619

转载 [存储]NVMe协议SSD控制器端实现浅析

声明:(仅为学习目的,若侵则删)转载来源:NVMe协议SSD控制器端实现浅析原文来源:NVMe协议SSD 控制器端实现浅析(一) http://www.dostor.com/p/48121.html 一.NVMe 协议 NVMe协议是在PCIe SSD开始大量出现在市场上后,因为各个厂家的私有协议不具有兼容性,无法和现有操作系统无缝衔接,INTEL为了统一接口协议建立生态,而在2011年发布了NVMe协

2021-02-19 18:59:56 1333

翻译 [存储]NVMe-7-控制器架构

注意:本文翻译仅为学习交流用,版权归原文作者所有。原文出处。控制器架构控制器是Host和NVM子系统之间的接口。有三种控制器:IO控制器,普通意义上的控制器,支持访问NVM子系统非易失介质上的逻辑块data、meta和提供管理cap的命令。Administrative控制器,支持命令管理,不支持访问。discovery控制器,在NVMe over Fabrics中是实现,能访问Discovery Log Page.Identify Controller中的controller type指定

2021-02-18 16:34:12 1427

翻译 [存储]NVMe-6-NVM命令集

注意:本文翻译仅为学习交流用,版权归原文作者所有。原文出处。NVM命令集NVM子系统由多个控制器组成;每个控制器访问多个NS;每个NS由多个逻辑块组成;逻辑块是控制器读写的最小单位,逻辑块大小通常为512B,1KiB,2KiB,4KiB,8KiB。逻辑块大小在Identify NS中查询。Host在controller就绪(有Controller Status reg->CSTS.RDY指示)时,在IO提交队列和完成队列被创建之后提交命令。在本章节将解释SQE的CDW10-15和C

2021-02-16 19:49:46 2965

翻译 [存储]NVMe-4-数据结构

注意:本文翻译仅为学习交流用,版权归原文作者所有。原文出处。4 数据结构这个这个章节讲NVM Express中的数据结构。4.1 提交队列和完成队列定义一个entry的提交者使用当前项的尾指针指向下一个空闲的队列槽位。在放置新entry后,提交者将尾指针向后移动,如果尾指针超过了队列大小,则将尾部entry滚动至0。提交者放置新entry直至队列满为止。entry的消费者使用当前头entry指针表示下一个准备消耗的entry。在消耗一个entry后,头指针向下一个entry移动。同提交者…提交

2021-02-16 16:25:49 1761 2

翻译 [存储]NVMe-2-PCIe总线寄存器

System Bus (PCI Express) Registers这个章节描述PCI Express寄存器的值(系统使用PCI Express时).这个章节详细描述PCI Header,PCI Capabilities 和 PCI Express Capability如何在NVM Express控制器中构建。有些展示的变量与PCI和PCI Express规范中是重复的。PCI文件是这些寄存器的标准规范,本节详细说明了NVM Express控制的附加要求。[外链图片转存失败,源站可能有防盗链机制,建议

2021-02-15 08:41:12 1095

翻译 [存储]NVMe-1-引言

注意:本文翻译仅为学习交流用,版权归原文作者所有。原文出处。1 引言1.1 简介NVM Express TM (NVMe TM)允许主机软件与非易失内存子系统交互。这个接口是针对企业级和客户级固态盘优化的,作为一种寄存器级别的接口连接到PCI Express接口上。注意:在开发期间,这个规范参考了企业级NVMHCI,但是由于先于完成,名字修改成NVM Express基础规范。这个接口使用于客户级和企业级系统。对于版本1.3和1.4的修改简介可参考 http://nvmexpress.org/ch

2021-02-15 08:40:11 1296

原创 [Git] git fork仓库与原仓库的同步

参考资料:GitHub 操作:同步 Fork 来的仓库(上游仓库)github fork后两个仓库之间如何同步代码

2021-01-12 00:28:18 806

原创 [工具] Ubuntu-TROUBLE_SHOOTING

ubuntu定时关机命令/sbin/shutdown [-t 秒数] [-rkhncfF] 时间 [警告讯息] -t 秒数 : 设定在切换至不同的runlevel之前, 警告和删除二讯号之间的延迟时间(秒).-k : 仅送出警告讯息文字, 但不是真的要 shutdown.-r : shutdown 之後重新开机.-h : shutdown 之後关机.-n : 不经过 init , 由 shutdown 指令本身来做关机动作.(不建议你用)-f : 重新开机时, 跳过 fsck 指令, 不检

2021-01-09 11:52:52 157 1

原创 [工具]多用户办公免密vscode+github

场景开发中我们经常使用vscode跨平台开发将代码push到github上以上两个场景我们在普通模式下会树妖频繁输入密码,但是这两个问题都可以用ssh的直接解决。下面直接给出解决方案:解决方案解决问题1:在博客中给出了方案:用ssh-keygen生成公钥,公钥默认存放在~/.ssh/id_rsa.pub,将公钥复制到远程机器 ~/.ssh/authorized_keysssh-keygen -t ed25519 -C "[email protected]"# 复制~/.s

2021-01-08 23:48:30 340 2

原创 qemu+gdb调试linux内核

博客写作时间:2020-04-09 17:53qemu+gdb调试linux内核参考资料:QEMU+gdb调试Linux内核全过程Linux操作系统分析(6)- qemu+gdb调试linux内核4.1 Linux 内核调试环境:qemu2.12linux kernel 4.6.2gdb 7.0busybox 1.25.0大部分步骤按照参考资料1执行,步骤如下:1.安装qemu# path to qemu./configure --enable-debug --target

2021-01-01 15:20:04 300

原创 [LeetCode] 第 210 场周赛

时间:2020-10-11 11:51:59第一次参加周赛,把做出来的两题写下来…第一题本质上是考查栈,class Solution {public: int maxDepth(string s) { stack<char> st; int res = 0; for (auto &c : s) { if (c == '(') { st.push(c);

2020-10-11 11:54:02 147

原创 复习笔记-存储

文章目录消息队列和RPCRPC:分布式服务分布式系统面试题CAP,BASE理论-最终一致性分布式事务分布式锁负载均衡消息队列和RPC消息队列的三个核心:解耦,异步,削峰解耦:添加一个MQ,生产者只需往MQ里添加消息,多个消费者只需从MQ里面取消息.[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kaZvaAgC-1583678660119)(./image/m...

2020-10-09 23:45:21 156

原创 [数据结构与算法] 面试中常见的数据结构总结

文章目录写在前面二叉树满二叉树完全二叉树BST树写在前面本篇博客将介绍满二叉树、完全二叉树、BST-tree、AVT-tree、B/B±tree、RB-tree等数据结构。二叉树二叉树具有的性质是:二叉树第i层上至多有2i−12^{i-1}2i−1个节点;高度为k的二叉树至多有2k−12^k-12k−1个节点;包含n个节点的二叉树高度范围为[log2(n+1),n][log_2(n+1),n][log2​(n+1),n];二叉树的叶子节点个数为n0n_0n0​,度为2的节点数为n2n_2n

2020-10-09 23:43:24 1894

原创 [LeetCode] 只出现一次或者重复数专题总结(位运算、二分查找)

写在前面有一类题

2020-10-09 23:25:27 381

原创 [LeetCode] 二叉树和链表转化题总结

写在前面二叉树和链表转化的题主要分为两类,即将二叉树转化成单链表或者双向链表,和单链表转化成二叉树,而这里的二叉树往往指的是BST-tree,而单链表的序列往往是BST-tree的中序序列,往往像这类题,需要用到树的递归遍历来做,我形象的称它为「 借力打力」,就是说,按照它的函数形式递归解题即可,比如二叉树转单链表的题(题144),使树flat的方式有多,比如单向牵引(题144),双向牵引后root节点更新为最左的节点成为链表头节点(这个是《剑指offer》书上的题),转化过程如下图。114. 二叉树

2020-10-09 23:24:17 447

原创 [C++] 自定义C++比较器比较大小

编程过程中,我们经常有这样的需求,改变容器默认的排序,或者让排序函数sort按照自定义的方式进行排序。STL的容器主要有:线性容器,vector, list, queue, deque, priority_queue映射容器,set, unordered_set, map, unordered_map其中有排序需求的是vector,priority_queue, set, map, 对于vector我们经常用sort函数进行排序,对于priority_queue, set, map内部会

2020-10-09 23:22:36 3785

转载 [Linux] Linux top命令结果解析

下面文章转载自https://www.cnblogs.com/my_life/articles/5630903.html,为了交流学习,特此转载,侵权即删。http://os.51cto.com/art/201003/185722.htmhttp://os.51cto.com/art/201003/185732.htmhttp://www.cnblogs.com/seasonsluo/p/java_virt.htmlVIRT:virtual memory usage 虚拟内存1、进程.

2020-10-04 22:00:27 1246

原创 [LeetCode] 局部图论问题探讨-图成环、图度、关键路径、拓扑排序等问题

写在前面前面的笔记集分别探讨了图的遍历、图的最小路径和最小生成树问题,本笔记将着重探讨图中其他典型问题,比如图是否成环、图的度使用(无向图)、图的入度和出度使用(有向图)、图的关键路径和拓扑序问题,关键的LT题目和解法可见笔记。相关资料https://www.cnblogs.com/TenosDoIt/p/3644225.htmlhttps://blog.csdn.net/leonsc/article/details/5973209...

2020-08-18 21:00:47 721

原创 [LeetCode] 树的总结(二叉树和N叉树)

写在前面树的考察点归根结底是对树的前序、中序、后序和层序的考察,树的前、中、后序遍历的递归写法是图的深度优先搜索的子集,因为带有递归特点,所以往往可以使用栈将其改写成非递归写法,树的层序遍历是图的广度优先搜索的子集。树的遍历树的递归遍历难度非常小,一般不会直接考察,而选择考察它的非递归写法,之前专门为二叉树和N叉树的遍历写过总结博客。由于此知识点过于重要,而且在面试手撕代码中是高频代码,因此重新再整理一次。LeetCode中相关的题如下:94. 二叉树的中序遍历144. 二叉树的前序遍历17

2020-07-29 22:56:02 434

原创 [语言] Bash shell 用法及其总结笔记

写在前面做Linux系统开发相关工作免不了与shell打交道,另外用好shell并不是熟知shell语法就可以了,还需要对相关的Linux命令非常熟,才能写出功能强大的shell脚本,本篇文章并不会详细地讲解shell的语法知识,但是会推荐一些有价值的资料,本文的主要目的是,记录shell关键的知识点、需要注意的坑点、一些常见场景下的shell脚本。对shell的学习可以参考的资料如下:shell教程Linux命令大全Bash shellshell严格意义上讲是用户与内核交互的工具,由系统调用实

2020-07-26 13:55:01 390

原创 [LeetCode] 四数和值问题类型总结(哈希、双指针)

写在前面四数问题以及三数和值问题一般用Brute Force OJ会TLE,面试过程中写出BF算法也不是面试官想看到的,那么我们可以思考一下四数和值问题本质是在考察什么,表面是和值问题,本质是查找问题,对于查找,一般我们会联想到下面几点知识,i.e.,思考方向:查找问题最佳时间复杂度为二分算法对应的O(lgn),而二

2020-07-26 12:17:41 360

原创 [LeetCode] 图的遍历总结(深度优先遍历+广度优先遍历)

文章目录写在前面130. 被围绕的区域写在前面图的遍历有两种即深度优先遍历(DFS)和广度优先遍历(BFS),图的遍历算法中DFS最经典的应用是回溯算法,图的经典算法也有多种,最小生成树(Prim Algo. + Krustal Algo.),最短路(Dijkstra Algo. + Floyd Algo.),可见这篇博客的总结。130. 被围绕的区域给定一个二维的矩阵,包含 ‘X’ 和 ‘O’(字母 O)。找到所有被 ‘X’ 围绕的区域,并将这些区域里所有的 ‘O’ 用 ‘X’ 填充。原题链接

2020-07-14 22:03:20 1383

原创 [LeetCode] 动态规划题型总结

写在前面动态规划在互联网公司的笔试题中经常会使大题的压轴题,解动态规划题的关键是定义动态规划变量和写出状态转移方程,本篇博客主要探讨动态规划题型解法,最后也会介绍动态规划与其他算法知识结合的题。152. 乘积最大子数组...

2020-07-13 20:42:30 310

原创 [LeetCode] 回溯题总结

写在前面回溯法属于图的暴力深度优先搜索的一种应用,其特点是,维护一条深度遍历的路径,在路径的尽头(遍历完毕)判断条件是否满足,若是则找到一个组合,若否,则沿着递归深度的路径逐步回溯,回溯时调转遍历方向,递归至其他路径check是否满足条件,直至遍历完所有的路径则终止,递归深入+回溯退出。37. 解数独原题链接解题思路: 采用行填充的方式,先填充第1行,再填充第2行…,直至填充完第9行,在填充第i行时,若填充至第9列,则下一次将填充第i+1行第0列,OK,保持这个整个思路,接下来来计算按照规定动作写回

2020-07-12 22:41:08 183

原创 [LeetCode] 分治算法总结

写在前面…493. 翻转对给定一个数组 nums ,如果 i < j 且 nums[i] > 2*nums[j] 我们就将 (i, j) 称作一个重要翻转对。你需要返回给定数组中的重要翻转对的数量解题思路: 起初的想法是模仿题137做法,用二分查找来做,用multiset维护一个动态有序序列,然后先将j定下来然后在有序序列中找大于2*nums[j]索引,即可求出有序序列中翻转对个数,但是OJ超时了,然后参考这篇博客的解法,解法1用的是树状数组这个留以后研究,看好理解点的解法2,解法2采

2020-07-12 21:39:26 637

原创 [LeetCode] 树状数组+线段树总结

文章目录写在前面线段树树桩数组相关题写在前面LeetCode树状数组+线段树的题比较少,而且这两个知识点在面试时被考察的概率极小,但是如果我们知道这两个知识点,在解题的时候会非常便捷(利用高维度工具打击低维度题目,解题所需的思维量会少很多),本文也是出于学习树状数组和线段树的目的写在这篇博客的。线段树线段树是二叉树形态的数据结构,用于存储和查询包含某个点的所有区间,时间复杂度为O(lgn+k),k为满足条件的区间个数,空间复杂度为O(n).树桩数组相关题307. 区域和检索 - 数组可修改留

2020-07-12 11:12:12 525

原创 [LeetCode] 二分查找题型总结

写在前面二分查找属于数据结构与算法中基础算法,属于必须掌握的算法之一,往往向这类基础算法广受面试官喜爱,一则算法的内容很普通,二则二分查找属于查找算法中的优化算法,面试官可以考察面试者是否关注算法复杂度,我们在解题时,若题面显著要求时间复杂度对对数,那么很大概率要考察二分查找。153. 寻找旋转排序数组中的最小值假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。请找出其中最小的元素。你可以假设数组中

2020-07-11 21:28:37 374

原创 [LeetCode] 双指针题总结

写在前面双指针题的显著特点是,题面有相向运行或者同向运动的影子,什么意思呢?比如从序列两头向中间解题(相向,这类型很少出现)和从一端向另一端解题(同向,这类题比较多),往往双指针的题不难,但是若想理清思路,建议多画图。283. 移动零(双指针)给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。解题思路: 维护两个指针,i指向0,j指向非0,在非0元素前有多少个0,就至少要移动多少次,i.e.,在前面找到一个0元素,这用后面非0元素一步填充,这样能使移动步数

2020-07-10 19:52:16 198

原创 [LeetCode] 滑动窗口题总结

写在前面滑动窗口题也是面试中常考的题,滑动窗口的知识点来源我的理解是《计算机网络》,在网络中控制拥塞和流量是通过滑动窗口来控制的,因此这类题比较受面试官喜爱。滑动窗口题常见的解法是Two Pointers,另外为了找出滑动窗口内某极值(问题),会想到排序或者说有序,对待有序我们有两个办法即sort(),时间复杂度为O(nlgn),另一种是采取rb-tree,比如multiset/set,或者heap,比如priority_queue,边插入边排序,n被原始的遍历消耗掉,此时找出极值时间复杂度为O(lgn

2020-07-09 00:10:10 519

原创 [LeetCode] LeetCode中链表题总结

写在前面本篇博客主要讲解LeetCode中链表相关题型的解法,以及对它的思考和理解,链表类型题是互联网公司面试中最喜欢手撕代码的题型,因为这类题用C/C++解题时会用到指针,而指针又可以进一步考察内存管理,然后进一步引出操作系统,可谓以点带面。160. 相交链表如下面的两个链表:在节点 c1 开始相交。解题思路: 此题属于链表中比较简单的题,解题思路应该是要在如何让两个指针同时指向同一个节点上做文章,常见的解题思路是,将长链表指针移动长短链表长度差值的位置,然后一起移动,即可同时指向同一节点,然

2020-07-05 15:37:05 463

原创 [LeetCode] Trie(前缀树)题型总结

文章目录写在前面208. 实现 Trie (前缀树)写在前面本篇博客主要讲解对LeetCode中Tier类型题的解法归纳和思考和对算法本身的一些理解。208. 实现 Trie (前缀树)实现一个 Trie (前缀树),包含 insert, search, 和 startsWith 这三个操作。示例:Trie trie = new Trie();trie.insert("apple");trie.search("apple"); // 返回 truetrie.search("app")

2020-07-05 11:45:33 230

原创 [C++] C/C++高精度时间及其延时

文章目录1. 写在前面5. 写在后面参考资料1. 写在前面…————————————————————————————————5. 写在后面参考资料C++11 新的计时方法——std::chrono 大法好cppreference - chronoC++11 std::chrono库详解...

2020-07-02 22:21:07 6658

原创 函数指针和函数指针数组用法及其类型打印

写在前面本篇博客主要介绍函数指针的用法,并设计程序验证函数名取地址,解引用等的异同。函数指针先看一段验证程序:#include <iostream>#include <typeinfo>void print(void) { std::cout << "Hello, world\n";}void func1(void) { void (*p1)(void) = print; void (*p2)(void) = &pri

2020-07-01 23:05:08 374

原创 线程池,生产者消费者模型,死锁模型,内存池知识总结

文章目录1. 写在前面2. 多线程和内存管理等相关知识2.1 线程池生产者消费者模型死锁模型条件变量和互斥锁内存池写在后面1. 写在前面互联网公司面试时,非常喜欢考察线程池,生产者消费者模型,内存池等相关知识,往往在加大难度时,不但让你讲解原理,还需要手写相应的代码。考察线程池可以考察你对队列、仿函数、条件锁和互斥锁等等知识的理解,考察生产者消费者模型可以考察对环形队列、操作系统等知识的掌握,考察内存池可以考察对内存管理的理解,下面阐述他们的理论、难点和注意点。——————————————2. 多线

2020-06-27 19:31:43 492

原创 [LeetCode] LeetCode中柱形图、矩形等题小结(单调栈)

84. 柱状图中最大的矩形题目链接解题思路: 这里提供两种解题思路,即直接解题,和单调栈解题。直接解题,观察下图,6能覆盖5出现的情况,而5不能覆盖6的情况,因此我们会想到,在序列递增的时候可以延迟找最大矩形,而当序列开始递减时,即出现拐点,从拐点处搜索到序列起点,计算并记录这个过程出现的最大矩形,矩形的高度是向左遍历过程中的最小值。class Solution {public: int largestRectangleArea(vector<int>& heig

2020-06-26 17:17:01 188

空空如也

空空如也

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

TA关注的人

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