C++ glog使用

概述

Google glog是一个基于程序级记录日志信息的c++库,编程使用方式与c++的stream操作类似,主要支持功能:

  1. 参数设置,以命令行参数的方式设置标志参数来控制日志记录行为;
  2. 严重性分级,根据日志严重性分级记录日志;
  3. 可有条件地记录日志信息;
  4. 条件中止程序。丰富的条件判定宏,可预设程序终止条件;
  5. 异常信号处理。程序异常情况,可自定义异常处理过程;
  6. 支持debug功能。可只用于debug模式;
  7. 自定义日志信息;
  8. 线程安全日志记录方式;
  9. 系统级日志记录;
  10. google perror风格日志信息;
  11. 精简日志字符串信息。

场景

日志适用于以下场景:

C++ Lambda表达式

场景

  • lambda 表达式在很多语言里都有一席之地,因为它的原因,可以在函数里快速定义一个便携的函数,或者在函数参数里直接快速构造和传递.
  • 它可以说是匿名函数对象,一般只适用于某个函数内,只做临时使用.
  • 一般是需要在对某个数据临时特殊处理时使用,比如对某种参数类型进行限定的再次封装和行为约束.

lambda 语法

Lambda图解

C++ 如何支持反射

如果你问一个IT人士“C++如何实现类似Java的反射?”,结果会怎样呢?~!@#¥%……&*,估计大部分人都会要稍微思考了一下,或者直接说“C++根本就不支持反射的呀!”。

C++ glog参数说明

logtostderr(bool, default=false)

是否把日志输出到stderr,而非文件.

Note: 这个参数可以设置为true,1或yes,当然也可以设置为false, 0或no.


alsologtostderr(bool, default=false)

除了输出日志信息到日志文件外,还同时输出到stderr.

Python 理解Main函数

在很多python脚本中在最后的部分会执行一个判断语句if name == “main:",之后还可能会有一些执行语句。那添加这个判断的目的何在?

Python 如何在py文件中调用其他py文件内的函数

假设名为A.py的文件需要调用B.py文件内的C(x,y)函数

假如在同一目录下

则只需

import B
if __name__ == "__main__":
    B.C(x,y)

如果只需调用单个函数,也可以

from B import C
if __name__ == "__main__":
    C(x,y)

如果跨越了层级

同目录下不同子文件夹

直接引用会报错,

C++11 中的日期和时间库

c++11提供了日期时间相关的库chrono,通过chrono相关的库我们可以很方便的处理日期和时间。c++11还提供了字符串的宽窄转换功能,也提供了字符串和数字的相互转换的库。有了这些库提供的便利的工具类,我们能方便的处理日期和时间相关的转换和格式输出。

C++ Boost中的新版本Timer的使用

cpu_timer类和auto_cpu_timer类用于精确计时,有elapsed、start、is_stopped等方法。使用跨平台的变量(如下),能够实现纳秒级的时间度量。(精度比较高)。

C++ Boost中的Timer的使用

程序开发者都会面临一个共同的问题,即写出高质量的代码完成特定的功能。评价代码质量的一个重要标准就是算法的执行效率,也就是算法的执行时间。为了可靠的提高程序的执行效率,首先要知道执行程序所消耗的时间,然后找出可行的方案对程序进行优化。

C++ 中测试程序运行时间的方法

GetTickCount()函数

原理: GetTickCount()是获取系统启动后的时间间隔。通过进入函数开始定时,到退出函数结束定时,从而可以判断出函数的执行时间(单位ms),这种时间也并非是函数或者算法的真实执行时间,因为在函数和算法线程不可能一直占用CPU,对于所有判断执行时间的函数都是一样,不过基本上已经很准确,可以通过查询进行定时。注意:GetTickCount()精确度有限,跟CPU有关,一般精确度在16ms左右,最精确也不会精确过10ms。