![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
文章平均质量分 76
tang05505622334
这个作者很懒,什么都没留下…
展开
-
protobuf - 使用arena构建proto对象
参考资料:[1] C++ Arena Allocation Guide:https://developers.google.cn/protocol-buffers/docs/reference/arenas#arenaclass[2] arena.h的文档:https://developers.google.com/protocol-buffers/docs/reference/cpp/g...原创 2020-01-10 15:28:36 · 8163 阅读 · 0 评论 -
C++中proto的field与序号index的对应关系查找
假设有一个proto message定义如下:message Example { optional bool a = 1; optional bool b = 2;};如果想在代码里知道a这个field定义时的给的序号是多少(这里是1):Example obj;std::cout << obj.GetDescriptor()->FindFieldByN...原创 2020-01-08 15:29:38 · 1101 阅读 · 0 评论 -
boost::make_transform_iterator的基本用法
boost::make_transform_iterator接受一个迭代器对象作为参数,得到一个boost::transform_iterator。boost::transform_iterator的特别之处在于,可以在dereference原始迭代器的同时,做一些指定的事情,甚至让解引用的结果变成与原始迭代器指向的东西完全不同的值。#include <algorithm> ...原创 2019-12-06 10:44:33 · 773 阅读 · 0 评论 -
glog没有在-dir_log位置生成日志文件
-dir_log是glog一个内置的gflag,如果不设置的话,默认的日志文件会生成在/tmp目录下。./mytest -dir_log=./logs但是发现设置了以后,运行没有效果,文件还是生成在了/tmp下。main函数源码如下:int main(int argc, char *argv[]) { glog::InitLogging("mytest"); std::co...原创 2019-11-14 14:35:32 · 4724 阅读 · 1 评论 -
C++ grpc stream message size 调整消息大小限制
在工作中遇到了grpc的stream通信(server通过stream向client返回一个消息的stream),client会收不到消息的情况。发现收不到的这个消息比较大,跟同事讨论说可能是grpc限制了消息的大小,通常是4M。网上搜索了一下,大多数是go的解决方案,和C++的接口名称不太一样,其中帮助比较大的是这一篇C++相关的博客http://www.freesion.com/article...原创 2019-10-09 16:02:51 · 5898 阅读 · 0 评论 -
C/C++中使用pugixml来读写xml文件
reference:http://www.gerald-fahrnholz.eu/sw/DocGenerated/HowToUse/html/group___grp_pugi_xml.htmlxml文件,假设名为hello.xml:<?xml version='1.0' encoding='UTF-8'?><scenarios map="hangzhou"&g...原创 2019-08-21 20:57:18 · 3484 阅读 · 0 评论 -
C++标准库 高斯分布(正态分布)随机生成
#include <random>#include <chrono>#include <iostream>int main(void) { // 从epoch(1970年1月1日00:00:00 UTC)开始经过的纳秒数,unsigned类型会截断这个值 unsigned seed = std::chrono::system_clock::no...原创 2019-08-16 10:56:03 · 8021 阅读 · 0 评论 -
检查grpc server是否可连接
分两种情况,一种是普通调用,一种是stream调用。(1)普通调用直接使用返回的status来检查。不过如果请求本身就可能失败,不是因为server没有启动的原因,则可以进一步检查error_message的内容。普通调用下的server可连接性检查,应该也可以使用stream调用描述的方式,可能更加准确,但是没有实验过。grpc::ClientContext context;...原创 2019-08-19 20:41:56 · 5496 阅读 · 1 评论 -
在python里调用C++带参数的类方法
核心思路:python的底层是用C实现的,所以理论上python可以调用C的代码。如果想调用C++的代码,需要另外将C++代码通过extern "C"包含起来,使其命名修饰等符合C的规则然后将C/C++代码打包成一个.so文件(这一步有个坑,我用bazel编译的.so被import到flask项目中时,会导致整个服务以exit code 245退出,但是直接在python脚本里调用是没...原创 2019-08-01 14:41:50 · 3098 阅读 · 0 评论 -
为什么模板函数应该定义在头文件内
参考:https://www.cnblogs.com/cnsec/p/3789824.htmlgeneral的编译链接过程:首先,C++标准中提到,一个编译单元[translation unit]是指一个.cpp文件以及它所include的所有.h文件,.h文件里的代码将会被扩展到包含它的.cpp文件里,然后编译器编译该.cpp文件为一个.obj文件,但是,不一定能够执行,...转载 2019-05-23 12:09:02 · 4814 阅读 · 2 评论 -
获取protobuf enum变量的字符串名字
假设proto中定义了一个enum枚举:enum UserStatus { AWAY = 0; ONLINE = 1; OFFLINE = 2; }方法一:std::string name = UserStatus_Name(UserStatus::AWAY);(如果UserStatus嵌套在message类型MyMessage内,则使用MyMessa...翻译 2019-05-22 10:19:26 · 11162 阅读 · 0 评论 -
wchar、char_t、char16_t、char32_t
wchar&wstring来自《C++ primer》The wchar_t type is guaranteed to be large enough to hold any character in the machine’s largest extended character set. The types char16_t and char32_t are intend原创 2017-11-26 18:34:15 · 6823 阅读 · 1 评论 -
cedar trie树的基本使用
安装:> wget http://www.tkl.iis.u-tokyo.ac.jp/~ynaga/cedar/cedar-latest.tar.gz> tar zxvf cedar-latest.tar.gz> cd cedar-YYYY-MM-DD> configure> make install使用:#include cedar::da trie;原创 2017-11-26 18:50:24 · 1869 阅读 · 0 评论