前言

C++20 正式发布已经有一段时间了。其中 Text Formatting 是一个我个人比较感兴趣的新组件。它主要是解决了之前字符串格式化库 ( printf 系 ) 的效率问题和运行时安全的问题。 并且新的格式设置的形式也比较友好。相关规范和用法可以参见:

在C++ 20能够普及以前,我们可以用 fmtlib 这个库来完成一样的功能。实际上我们项目组已经在这么做了。在使用 fmtlib 之前,比如我们按玩家打日志大概是这种形式。

前言

前段时间我用 PythonMako 模板引擎重新梳理了我们项目中的一些重复的流程。重构了所有的RPC系统。这个工作其实完成了挺久了,但是迫于懒一直拖着没写完这篇记录,就一直没发。

使用代码生成工具实现RPC模块还是比较有成效的事情,有助于统一API接口,也有利于部分组件模块化,修改和重构内部实现也会比较方便。业内已有的代码生成实现也比较多,但是多是针对特定系统和框架实现的,如果要接入其他框架或者说接入多种SDK的流程并不是很方便。我这次的实现一方面是针对我们内部的服务提供类似很多RPC系统也提供的内部接口、实现和注册流程的标准化,另一方面也是尽可能灵活且通用一些,可以用于接入外部的SDK。

前言

protobuf 从3.0版本开始对C++增加了Arena接口,可以用于使用连续的内存块分配内部对象,并且可以更容易精确地控制对象地生命周期,最终达到减少内存碎片地目的。最近我给我们项目的部分接口流程进行相关地改造,在大多数使用 protobuf 的地方都增加了对Arena的支持,但是在接入过程中也碰到了一些问题和坑。