muduo源码解析1-timestamp类
timestamp
class timestamp:public mymuduo::copyable,
public boost::equality_comparable<timestamp>,
public boost::less_than_comparable<timestamp>
{
};
作用:
主要是实现了时间戳的相关操作,例如时间戳的格式化,返回当前时间戳等等。
成员变量:
private:
int64_t m_microSeconds;//数据成员,表示时间戳的微秒数
public:
static const int microSecInSec=*;//1秒=1000*1000微妙
成员函数:
timestamp():m_microSeconds();
//构造函数,设置mircroseconds值
explicit timestamp(int64_t ms):m_microSeconds(ms);
//交换两个timestamp对象的值
void swap(timestamp& that);
//用std::string形式返回,格式[millisec].[microsec]
string toString() const;
//格式, "%4d年%02d月%02d日 星期%d %02d:%02d:%02d.%06d",时分秒.微秒
string toFormattedString(bool ifShowMicroSec=true) const;
//判断当前时间错是否合法,即是否>0
bool valid() const;
//返回当前时间戳的微妙
int64_t microSecSinceEpoch() const;
//返回当前时间戳的秒数
time_t secSinceEpoch() const;
//返回当前时间所在的时间戳
static timestamp now();
static timestamp invalid();
//返回time_t所在的时间戳
static timestamp fromUnixTime(time_t t);
//返回time_t以microsec为偏移所在的时间戳
static timestamp fromUnixTime(time_t t,int microsec);
类外相关函数:
应当注意timestamp继承了boost等于和小于类,为了实现timestamp的比较操作符,应当重载timestamp的<和==操作符。
//继承了boost的比较类,需要自己实现<和==操作符的重载
inline bool operator<(timestamp l,timestamp r)
{
return l.microSecSinceEpoch()<r.microSecSinceEpoch();
}
inline bool operator==(timestamp l,timestamp r)
{
return l.microSecSinceEpoch()==r.microSecSinceEpoch();
} //返回两个时间戳的差,用秒的形式返回
inline double timeDifference(timestamp high,timestamp low)
{
int64_t diff=high.microSecSinceEpoch()-low.microSecSinceEpoch();
return static_cast<double>(diff/timestamp::microSecInSec);
} //返回一个时间戳加上给定秒数的新的时间戳
inline timestamp addTime(timestamp ts,double sec)
{
int64_t microsec=ts.microSecSinceEpoch()+
static_cast<int64_t>(sec)*timestamp::microSecInSec;
return timestamp(microsec);
}
muduo源码解析1-timestamp类的更多相关文章
- muduo源码解析5-mutex相关类
mutexlock和mutexlockguard class mutexlock:noncopyable { }: class mutexlockguard:noncopyable { }: 作用: ...
- Mybatis源码解析3——核心类SqlSessionFactory,看完我悟了
这是昨晚的武汉,晚上九点钟拍的,疫情又一次来袭,曾经熙熙攘攘的夜市也变得冷冷清清,但比前几周要好很多了.希望大家都能保护好自己,保护好身边的人,生活不可能像你想象的那么好,但也不会像你想象的那么糟. ...
- AOP源码解析:AspectJAwareAdvisorAutoProxyCreator类的介绍
AspectJAwareAdvisorAutoProxyCreator 的类图 上图中一些 类/接口 的介绍: AspectJAwareAdvisorAutoProxyCreator : 公开了Asp ...
- muduo源码解析11-logger类
logger: class logger { }; 在说这个logger类之前,先看1个关键的内部类 Impl private: //logger内部数据实现类Impl,内部含有以下成员变量 //时间 ...
- muduo源码解析10-logstream类
FixedBuffer和logstream class FixedBuffer:noncopyable { }: class logstream:noncopyable { }: 先说一下包含的头文件 ...
- Netty源码解析 -- 内存对齐类SizeClasses
在学习Netty内存池之前,我们先了解一下Netty的内存对齐类SizeClasses,它为Netty内存池中的内存块提供大小对齐,索引计算等服务方法. 源码分析基于Netty 4.1.52 Nett ...
- AOP源码解析:AspectJExpressionPointcutAdvisor类
先看看 AspectJExpressionPointcutAdvisor 的类图 再了解一下切点(Pointcut)表达式,它指定触发advice的方法,可以精确到返回参数,参数类型,方法名 1 pa ...
- java源码解析之Object类
一.Object类概述 Object类是java中类层次的根,是所有类的基类.在编译时会自动导入.Object中的方法如下: 二.方法详解 Object的方法可以分成两类,一类是被关键字fin ...
- Bulma 源码解析之 .columns 类
{说明} 这一部分的源码内容被我简化了,另外我还额外添加了一个辅助类 is-grow. .columns // 修饰类 &.is-centered justify-content: cente ...
- java源码解析之String类(二)
上一节主要介绍了String类的一些构造方法,主要分为四类 无参构造器:String(),创建一个空字符串"",区别于null字符串,""已经初始化,null并 ...
随机推荐
- 你不知道的JavaScript 上卷 2/11
第一部分——作用域和闭包 第一章 作用域是什么 1.几乎所有编程语言最基本的功能之一,就是能够储存变量当中的值,并且能在之后对这个值进行访问或修改.事实上,正是这种储存和访问变量的值的能力将状态带给了 ...
- Python File read() 方法
概述 read() 方法用于从文件读取指定的字节数,如果未给定或为负则读取所有.高佣联盟 www.cgewang.com 语法 read() 方法语法如下: fileObject.read(); 参数 ...
- PHP imagecolorclosesthwb - 取得与指定的颜色最接近的色度的黑白色的索引
imagecolorclosesthwb — 取得与指定的颜色最接近的色度的黑白色的索引.高佣联盟 www.cgewang.com 语法 int imagecolorclosesthwb (s res ...
- 2020牛客暑期多校训练营 第二场 C Cover the Tree 构造 贪心
LINK:Cover the Tree 最受挫的是这道题,以为很简单 当时什么都想不清楚. 先胡了一个树的直径乱搞的贪心 一直过不去.后来意识到这类似于最经典长链剖分优化贪心的做法 然后那个是求最大值 ...
- 承诺会计/预留款会计(commitment accounting/Encumbrance Accounting) in AX 2012
作者:umfish 博文 http://blog.csdn.net/umfish/article/details/7751397 如果要使用Encmubrance Accounting, 需要先在G ...
- 细说selenium的等待条件
selenium的显示等待 在进行UI自动化测试的时候,我们为了保持用例的稳定性,往往要设置显示等待,显示等待就是说明确的要等到某个元素的出现或者元素的某些条件出现,比如可点击.可见等条件,如果在规定 ...
- 笨办法学习python3练习代码:argv参数变量与文件操作
ex15.py 完成ex15.py需要在ex15.py同文件夹目录下面准备一个txt文件(ex15_sample.txt) 执行ex15.py 如: python ex15.py e ...
- 【oracle】-表连接类型:内连接,外连接...
一.数据准备 1.emp表 delete from emp; insert into emp (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO) ...
- IdentityServer4 (1) 客户端授权模式(Client Credentials)
写在前面 1.源码(.Net Core 2.2) git地址:https://github.com/yizhaoxian/CoreIdentityServer4Demo.git 2.相关章节 2.1. ...
- phpredis 扩展之操作 Redis,记下来记下来!
phpredis 是 redis 的 php 的一个扩展,效率是相当高有链表排序功能,对创建内存级的模块业务关系很有用 $redis = new Redis(); $redis->connect ...