C++17的值类别
几年前写的一篇C++11的值类别,有朋友指出了里面的一些问题
改完小问题以后,回头看感觉其实写的很烂,很多重要内容没有提到,当然这和C++11的值类别本身比较晦涩,我当时理解的也很烂有关系
刚好C++17简化了值类别,那么直接再写一篇关于值类别的文章
表达式的类型和值类别
表达式有两个属性
由于公司使用的taf框架是和开源的tars框架一脉相承,虽然经过几年的改造,几乎已经面目全非了,但是主体结构上相差不大
因此从tars框架的最初版本的源码分析上就可以理解整个核心链路了
本篇会分析开源的tars1.0版本和tars3.0版本,并探索3.0版本的优化原因,最后对他们的性能做一些比较
计划中还有一篇公司taf框架的分析,很有趣的是它的发展方向和tars3.0不太一致,因此可以对其性能和tars性能也做一番比较,遗憾的是出于保密需要,无法将其post在我的博客上了
由于redis和leveldb的兴起,跳表走入了大众的实现
相对红黑树而言,跳表非常容易理解,使其成为了红黑树的常见替代
刚好我在理解2-3-4树的时候写了红黑树,顺便写一个跳表来pk一下性能
结果是我万万没想到的:
在单线程下,跳表的性能几乎全方位被红黑树碾压
之前写过一篇c++ 分析 gperftools 总结
对普通的性能优化来说,gperftools已经足够了
但是如果要深入优化,还是需要借助linux内置的perf工具
这个工具的功能包括但不限于:
hook是一个非常有用的黑魔法
协程基于它的最大应用之一
我总结了一下hook的原理,和我遇到的hook场景
我第一次看到hook这个词是在破解论坛上,大致意思是将指定函数替换成自己的,然后再去执行这个指定函数
最近遇到一个类定时器逻辑需求
可以抽象为write和rangeRead两个接口
最初从jekyll迁到hexo的最大动力,就是hexo的live-2d插件的看板娘功能
相关攻略很多,例如Hexo-Live2d安装教程(自定义Live2d),不在赘述
我这里要写的是比较小众的spine模型在web上的展示
我兴冲冲的配好了hexo的配置和live-2d插件
Blog已经是第三次换框架了
最早是裸写html,然后迁到github pages的jekyll,目前打算换hexo了
由于github pages的jekyll不支持各种插件,因此非常难用
在翻看C++标准库源码的时候,突然发现std::sort的实现和我想的很不一样,并不是简单的快排
在查询了一些资料以后,大致搞明白了这个introsort的原理
这篇写的很好:知无涯之std::sort源码剖析
另外就是STL源码分析那一本写的很好,不是本文的重点,简单过一下,我的gcc版本是5.4.0