摘要:
我们知道有些宏的参数是表达式,在DEBUG启用的使用,可以输出一些日志,在RELEASE的时候,可以节省性能。 如下的宏定义是基于lambda表达式,可以处理一些复杂的逻辑。 阅读全文
摘要:
命名空间别名 允许程序员定义命名空间的另一个名字 它们常用作长的或嵌套过深的命名空间的简便使用方式。 我们也可以将用在代码移植上,而无需修改源代码的文件所定义的命名空间, 为后面升级merge代码创造了良好的条件。 阅读全文
摘要:
线上日志用到的是日志库,在全局有一个锁,导致在高并发的时候,容易因为锁竞争问题导致时延。在某些情况下,会因为同一个用户,同时访问某个变量,导致读写冲突使线上服务整体core掉(考虑到请求的间隔,为了应对偶发1%%的情形,如果加锁会对整体性能有一定的影响,所以当时权衡就没有加锁)。 于是就想把这个日志 阅读全文
摘要:
最近读一个文件的某一行后,进行域切分的时候,最一个字段为空。 明明有字符的,于是缩小范围进行debug。 因为底层是getline写的,所以跟踪了一下,发现getline的读取到\n结束作为一行的。 如下read到的641, 但strlen 返回的为21,所以感觉是读取到的行中包含\0字符。 通过h 阅读全文
摘要:
最近做项目的时候,通过 Gflags Reload 时候 发现对于某些value中包含=%中文等字符的支持不够好,value被截断了。 经过分析后,发现程序对url切分是用=&为标准的,如果value中带有这样的特殊字符,必然导致截断。 解决的方法也很简单,框架默认对value进行进行了urldec 阅读全文
摘要:
项目中集成了abseil。abseil提供了cmake的编译,但是缺少make install命令。 于是有了下面的的一些命令,用于生成include和lib目录。 参考 增强现实的 abseil 库(1) 阅读全文
摘要:
1. 下载最新版的boost wget https://dl.bintray.com/boostorg/release/1.67.0/source/boost_1_67_0.tar.gz 2. 解压 3. 执行如下脚本 第一步是为了启用4.9的编译器。 make的参数解释如下 下面对上面的bjam的 阅读全文
摘要:
C++11出来好久了,现在还是使用c++03的,需要在centos6.6的系统上实现gcc的升级,又不想自己编译代码。 于是选用了devtoolsset系列,安装脚本如下 安装脚本如下 function devtools_v3() { sudo yum install devtoolset-3-gc 阅读全文
摘要:
最近有个需求,开屏广告每天只出一次。 思路为如果出了开屏广告,则记录当前时间,下次来的时候,读取当前时间和上一次出开屏的时间。 算一下是不是在同一天即可。 我们的第一个想法是将上次开屏时间和当前时间归一到 0 点进行比较(其实有写个更简单的方法)。 所以我们需要获取某一个时间戳 当天的 0点。 可以 阅读全文
摘要:
之前写过一版 shell下解码url,下面给出另外一个版本 from https://gist.github.com/cdown/1163649 好用就行 阅读全文