4-muduo-base-Timestamp
1 类说明
-
功能:
-
时间戳及对应的功能,以μs微秒为单位
-
-
继承:
-
muduo::copyable(空基类,标识类)
-
标签类,表示可以这是复制的类。(值语义)
-
-
boost::equality_comparable< Timestamp >
-
类只要实现对operator==就会自动实现!=
-
-
boost::less_than_comparable< Timestamp >
-
继承使用此类可以只重写operator< ,剩下的<= ,>会自动生成
-
-
2 成员变量说明
-
microSecondsSinceEpoch_
-
顾名思义,以μs微秒为单位的时间戳,类型为
int64_t,1 s = 10^6 μs。这个数值是距离时间纪元1970-01-01 00:00:00的微秒之差。
-
-
kMicroSecondsPerSecond
-
静态成员变量,指明一秒有多说微秒
-
3 成员函数说明
1 non-static
-
构造函数:两个版本,一个是无参数,一个有一个int64_t的值
-
初始化microSecondsSinceEpoch_
-
-
swap
-
交换两个Timestamp
-
-
toString
-
转为string
-
-
toFormattedString
-
转化为格式化string
-
-
valid
-
检查microSecondsSinceEpoch_是否大于0
-
-
microSecondsSinceEpoch
-
返回microSecondsSinceEpoch_时间戳的值
-
-
secondsSinceEpoch,返回类型是
time_t也即是long int-
转换为秒,microSecondsSinceEpoch_ / kMicroSecondsPerSecond
-
2 static
-
now
-
利用timeval结构体,获得当前秒数,从而获得微秒数并返回Timestamp类型
-
-
invalid
-
返回一个微秒数为0的Timestamp对象
-
-
fromUnixTime
-
将Unix时间(
time_t)转为Timestamp类型
-
3 inline
-
重载 < 和 ==
-
timeDifference
-
返回两个时间戳之差(以秒返回)
-
-
addTime
-
Timstamp加上传入秒数
-
4 测试
-
用当前时间构造一个Timestamp对象,转换成字符串并打印
-
将上面的对象以值传递和引用传递方式传递到函数进行打印
-
时间衡量:将100个now的Timestamp对象放进vector,计算第一个和最后一个之差的时间。并且计算vector中相邻两个Timestamp对象之差。
5 其他
-
static_assert关键字:用来做编译期间的断言。语法:static_assert(常量表达式,提示字符串)。当表达式为true时,什么都不做;当表达式为false,产生一条编译错误,错误位置就是该static_assert语句所在行,错误提示就是第二个参数提示字符串。
-
PRI64:int64_t用来表示64位整数,在32位系统中是long long int,而在64位系统中是long int,所以在打印int64_t的格式化方法(这种方法不太合适)
-
printf("%ld", value)// 64bit OS -
printf("%lld", value)// 32bit OS
-
-
跨平台做法:(会自动转换成上面的)
muduo中的:
snprintf(buf, sizeof(buf), "%" PRId64 ".%06" PRId64 "", seconds, microseconds); -
-

浙公网安备 33010602011771号