自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 [leetcode] 二叉树的迭代遍历

二叉树的遍历-迭代前序遍历中序遍历后序遍历以上只会递归,迭代看完就忘,记录一下。迭代其实与递归一样,递归隐式的维护了一个栈,而在迭代中需要我们显示的定义出来;依照不同的遍历顺序,将结点依次入栈,出栈。时间按复杂度O(n),空间复杂度O(n)。144. 二叉树的前序遍历94. 二叉树的中序遍历145. 二叉树的后序遍历前序遍历遍历顺序是 根结点 - 左子树结点 - 右子树结点,先将根结点存入栈,若栈不为空,取出栈头元素,存入栈头元素的右、左结点,一直重复,直到栈为空,一定是先存右结点,前序

2021-09-14 16:50:31 94

原创 [面经]关于查看CPU使用率

查看CPU使用率命令top命令介绍语法top命令视图top视图的交互vmstat命令介绍vmstat用法vmstat视图参考文章以上面试的时候,被问到如果一台机器CPU使用率过高,该怎么查看呢,我自信满满回答用top命令,然会被追问top除了看到cpu,我:???这我就不太清楚了。查看CPU使用率命令topvmstattop命令介绍top是动态查看进程变化,每3秒刷新一次,实时显示系统资源各个进程占用情况。语法-h | -v : 显示帮助或者版本信息-c : 命令行列显示程序.

2021-09-11 11:48:59 612

原创 [共同学习] IP协议,以太网协议浅见

