本博客因为部署在netlify, 所以可能会出现部分图片加载不出来的情况。如有必要请科学上网!
Linux的IO多路复用
基础知识 用户空间和内核空间 文件描述符 缓存IO和直接IO 同步和异步 阻塞和非阻塞 IO多路复用 select poll epollepoll的LT模式和ET模式
epoll epoll是Linux特有的IO复用函数,关于epoll的原理,参见:Linux的IO多路复用 LT模式 epoll的默认模式,这种情况下epoll相当于一个效率较高的poll。 对于采用LT工作模式的文件描述符,当epoll_wait检...std::future, std::promise与std::async
std::async std::async是一个用于异步执行函数的模板函数,它返回一个 std::future 对象,该对象用于获取执行函数的返回值。关于std::future的具体细节,此处可以先忽略,只要能够看懂实例程序就行。 其函数声明余如下:...std::packaged_task
std::packaged_task C++11引入的模板类,用于封装可调用对象,以便异步执行该任务,并且可以通过std::future获取结果。通常与线程池一起使用。 主要成员函数: get_future():返回一个std::future对象,用...红黑树
概念 一种自平衡的二叉搜索树。每个节点额外存储了一个 color 字段 (“RED” or “BLACK”),用于确保树在插入和删除时保持平衡。 红黑树是 4 阶 B 树(2-3-4 树)的变体。 特点 红黑树本身也是二叉搜索树,具有所有二叉搜索...满二叉树
基本概念: 满二叉树:**层数(高度)**为H,总节点数为的二叉树。(根节点在第1层,所有叶子节点都在第H层)。 此处认为满二叉树 == 完美二叉树。 有些地方存在另一种分类方法:完美(prefect)二叉树、完满(full)二叉树、完全(comp...平衡二叉树(AVL)
如果插入二叉搜索树的元素在插入之前就已经有序,那么插入后的二叉搜索树会退化为链表。在这种情况下,所有操作的时间复杂度将从 劣化为 。因此产生了平衡二叉树,能够实现在插入、删除时保持树的平衡,避免树退化为链表。平衡二叉树全称为:平衡二叉搜索树(Ba...排序算法
排序算法 经典的排序算法总共有十种。分别是:冒泡、选择、插入、希尔、归并、快排、堆排、计数、桶排、基数。他们都是内部排序。 关于内部排序和外部排序: 内部排序:待排序列数据记录完全存放在内存中 外部排序:排序的数据很大,一次不能容纳全部的排序记录...二叉搜索树
特点 非空左子树的所有结点的值小于其根结点的值。 非空右子树的所有结点的值大于其根结点的值。 左、右子树都是二叉搜索树。 实现 主要操作 查询: 实现思路: 递归:调用递归方法,传入要查询的树的根节点和要查询的值,判断根节点值大小,然后递归查询...