<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Arena on I'm OWenT</title><link>//owent.net/tags/arena.html</link><description>Recent content in Arena on I'm OWenT</description><generator>Hugo</generator><language>zh-cn</language><copyright>&lt;a rel="license" href="https://github.com/owent/blog-hugo/blob/master/LICENSE.md"&gt;&lt;img alt="知识共享许可协议" style="border-width:0" src="https://i.creativecommons.org/l/by-nc-sa/4.0/80x15.png" /&gt;&lt;/a&gt;</copyright><lastBuildDate>Sun, 05 Sep 2021 15:48:54 +0000</lastBuildDate><atom:link href="//owent.net/tags/arena/index.xml" rel="self" type="application/rss+xml"/><item><title>C++20 Text Formatting/fmtlib 适配问题小记</title><link>//owent.net/2021/2108.html</link><pubDate>Sun, 05 Sep 2021 15:48:54 +0000</pubDate><guid>//owent.net/2021/2108.html</guid><description>&lt;h2 id="前言"&gt;前言&lt;/h2&gt;&#10;&lt;p&gt;C++20 正式发布已经有一段时间了。其中 &lt;code&gt;Text Formatting&lt;/code&gt; 是一个我个人比较感兴趣的新组件。它主要是解决了之前字符串格式化库 ( &lt;code&gt;printf&lt;/code&gt; 系 ) 的效率问题和运行时安全的问题。&#10;并且新的格式设置的形式也比较友好。相关规范和用法可以参见:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0645r10.html#format.formatter"&gt;http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0645r10.html#format.formatter&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2216r3.html"&gt;http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2216r3.html&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://en.cppreference.com/w/cpp/utility/format"&gt;https://en.cppreference.com/w/cpp/utility/format&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;在C++ 20能够普及以前，我们可以用 &lt;a href="https://fmt.dev/"&gt;fmtlib&lt;/a&gt; 这个库来完成一样的功能。实际上我们项目组已经在这么做了。在使用 &lt;a href="https://fmt.dev/"&gt;fmtlib&lt;/a&gt; 之前，比如我们按玩家打日志大概是这种形式。&lt;/p&gt;</description></item><item><title>基于protobuf的代码生成</title><link>//owent.net/2021/2101.html</link><pubDate>Tue, 09 Feb 2021 11:39:45 +0000</pubDate><guid>//owent.net/2021/2101.html</guid><description>&lt;h2 id="前言"&gt;前言&lt;/h2&gt;&#10;&lt;p&gt;前段时间我用 &lt;a href="https://www.python.org/"&gt;Python&lt;/a&gt; 和 &lt;a href="https://www.makotemplates.org/"&gt;Mako&lt;/a&gt; 模板引擎重新梳理了我们项目中的一些重复的流程。重构了所有的RPC系统。这个工作其实完成了挺久了，但是迫于懒一直拖着没写完这篇记录，就一直没发。&lt;/p&gt;&#10;&lt;p&gt;使用代码生成工具实现RPC模块还是比较有成效的事情，有助于统一API接口，也有利于部分组件模块化，修改和重构内部实现也会比较方便。业内已有的代码生成实现也比较多，但是多是针对特定系统和框架实现的，如果要接入其他框架或者说接入多种SDK的流程并不是很方便。我这次的实现一方面是针对我们内部的服务提供类似很多RPC系统也提供的内部接口、实现和注册流程的标准化，另一方面也是尽可能灵活且通用一些，可以用于接入外部的SDK。&lt;/p&gt;</description></item><item><title>几个使用protobuf中C++接口的Arena的坑</title><link>//owent.net/2020/2009.html</link><pubDate>Tue, 10 Nov 2020 16:35:33 +0000</pubDate><guid>//owent.net/2020/2009.html</guid><description>&lt;h2 id="前言"&gt;前言&lt;/h2&gt;&#10;&lt;p&gt;&lt;a href="https://github.com/protocolbuffers/protobuf"&gt;protobuf&lt;/a&gt; 从3.0版本开始对C++增加了Arena接口，可以用于使用连续的内存块分配内部对象，并且可以更容易精确地控制对象地生命周期，最终达到减少内存碎片地目的。最近我给我们项目的部分接口流程进行相关地改造，在大多数使用 &lt;a href="https://github.com/protocolbuffers/protobuf"&gt;protobuf&lt;/a&gt; 的地方都增加了对Arena的支持，但是在接入过程中也碰到了一些问题和坑。&lt;/p&gt;</description></item></channel></rss>