自定义博客皮肤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)
  • 收藏
  • 关注

转载 哲学家就餐问题与解决方案

http://blog.csdn.net/sunflowerfiona/article/details/527568191.进程互斥与同步,死锁基本知识在多道程序环境下,进程有异步和同步两种并发执行方式。异步执行是指运行中的各进程在操作系统的调度下以不可预知的速度向前推进。异步执行的进程大多没有时序要求,不存在“执行结果与语句的特定执行顺序有关”的条件竞争。然而存在一类协作进程

2017-08-31 11:41:21 4071

转载 recv_MSG_peek

转载自:MSG_PEEK标志可以用来读取套接字接收队列中可读的数据,一些情况会用到它,比如为了避免不阻塞而先检查套接字接收队列中可读的数据长度,再采取相应操作。当然,不阻塞也可采取其他的方法,例如非阻塞式I/O。MSG_PEEK标志会将套接字接收队列中的可读的数据拷贝到缓冲区,但不会使套接子接收队列中的数据减少,常见的是:例如调用recv或read后,导致套接字接收队列中的数据

2017-08-30 23:40:15 1409

转载 虚函数表存放地址

http://blog.csdn.net/jiary5201314/article/details/526276301.虚函数表是全局共享的元素,即全局仅有一个.2.虚函数表类似一个数组,类对象中存储vptr指针,指向虚函数表.即虚函数表不是函数,不是程序代码,不肯能存储在代码段.3.虚函数表存储虚函数的地址,即虚函数表的元素是指向类成员函数的指针,而类中虚函数的个

2017-08-28 22:37:35 764

转载 select、poll、epoll

转载:http://www.cnblogs.com/Anker/p/3265058.html   select,poll,epoll都是IO多路复用的机制。I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。但select,poll,epoll本质上都是同步I/O,因为他们都需要在读写事件就绪后自己负责进行读写,也就是

2017-08-23 21:25:52 364

原创 socket阻塞与非阻塞,同步与异步

转载自:http://blog.csdn.net/hguisu/article/details/7453390socket阻塞与非阻塞,同步与异步作者:huangguisu 同步:A调用B后,不会去做别的事,而是一直等待在那里。可以等待(阻塞)或轮询的查看(非阻塞)的去查看B的处理结果。异步:A调用B后,立即去做别的是,等待内核把B处理完后再通知A。同步有阻塞和非阻塞之...

2017-08-23 19:41:08 276

转载 海量数据处理-BloomFilter

