通过2-3-4树理解红黑树
在上一篇博文中,发现红黑树在批量删除最小值时性能非常的好
有点看不懂了,因此重新回顾了一下红黑树进行理解
上学时每次看算法导论的红黑树都是半懂,插入还行,删除部分的双重黑色实在太难理解了
其中的旋转变色部分也是觉得很奇怪,为什么要这么操作,能不能用别的操作方式
这一次尝试使用众多好评的2-3-4树来进行理解,加深印象
最初从jekyll迁到hexo的最大动力,就是hexo的live-2d插件的看板娘功能
相关攻略很多,例如Hexo-Live2d安装教程(自定义Live2d),不在赘述
我这里要写的是比较小众的spine模型在web上的展示
我兴冲冲的配好了hexo的配置和live-2d插件
在翻看C++标准库源码的时候,突然发现std::sort的实现和我想的很不一样,并不是简单的快排
在查询了一些资料以后,大致搞明白了这个introsort的原理
这篇写的很好:知无涯之std::sort源码剖析
另外就是STL源码分析那一本写的很好,不是本文的重点,简单过一下,我的gcc版本是5.4.0
tars的日志库的类图关系很绕,很容易忘,记录一下备用
源码分析基于tag v3.0.0
首先介绍一下会用到的主要代码路径和功能
1 | TarsCpp/util/include/util/tc_logger.h 日志库头文件 |
taf的日志库从流程上,分初始化,滚动日志,按天日志三部分,暂时只分析了滚动日志相关逻辑
本篇博客会深入分析条件变量实现来理解两个问题:
这两个问题不仅是C会遇到,所有语言的封装几乎都不可避免
先区分一下条件和条件变量,条件是指常用情况下,signal线程修改的值,使得cond_wait判断该值后不再阻塞