自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Linux进程7.进程等待

01 什么是僵尸进程僵尸进程就是已经结束了的,但是还没有从进程表中删除的进程。僵尸进程太多会导致进程表里面条目被填满,进而导致系统崩溃。在进程的状态中,僵尸进程几乎放弃了所有的内存空间,没有任何可执行代码,也不能被调度,仅仅在进程列表中保留一个位置。他需要父进程来为它收尸,如果父进程没有安装SIGCHLD信号处理函数,调用wait()或者waitpid()等待子进程结束,又没有显式忽略该信号,那么它就一直保持僵尸状态。如果这时父进程结束了,那么init进程会自动接手这个子进程,为它收尸。可

2020-10-28 20:06:03 94

原创 linux进程6.进程创建

Linux主要提供了fork、vfork和clone三种方法来创建进程。01 进程获取getpid:getpid函数用来取得目前进程的进程ID,而getppid可以得到父进程的ID;许多程序利用取到的此值来建立临时文件,以避免临时文件相同带来的问题。getegid:获取执行有效的组识别码;02 启动进程:fork()fork()用于创建子进程,创建新的进程;表头文件:#include<sys/types.h>返回值:在父进程中返回子进程的进程号,在子进程中返回0,错误返

2020-10-28 18:45:47 177

原创 斐波那契数列 · C++ · 简单

题目描述:写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项。斐波那契数列的定义如下:F(0) = 0, F(1) = 1F(N) = F(N - 1) + F(N - 2), 其中 N > 1.斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。要求0<=n<=100。思路分析使用递归法class Solution .

2020-10-27 10:28:11 1541

原创 数组中重复的数字 · C++ · 简单

在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。原地哈希注意题目描述:一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的 范围 内,这个 范围 恰好与数组的下标可以一一对应。所以我们可以执行某种操作,使索引与值一一对应,即索引 0 的值为 0,索引 1 的值为 1。而一旦某个索引的值不只一个,则找到了重复的数字,也即发生了 哈希冲突.转载 动图演示

2020-10-26 21:25:18 494

原创 判断链表中是否有环·C++·简单

判断给定的链表中是否有环扩展:你能给出空间复杂度的解法么?

2020-10-24 22:21:59 926

原创 linux进程5.进程控制块PCB

linux的进程控制块是一个有结构task_struct所定义的数据结构,task_struct存放在/index/linux/sched.h中,包括管理进程的所需的各种信息。在创建一个新进程时,系统在内存中申请一个空的task_struct区,即空闲PCB块,并填入所需信息,同时将指向该结构的指针填入到task[]数组中。当前处于运行状态进程的PCB用指针数组current_set[]来指出,这是因为Linux支持多处理系统,系统内可能存在多个同时运行的程序。Linux系统的PCB包括很多参数,每.

2020-10-24 15:58:00 493

原创 linux进程4.进程结构

