自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Dxiaoru的博客

还在学习阶段

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

原创 C++的多态

面试中每次问到这个东西,我都说的很不好,感觉还是把它重新整理一下吧。       多态:是c++oop思想的三大特性之一。可提高代码的复用,和对功能的扩展。实现了,当一个函数被不同的对象调用时,能产生不同的效果或行为。c++的多态分为静多态和动多态,静多态是编译时的多态,即在编译时确定调用的是哪个函数,如模板、重载;动多态是运行时的多态,只有在运行的时候才能知道调用的是哪个函数,它是基于继承和...

2018-09-21 21:19:37 207

原创 进程间通讯(4)--消息队列

消息队列:两个不相关的进程中进行通讯       “消息队列”是一个存放在内核的队列,是在消息的传输过程中保存消息的容器。因为它消息队列保存在内核中,所以我们必须显示地删除一个消息队列。否则这个消息队列会一直存在于内核找到操作系统重启(内核重启)。消息队列中传递的消息是一个包含消息类型的结构体(数据块),进程可以根据消息类型独立的接收含有不同类型值的数据块。消息队列保存消息,它独立于发...

2018-08-09 17:00:34 247

原创 进程间通讯(3)信号量 & 共享内存

 信号量:用于进程间同步控制       信号量就是具有原子性的计数器,相当于一把锁,进程要访问临资源时,必须向信号量获取锁,才能访问这个临界资源,同时其他进程因为无法“获得锁”而不能访问该临界资源,只有以获得锁的进程访问完了临界资源,将锁还给信号量后,其他进程才能“获得锁”去执行临界区代码。从而实现了进程间的同步控制。       对信号量只有两种操作:等待(P)、发送信号(V)...

2018-08-07 16:18:25 315

原创 函数调用堆栈

函数调用堆栈:栈保存了一个函数调用所需要的信息。函数调用的堆栈如下图所示:       在主函数(这里是泛指函数调动方)调用被调函时,①先将需要传递的参数压入栈中(第一个参数地址为ebp-8,接下来是ebp-12,等等),②将call后的下一句指令地址入栈(也就是函数的返回地址)。接下来就是被调函数的栈帧:③将主函数的栈底地址入栈(为栈回退时esp指针能回到原本的位置)④将ebp指...

2018-08-04 21:28:04 387

原创 STL六大组件 之 容器 和 容器适配器

一、STL容器:顺序容器:(1)vector 向量容器,底层是由数组实现的。       初始化默认内存容量是0,有第一个元素时开辟一个元素大小,接下来的扩容以2倍的大小自动增长。(VS下是1.5倍)       vector也可以在定义时直接指定空间大小和初始值:vector<type> iv(2,9);       vetor扩充空间包括三个步骤:重新配置内存,移...

2018-08-04 21:18:01 1911 1

原创 STL的六大组件 之 迭代器和traits技术

迭代器是容器和算法相联系的重要部件(粘合剂),设计迭代器需要了解相应容器的实现细节,为了隐藏这些细节,STL每个容器都自己提供了专属迭代器。这些迭代器需要实现对容器的各种操作:如++,--,==,!=等。我们在使用泛型算法如:find时,在find内,需要使用迭代器的相应型别(一共有五种:①所指之物的类型,②迭代器类型,③指针类型,④引用类型,⑤差值类型)。声明内嵌型别可以获取迭代器相应型...

2018-08-04 21:04:06 276

原创 STL六大组件 之 空间配置器

空间配置器存在的原因:①频繁的申请和释放空间,就会频繁地调用malloc和free函数,函数调用时栈帧的开辟和回退,这些都是有开销的,就会降低运行的效率。②频繁的申请和和释放空间,会造成内存碎片的问题。使得即使有足够的空间,也申请不到一个连续的空间。 SGI 标准的空间配置器:std::allocator, 它符合部分标准,但效率不佳,它只是把以下两个函数::operator ne...

2018-08-04 20:53:31 275

原创 进程间通讯(2)---管道

管道:半双工通讯数据流向是单向的、先进先出的。只能一个进程读、一个进程写。数据从管道中读出后,就会被删除。如果管道中没有数据,读操作就会被阻塞,直到管道中有数据可读;而如果管道的满的,写操作就会被阻塞,直到管道中有足够大的空间可用。 ①有名管道(fifo):在任意两个进程间通信。有属性信息、inode结点存在磁盘上。在文件目录树中存在管道文件标识。但是管道文件不占据磁盘空间,需要传...

2018-07-29 17:00:38 224

原创 进程间通讯(1)---信号

    多任务并发环境中,每个进程之间相互独立,不同的进程运行在各自不同的内存空间中,因此,进程之间的信息传递不能通过变量或者其他数据直接进行沟通。所以有了可在进程间通讯的方法:信号、管道、共享内存、信号量、消息队列、还有socket。信号:信号其实只是一种通知机制,如:子进程给父进程发送SIGCHLD信号,告知父进程,自己结束了。都是系统预先定义好的某些特定事件,收到该信号的进程会采取相...

2018-07-29 16:49:41 195

原创 同步和异步、阻塞和非阻塞,以及五种I/O模型

同步异步分为两种:并发的同步异步 和 I/O的同步异步。一、并发的同步和异步:同步:完全按照代码顺序执行,前面执行完了,才能去执行后面的代码。所以当进程执行到某调用时,调用发出后,如果进程不能立刻得到结果,则等待,直到这个调用返回。例如:普通模式的B/S模式:提交请求->等待服务器处理->处理完毕返回。这个期间客户端不能做任何事。异步:彼此独立,在等待某事件的过程中继续...

2018-07-21 16:30:10 1358

原创 i/o复用:select、poll和epoll

    为了解决进程或线程阻塞到某个I/O系统调用,则就需要用到I/O复用技术,使进程不阻塞与某个特定的系统调用。select、poll和epoll是三种实现I/O复用的系统调用,用来监听用户感兴趣的文件描述符上是否有事件发生,一旦某个文件描述符就绪(一般是可读或者可写),能够通知应用程序进行相应的读写操作。但select、poll、epoll本质上还是同步I/O,因为他们都需要在读写事件就绪后自...

2018-07-18 13:42:46 256

原创 同步与锁机制

我们在学习多线程时,就不得不考虑线程安全的问题,当多线程因同时读写同一个数据而产生不可预料的后果是,就需要将各个先后才能对同一个数据的访问同步。        同步,就是指在一个线程访问一个数据还未结束的时候,其他线程不能对该数据进行访问,即将该数据的访问原子化。        锁,即为同步处理的常见方法。它是一种非强制机制,一个线程在访问数据或资源前要先获取锁,在访问结束后释放锁。如果在

2017-11-01 16:28:09 636

原创 模板1

模板,即是一种泛型编程,包扩类模板和函数模板。实际上就是为了类或函数的通用性,将类型参数化。函数模板:templatevoid fun(T data){}这就是函数模板的实现方式。

2017-10-17 11:53:03 332

空空如也

空空如也

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

TA关注的人

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