IP协议,以太网协议IP协议IP头解析MTUIP地址管理DHCP网段(网络号)划分早期网段划分:CIDR特殊IP地址NAT以太网协议以太网协议解析DHCP:动态地址分配协议--以上--参考书籍:《趣谈网络协议》-刘超IP协议:网络层协议,向上可以向传输层提供各种协议信息,如TCP,UDP等,向下可将IP信息包放到链路层传送。IP协议IP头解析4位版本协议:指定IP协议版本,对IPv4来说就是4。4位头长:说明IP头部的长度,最小20字节,最大60字节。8位服务类型TOS:3位优先权字段(

2021-06-24 15:47:46 298

原创 [共同学习] HTTP协议,HTTPS协议浅见

HTTP协议及部分延伸URL小P:我看见了,但没全看见HTTP请求报文的准备HTTP请求报文的构建HTTP请求格式请求行头部字段HTTP请求报文的发送HTTP响应报文的构建HTTP响应格式响应行头部字段HTTP响应报文的发送HTTP1.0,1.1,2.0版本区别小P:我太难了对称加密非对称加密数字证书HTTPS的工作模式--以上--(只谈关于HTTP协议,涉及到的其他协议不多解释,或许写过,或许以后会写)参考《趣谈网络协议》-刘超HTTP:超文本传输协议,传输HTML数据;字符串明文协议,将

2021-06-23 21:02:02 135

原创 [共同学习] TCO/IP五层模型浅见

TCP/IP五层模型TCP/IP五层模型各层常用协议数据包封装和分用--以上--TCP/IP是一组协议的代名词,包括许多协议,组成了TCP/IP协议簇。TCP/IP通讯协议采用5层的层级结构,下层为上层提供服务。TCP/IP五层模型如果是TCP/IP四层模型的话是将链路层和物理层统称为链路层的。应用层: 决定向用户提供应用服务时通信的活动,比如简单电子邮件传输(SMTP),文件传输协议(FTP)等。传输层: 对上层应用层,提供处于网络连接中两台主机之间的数据传输,如传输控制协议TCP,用户数

2021-06-23 14:51:52 591 1

原创 [共同学习] 线程池浅见

线程池出现的原因优点应用场景C++实现线程池:一种多线程处理形式,将任务添加到队列,然后创建线程自动启动这些任务。线程池的线程都是后台线程,每个线程使用默认堆栈大小(我在Linux下使用ulimit -s 查询是8M)。出现的原因来一个任务创建一个线程处理,处理完毕销毁线程,在峰值压力下瞬间创建大量线程,消耗大量资源;总体任务处理事件 = 创建线程 + 任务处理 + 销毁线程,资源分配不合理;优点线程池维护多个线程,避免了在处理短时间任务时创建与销毁线程的代价,不仅能保持内核的充分利用,还能防

2021-06-22 11:22:51 47

原创 [共同学习] 生产者消费者模型浅见

生产者消费者模型优点应用场景C++实现--以上--生产者消费者模型:通过一个容器解决生产者和消费者的强耦合问题。生产者和消费者之间不直接通讯,而是通过阻塞队列进行通讯,所以生产者生产完数据后不用等待消费者处理,直接给阻塞队列,消费者不找生产者要数据,而是直接从阻塞队列中取。阻塞队列相当于一个缓冲区,平衡了生产者和消费者的处理能力。优点解耦合–模块分离,降低功能耦合度;支持忙闲不均–中间缓冲区队列在压力大时缓冲大量数据,慢慢处理;支持并发–支持多对多,前提是中间缓冲区的操作是线程安全的;

2021-06-21 16:17:11 151

原创 [共同学习] 线程安全浅见

线程安全互斥的实现互斥锁死锁死锁预防死锁避免同步的实现条件变量举个栗子--以上--线程安全:多个线程对临界资源的访问操作是安全的。实现:同步与互斥同步:多线程按某种规则时序,实现对临界资源访问的合理性互斥:同一时间只有一个线程能够访问临界资源,实现对临界资源访问的安全性互斥的实现互斥锁本质是一个0/1计数器,用于标记临界资源的访问状态。线程在访问临界资源前要先访问互斥锁,判断当前是否为可访问状态,可访问先将状态置为不可访问,然后访问资源,访问完毕将状态置为可访问;不可访问则阻塞或报错。互斥锁

2021-06-19 17:43:27 51

原创 [共同学习] 进程与线程浅见

进程与线程进程控制进程创建进程终止进程等待线程控制线程创建线程终止线程等待线程分离--以上--进程: 是一个PCB,在内存中运行的程序的描述,是系统资源分配的基本单位。Linux下进程是一个task_struct结构体,这个结构体存储在内核中。线程: 进程中的一条执行流,是CPU运行调度的基本单位。共享PCB的数据段,代码段,文件描述符表等信息,独有线程id,栈,上下文数据。进程控制进程创建pid_t fork(): 复制父进程PCB中的数据创建子进程,代码共享栈独有。 父子进程谁先运行

2021-06-19 15:29:44 54

原创 [共同学习] 进程间通信浅见

进程间通信管道匿名管道命名管道共享内存Linux下共享内存的使用及删除消息队列和信号量消息队列信号量--以上--进程间无法直接进行通信:进程具有独立性,每个进程都有自己的虚拟空间地址,访问的都是自己的虚拟空间地址,因此无法进行直接通信,需要操作系统提供中间媒介进行通信。进程间通信的四种方式:管道,共享内存,消息队列,信号量管道半双工通信(数据可以沿两个方向传送,但同一时刻一个信道只允许单方向传送)。举个栗子,小明可以用吸管喝阔落,也可以用吸管把嘴里的阔落滋出来,但他不能即喝阔落又把阔落滋出来。

2021-06-18 21:38:30 76

原创 [共同学习] 模拟实现shell

模拟实现shell简单实现重定向的实现--以上--shell:打开一个终端运行的命令行解释器。程序替换:替换一个进程正在运行调度的程序,即重新加载一个程序到内存中,将现有的一个PCB的内存指针所指向的内存空间指向这个新的程序(更新页表映射信息),被替换掉的程序未执行的代码不会再执行。简单实现捕捉键盘的输入;字符串格式解析–指针指向字符串首地址,遍历,遇到空格字符填\0,非空格字符一直读取直到遇到空格字符或结束,将读取到的内容放到一个字符串中;创建子进程;子进程程序替换,运行指令;父进

2021-06-18 16:43:52 88

原创 [共同学习] 红黑树浅见

红黑树红黑树的概念红黑树的性质红黑树的结构结点的定义头结点的加入插入操作情况1. p为红,g为黑,u存在且为红情况2:p为红,g为黑,u不存在或u为黑情况3:p为红,g为黑,u不存在或u为黑没有红黑树代码--以上--红黑树的概念自平衡二叉查找树,一种特化的AVL树,在每个结点增加一个存储位表示结点颜色(不是 red 就是 black ),通过任何一条从根到叶子的路径上各个结点着色方式的限制,确保没有一条路径会比其他路径长出两倍,因而是接近平衡的红黑树的性质或是一棵空树,或是具有以下性质的二叉搜

2021-06-08 16:10:12 77

原创 [共同学习] 堆排序浅见

堆排序堆的概念大根堆和小根堆完全二叉树的性质堆排序实现思路代码实现--以上--可以看看这篇博客,有图,会清晰很多:传送门 堆的概念堆通常是一个可以被看做一棵完全二叉树的数组对象,总是满足下列性质:堆中某个结点的值总是不大于或不小于其父结点的值;堆总是一棵完全二叉树。大根堆和小根堆大根堆:也叫最大堆,父结点的值总是不小于其孩子结点的值小根堆:也叫最小堆,父结点的值总是不大于其孩子结点的值完全二叉树的性质如果一棵有n个结点的完全二叉树的结点按层序编号(从0开始),则对任意结点 i(

2021-06-07 21:36:33 86

原创 [leetcode] 203:移除链表元素

leetcode-203 移除链表元素:传送门我的思路设置一个哨兵节点,可以简化对头节点的操作,用一个指针保存节点的前驱节点。ListNode* removeElements(ListNode* head, int val) { if(head == nullptr) return head; ListNode* parent = new ListNode(-1);//哨兵节点 parent->next = head;

2021-06-05 15:59:23 46

原创 [leetcode] 160:相交链表

leetcode-160 相交链表:传送门我的思路分别求出链表的长度numa和numb,如果链表相交,在相交节点及以后两个链表的长度是相等的,那么只要长的链表头节点先走 链表长度差 的距离,之后两个链表节点同时往后走,就一定能找到相交节点;如果链表不相交,链表的结点最后会指向空,返回空。ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) { ListNode* pa = headA; ListNode* pb

2021-06-05 15:24:03 72

原创 [leetcode] 525:连续数组

leetcode-525 连续数组:传送门我的思路还是穷举,猜到应该是和前缀和有关,但没有想法,惭愧惭愧。因为这次用例只跑了31条就遇到了很长很长的数组,超时了,我也不知道写的对不对,就不放代码了优化参考小虎大佬的题解:传送门定义一个值sum,遇到1加一,遇到0减一,将连续子数组0和1数量相同问题转化成连续子数组和为0问题创建一个哈希表,key存储sum,value存储当前下标,如果存在key值相同就找到其下标pos被当前下标value减去得到子数组的长度,判断是否最大就好了 为什么找到key

2021-06-03 20:08:46 64

原创 [leetcode] 523:连续的子数组和

leetcode-523 连续的子数组和: 传送门我的思路穷举,双for循环,外层for循环i表示子数组起始下标,内层for循环j表示子数组结束下标,sum表示子数组i到j的和,时间复杂度O(n2),在最后一个用例上超时bool checkSubarraySum(vector<int>& nums, int k) { if(nums.size() < 2) return false; for(int i = 0; i < nums.size()

2021-06-03 17:58:07 85

原创 [共同学习] 快速排序浅见

快速排序参考博客简要介绍基本思想实现思路代码实现--以上--参考博客白话经典算法系列之六 快速排序简要介绍一种不稳定排序,采用分治的策略,是对冒泡排序的一种改进。时间复杂度O(n log2n),空间复杂度O(log2n)。基本思想通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据要小,然后再按此方法对这两部分数据分别进行快速排序。实现思路挖坑法:设置两个变量start=0,end=size-1,选择一个基准值key(如果选择第一个元素arr[start

2021-06-01 14:48:02 76

原创 [共同学习] 归并排序浅见

归并排序简要介绍基本思想实现思路代码实现简要介绍建立在归并操作上的一种稳定的排序算法,采用分治策略,时间复杂度O(n log n),空间复杂度T(n)。基本思想先使每个子序列有序,再使子序列段间有序,将已有序的子序列合并,得到完全有序的序列。实现思路先递归分解数列,再合并数列完成归并。递归分解操作:将整个元素分为两组,再将每组分为两组,以此类推,直到分出来的小组只有一个数据时,认为小组组内有序,合并相邻的两个小组。归并操作:申请空间,设置两个指针,最初位置分别为两个已将排过序序列的起始位置,比

2021-06-01 11:55:29 52

原创 [共同学习] 希尔排序浅见

希尔排序简要介绍基本思想实现思路代码实现--以上--简要介绍是直接插入排序的高效改进版本,又称“缩小增量排序”。非稳定排序算法,时间复杂度O(n log n)~O(n2),空间复杂度O(1),对规模非常大的数据排序不是最优选择。基本思想实质是一种分组插入方法。把元素按下标的一定增量分组,对每组使用直接插入排序算法排序,随着增量逐渐减少,每组包含的元素越来越多,当增量减至1时,整个元素被分为一组,算法结束。实现思路将所有元素看作整体,先取一个小于size的整数d1作为第一个增量,将所有距离为d1

2021-05-29 16:09:31 51

原创 [共同学习] 选择排序浅见

选择排序简要介绍基本思想代码实现--以上--简要介绍一种不稳定排序,时间复杂度O(n2),空间复杂度O(1)。基本思想在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,再从剩余未排序元素中继续寻找最小(大)元素,放到已排序序列的末尾,直到所有元素均排序完毕。代码实现void SelectSort(int arr[], int size){ for (int i = 0; i < size - 1; ++i){ //交换次数,剩余最后一个元素就是最大的 int min =

2021-05-29 15:14:34 43

原创 [共同学习] 直接插入排序浅见

直接插入排序简要介绍基本思想实现思路代码实现关于哨兵--以上--简要介绍是一种稳定排序,时间复杂度O(n2),空间复杂度O(1)。基本思想每一趟将一个待排序的记录,按其关键字的大小插入到已经排好序的一组记录的适当位置,直到所有待排序记录全部插入为止。实现思路由两层嵌套循环组成,外层循环标识并决定待比较的数值,内层循环为待比较的数值确定其最终位置。直接插入排序是将待比较的数值与它前一个数值进行比较,所以外层循环是从第二个数值开始的;当前一数值比待比较数值大的情况下继续循环比较,直到找到比待比较数

2021-05-28 21:01:37 60

原创 [共同学习] 平衡二叉树浅见

平衡二叉树平衡二叉树的概念AVL树结点的定义AVL树的插入左左:右单旋右右:左单旋左右:先左旋,再右旋右左:先右旋,再左旋AVL树的验证验证其为二叉搜索树验证其为平衡树AVL树的性能AVL树的实现感悟--以上--二叉搜索树虽然可以缩短查找的效率,但如果数据有序或接近有序的二叉搜索树将退化为单支树,查找元素相当于在顺序表中搜索元素,效率低下。因此就有了解决上述问题的方法:平衡二叉树。平衡二叉树的概念平衡二叉树(AVL树):当二叉搜索树插入新结点后,如果能保证每个结点的左右子树高度之差的绝对值不超过1(需

2021-05-28 17:04:41 157

原创 [共同学习] 优先级队列浅见

优先级队列priority_queuepriority_queue的介绍priority_queued的使用priority_queue的模板参数priority_queue的常用函数构造判空元素个数堆顶元素插入删除priority_queue的定义priority_queue的模拟实现--以上--包含头文件< queue>priority_queue的介绍引用《STL源码剖析》中对priority_queue的介绍,priority_queue是一个拥有权值观念的queue,由于这是一个

2021-05-27 20:36:16 85

原创 [共同进步] map容器浅见

map容器map的介绍map的使用map的模板参数map的构造迭代器容量元素访问元素修改multimapmultimap的介绍map的应用--以上--头文件< map >map的介绍1.map是关联容器,按照键值key比较存储键值对<key, value>元素;2.键值key通常用于排序和唯一标识元素,即key值唯一,值value中存储与其键值key关联的内容,key和value的类型可以不同;3.key与value通过成员类型value_type绑定在一起,为其取别名为p

2021-05-26 20:37:04 89

原创 [共同学习] set容器浅见

set容器关于setset的特性set的使用set的模板参数列表set的构造set的迭代器set的容量set的修改操作--以上--包含头文件< set >关于setset是树型结构的关联式容器,底层是红黑树。(关联式容器也是存储数据的,只不过存储的是<key , value>结构的键值对,在数据检索时比序列式容器效率更高;树型结构的关联式容器主要有四种:map, set, multimap, multiset。)set的特性1.set中的元素总是按照其内部比较对象所指示的特

2021-05-26 17:29:23 172

原创 [共同学习] 二叉搜索树浅见

二叉搜索树二叉搜索树概念二叉搜索树结点的定义二叉搜索树的操作查找插入删除插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入二叉搜索树概念二叉搜索树也叫二叉排序树,它或者是一颗空树,或者具有以下性质:1.若左子树不为空,则左子树上所有结点的值都小于根结点的值;2.若右子树不为空,则右子树

2021-05-26 15:09:48 76

空空如也

空空如也

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

TA关注的人

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