Linux系统是一个多进程的系统,它的进程之间具有并行性、互不干扰等特点。也就是说,每个进程都是一个独立的运行单位,拥有各自的权利和责任。其中,各个进程都运行在独立的虚拟地址空间。因此,即使一个进程发生异常,它也不会影响到系统中的其他进程。Linux中的进程包含3个段,分别为“数据段”、“代码段”、“堆栈段”。(1)数据段:存放的是全局变量、常数以及动态数据分配的数据空间。根据存放的数据,数据段又可以分为普通数据段(包括可读可写/只读数据段,存放静态初始化的全局变量或常量)、BSS数据段(存放未..

2020-10-24 14:41:26 127

原创 linux进程3.进程的三态

01 三种基本状态进程在运行中不断改变其运行状态,通常,一个进程运行必须具有一下三种基本状态:就绪状态:若进程已被分配到所有必要的资源(除CPU),只要获得处理器便可立即执行;就绪进程可以按多个优先级来划分队列。例如,当一个进程由于时间片用完而进入就绪状态时,排入低优先级队列;当进程由I/O操作完成而进入就绪状态时,排入高优先级队列。执行状态:当一个进程在处理机上运行时,则称该进程处于运行状态。阻塞状态:也称为等待或睡眠状态,一个进程正在等待某一事件发生(例如请求I/O而等待I/O完成等)而暂时停

2020-10-24 11:32:56 1033

原创 Linux进程2.进程管理(ps、pgrep、kill、nice)

Linux进程的管理,是通过进程管理工具实现的,如:ps、kill和grep等。01 监视进程的工具:ps-a:显示当前终端运行的的所有进程信息-u:以用户的信息显示进程-x:显示后台运行进程的参数l:长格式输出j:用任务格式来显示进程f:用树状格式来显示进程r:显示运行中的进程ps -aux:查看所有的进程(常用组合)ps -aux | grep:查看并筛选进程例如 ps -aux|grep java 查看和java有关的进程其中:

2020-10-24 10:17:10 471

原创 Linux进程1.概念

01 进程linux是如何实现多个进程同时执行的呢?linux使用了一种叫做“进程调度”的手段:首先,为每个进程指派一定的运行时间(这个时间通常很短,短到以毫秒为单位),然后依照某种规则,从众多进程中挑选一个投入运行,其它的进程暂时等待,当正在运行的那个进程时间耗尽,或执行完毕退出,或某种原因暂停,linux会重新进行调度,挑选下一个进程投入运行。因为每个进程占用的时间片很短,所以就好像多个进程同时运行一样。每个进程在创建时都会被分配一个数据结构,称为进程控制块(Process Control

2020-10-23 22:00:12 92

原创 反转链表 · C++ · 简单

题目:输入一个链表,反转链表后,输出新链表的表头。指针pre指向null,cur指向pHead头节点遍历链表(也就是cur不为空时),先用一个临时的指针变量temp指向cur的next,然后将cur的next指向pre,pre和cur都向前走一位,走到最后,cur指向null,pre指向最后一个节点(这时也就是链表反转后的头节点)。/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x),

2020-10-21 21:15:16 167

原创 STL常用算法:遍历、查找、排序、拷贝、替换

概述算法主要是由头文件< algorithm> < functional> < numeric>组成;< algorithm>是所有STL头文件中最大的一个,范围涉及到比较、交换、查找、遍历、复制、修改等待;< functional>体积很小,只包括几个在序列上面进行简单数学运算的模板函数;< numeric>定义了一些模板类,用以声明函数对象;常用遍历算法for_each //遍历容器transform //搬运

2020-10-18 17:33:21 541

原创 Linux中Could not get lock /var/lib/apt/lists的解决方法

1.刚安装ubuntu时更新出现问题,如图:Could not get lock /var/lib/apt/lists -open是因为apt还在运行,apt是linux中一款安装包管理工具;解决方法:1)杀死所有apt进程首先使用ps命令查看所有的apt进程,然后使用kill命令杀死相关进程;一般到这儿就可以了,先试试看能不能更新;如果还不能,是因为上次没有正常关闭导致的,可以将lock删掉即可,如下2)转载:https://www.cnblogs.com/yun6853992/p/9

2020-10-17 22:40:51 4112 2

原创 左移运算符重载

作用:可以输出自定义的数据类型;一般,不会利用成员函数来重载左移运算符;#include<iostream>using namespace std;class Person{public: int m_A; int m_B;};//本质operator<<(cout,p)可简写为cout<<postream &operator<<(ostream &cout,Person &p)//cout标准输出流对象,全局.

2020-10-09 18:27:50 165

原创 加号运算符重载

运算符重载:对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型;如果不坚持和闲鱼有什么区别不是加急加加字和对象对象等幅含是说这个这个就是就是收到的基本的 和事实上就是这个说的吗呢这个的话这个intm_bp....

2020-10-09 16:39:10 609

原创 STL——函数对象(仿函数)

