Noone0^
码龄7年
关注
提问 私信
  • 博客:60,947
    社区:526
    61,473
    总访问量
  • 71
    原创
  • 2,193,304
    排名
  • 10
    粉丝
  • 0
    铁粉

个人简介:欲渡黄河冰塞川,将登太行雪满山。

IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:陕西省
  • 加入CSDN时间: 2017-12-09
博客简介:

imp0128的博客

查看详细资料
个人成就
  • 获得24次点赞
  • 内容获得3次评论
  • 获得95次收藏
  • 代码片获得107次分享
创作历程
  • 57篇
    2020年
  • 3篇
    2019年
  • 11篇
    2018年
成就勋章
TA的专栏
  • 数据结构
    7篇
  • Linux
    10篇
  • 刷题
    8篇
  • C++
    32篇
创作活动更多

如何做好一份技术文档?

无论你是技术大神还是初涉此领域的新手,都欢迎分享你的宝贵经验、独到见解与创新方法,为技术传播之路点亮明灯!

180人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

排序算法(插入、选择、交换、归并)

八大排序算法1.排序的概念2.算法分析3.具体排序讲解3.1直接插入排序3.2希尔排序1.排序的概念排序是计算机内经常进行的一种操作,其目的是将一组“无序”的记录序列调整为“有序”的记录序列。排序分为内部排序和外部排序。若整个排序过程不需要访问外存便能完成,则称此类排序问题为内部排序。反之,若参加排序的记录数量很大,整个序列的排序过程不可能在内存中完成,则称此类排序问题为外部排序。2.算法分析插入排序直接插入排序将第一个和第二个元素排好序,然后将第3个元素插入到已经排好序的元素中,
原创
发布博客 2020.12.14 ·
1921 阅读 ·
1 点赞 ·
0 评论 ·
2 收藏

STL中的greater<T>()和less<T>()

在构造map、set、multimap、multiset这些序列式容器时,默认按照key值来进行排序,比较器默认从小到大。在构造时加上greater<T> 会让容器的比较器按照key值从大到小排序,less<T>则相反。#include<iostream>#include<map>#include<functional>using namespace std;int main() { map<int, string,greater
原创
发布博客 2020.12.14 ·
591 阅读 ·
0 点赞 ·
0 评论 ·
4 收藏

Linux进程间通信--消息队列

Linux进程间通信--消息队列消息队列(message queue)1.特点2.消息队列的使用消息队列的格式ftok()函数获取键值msgget()函数msgsnd()函数msgrcv()函数msgctl()函数3.模拟实现消息队列消息队列(message queue)消息队列提供了一种从一个进程向另一个进程发送一个数据块的方法。消息队列是消息的链接表,存放在内核中并由消息队列标识符标识。 每个数据块都被认为含有一个类型,接收进程可以独立地接收含有不同类型的数据结构。我们可以通过发送消息来避免命名管
原创
发布博客 2020.12.12 ·
224 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Linux进程间通信--共享内存

Linux进程间通信--共享内存共享内存(Shared Memory)1.通信原理2.为什么共享内存通信最快?3.特征&优缺点4.共享内存的使用5.共享内存操作流程6.操作共享内存的函数创建共享内存:shmget()函数将共享内存映射到地址空间:shmat()函数解除内存映射:shmdt()函数控制共享内存:shmctl()函数ftok()函数指定key值7.共享内存实现共享内存(Shared Memory)共享内存就是允许多个不相关的进程访问同一个逻辑内存。 共享内存是在两个正在运行的进程之间
原创
发布博客 2020.12.12 ·
332 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

Linux进程间通信--管道

Linux进程间通信①--管道1.进程间通信目的2.管道2.1匿名管道(pipe)基本特征管道自带同步和互斥读写规则匿名管道的创建pipe()匿名管道基于fork()的使用2.2命名管道(named pipe)基本特征打开/读写规则命名管道的创建命名管道实现无亲缘关系的进程间通信3.总结1.进程间通信目的数据传输:一个进程需要将它的数据发送给另一个进程资源共享:多个进程之间共享同样的资源通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件(如进程终止时要通知父进程)进程
原创
发布博客 2020.10.16 ·
235 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Linux文件IO--文件描述符/重定向

