自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 资源 (5)
  • 收藏
  • 关注

原创 Linux系统编程----12(线程概念,Linux线程实现原理,栈中ebp指针和ebp指针,线程的优缺点和共享资源)

线程概念LWP:light weight process 轻量级进程进程:独立地址空间,拥有 PCB线程:也有 PCB,但没有独立的地址空间(共享) 区别:在于是否共享地址空间。独居(进程);合租(线程)。Linux 下:线程:最小的执行单位进程:最小分配资源单位,可看成是只有一个线程的进程。一个进程创建多少个线程,他们都共用一块地址空间,但是线程越多,占用cpu越多,也就是...

2019-08-29 21:54:31 468 1

原创 Linux系统编程---11(会话,守护进程,创建守护进程)

会话创建会话创建一个会话需要注意以下6点注意事项调用进程不能是进程组组长,该进程变成新会话首进程该进程成为一个新进程组的组长进程需要root权限(nbuntu不需要)新会话丢弃原有的控制终端,该会话没有控制终端该调用进程是组长进程,则出错返回建立新会话时,先调用fork,父进程终止,子进程调用setsidgetsid 函数获取进程所属的会话IDpid_t getsid(p...

2019-08-28 20:13:21 216

原创 Linu系统编程---10(Linux的终端,线路规程,网络终端,进程组)

终端输入输出设备的总称在 UNIX 系统中,用户通过终端登录系统后得到一个 Shell 进程,这个终端成为 Shell 进程的控制终端(Controlling Terminal),进程中,控制终端是保存在 PCB 中的信息,而 fork 会复制 PCB 中的信息,因此由 Shell 进程启动的其它 进程的控制终端也是这个终端。默认情况下(没有重定向),每个进程的标准输入、标准输出和标准错误输...

2019-08-28 18:00:16 168

原创 Linu系统编程---9(SIGCHLD 信号,信号传参,中断系统调用)

SIGCHLD 信号SIGCHLD 的产生条件子进程终止时子进程接收到 SIGSTOP 信号停止时子进程处在停止态,接受到 SIGCONT 后唤醒时借助 SIGCHLD 信号回收子进程子进程结束运行,其父进程会收到 SIGCHLD 信号。该信号的默认处理动作是忽略。可以捕捉该信号,在捕捉函 数中完成子进程状态的回收。linux系统根据未决信号集来处理信号,多个信号进入未决信号集只...

2019-08-24 08:43:25 248

原创 Linux系统编程---8(全局变量异步I/O,可重入函数)

全局变量异步 I/O分析如下父子进程交替 数数 程序。当捕捉函数里面的 sleep 取消,程序即会出现问题。请分析原因。#include<stdio.h> #include<signal.h>#include<unistd.h>#include<stdlib.h>intn=0,flag=0; void sys_err(char* ...

2019-08-18 20:18:53 280

原创 Linux系统编程----8(竞态条件,时序竞态,pause函数,如何解决时序竞态)

竞态条件(时序竞态):pause 函数调用该函数可以造成进程主动挂起,等待信号唤醒。调用该系统调用的进程将处于阻塞状态(主动放弃 cpu) 直 到有信号递达将其唤醒,等不到一直等int pause(void); 返回值:-1 并设置 errno 为 EINTR返回值:如果信号的默认处理动作是终止进程,则进程终止,pause 函数么有机会返回。如果信号的默认处理动作是忽略,进程继续处...

2019-08-18 10:18:34 239

原创 Linux系统编程----7(信号集,信号屏蔽,信号捕捉)

信号集操作函数内核通过读取未决信号集来判断信号是否应被处理。信号屏蔽字 mask 可以影响未决信号集。而我们可以在应 用程序中自定义 set 来改变 mask。已达到屏蔽指定信号的目的。信号集设定sigset_t set; //typedef unsigned long sigset_t;int sigemptyset(sigset_t* set); 将某个信号集清 0 成功:0;失败:...

2019-08-17 11:19:36 483

原创 Linux系统编程---6(信号的机制,信号4要素,Linu常规信号表,定时器)

信号的概念信号在我们的生活中随处可见, 如:古代战争中摔杯为号;现代战争中的信号弹;体育比赛中使用的信号枪… 他们都有共性:简单不能携带大量信息,只能带一个标志。满足某个特设条件才发送。Unix 早期版本就提供了信号机制,但不可靠,信号可能丢失。Berkeley 和 AT&T 都对信号模型做了更改,增加 了可靠信号机制。但彼此不兼容。POSIX.1 对可靠信号例程进行了标准化。...

2019-08-16 09:50:30 284

原创 Linux下文件的多进程拷贝

大文件拷贝假设有一个超大文件,需对其完成拷贝工作。为提高效率,可采用多进程并行拷贝的方法来实现。假设文件 大小为 len,共有 n 个进程对该文件进行拷贝。那每个进程拷贝的字节数应为 len/n。但未必一定能整除,我们可 以选择让最后一个进程负责剩余部分拷贝工作。可使用 len%(len/n)将剩余部分大小求出。为降低实现复杂度,可选用 mmap 来实现源、目标文件的映射,通过指针操作内存地址...

2019-08-15 09:26:09 1064

原创 Linux系统编程---5(共享存储映射,存储映射I/O,mmap函数,父子进程间通信,匿名映射)

共享存储映射文件进程间通信使用文件也可以完成 IPC,理论依据是,fork 后,父子进程共享文件描述符。也就共享打开的文件。编程:父子进程共享打开的文件。借助文件进行进程间通信。测试代码/* * * 父子进程共享打开的文件描述符----使用文件完成进程间通信 * */#include<stdio.h>#include<unistd.h>#inclu...

2019-08-14 17:28:14 650

原创 Linux系统编程---4(进程间通信IPC,管道)

IPCLinux 环境下,进程地址空间相互独立,每个进程各自有不同的用户地址空间。任何一个进程的全局变量在另 一个进程中都看不到,所以进程和进程之间不能相互访问,要交换数据必须通过内核,在内核中开辟一块缓冲区, 进程 1 把数据从用户空间拷到内核缓冲区,进程2 再从内核缓冲区把数据读走,内核提供的这种机制称为进程间通 信(IPC,InterProcessCommunication)。在进程间...

2019-08-13 20:52:26 309

原创 Linux系统编程--3(exec 函数族,僵尸进程和孤儿进程,wait和wait_pid回收子进程)

exec 函数族fork 创建子进程后执行的是和父进程相同的程序(但有可能执行不同的代码分支) ,子进程往往要调用一种 exec 函数以执行另一个程序。当进程调用一种 exec 函数时,该进程的用户空间代码和数据完全被新程序替换,从新程序 的启动例程开始执行。调用 exec 并不创建新进程,所以调用 exec 前后该进程的 id 并未改变。将当前进程的.text、.data 替换为所要加载的程...

2019-08-12 23:10:59 494

原创 套接字编程--1(UDP协议编程,端口号,传输层协议,网络字节序)

传输层的协议:ip地址:在网络中唯一标识一台主机IPV4:uint32_t DHCP NATIPV6 : uint8_t addr[16] —向前并不兼容IPV4每一条数据都必须包含源地址和目的地址:因为每条网络中的数据都必须确定是从那个主机来到那个主机去端口号在一台主机上唯一标识一个进程在一台主机上,当网卡收到网络数据,操作系统能够通过端口分辨出,这个数据该交给拿个进程处...

2019-08-12 12:23:36 1669

原创 Linux系统编程--2(环境变量,进程控制)

环境变量环境变量是指在操作系统中用来指定操作系统运行环境的一些参数每个人用电脑的习惯不一样,比如一般把文件放到磁盘,怎么管理文件,用什么编译器,所以,环境变量就是根据每个人使用操作系统的习惯来规定一些参数具体特征字符串(本质)有统一的格式:名=值[:值]值用来描述进程环境信息存储形式:与命令行参数类似。char*[]数组,数组名 environ,内部存储字符串,NULL 作为...

2019-08-10 19:41:36 374

原创 Linux系统编程--1(进程和程序,CPU和MMU,PCB,进程状态)

进程相关概念程序和进程程序:是指编译好的二进制文件,在磁盘上,不占用系统资源(cpu、内存、打开的文件、设备、锁…)进程:是一个抽象的概念,与操作系统原理联系紧密。进程是活跃的程序(程序员角度),占用系统资源,分配资源的基本单位(操作系统角度)。在内存中执行。(程 序运行起来,产生一个进程)进程与程序的关系程序就好像剧本,而进程呢就像一台戏。同一个剧本可以在多个舞台同时上演。同样,同一...

2019-08-09 20:26:01 724

原创 c++实现贪吃蛇

游戏中的实现元素游戏中元素分为:墙壁,蛇,事物以及蛇的可行区域和右侧的版本号和游戏玩法提示墙壁*号表示,代表一个区域范围,也就是蛇的可移动区域,蛇如果碰到墙壁视为死亡,蛇分为蛇头,蛇身,蛇头用@符号表示,蛇身用=等号表示,当蛇吃到食物时候,蛇身+1,一意为着长度变长,贪吃蛇可以通过不断地吃食物来增加自己的身体食物#井号表示,蛇碰到食物会将食物吃掉可移动区域空格 表示,代表蛇可以移...

2019-08-08 18:30:36 54431 24

原创 c++中STL实现演讲比赛流程

演讲比赛流程1)某市举行一场演讲比赛,共有 24 个人参加,按参加顺序设置参赛号。比赛共三轮,前两 轮为淘汰赛,第三轮为决赛。2)比赛方式:分组比赛第一轮分为 4 个小组,根据参赛号顺序依次划分,比如 100-105 为一组,106-111 为第 二组,依次类推,每组 6 个人,每人分别按参赛号顺序演讲。当小组演讲完后,淘汰组内排 名最后的三个选手,然后继续下一个小组的比赛。第二轮分为 ...

