proxy库的使用请参考Proxy库的使用
本文聚焦proxy
库的实现分析,分析了convention的实现。
proxy
库是微软推出的一个非继承式的多态实现。无论从性能来看还是侵入性来看,proxy
都是一个对api设计比较友好的库。proxy
在3.0版本中更新了使用方式,改进了之前写法过于难懂(丑)的问题。因此如果在业务中有需求的还是可以一试。
一般游戏引擎都是使用c++实现逻辑,再通过一个虚拟机实现用脚本语言维护业务逻辑。因此在安卓下进行一层包装是十分必要的,使得引擎能够和安卓接口交互,也能正确地管理生命周期。
Cap’n Proto是一个高性能的数据交换格式,而且还附带了一套性能优良的RPC框架实现。是Protobuf2的作者Kenton Varda于 2013 年 4 月开源发布的,开源10年之后也在23年发布了第一个稳定支持版本1.0。
Cap’n Proto号称编解码接近0开销,比protobuf快无数倍。当然我们想想也知道这是个不现实的事情,但是能这么说肯定是它在速度上有两把刷子,因此本文我们就来分析看看它的编码格式究竟是什么样的,以及实际使用上会有什么优缺点。
最近在实现一个基于c++20
的协程库,当我把lambda和协程组合在一起用的时候,出现了capture变量失效的问题。最后发现是因为capture变量的生命周期的问题。
在C++
中,我们使用atomic
时会发现相关操作都有一个可选的参数std::memory_order
,本文就分析以下这几种memory_order
的用法,以方便大家写出更加高效的多线程代码。
在日常工作中,我们经常会遇到使用静态变量来保存唯一实例,例如著名的Meyer单例模式,可以在c++11的下不经过加锁就能实现线程安全的单例模式。但是静态变量如果在析构函数中也引用到了其他静态变量(最常见的就是Logger
实例是一个静态变量时,在析构函数中记录了日志)。
本文中我们探讨了如何使用placement new
绕开静态变量生命周期的问题。
右值引用,完美转发这些概念很多时候会让人弄不清楚概念。这篇文章中就让我们再来试图搞懂它们的区别和用法。
在云原生的开发下,POD一般都需要自动扩缩容以适应业务的开发环境(否则不如直接部署在VPS上了)。传统的HPA会使用CPU或者内存来扩缩容,但是对于某些特殊业务,我们会根据自定义指标(例如qps,特殊资源的使用情况)来决定是否需要扩容。
由于redis cluster
不支持事务,在一些原子性的操作时无法使用Multi
。因此lua
脚本成了最合适的选择,但是由于redis
在cluster
下多个slot
的问题,使用lua
稍不注意会导致很多问题。