Linux文件IO--文件描述符/重定向1.基础IO1.1C语言文件IO1.2Linux系统文件IO1.3Linux 系统调用与C库函数对比打开文件1.基础IO1.1C语言文件IO给一个testio.txt写入Hello World:通过操作文件流指针完成。#include<stdio.h>#include<string.h>int main(){ FILE* fp = fopen("testio.txt", "w+"); if(fp == NULL){
原创
发布博客 2020.10.12 ·
408 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Linux进程程序替换

Linux进程程序替换1.进程程序替换1.1为什么要进行进程程序替换1.2进程替换的原理2.替换函数exec函数族2.1execv2.2execl2.3execvp/execlp2.3execve/execle1.进程程序替换1.1为什么要进行进程程序替换fork()创建子进程后,创建的子进程要么和父进程执行一样的代码,要么执行不同的代码分支(通过fork的返回值控制),但这样还是不够灵活。假如有很多的功能已经用别的程序实现好了,那么就不需要在父进程中控制子进程执行不同的代码分支,让子进程在自己的分支
原创
发布博客 2020.10.11 ·
409 阅读 ·
2 点赞 ·
0 评论 ·
1 收藏

Linux进程退出--_exit()&exit()

Linux进程退出1.退出场景2.进程常见的退出方法2.1正常退出2.2异常退出3.信号处理程序4._exit()系统调用接口5.exit()函数6._exit()和exit()的区别1.退出场景正常符合预期退出正常不符合预期退出(结果不正确)异常退出:执行过程中异常奔溃, 还未执行完2.进程常见的退出方法2.1正常退出main函数返回 ( return )调用 exit( int status )函数使用 _exit( int status )系统调用接口可以使用ench $?
原创
发布博客 2020.10.10 ·
1665 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Linux进程等待--wait()&waitpid()

Linux进程等待1.进程等待1.1 基本概念1.2 进程等待的必要性2.进程等待的方法2.1 wait等待2.2 waitpid等待获取子进程status3.模拟实现1.进程等待1.1 基本概念进程退出时会关闭所有文件描述符,释放在用户空间分配的内存,但是PCB会暂时保留,里面存放退出状态。比如一个进程正常退出, PCB里就存放进程的退出状态(退出码);如果是异常退出,那么PCB里存放导致该进程终止的信号。子进程的退出状态应该是由父进程回收的,也就是父进程必须得等待子进程退出,接收子进程的退出状态。
原创
发布博客 2020.10.10 ·
393 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

Linux进程优先级

Linux进程优先级1.进程优先级1.1 基本概念1.2 优先级取值范围2.查看进程优先级1.进程优先级1.1 基本概念由于系统中进程数量众多,而CPU资源比较少甚至只有一个,进程之间需要竞争来使用CPU。这时让一个比较重要、需要优先执行的进程去和其他进程竞争,显然是不合理的。为了更合理的分配CPU资源, 就有了进程优先级。优先级高的进程有优先执行的权利。此外,优先级还影响分配给进程的时间片长短。 重要的进程,应该分配多一些cpu时间片,好让其尽快完成任务。所有的进程都会有机会运行,但优先级高的进程
原创
发布博客 2020.10.10 ·
2474 阅读 ·
0 点赞 ·
0 评论 ·
6 收藏

Linux进程状态