2019-08-07 11:53:20 449

原创 c++中的STL的常用算法---3(排序算法,拷贝和替换算法,算术生成算法,集合算法)

排序算法merge()以下是排序和通用算法:提供元素排序策略merge: 合并两个有序序列,存放到另一个序列。#include<iostream>using namespace std;#include<algorithm>#include<vector>void test01(){ vector<int >v1; ...

2019-08-07 10:11:32 157

原创 c++中STL的常用算法---2(遍历算法,查找算法)

算法概述算法主要由头文件组成是所有STL头文件中最大的一个,其中常用的功能涉及到比较,交换,查找,遍历,复制,修改,反转,排序,合并等体积很小,只包括在几个序列容器上进行的简单运算的模板函数定义一些模板类,用以声明函数对象遍历算法for_each()for_each: 用指定函数依次对指定范围内所有元素进行迭代访问。该函数不得修改 序列中的元素。for_each基础遍历#...

2019-08-05 22:10:20 320

原创 c++中的函数适配器

函数适配器函数适配器概念STL中定义了大量的函数对象,但是有时候需要对函数返回值进行进一步的简单计算,或者填上多余的参数,不能直接代入算法,函数适配器实现了这一功能,将一种函数对象转化为另一种符合要求的函数对象,函数适配器可以分为4大类,绑定适配器,组合适配器,指针函数适配器和成员函数适配器直接构造STL中的函数适配器通常会导致冗长的类型声明。为简化安徽念书适配器的构造,STL还提供了函数...

