- 博客(137)
- 资源 (2)
- 收藏
- 关注
原创 面试题36. 二叉搜索树与双向链表 面试题37. 序列化二叉树
面试题36. 二叉搜索树与双向链表递归实现问题:栈溢出:[28,-98,67,null,-89,62,null,-97,-25,null,64,null,null,-72,-9,null,null,-88,-41,null,-7,null,-78,-53,null,null,2,-85,-77,-69,-42,-1]class Node {public: int ...
2020-03-02 02:28:38 252
原创 面试题32.1 从上往下打印二叉树
class Solution {public: vector<int> PrintFromTopToBottom(TreeNode* root) { vector<int> res; if(root==NULL) return res; queue<TreeNode*> q; ...
2020-02-29 03:26:07 237
原创 30.包含min函数的栈 与31.栈的压入、弹出序列
30.包含min函数的栈class Solution {public: vector<int> vec; int min_val=INT_MAX,min_cnt=0; void push(int value) { vec.push_back(value); if(min_cnt==0){ min_v...
2020-02-28 04:50:15 191
原创 对称的二叉树与顺时针打印矩阵
对称的二叉树class Solution {public: bool Compare(TreeNode* left,TreeNode* right){ if(left == NULL && right == NULL) return true; if(left == NULL || right == NULL)...
2020-02-27 03:42:43 145
原创 [剑指Offer]---26树的子结构与27二叉树的镜像
26树的子结构入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构)B是A的子结构, 即 A中有出现和B相同的结构和节点值。例如:给定的树 A:3/ \4 5/ \1 2给定的树 B:4/1返回 true,因为 B 与 A 的一个子树拥有相同的结构和节点值。示例 1:输入:A...
2020-02-26 03:18:19 125
原创 [剑指Offer]---反转链表与合并两个排序的链表
反转链表描述定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL限制:0 <= 节点个数 <= 5000class Solution {public: Li...
2020-02-25 02:10:57 164
原创 [剑指Offer]---21-调整数组顺序使奇数位于偶数前面 与22-链表中倒数第k个节点
21-调整数组顺序使奇数位于偶数前面描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。示例:输入:nums =[1,2,3,4]输出:[1,3,2,4]注:[3,1,2,4] 也是正确的答案之一。提示:1 <= nums.length <= 500001 <= nu...
2020-02-24 05:40:51 157
原创 [剑指Offer]---19-正则表达式匹配与20-表示数值的字符串
19-正则表达式匹配描述请实现一个函数用来匹配包含'. '和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(含0次)。在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab*ac*a"匹配,但与"aa.a"和"ab*a"均不匹配。示例 1:输入:s = "aa"p = "a"输出: fa...
2020-02-23 04:06:34 281
原创 [剑指Offer]---17-打印从1到最大的n位数与18-删除链表的节点
17-打印从1到最大的n位数描述输入数字n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。示例 1:输入: n = 1输出: [1,2,3,4,5,6,7,8,9]说明:用返回一个整数列表来代替打印 n 为正整数class Solution {public: vector...
2020-02-22 01:15:56 162
原创 [剑指Offer]---14- II剪绳子II 与15二进制中1的个数 与16数值的整数次方
14- II剪绳子II给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]...k[m] 。请问 k[0]*k[1]*...*k[m] 可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。答案需要取模 1e9+7(1000000007...
2020-02-21 00:59:58 122
原创 [剑指Offer]---13机器人的运动范围与14- I 剪绳子
13 机器人的运动范围描述地上有一个m行n列的方格,从坐标 [0,0] 到坐标 [m-1,n-1] 。一个机器人从坐标 [0, 0] 的格子开始移动,它每次可以向左、右、上、下移动一格(不能移动到方格外),也不能进入行坐标和列坐标的数位之和大于k的格子。例如,当k为18时,机器人能够进入方格 [35, 37] ,因为3+5+3+7=18。但它不能进入方格 [35, 38],因为3+5+3...
2020-02-19 20:53:46 153
原创 [剑指Offer]---11 旋转数组的最小数字与12 矩阵中的路径
11 旋转数组的最小数字题目把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转,该数组的最小值为1。 示例 1:输入:[3,4,5,1,2]输出:1示例 2:输入:[2,2,2,0,1]输出:0思路1...
2020-02-18 15:16:27 147
原创 [剑指Offer]---10-I 斐波那契数列与0-II 青蛙跳台阶问题
10-I 斐波那契数列题目写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项。斐波那契数列的定义如下:F(0) = 0, F(1) = 1F(N) = F(N - 1) + F(N - 2), 其中 N > 1.斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。答案需要取模 1e9+7(1000000007),如计...
2020-02-17 13:40:59 183
原创 [剑指Offer]---07重建二叉树与09用两个栈实现队列
07重建二叉树描述输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如,给出前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树: 3 / \ 9 20 / \ 15 7限制:...
2020-02-16 14:44:53 190
原创 [剑指Offer]---05替换空格与06从尾到头打印链表
05替换空格描述请实现一个函数,把字符串 s 中的每个空格替换成"%20"。示例 1:输入:s = "We are happy."输出:"We%20are%20happy."限制:0 <= s 的长度 <= 10000思路非空格则直接加入,空格则替换 时间复杂度O(n) 空时间复杂度O(n)class Solution {...
2020-02-15 15:05:25 140
原创 [剑指Offer]---03数组中重复的数字与04二维数组中的查找
03数组中重复的数字思路:哈希表,扫描数组里的每个数字,看哈希表里是否有这个数字,没有就将这个数字加进去,有的话,则该数字重复。时间复杂度是O(n)。class Solution {public: int findRepeatNumber(vector<int>& nums) { unordered_set<int> r...
2020-02-14 14:40:15 139
原创 (九)高级IO
目录1.非阻塞IO1.1.阻塞读文件1.2.如何实现非阻塞读(1)打开文件时指定O_NONBLOCK状态标志(2)通过fcntl函数指定O_NONBLOCK来实现1.3.实现同时“读鼠标”和“读键盘”2.文件锁2.1.文件锁的作用2.2.多进程读写文件2.3.文件锁2.3.1.文件锁的读锁与写锁2.3.2.使用文件锁对文件进行保护2.3.3....
2019-12-02 22:33:49 694
原创 (八)C线程
1.线程为什么能弥补进程的缺点为什么线程切换的开销很低但是使用多线程来实现多线任务时,由于线程本质上它只是程序(进程)的一个函数,只不过线程函数与普通函数的区别是,普通函数时单线的运行关系,而线程函数被注册为线程后,是多线并发运行。 对于普通函数来说,只有相互调动时才会涉及函数间的切换,但是对于线程函数来说,只要运行时间片到了就会切换,...
2019-11-27 22:26:25 794 1
原创 (七)进程通信(本机IPC)
目录1. 无名管道 1.1 无名管道的通信原理1.2 无名管道的API1.2.1 函数原型1.2.2 无名管道特点1.2.3 父子进程通信1.3 无名管道有两个缺点1.4 什么时候合适使用无名管道呢2. 有名管道2.1 为什么叫“有名管道”2.2 有名管道特点2.3 有名管道的使用步骤2.4 有名管道APISystem V IPC...
2019-11-26 17:01:45 283
原创 (六)信号
目录1. 信号1.1 什么是信号1.2 信号的命名1.3 谁会向进程发送信号1.4 进程收到信号后,进程会如何处理1.5 都有哪些信号1.5.1 信号列表1.5.2 常用信号2. signal函数函数原型调用捕获函数的过程值得强调的地方3. 子进程对父进程信号的继承情况3.1 fork创建子进程,但是没有exec加载新程序时,信号的继承情况...
2019-11-26 11:44:54 1033
原创 (五)进程控制
目录1. 有关进程1.1 什么是进程1.2进程ID(PID)1.3三个特殊的进程进程 ID == 0 的进程进程ID == 1的进程进程ID == 2的进程1.4获取与进程相关的各种ID的函数2. 程序的运行过程2.1 程序如何运行起来2.2 fork2.2.1 函数原型2.2.2复制的原理2.2.3 父子进程各自会执行哪些代码 ...
2019-11-26 00:05:20 177
原创 (四)进程环境
Table of Contents0.那么进程所需的运行环境有哪些?1. 启动代码1.1 启动代码的作用1.2 启动代码是由谁提供的(1)启动代码一般都是由编译器提供的,一般有两种提供方式(2)gcc -v1.3 启动代码做了些什么1.3.1 启动代码使用什么语言编写的1.3.2 启动代码大致做了些什么呢?1.4 程序是如何运行起来的1.4.1 裸...
2019-11-25 16:58:24 568
原创 (三)系统信息
目录第一部分:获取系统文件的数据1. 口令文件:/etc/passwd1.0什么是口令文件?1.1 文件内容1.1.1 账户所包含的信息1.1.2 getpwuid、getpwnam1.2 阴影文件:/etc/shadow1.2.1 里面放的是什么1.2.2 为什么密码要单独存放,而且还要加密1.3 组文件:/etc/group1.3.1 放的是什么...
2019-11-25 14:59:37 222
原创 (二)文件属性
我们通过ls查到就是文件属性,只不过ls只显示了部分文件属性。Table of Contents1.涉及到的OS API2.文件类型2.1 文件的7种类型2.2 如何判断文件的类型3、获取文件属性的函数,stat、lstat、fstat3.1 stat3.2 lstat3.3.fstat3.5 r w x的含义4. umask函数4.0open函...
2019-11-23 17:20:03 1189
原创 (一)文件IO
目录0.所涉及的OS API1.文件读写的简单例子1.1 文件操作三步曲1.2 open打开文件时,open具体做了哪些事情2. open函数2.1 函数原型2.2 open函数返回值2.3 open函数的重点:flags参数2.3.1、flags 之 O_RDONLY、O_WRONLY、O_RDWR、O_TRUNC、O_APPEND2.3.2 flag...
2019-11-23 02:57:29 169
原创 (零)操作系统基础
目录进程管理(1)应用程序如何运行与OS上的(2)什么是进程(3)进程控制1)为什么要进行进程控制2)控制做些啥事情3)多进程并发运行4)进程控制信息(PCB)5)进程的运行状态6)有关进程调度8)进程通信9)进程间的关系10)轻量级的进程 — 线程内存管理1)虚拟内存1)虚拟内存的基本原理2)虚拟内存机制的具体实现...
2019-11-21 16:56:00 1227
原创 (二)信息的表示和处理
目录信息存储信息的存储字寻址和字节顺序进制间的转换整数的表示无符号数的编码有符号-补码编码反码和原码有符号和无符号数之间的转换C语言中的有符号数和无符号数以及扩展和截断数字整数的运算无符号数加法运算补码加法运算无符号数乘法运算补码乘法乘法优化除法运算浮点数二进制小数IEEE 浮点表示舍入浮点运算信息存...
2019-10-24 20:36:31 624
原创 (一)计算机系统漫游
Hello World信息的表示信息的表示:位+上下文构成程序的编译操作系统的抽象概念文件----> 对IO的抽象虚拟存储器----> 程序存储器的抽象 (主存和硬盘)进程---->正在运行的程序 (处理器 主存 IO设备的抽象)操作系统操作系统的两个基本功能: ①、防止硬件被失控的应用程序滥用。 ...
2019-10-24 16:48:01 101
原创 Ubuntu下项目同步Github
Git环境设置Ubuntu创建SSH密钥: ssh-keygen 将公钥加入到Github账户信息Account Settings->SSH Key(): 先 cd ~/.ssh,找不到可以用ls -al指令,之后用cat查看该文件(文件名是pub结尾,内容是ssh-rsa开头的) 本地配置: git config --global user....
2019-10-20 16:11:57 805
原创 (七)DPDK-testpmd
简介Testpmd是dpdk自带的测试工具,也可以被看做一个APP。当运行testpmd时,可以展示和验证网卡支持的各种PMD相关功能。1-testpmd的基础代码包括testpmd的启动运行,参数解析,设备的检测和配置。包括如下文件config.c //这个文件名可能有些误导。实际上,这个文件中包含的是UI相关的配置和显示的代码cmdline.cbpf_cmd.c...
2019-10-15 11:13:01 4228
原创 (三)进程管理
1-进程进程编译:程序的二进制格式 ELF(Executeable and Linkable Format)这个格式可以根据编译的结果不同,分为不同的格式。可重定位 .o 文件(ELF 第一种格式)先做预处理,然后编译的.o文件 就是第一种类型格式如下.rel.text 和 .rel.data 标注了哪些函数/数据需要重定位这些节的元数据信息也需要有...
2019-10-14 21:47:06 151
原创 (六)DPDK-l2fwd
概述在计算机网络中,二层是链路层,是以太网所在的层,识别的是设备端口的MAC地址。DPDK作为用户态驱动,主要的目的也就是不需要让报文经过操作系统协议栈而能实现快速的转发功能。网卡驱动在二层上的作用就是根据设定的目的端口,转发报文到目的端口程序流程程序的主要流程如下:每个逻辑核在任务分发后会执行如下的循环,直到退出其中打印时间片在命令行参数中是可以自...
2019-10-11 11:40:32 1619
原创 (零)DPDK-基础概念
CPU 中的内存结构CPU 和各级缓存、内存、硬盘之间的关系缓存一致性:目前结构每个core都会持有自己私有的L1/L2 Cache, 但L3 cache是所有core共有的. 那么就存在一个cache一致性的问题MESI 为了保证多个缓存中共享数据的一致性,定义了 cache line 的四种状态,而线程对 cache line 的四种操作可能会产生不一...
2019-10-09 17:13:49 1315
原创 (五)DPDK-skeleton/basicfwd
学习这个例子用于理解单纯的 dpdk 转发过程,L2 和 L3 的转发是基于此:在rte_eth_rx_burst()收包后进行解包,提取 mac、ip 等信息然后在转发到输出网卡。main 函数main函数的内容:初始化 EAL 以太网端口数需要为偶数(在这个程序中一个口接收,往另一个口转发) 分配mbufrte_pktmbuf_pool_create() 初始化所有...
2019-10-09 16:48:24 869
原创 (四)DPDK-PMD
Ethernet controller overviewPHY (物理层的模拟信号) ----> MAC(数字信号)---->FIFO(buff 先进先出)---->DMA&Queue mangement (维护管理多个Queue DMA描述符环形队列 把网卡数据搬移到内存or缓存过程)---->PCIe (主机和网卡的接口 )...
2019-10-09 16:47:12 2169 1
原创 (三)DPDK-Core Libraries
环形缓冲区管理(librte_ring)简介dpdk的无锁队列ring是借鉴了linux内核kfifo无锁队列。ring的实质是FIFO的环形队列。ring的特点:无锁出入队(除了cas(compare and swap)操作) 多消费/生产者同时出入队使用方法: structrte_ring * rte_ring_create(constchar *nam...
2019-09-26 19:12:18 309
原创 (二)DPDK-OverView
目录DPDK-概述DPDK是什么DPDK特点DPDK的优劣DPDK架构DPDK框架环境适配层EAL核心组件以太网轮询驱动架构PMD报文转发算法支持网络协议库(librte_net)DPDK-概述DPDK是什么Intel® DPDK全称Intel Data Plane Development Kit,是intel提供的数据平面开发工具集,为...
2019-09-25 14:41:50 670
原创 (二)系统初始化
目录x86架构概述计算机的工作模式8086处理器原理32位处理器系统交互常用汇编指令从BIOS到bootloaderBIOS 时期bootloader 时期从实模式切换到保护模式kernel.img 运行启动过程总结内核初始化1-创建样板进程,及各个模块初始化【各个职能部门的创建】2-用户态祖先进场创建-1号进程3-内核态祖先进程...
2019-09-21 20:15:57 1054
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人