不知道起啥名称的博客

记录自己的学习编程的过程 嘿嘿嘿嘿

I/O模型之poll模型

1.poll与select,epoll比较 poll主要是解决select的最大文件描述符限制提出的,与select一样都是轮询文件描述符,所以效率方便也无法与epoll相比,另外poll不具备移植性,只有在linux系统上有实现,在windows系统没有poll模型的实现 2.poll模型效率...

2019-02-25 20:10:36

阅读数 42

评论数 0

I/O复用之epoll模型

  epoll是Linux内核为处理大批量文件描述符而作了改进的poll,是Linux下多路复用IO接口select/poll的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。另一点原因就是获取事件的时候,它无须遍历整个被侦听的描述符集,只要遍历那些被内核IO事...

2019-02-25 19:35:43

阅读数 35

评论数 0

I/O复用模型之select模型

 我们先来理解一下五种IO模型的区别 1.阻塞I/O模型 老李去火车站买票,排队三天买到一张退票。 耗费:在车站吃喝拉撒睡 3天,其他事一件没干。 2.非阻塞I/O模型 老李去火车站买票,隔12小时去火车站问有没有退票,三天后买到一张票。耗费:往返车站6次,路上6小时,其他时间做了好多事...

2019-02-25 15:36:51

阅读数 40

评论数 0

进程通信——消息对列

Linux下进程间通信方式: 1. 管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系 2. 有名管道 (named pipe) : 有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。 3....

2018-11-09 19:34:20

阅读数 41

评论数 0

堆排序

大根堆排序算法的基本操作: ①建堆,建堆是不断调整堆的过程,从len/2处开始调整,一直到第一个节点,此处len是堆中元素的个数。建堆的过程是线性的过程,从len/2到0处一直调用调整堆的过程,相当于o(h1)+o(h2)…+o(hlen/2) 其中h表示节点的深度,len/2表示节点的个数,这...

2018-08-13 16:42:47

阅读数 31

评论数 0

希尔排序(ShellSort)

希尔排序是插入排序的一种 即我们要将一个数组分割成多个组,然后我们在这个区间内使用插入排序,插入排序我们在这里就不做过多的介绍了 首先我们要知道这个组是怎么划分的,我们划分区间首先就要定步长 第一次的步长gap=length/2 第二次步长  gap=gap/2 直到gap&am...

2018-08-11 16:28:29

阅读数 52

评论数 0

快速排序———挖坑填补法

快排的基本思路: 首先将数组的第一个数字作为标准值;然后我们只需要找到该数组在排好序后的数组中的位置,在此位置之前的数字都比该数字小,在此位置之后的数字都比还数字大。 下面介绍一下怎么找到标准值的位置: 1 先将标准值保存,腾出标准值的位置,出坑(注 坑不是实际意义上的空间,而是我们假象的,...

2018-08-11 16:02:14

阅读数 266

评论数 0

计数排序

计数排序是一个非基于比较的排序算法,该算法于1954年由 Harold H. Seward 提出。它的优势在于在对一定范围内的整数排序时,它的复杂度为Ο(n+k)(其中k是整数的范围),快于任何比较排序算法。 当然这是一种牺牲空间换取时间的做法, 计数排序的思想是:重新申请一个数组,新数组的大小...

2018-08-09 13:17:34

阅读数 28

评论数 0

插入排序

有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到一种新的排序方法——插入排序法,插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2)...

2018-08-09 12:58:56

阅读数 44

评论数 0

选择排序

算法描述:每次都查找选择最大的数或者最小的数,找到之后放在最前面或者最后面 注意:通过数组下标进行比较,以便交换数的位置 这是在网上找到的图示: 附代码如下: #include<stdio.h> //选择排序:每次都找最小值,找到之后从前往...

2018-08-09 12:47:12

阅读数 23

评论数 0

图的创建以及遍历