BloomFilter——大规模数据处理利器   Bloom Filter是由Bloom在1970年提出的一种多哈希函数映射的快速查找算法。通常应用在一些需要快速判断某个元素是否属于集合,但是并不严格要求100%正确的场合。 一. 实例   为了说明Bloom Filter存在的重要意义,举一个实例:  假设要你写一个网络蜘蛛(web crawler

2017-08-23 11:29:31 265

转载 shared_ptr简单实现

实现一个简单的shared_ptr翻看以前的代码的时候发现一个shared_ptr的简单实现。我记得是网上的一篇例子(好像改了一点),但是又懒得找出处了 ╮(╯▽╰)╭。觉得这份代码足以用来初步了解shared_ptr的实现了。 一般来说,智能指针的实现需要以下步骤:1.一个模板指针T* ptr,指向实际的对象。2.一个引用次

2017-08-22 16:16:19 394

原创 auto与decltype

auto:1.auto一般会忽略顶层const;2.auto的引用会保留顶层const;decltype:1.decltype不会忽略顶层const;2.如果decltype内是解引用操作,得到的将是引用类型。

2017-08-13 22:01:24 161

转载 排序算法稳定性

这几天笔试了好几次了,连续碰到一个关于常见排序算法稳定性判别的问题,往往还是多选,对于我以及和我一样拿不准的同学可不是一个能轻易下结论的题目,当然如果你笔试之前已经记住了数据结构书上哪些是稳定的,哪些不是稳定的,做起来应该可以轻松搞定。本文是针对老是记不住这个或者想真正明白到底为什么是稳定或者不稳定的人准备的。      首先,排序算法的稳定性大家应该都知道,通俗地讲就是能保证排序前2个相

2017-08-13 18:05:33 200

转载 基数排序

编程论到极致,核心非代码,即思想。所以,真正的编程高手同时是思想独到及富有智慧(注意与聪明区别)的人。每一个算法都是一种智慧的凝聚或萃取,值得我们学习从而提高自己,开拓思路,更重要的是转换思维角度。其实,我们大多数人都活在“默认状态”下。没有发觉自己的独特可设置选项-----思想。言归正传(呵呵!恢复默认状态),以下学习基数排序。【1】基数排序以前研

2017-08-13 17:51:08 236

原创 补码

(X-Y)%mod=(X+Z)%mod。那么-Y与Z互为补码。对于正数,因为计算机可以直接加,那么补码就是其本身。对于负数,计算机不可以直接加,就需要将其转换为其的补码来让计算机执行加法。因为(X-Y)%mod=(X+mod-Y)%mod,所以   (-Y)的补码=mod-Y;=>-Y=mod-(-Y)的补码,也就是说“对于负数,补码就是模减去这个数的绝对值”。

2017-08-13 15:30:07 1588

转载 磁盘调度算法

常见的磁盘调度算法有以下几种:1.FIFO:先来先服务算法;2.SSTF: 最短寻道时间算法;3.SCAN:电梯调度算法;(这样命名很形象)4.CSCAN: 循环扫描算法5.FSCAN:分步电梯调度算法(分两个队列)下面详细说一下各个算法的主要思想:首先是FIFO算法,也就是先来先服务算法。这种算法的思想比较容易理解。假设当前

2017-08-12 19:47:06 381

原创 有符号数、无符号数之间的转换

1、unsigned char 无论是转int 还是unsigned int 高位直接补02、负数char 无论是转int 还是unsigned int 高位全补13、正数char 无论是转int 还是unsigned int 高位全补0

2017-08-12 14:45:27 2751

转载 堆排序建堆的时间复杂度

建堆的过程,看起来外面一层循环O(n),里面是个logn的调整函数,时间复杂度貌似是nlogn的,但是仔细分析,其实质是O(n)的。证明如下:首先,对于高度为h的完全二叉树,其第i层的元素个数为2^(i-1),对于堆的每一层,调整的深度都不一样,每层的元素的调整深度小于等于h-i,假设每层调整的深度是h-i,欲构建的堆是个完全二叉树,那么对于每层来说:最后一层不用调整;

2017-08-11 15:34:48 1815

转载 索引查找

转自:http://www.cnblogs.com/GumpYan/p/5754661.html4.索引查找    关于索引,我们很容易地联想到数据库中的索引,建立了索引,可以大大提高数据库的查询速度。  索引查找又称为分块查找,是一种介于顺序查找和二分查找之间的一种查找方法。  分块查找的基本思想是:  首先查找索引表,可用二分查找或顺序查找(因为块间

2017-08-10 20:32:37 745

原创 -128的补码

以char为例。char的表示范围是-128-127。-128=10000000,只有补码表示,没有原码、反码。a=1,b=0,之后a=127=011111111,b=-126再之后a=10000000=-128,b=-127=11111111//标志1a+b=(10000000+10000001)(计算机内的补码运算)=00000001(正数原码、补码都一样)=1>0;然

2017-08-09 16:28:22 3142

原创 CSingleLock

上实例代码:[cpp] view plain copy print?class CDataArray  {  private:   int iArray[10];      CMutex Mutex;      CCriticalSection CritSection;  public:      CD

2017-08-08 23:25:30 564

转载 存储管理

第三章 存储管理    存储管理是操作系统的重要组成部分,它负责计算机系统内存空间的管理。其目的是充分利用内存空间,为多道程序并发执行提供存储基础,并尽可能地方便用户使用。3.1 存储管理的目的    采用多道程序设计技术,就要在内存中同时存放多道程序,这就要求存储管理解决以下四个重要问题,以达到尽可能方便用户使用和充分利用内存以提高内存利用率的目的。    一、内存空间的分配

2017-08-08 16:51:58 631

转载 构造函数、拷贝构造函数、赋值函数

转自C++中一般创建对象,拷贝或赋值的方式有构造函数,拷贝构造函数,赋值函数这三种方法。下面就详细比较下三者之间的区别以及它们的具体实现1.构造函数构造函数是一种特殊的类成员函数,是当创建一个类的对象时,它被调用来对类的数据成员进行初始化和分配内存。(构造函数的命名必须和类名完全相同)首先说一下一个C++的空类,编译器会加入哪些默认的成员函数·默认构

2017-08-08 16:05:50 293

原创 临界区

1.临界区只能用于同一进程内的不同线程之间进行通信,不能用于不同进程之间。2.临界区不属于内核对象,只是用户态进行锁操作,调用时不会进入内核态,因此效率更高。(内核对象:事件对象、文件对象、I / O完成端口对象、作业对象、信箱对象、互斥对象、管道对象、进程对象、线程对象和等待计时器对象等。这些对象都是通过调用函数来创建的。)3.临界区使用了自旋锁。

2017-08-08 15:53:07 1276

原创 sizeof与strlen区别(2019.10.23)

1.本质上sizeof()是运算符,strlen是函数。2.参数上,strlen只接收char*形参,sizeof()可以接受指针、数组名、结构体、类等多种形参。3.sizeof在编译时确定,而strlen需要再运行才能计算确定。4.sizeof()计算的是在编译时就确定的对象占据内存的大小,而strlen计算的是在运行时对象实际占据的大小,一直计数直到碰到'\0';5.因为字符串...

2017-08-06 18:23:10 426

原创 构造函数、析构函数 与抛出异常

1. 抛出异常1.1 抛出异常(也称为抛弃异常)即检测是否产生异常,在C++中,其采用throw语句来实现,如果检测到产生异常,则抛出异常。该语句的格式为: throw 表达式;如果在try语句块的程序段中(包括在其中调用的函数)发现了异常,且抛弃了该异常,则这个异常就可以被try语句块后的某个catch语句所捕获并处理,捕获和处理的条件是被抛弃的异常的类型与catch语句

2017-08-04 17:40:52 213

原创 大小端模式

大小端模式都是指的内存低地址:内存低地址存放的是数据中高位:大端模式内存低地址存放的是数据中低位:小端模式

2017-08-01 15:34:31 248

转载 位域

转载:http://www.cnblogs.com/bigrabbit/archive/2012/09/20/2695543.html有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可。为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进

2017-08-01 11:52:43 204

空空如也

空空如也

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

TA关注的人

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