Linux进程状态1.进程状态2.运行状态R3.睡眠状态S(可中断睡眠)4.磁盘休眠状态D(不可中断睡眠)5.停止状态(T) & 跟踪状态(t)6.死亡状态X(退出状态)7.僵死状态Z8.僵尸进程孤儿进程1.进程状态状态在Kernel源码中的定义:static const char * const task_state_array[] = { "R (running)", "S (sleeping)", "D (disk sleep)", "T (stop
原创
发布博客 2020.10.09 ·
302 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

Linux进程概念

Linux 进程1.冯诺依曼计算机体系结构把程序本身当作数据来对待,程序和该程序处理的数据用同样的方式储存。计算机的数制采用二进制;计算机应该按照程序顺序执行。2.现代计算机的硬件体系结构五大部输入设备:输入设备是用来完成输入功能的部件,即向计算机送入程序、数据以及各种信息的设备。常用的输入设备有键盘、鼠标、扫描仪、磁盘驱动器和触摸屏等。输出设备:输出设备是用来将计算机工作的中间结果...
原创
发布博客 2020.10.07 ·
142 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Linux进程创建--fork()

Linux进程创建--fork函数1.创建进程1.1 fork()函数1.2 fork()的返回值2.fork的写时拷贝策略3.fork失败原因fork用法1.创建进程我们说过一个进程就是一个PCB,即一个task_struck结构体,那么创建进程也就是创建一个task_struck结构体。在Linux中我们常用fork()函数来创建进程。1.1 fork()函数从已存在进程中创建一个新进程。新进程为子进程,而原进程为父进程。fork()在函数内部会调用clone这个系统调用接口。#include
原创
发布博客 2020.10.07 ·
709 阅读 ·
0 点赞 ·
0 评论 ·
4 收藏

二叉树的层序遍历

层序遍历一个二叉树。就是从左到右一层一层的去遍历二叉树。这种遍历的方式和我们之前讲过的都不太一样。需要借用一个辅助数据结构队列来实现,队列先进先出,符合一层一层遍历的逻辑,而是用栈先进后出适合模拟深度优先遍历也就是递归的逻辑。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(
原创
发布博客 2020.09.14 ·
99 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

[链表]LeetCode206. 反转链表

LeetCode206. 反转链表思路:使用双指针,一个指向当前节点cur,另一个指向当前节点的前一个节点prev。需要保存一下当前节点的下一个节点curnext(因为当前节点会变)。然后让当前节点指向他的上一个节点,再将prev和cur向后移动。当cur==nullptr说明走到链表尾,结束。迭代法://迭代法:class Solution {public: ListNode* reverseList(ListNode* head) { ListNode* prev=n
原创
发布博客 2020.09.06 ·
105 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

[二叉树]LeetCode257.二叉树的所有路径

LeetCode257.二叉树的所有路径思路:深度优先算法遍历二叉树,需要注意每次要将结果保存在一个string字符串内,最后将字符串尾插进vector容器。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), righ
原创
发布博客 2020.09.04 ·
93 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

[二叉树]LeetCode105&106.从中序与前/后序构建二叉树

105. 从前序与中序遍历序列构造二叉树思路:根据root节点,将中序vector划分成vin_left,vin_right两部分中序子序列,根据中序子序列长度,将前序vector划分成pre_left, pre_right对应的前序子序列。root->left递归生成,root->right递归。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *le
原创
发布博客 2020.09.03 ·
116 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

AVL树及其模拟实现

AVL树及其模拟实现1.AVL树的概念2.AVL树节点的定义3.AVL树的插入1.AVL树的概念二叉搜索树虽可以缩短查找的效率,但如果数据有序或接近有序二叉搜索树将退化为单支树,查找元素相当于在顺序表中搜索元素,效率低下。因此,两位俄罗斯的数学家G.M.Adelson-Velskii和E.M.Landis在1962年发明了一种解决上述问题的方法:当向二叉搜索树中插入新结点后,如果能保证每个结点的左右子树高度之差的绝对值不超过1(需要对树中的结点进行调整),即可降低树的高度,从而减少平均搜索长度。一棵AV
原创
发布博客 2020.09.02 ·
295 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

[字符串替换]NewCode.替换空格

NewCode.替换空格请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。思路一: 替换问题,替换后字符串的长度也变长了,就要涉及到字符串中字符移动的问题。可以先遍历字符串统计空格的个数,再计算出新的字符串的长度,再向新的字符串中插入"%20"。利用双指针,各自指向新老空间的结尾,然后进行old->new的移动。如果是空格,就连续放入“%20”,其他平移即可。class Solution
原创
发布博客 2020.07.28 ·
132 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

[数组]NewCode.数组中出现次数超过一半的数字

NewCode.数组中出现次数超过一半的数字数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。思路一:定义map,使用<数字,次数>的映射关系,最后统计每个字符出现的次数。class Solution {public: int MoreThanHalfNum_Solution(vector<int> numbe
原创
发布博客 2020.07.28 ·
120 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏
加载更多