2019-08-05 15:15:22 2250

原创 循环队列基本操作(解决队列假溢出)

循环队列

2019-08-05 15:07:52 4163

原创 c++中STL的常用算法--1(函数对象,谓词,内建函数对象)

函数对象重载函数调用操作符的类,其对象常称为函数对象(function object),即它们是行为类似函数的对象,也叫仿函数(functor),其实就是重载"()"操作符,使得类对象可以像函数那样调用...

2019-08-05 10:39:59 305

原创 c++中利用STL实现公司员工分组问题

#include<iostream>using namespace std;#include<vector>#include<string>#include<map>#include<ctime>/*公司招聘了5个员工,5名员工进入公司之后,需要指派员工在那个部门工作的人员信息:姓名 年龄 电话 工资等组成通过Mult...

2019-08-04 20:35:06 792

原创 c++中容器(STL)的共性与使用的时机

容器的共通能力C++模板是容器的概念理论提高:所有容器提供的都是值(value)语意,而非引用(reference)语意。容器执 行插入元素的操作时,内部实施拷贝动作。所以 STL 容器内存储的元素必须能够被拷贝(必 须提供拷贝构造函数)。除了 queue 与 stack 外,每个容器都提供可返回迭代器的函数,运用返回的迭代器就可以访问元素。通常 STL 不会丢出异常。要求使用者...