概念:重载函数调用操作符的类,其对象称为函数对象;函数对象使用重载时,行为类似函数调用,也叫仿函数;本质:函数对象(仿函数)是一个类,不是一个函数;特点:函数对象在使用时,可以像普通函数那样调用,可以有参数,可以有返回值;函数对象超出普通函数的概念,函数对象可以有自己的状态;函数对象可以作为参数传递;#include<iostream>#include<string>using namespace std;//仿函数//1、函数对象在使用时,可以

2020-10-04 13:27:12 209

原创 STL实例——员工分组

案例描述:招聘10个员工,入职后,需要指派员工在哪个部门工作;员工信息:姓名,工资;部门分为:策划、美术、研发;随机给10名员工分配部门和工资;通过multimap进行信息的插入:key(部门编号),value(员工);分部门显示员工信息;思路:创建10名员工,放到vector中;遍历vector,取出每个员工,进行随机分组;分组后,将员工部门编号作为key,具体员工为value,放到multimap中;分部门显示员工信息;#include<iostream>#i

2020-10-04 12:53:33 132

原创 map/multimap容器用法

基本概念map中所有元素都是pair;pair中第一个元素为key值(键值),起到索引作用,第二个元素为value(实值);所有元素都会根据元素的键值自动排序;本质:属于关联式容器,底层是用二叉树实现;优点:可以根据key值快速找到value值;区别:1)map不允许容器中有重复的key值元素;2)multimap允许容器中有重复的key值元素;常用接口构造函数:map<T1,T2>m;map(const map &map);赋值:map& op

2020-10-04 00:06:12 123

原创 set/multiset容器

基本概念所有元素都会在插入式被自动排序;set/multiset属于关联式容器,底层结构是用二叉树实现;区别:1)set不允许容器中有重复的元素;2)multiset允许容器中有重复的元素;常用接口构造函数:set s;set(const set &s);赋值操作:set& operator=(const set &s);#include<iostream>#include<set>using namespace std;

2020-10-03 18:31:50 125

原创 queue容器用法简单入门

基本概念队列是一种特殊的线性表,是一种先进先出(FIFO)的数据结构。它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。queue常用接口构造函数:queue q;//默认queue(const queue &que);//拷贝赋值操作:queue& operator=(const queue &que);//重载等号操作符数据存取:

2020-10-03 12:21:58 405

原创 stack容器用法简单入门

基本概念stack(堆栈)是一种先进后出的数据结构;只能在一端(称为栈顶(top))对数据项进行插入和删除。stack常用接口构造函数:stack s;//默认stack(const stack &stk);//拷贝赋值操作:stack& operator=(const stack &stk);//重载等号操作符数据存取:push(ele);//向栈顶添加元素pop();//从栈顶移除一个元素top();//返回栈顶元素大小操作:emp

2020-10-03 11:57:57 348

原创 STL实例——评委打分

案例描述有5名选手:ABCDE,10个评委分别对每一名选手打分,去除最高分和最低分,取平均分;实现步骤创建五名选手,放到vector中;遍历vector容器,去除每一个选手,执行for循环,把十个评分存到deque容器中;sort算法对deque容器中分数排序,去除最高分和最低分;遍历deque容器,累加取平均值;#include<iostream>#include<vector>#include<deque> #include<string

2020-10-03 11:17:36 184

原创 deque容器用法

基本概念功能:双端数组,可以对头端进行插入删除操作,也可以对尾部;deque和vector区别:vector对于头部的插入删除效率较低,数据量越大,效率越低;vector访问元素是的会比deque快,这和两者内部实现有关;...

2020-10-03 00:41:57 179

原创 error C4996: ‘scanf‘: This function or variable may be unsafe C++使用传统库函数报错问题

error C4996: ‘scanf’: This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS.由于微软在VS2013及后续的版本中不建议再使用C/C++传统库函数scanf、strcpy、sprintf等,所以直接使用会报以上的错误;而且编译器也提供了解决方法,如采用带_s的函数,scanf_s、strc

2020-10-01 21:45:12 149

空空如也

空空如也

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

TA关注的人

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