知识点
DW_____
加油,做最好的自己!
展开
-
sockpair创建双向通信的管道
Linux下的sockpair: sockpair创建了一对无名的套接字文件描述符,描述符存储了一个二元数组,例如sv[2],这对套接字可以双工通信。即每一端可以写没一端也可以可以读。这个在同一个进程中也是可以进行通信的,向sv[0]中写入,就可以从sv[1]中读取(只能从sv[1]中读取);也可以在sv[1]中写入,然后从sv[0]中读取;但是,若没有在0端写入,而从1端读取,则1...原创 2019-05-02 23:36:01 · 490 阅读 · 0 评论 -
内存泄漏
1.什么事内存泄漏指因为疏忽或者错误造成程序未能释放已经不再使用的内存的情况。内存泄漏并不是指内存在物理上的消失,而是应用程序分配某段内存后,因为设计错误,而对该段内存失去了控制,因而对内存造成了浪费。2.对于C/C++这样没有Garbage Collection(垃圾回收机制)的语言来讲,有两种类型的泄漏堆内存泄漏:对内存指的是程序执行中依据需要分配通过malloc,reall...原创 2019-04-29 21:55:27 · 110 阅读 · 0 评论 -
进程、线程、协程
进程是什么呢?直白地讲,进程就是应用程序的启动实例。比如我们运行一个游戏,打开一个软件,就是开启了一个进程。进程拥有代码和打开的文件资源、数据资源、独立的内存空间。线程又是什么呢?线程从属于进程,是程序的实际执行者。一个进程至少包含一个主线程,也可以有更多的子线程。线程拥有自己的栈空间。对操作系统来说,线程是最小的执行单元,进程是最小的资源管理单元。...原创 2019-05-05 21:13:44 · 138 阅读 · 0 评论 -
条件变量
概述:条件变量是用来等待线程而不是上锁的,条件变量通常和互斥锁一起使用。条件变量之所以和互斥锁一起使用,主要是因为互斥锁的一个明显的特点就是它只有两种状态:锁定和非锁定,而条件变量可以通过允许线程阻塞和等待另一个线程发送信号来弥补互斥锁的不足,所以互斥锁和条件变量通常一起使用。当条件满足的时候,线程通常解锁并等待该条件发生变化,一旦另一个线程修改了环境变量,就会通知相应的环境变量唤醒一个或...原创 2019-05-09 08:58:08 · 155 阅读 · 0 评论 -
Linux~惊群现象
惊群效应也叫做雷鸣群体效应。惊群现象就是多进程(多线程)在同时阻塞等待同一个事件的时候(休眠状态),如果等待的这个事件发生,那么他就会唤醒等待的所有进程(或者线程),但是最终只有一个进程(线程)获得这个时间的“控制权”,对这个事件处理,而其他进程(线程)获取“控制权”失败,只能重新进入休眠状态,这种现象和性能浪费就叫做惊群。为了更好的理解何为惊群,举一个很简单的例子,当你往一群鸽子中间扔一粒谷...原创 2019-05-06 23:08:33 · 225 阅读 · 0 评论 -
LRU
LRU全称Least Recently Used,也就是最近最少最少使用的意思,是一种内存管理算法,最早利用与Linux操作系统中。LRU算法基于一种假设:长期不被使用的数据,在未来使用的几率也不大。因此数据内存达到一定的阈值时,我们要移除最近最少被使用的数据。如果现在有一个用户系统(使用哈希表存储用户信息),但是由于用户太多导致服务器宕机了,我们可以使用LRU算法,LRU算法中存在一种数...原创 2019-05-10 13:53:15 · 441 阅读 · 0 评论 -
ptmalloc
内存管理可以分为三个层次,自底向上分别是:操作系统内核的内存管理 glibc层使用系统调用维护的内存管理算法 应用程序从glibc动态分配内存后,根据应用程序本身的程序特性进行优化, 比如使用引用计数std::shared_ptr,apache的内存池方式等等。 当然应用程序也可以直接使用系统调用从内核分配内存,自己根据程序特性来维护内存,但是会大大增加开发成本。 ...转载 2019-05-10 15:03:19 · 254 阅读 · 0 评论 -
二叉树的先序遍历、中序遍历、后序遍历、层次遍历
本篇博客介绍二叉树的先序遍历、中序遍历、后序遍历以及层次遍历先序遍历:根节点---左子树---右子树中序遍历:左子树---根节点---右子树后序遍历:左子树---右子树---根节点层次遍历:每一层按照从左到右依次遍历先序遍历结果:1 2 45 7 8 3 6中序遍历结果:4 2 7 5 8 1 3 6后序遍历结果:4 7 8 5 2 6 3 1层次遍历结果:1...原创 2019-05-15 16:17:10 · 896 阅读 · 0 评论 -
创建树、先序遍历和中序遍历创建树、后序遍历和中序遍历创建树
BtNode * CreateTree1(){ BtNode *s = NULL; ElemType item; cin>>item; if(item != '#') { s = Buynode(); s->data = item; s->leftchild = CreateTree1(); s->rightchild = CreateT...原创 2019-05-16 19:15:02 · 451 阅读 · 0 评论