2019-08-04 13:02:50 181

原创 c++中的map容器

map/multimap基本概念Map的特性是,所有元素都会根据元素的键值自动排序。Map所有的元素都是pair,同时拥有实值和键值,pair的第一元素被视为键值,第二元素被视为实值,map不允许两个元素有相同的键值我们可以通过map的i迭代器改变mao的键值吗?答案是不行,因为map的键值关系到map元素的排列规则,任意改变map键值会严重破坏map的组织,如果想要修改元素的实值,是可以的...

2019-08-04 11:24:54 350

原创 c++中的set容器和multiset容器

set容器基本概念set的特性是,所有元素都会根据元素的键值自动被排序。set的元素不像map那样可以同时拥有实值和键值,set的元素即是键值又是实值。set不允许两个元素又相同的键值。我们不可以通过set的迭代器改变set元素的值,因为set元素值就是其键值,关系到set元素的排序规则。如果任意改变set元素值,会严重破坏set组织。换句话说,set的iterato是一种const_ite...

2019-08-03 23:07:06 236

原创 c++中list容器

list概念list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向 其前一个元素和后一个元素。list与forward_list非常相似:最主要的不同在于forward_list是单链表,只能朝前迭代,已让其更简单高 效。与其他的序列式容器相比(array...

2019-08-03 21:31:24 1199

原创 c++中的queue容器

queue容器队列是一种容器适配器,专门用于在FIFO上下文(先进先出)中操作,其中从容器一端插入元素,另一端 提取元素。队列作为容器适配器实现,容器适配器即将特定容器类封装作为其底层容器类,queue提供一组特定的 成员函数来访问其元素。元素从队尾入队列,从队头出队列。底层容器可以是标准容器类模板之一,也可以是其他专门设计的容器类。该底层容器应至少支持以下操 作 empt...

2019-08-02 23:13:06 750

原创 c++中stack容器

Stack 简介stack 是堆栈容器,是一种“先进后出”的容器。stack 是简单地装饰 deque 容器而成为另外的一种容器。#includestack没有迭代器Stack所有元素的进出都必须符合“先进后出”的条件,只有stack顶端的元素,才有机会被外界取用,stack不提供遍历功能,也不提供迭代器stack 对象的默认构造stack 采用模板类实现, stack 对象...

2019-08-02 22:53:57 397

原创 c++实现评委打分功能(vector,deque容器实现)

#include<iostream>using namespace std;#include<vector>#include<string>#include<deque>#include<algorithm>#include<time.h>class Person{public: Person(stri...

2019-08-02 20:36:10 807

linux_kernel_2-6-11-12_comment.tar.bz2

Linux注释内核

2020-04-07

Linux总结.xmind

菲菲常常详详细细的Linux总结,面试常考点!

2020-04-01

C++总结.xmind

非常详细的C++思维导图,只要把上面的知识点记住,稍微深入即可达到你想达到的程度,非常详细---

2020-02-25

数据结构.xmind

比较全面的数据结构的总结,图文并茂

2019-09-13

C语言.xmind

很全的C语言总结,

2019-09-07

空空如也

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

TA关注的人

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