摘要: 说来惭愧,工作三年了一直都没有真正弄懂AVL树的原理。因为最近在看STL源码,但STL的map和set的底层数据结构是红黑树,而红黑树是不严格的AVL树,所以理解红黑树之前必须要先弄懂AVL树。借此契机,将AVL树从原理和代码层面拿下。 1. AVL树简介 AVL树种的任意节点的左右子树的高度差的绝 阅读全文
posted @ 2019-07-20 17:30 evenleo 阅读(953) 评论(3) 推荐(0) 编辑
摘要: 前言 半年前在极客时间订阅了王争的《数据结构和算法之美》,现在决定认真去看看。看到如何用快排思想在O(n)内查找第K大元素这一章节时发现王争对归并和快排的理解非常透彻,讲得也非常好,所以想记录总结一下。文章内容主要分析归并排序和快速排序原理,并根据它们共同的分治思想,引出如何在 O(n) 的时间复杂 阅读全文
posted @ 2019-07-10 15:04 evenleo 阅读(1512) 评论(0) 推荐(0) 编辑
摘要: 1. linux共享内存的查看和释放 查看共享内存命令:ipcs -m 删除共享内存明明:ipcrm -m [shmid] 说明: key:共享内存的key shmid:共享内存的编号 owner:共享内存的创建用户 perms:共享内存的权限 bytes:共享内存的大小 nattch:连接到共享内 阅读全文
posted @ 2019-06-27 14:17 evenleo 阅读(432) 评论(0) 推荐(0) 编辑
摘要: 一. 内联函数和宏定义的区别 1.内联函数在运行时可调试,而宏定义不可以; 2.编译器会对内联函数的参数类型做安全检查或自动类型转换(同普通类型),而宏定义不会; 3.内联函数可以访问类的成员变量,而宏定义则不能; 4.在类中声明同时定义的成员函数,自动转化为内联函数; 5.在预编译时,宏定义在调用 阅读全文
posted @ 2019-06-14 07:41 evenleo 阅读(2236) 评论(0) 推荐(1) 编辑
摘要: inline函数是C++引入的机制,目的是解决使用宏定义的一些缺点。 1.为什么要引入内联函数(内联函数的作用) 用它替代宏定义,消除宏定义的缺点。宏定义使用预处理器实现,做一些简单的字符替换因此不能进行参数有效性的检测。另外它的返回值不能被强制转换为可转换的合适类型,且C++中引入了类及类的访问控 阅读全文
posted @ 2019-06-03 21:50 evenleo 阅读(2600) 评论(0) 推荐(1) 编辑
摘要: 1.重载 重载:同一作用域内被声明的几个具有不同参数列表(参数类型,个数,顺序不同)的同名函数,根据参数列表确定调用哪个函数,重载不关心函数返回类型。 2.重写 重写(覆盖):是指派生类中存在重新定义的函数。其函数名,参数列表,都必须同基类中被重写的函数一致,返回值类型除了协变情况下也必须和基类中被 阅读全文
posted @ 2019-05-27 22:15 evenleo 阅读(3353) 评论(0) 推荐(0) 编辑
摘要: 1、select poll每次循环调用时都需要将文件描述符和事件拷贝到内核空间,epoll只需要拷贝一次; (这种情况在对于描述符数量不大的情况下还可以,但是当描述符的数量达到十几万甚至上百万的时候,他们的效率就会急速降低,因为每一次轮询都需要将这些所有的socket描述符从用户态拷贝到内核态,会造 阅读全文
posted @ 2019-03-19 21:56 evenleo 阅读(396) 评论(0) 推荐(0) 编辑
摘要: https://blog.csdn.net/luckyxiaoqiang/article/details/7518888 1、求二叉树中节点的个数 2、求二叉树的深度 3、二叉树的前序遍历 4、求二叉树叶子节点的个数 阅读全文
posted @ 2019-02-28 15:24 evenleo 阅读(221) 评论(0) 推荐(0) 编辑
摘要: 先了解OSI七层模型(OSI是Open System Interconnect的缩写,意为开放式系统互联) 文件传输,电子邮件,文件服务,虚拟终端 数据格式化,代码转换,数据加密 传输有地址的帧,错误检测功能 以二进制数据形式在物理媒体上传输数据 TCP报文格式图 URG:紧急指针有效。 ACK:确 阅读全文
posted @ 2019-02-28 15:23 evenleo 阅读(169) 评论(0) 推荐(0) 编辑
摘要: 1、进程和线程的区别 进程是系统资源分配的单位,线程是系统调度的单位。 进程之间不能共享资源,而线程共享所在进程的地址空间和其他资源。同时线程还有自己的堆栈和局部变量,程序计数器等寄存器。 进程拥有自己独立的地址空间,而线程没有,线程必须依赖于进程而存在。 2、C++程序中调用被C编译器编译后的函数 阅读全文
posted @ 2019-02-28 15:23 evenleo 阅读(263) 评论(0) 推荐(0) 编辑