首先图分为有向图和无向图。 我们先来介绍无向图: 无向图定义:若图中所有的边均满足的两个顶点没有次序关系和方向性,即(v1,v2)和(v2,v1)代表同一条边,则称为无向图。 图所示 无向图就是由结点V={1,2,3,4,5},和边E={(1,2),(1,4),(2,3),(3.4),(3,...

2018-08-08 17:04:47

阅读数 664

评论数 1

浅谈Linux 信号(Signal)

1.在linux用命令 kill -l 查看系统信号2.前32个信号是unix经典信号,后32为实时信号(自定义信号)3.前台进程永远只有一个,后台进程可以有n个4 用用命令ctl+c 可以结束唯一一个后台进程5.产生信号的几种方式     1)终端组合按键产生信号 (ctl+c (15  SIG...

2018-06-19 16:36:24

阅读数 103

评论数 0

进程间通信之有名管道

通过命令mkfifo +管道名 (创建有名管道文件)有名管道的使用1.同时具备读与写的两端都需要打开管道文件才使用有名管道,如只有一方,则打开时阻塞2.所有有名管道内保存的数据都与管道文件无关,管道文件只提供操作管道的方式有名管道的几种情况:读管道:1.默认情况下操作都是阻塞的(以下几条的前提)2...

2018-06-18 18:42:16

阅读数 38

评论数 0

进程间通信之匿名管道

进程间通信的5中方式:有名管道,匿名管道,systemv,posix消息队列,信号量,文件共享映射,注意,5种进程间通信均操作的内核空间首先我们来浅谈下匿名管道pipe匿名管道是通过环形队列实现的,可实现节省空间和避免溢出等问题。匿名管道有两个特点,一个是方向性,另一个是具有流向匿名管道只能解决父...

2018-06-18 17:49:13

阅读数 34

评论数 0

wait(),waitpid()函数

首先我们来了解一下所谓的僵尸进程,僵尸进程就是两个进程,其子进程终止后,0-3G的用户内存被回收,而3-4G的部分内存被回收,但是3-4G内存中的PCB等待父进程回收,若PCB未被父进程回收,我们称这个进程为僵尸进程,注,之所以保留PCB,是因为其中保存着子进程的终止状态父进程回收子进程的资源所用...

2018-06-02 21:15:56

阅读数 314

评论数 1

浅谈Linux中的fork()函数

函数原型pid_t fork( void);(pid_t 是一个宏定义,其实质是int 被定义在#include<sys/types.h>中)返回值: 若成功调用一次则返回两个值,子进程返回0,父进程返回子进程ID;否则,出错返回-1函数说明一个现有进程...

2018-06-01 16:38:27

阅读数 45

评论数 0

浅谈WinSock I/O模型之异步选择(WSAAsyncSelect)

异步选择,顾名思义就是WSAAsyncSelect模型是Select模型的异步版本,在调用select()函数时,会发生阻塞现象。可以通过select()函数timeout参数,设置函数调用的阻塞时间。在设定的时间内,线程保持等待,直到其中一个或多个套接字满足可读可写的条件时,该函数返回。首先我们...

2018-05-29 10:28:18

阅读数 340

评论数 0

浅谈WinSock异步I/O模型之select模型

Windows操作系统提供了五种I/O模型,分别是:1.选择(select)2.异步选择(WSAAsyncSelect)3.事件选择(WSAEventSelect)4.重叠I/O(Overlapped I/O)5.完成端口(Completion Port)下面我们来谈一谈最简单的选择模型:选择(s...

2018-05-29 10:03:49

阅读数 337

评论数 0

堆排序(大堆)

前言:堆排序可分为大堆和小堆。      其实堆的空间结构实际上就是一棵完全二叉树,不过堆有它自己的限定条件。大堆就是树中每个父亲节点都要比孩子节点大,并且两个兄弟之间是没有大小区分的。小堆与之相反,就是每个父亲节点都要比孩子节点小。    堆的空间结构虽然是个完全二叉树,但是这样的结构也是我们为...

2018-05-08 08:25:04

阅读数 627

评论数 0

内存管理

大纲:内存管理:连续分配和非连续分配连续分配:单一连续分配                 固定连续分配 (产生内部碎片)                 动态连续分配(产生外部碎片):首次适应算法                                          循环首次适应算法...

2018-05-03 22:21:47

阅读数 58

评论数 0

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