自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 共享内存

一、共享内存的定义共享内存就是允许两个不相关的进程访问同一个逻辑内存。共享内存是在两个正在运行的进程之间共享和传递数据的一种非常有效的方式。不同进程之间共享的内存通常安排为同一段物理内存。进程可以将同一段共享内存连接到它们自己的地址空间中,所有进程都可以访问共享内存中的地址,就好像它们是由用C语言函数malloc分配的内存一样。而如果某个进程向共享内存写入数据,所做的改动将立即影响到可以访问同一段...

2017-11-28 00:56:25 278

原创 信号量

信号量定义 :特殊的变量,只能+1(v),-1(p),都是原子操作(不打断能被)。最简单的信号量是一个只有0与1两个值的变量,二值信号量。这是最为通常的形式。具有多个正数值的信号量被称之为通用信号量。信号量的作用:通知系统产生了某种事件Signal:改变对当前信号的响应方式(默认,忽略,自定义)子进程状态发生改变,发送给父进程(子进程结束了,会给父进程发送)Kill(pid_t pid,int s...

2017-11-28 00:40:15 1846

原创 进程与信号

信号:Linux响应条件而产生的一个事件。接收到该信号的进程会相应地采取一些行动信号是由某些错误条件而生成的。如内存段冲突,浮点处理器错误或非法指令等等。它们由shell和终端处理器生成来引起中断,它们还可以作为在进程间通信或修改行为的一种方式,明确有一个进程发送给另一个进程。信号可以被生成、捕获、响应或忽略在signal.h中定义,以SIG开头其他信号:给当前进程发送si

2017-11-28 00:19:30 229

原创 管道

引入管道的原因:普通文件存储在磁盘中,读写效率低管道文件存储在内存中,读写效率高 管道:其实是在两个进程之间实现一个数据流通的管道,单向或双向。优点:简单易用缺点:功能简单,有诸多限制 管道分为有名管道和无名管道。无名管道用于父子进程、兄弟进程之间的通信。无名管道是存在内存上的文件,进程对每一个已打开文件的操作都是通过一个file数据结构进行的,只有在同一个...

2017-11-27 01:48:21 261

原创 僵死进程

僵死进程:一、僵死进程的产生在每个进程退出的时候,内核释放该进程所有的资源,包括打开的文件,占用的内存等,但是仍然为其保留一定的信息(包括进程号the process ID,退出状态the termination status of the process,运行时间the amount of CPU time taken by the process等), 直到父进程通过wait/

2017-11-27 01:17:52 223

原创 KMP算法

1.朴素查找算法算法思想:从pos位置开始在主串中查找子串,找到就返回第一个匹配的下标,找不到就返回-1,定义变量i指向主串,定义变量j指向子串,如果相等i++,j++,否则,i退回起始的下一个下标,即i=i-j+1;,j回退到0号下标,即:j=0,结束标志:j>=子串的长度。时间复杂度O(m*n)//朴素查找算法BFint BF(const char *str,const char *

2017-11-26 00:41:47 201

原创

栈:特殊的线性表(只允许在一边进行操作),分顺序栈(顺序表实现),链栈(链表实现)特点:后进先出顺序栈:栈头在线性表表表尾(线性表表尾插入删除时间复杂度都是O(1))定义:typedef struct Stack{ int *elem; int top;  //栈顶指针,当前可以存放数据的下标 int stacksize;  //栈的总格子数}Stack,*PStack;链栈:栈头在链表表表头(链...

2017-11-21 15:00:50 207

原创 链表

带头结点的单链表:(浪费一个结点,使得数据处理更加方便)插入删除方便,不用移数据1.带头结点的循环链表(与普通链表的区别就是尾的next指向头)2.带头结点的静态链表(用顺序表实现链表,next表示数组小标,使得兼具顺序表与单链表的特点)有两个表头,一个指向有效链表表头,一个指向空闲链表表头0下标作为有效链表头,有效链为循环链表1下标作为空闲链表头,空闲链为循环链表

2017-11-21 14:36:41 162

原创 顺序表详解

定长顺序表定义:#pragma once#define SIZE 10typedef struct SeqList{ int elem[SIZE]; //顺序表表示数组,总大小SIZE int length; //有效数据的个数}SeqList,*PSeqList;操作://初始化 长度置0即可void InitSeqList(PSeqList ps){...

2017-11-21 14:05:34 517

原创 指针和引用的区别

指针和引用的区别:相同点:1. 都是地址的概念;指针指向一块内存,它的内容是所指内存的地址;引用是某块内存的别名。区别:1. 指针是一个实体,而引用仅是个别名;2. 引用使用时无需解引用(*),指针需要解引用;3. 引用只能在定义时被初始化一次,之后不可变;指针可变;4. 引用没有 const,指针有 const;5. 引用不能为空,指针可以为空;6. 

2017-11-21 12:14:35 198

原创 排序算法

插入排序:直接插入:思想:假设待排序的记录存放在数组R[1..n]中。初始时,R[1]自成1个有序区,无序区为R[2..n]。从i=2起直至i=n为止,依次将R[i]插入当前的有序区R[1..i-1]中,生成含n个记录的有序区。ways1:void insertSort1(int arr[], int len){ int i;//未排序序列带排序的元素下标 int j;//已排序序列最大元...

2017-11-11 01:55:15 175

原创 单链表下的快慢指针问题

1.给定单链表,检测是否有环。        使用两个指针p1,p2从链表头开始遍历,p1每次前进一步,p2每次前进两步。如果p2到达链表尾部,说明无环,否则p1、p2必然会在某个时刻相遇(p1==p2),从而检测到链表中有环。//检测链表是否有环bool Huan(List plist){ if(!plist) { return false; } Node *fast=...

2017-11-08 01:56:32 267

原创 fork()

fork:系统调用   ->    复制父进程#include <unistd.h> #include <stdio.h> int main() { pid_t fpid;//fpid表示fork函数返回的值 //printf("fork!"); printf("fork!/n"); fpid = fork();...

2017-11-06 01:07:09 258

空空如也

空空如也

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

TA关注的人

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