muduo源码学习base——TimeStamp(UTC时间戳)

TimeStamp(UTC时间戳)

  • 前置
  • copyable和noncopyable
  • TimeStamp
    • now()

此博客跟着b站上的:大并发服务器开发(实战)学习做的笔记

前置

值语义、对象语义:

  • 值语义:所谓值语义是一个对象被系统标准的复制方式复制后,与被复制的对象之间毫无关系,可以彼此独立改变互不影响
  • 对象语义:也叫指针语义,引用语义等,通常是指一个对象被系统标准的复制方式复制后,与被复制的对象之间依然共享底层资源,对任何一个的改变都将改变另一个

编译时断言和运行时断言:

  • 静态断言:在编译期对表达式进行判断:static_assert(常量表达式,"提示字符串");
  • 动态断言:运行时断言

关于宏__STDC_FORMAT_MACROS:

  • 需要定义宏__STDC_FORMAT_MACROS后才能包含inttypes.h

copyable和noncopyable

在base文件夹下有两个文件分别定义了两个类(空基类,标识类,值类型)copyable和noncopyable
copyable (派生类都是值语义)

#ifndef MUDUO_BASE_COPYABLE_H
#define MUDUO_BASE_COPYABLE_H
namespace muduo
{
/// A tag class emphasises the objects are copyable.
/// The empty base class optimization applies.
/// Any derived class of copyable should be a value type.
class copyable
{
protected:copyable() = default;~copyable() = default;
};
}  // namespace muduo
#endif  // MUDUO_BASE_COPYABLE_H

noncopyable

#ifndef MUDUO_BASE_NONCOPYABLE_H
#define MUDUO_BASE_NONCOPYABLE_H
namespace muduo
{
class noncopyable
{
public:noncopyable(const noncopyable&) = delete;void operator=(const noncopyable&) = delete;
protected:noncopyable() = default;~noncopyable() = default;
};
}  // namespace muduo
#endif  // MUDUO_BASE_NONCOPYABLE_H

TimeStamp

TimeStamp类是copyable,boost::equality_comparable,boost::less_than_comparable的派生类

class Timestamp : public muduo::copyable,public boost::boost::equality_comparable<Timestamp>,public boost::less_than_comparable<Timestamp>

muduo::copyable :

  • 值语义,可以拷贝

boost::equality_comparable :(实现在boost库中operator.hpp中)

  • 派生类TimeStamp提供
    inline bool operator==(Timestamp lhs, Timestamp rhs)
    将自动生成
    inline bool operator!=(Timestamp lhs, Timestamp rhs)

boost::less_than_comparable :(实现在boost库中operator.hpp中)

  • 派生类TimeStamp提供:
    inline bool operator<(Timestamp lhs, Timestamp rhs)
    将自动生成
    inline bool operator>(Timestamp lhs, Timestamp rhs)
    inline bool operator>=(Timestamp lhs, Timestamp rhs)
    inline bool operator<=(Timestamp lhs, Timestamp rhs)

类图:
在这里插入图片描述

  • static const int kMicroSecondsPerSecond = 1000 * 1000 :表示每秒所对应的微秒数一百万
  • int64_t microSecondsSinceEpoch_ :时间戳微秒数,到1970-01-01 00:00:00 UTC的微秒数
  • 构造可以使用时间戳微秒数来构造
  • swap交换函数

now()

Timestamp Timestamp::now()
{struct timeval tv;//定义一个时间结构体gettimeofday(&tv, NULL);//c库函数(系统函数也有),结构体tv接收int64_t seconds = tv.tv_sec;//获取秒return Timestamp(seconds * kMicroSecondsPerSecond + tv.tv_usec);//秒*1000000+微秒,返回时间戳
}

函数较简单,略

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/169101.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring Cloud之服务注册与发现(Eureka)

目录 Eureka 介绍 角色 实现流程 单机构建 注册中心 服务提供者 服务消费者 集群搭建 注册中心 服务提供者 自我保护机制 原理分析 Eureka 介绍 Eureka是spring cloud中的一个负责服务注册与发现的组件&#xff0c;本身是基于REST的服务&#xff0c;同时还提供了…

(完全解决)如何输入一个图的邻接矩阵(每两个点的亲密度矩阵affinity),然后使用sklearn进行谱聚类

文章目录 背景输入点直接输入邻接矩阵 背景 网上倒是有一些关于使用sklearn进行谱聚类的教程&#xff0c;但是这些教程的输入都是一些点的集合&#xff0c;然后根据谱聚类的原理&#xff0c;其会每两个点计算一次亲密度&#xff08;可以认为两个点距离越大&#xff0c;亲密度越…

【学习草稿】bert文本分类

https://github.com/google-research/bert https://github.com/CyberZHG/keras-bert 在 BERT 中&#xff0c;每个单词的嵌入向量由三部分组成&#xff1a; Token 嵌入向量&#xff1a;该向量是 WordPiece 分词算法得到的子单词 ID 对应的嵌入向量。 Segment 嵌入向量&#x…

安科瑞带防逆流功能的数据通讯网关-安科瑞黄安南

AWT200 数据通讯网关应用于各种终端设备的数据采集与数据分析。用于实现设备的监测、控制、计算&#xff0c;为系统与设备之间建立通讯纽带&#xff0c;实现双向的数据通讯。实时监测并及时发现异常&#xff0c;同时自身根据用户规则进行逻辑判断&#xff0c;可以节省人力和通讯…

【机器学习】模型平移不变性/等变性归纳偏置Attention机制

Alphafold2具有旋转不变性吗——从图像识别到蛋白结构预测的旋转对称性实现 通过Alphafold2如何预测蛋白质结构&#xff0c;看有哪些机制或tricks可以利用&#xff1f; 一、等变Transformer 等变Transformer是Transformer众多变体的其中一种&#xff0c;其强调等变性。不变性…

CentOS7 安装 nodejs

获取安装文件 node历史版本地址 安装 上传到服务器安装位置cd 到压缩包位置&#xff0c;执行解压安装操作 [rootps-fdcnops-01 /]# cd usr/local/nodejs/ [rootps-fdcnops-01 nodejs]# tar -xzvf node-v16.16.0-linux-x64 配置环境变量 [rootps-fdcnops-01 nodejs]# vim /…

5G RedCap工业智能网关

5G RedCap工业智能网关是当前工业智能化发展领域的重要技术之一。随着物联网和工业互联网的迅速发展&#xff0c;企业对于实时数据传输和高速通信需求越来越迫切。在这种背景下&#xff0c;5G RedCap工业智能网关以其卓越的性能和功能&#xff0c;成为众多企业的首选。 5G RedC…

Qt扫盲-QPen 理论使用总结

QPen 理论使用总结 一、概述二、Pen Style 画笔风格三、Cap Style 帽风格四、Join Style 连接处样式 一、概述 QPen 是Qt绘图控件里面的一个重要的组件&#xff0c;和QColor 一样也是类似的一个属性类。这个类就是描述一个画笔具有的属性。 一个画笔 Pen 有style()&#xff0…

ExoPlayer架构详解与源码分析(6)——MediaPeriod

系列文章目录 ExoPlayer架构详解与源码分析&#xff08;1&#xff09;——前言 ExoPlayer架构详解与源码分析&#xff08;2&#xff09;——Player ExoPlayer架构详解与源码分析&#xff08;3&#xff09;——Timeline ExoPlayer架构详解与源码分析&#xff08;4&#xff09;—…

【C语言】关于char的取值范围的讨论

前提知识&#xff1a; 计算机内存中存的是整数的补码。 正数的原反补相同&#xff01; 负数的补码 &#xff08;除符号位以外&#xff09;原码取反 1 负数的源码 &#xff08;除符号位以外&#xff09;补码取反 1 有符号的char&#xff0c;最高位二进制位表示符号位 …

蓝桥杯每日一题2023.10.19

题目描述 完全二叉树的权值 - 蓝桥云课 (lanqiao.cn) 题目分析 我们以每一个节点的坐标来将这一深度的权值之和相加从而算出权值和 要清楚每一个深度的其实节点和末尾节点&#xff0c;使用双指针将这个深度节点的权值和计算出来&#xff0c;记录所 需要的深度即可 #includ…

uni-app:引用文件的方法

绝对定位 ①import common from "/utils/common.js" ②import common from "utils/common.js" <template><view></view> </template> <script>import common from "/utils/common.js"export default {data() {ret…

通过内网穿透快速搭建公网可访问的Spring Boot接口调试环境

&#x1f525;博客主页&#xff1a; 小羊失眠啦 &#x1f516;系列专栏&#xff1a; C语言 、Cpolar、Linux ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 文章目录 前言1. 本地环境搭建1.1 环境参数1.2 搭建springboot服务项目 2. 内网穿透2.1 安装配置cpolar内网穿透2.1.1 …

vue3 源码解析(1)— reactive 响应式实现

前言 本文是 vue3 源码解析系列的第一篇文章&#xff0c;项目代码的整体实现是参考了 v3.2.10 版本&#xff0c;项目整体架构可以参考之前我写过的文章 rollup 实现多模块打包。话不多说&#xff0c;让我们通过一个简单例子开始这个系列的文章。 举个例子 <!DOCTYPE html…

微信小程序OA会议系统数据交互

前言 经过我们所写的上一文章&#xff1a;微信小程序会议OA系统其他页面-CSDN博客 在我们的是基础面板上面&#xff0c;可以看到出来我们的数据是死数据&#xff0c;今天我们就完善我们的是数据 后台 在我们去完成项目之前我们要把我们的项目后台准备好资源我放在我资源中&…

怎么进行设备维护与保养?智能巡检系统有什么用?

设备维护与保养需要遵循三个原则&#xff1a;故障设备全面分析的原则、故障设备深入检查的原则以及故障设备分析排查的原则。 一、故障设备全面分析的原则   检修人员在对设备维护与保养时&#xff0c;如果看到设备在运行中出现了异常的现象&#xff0c;要立刻停止设备的工作…

【C语言】指针错题(类型分析)

题目&#xff1a; #include <stdio.h> int main () {int*p NULL;int arr[10] {0}; return 0; } 选项&#xff1a; A、p arr ; B、 int (* ptr )[10]& arr ; C、 p & arr [ 0 ]; D、 p & arr ; 解析&#xff1a; 1、 p 是一个指针变量&#xff0c;指…

docker和k8s之间的关系

一句话总结&#xff1a;Docker只是容器的一种&#xff0c;它面向的是单体&#xff0c;K8S可以管理多种容器&#xff0c;它面向的是集群&#xff0c;Docker可以作为一种容器方案被K8S管理。 https://baijiahao.baidu.com/s?id1763716289717819767&wfrspider&forpc 背…

无障碍阅读他人开源项目结构:看完本文,你将信心满满

先看看阿里是怎么约定的 我印象中&#xff0c;以前在看《阿里巴巴Java开发手册》时&#xff0c;好像有关于工程结构和应用分层相关的内容&#xff0c;于是我回翻了一下&#xff0c;果然有&#xff1a; 它这里面讲的内容大概就是&#xff1a;关于一个正常的企业项目里一种通用的…

3D模型如何添加表面贴图?

1、模型表面贴图介绍 模型表面贴图&#xff08;Texture Mapping&#xff09;是一种将纹理映射到三维模型表面的技术&#xff0c;用于增加模型的细节和真实感。它通过在模型的每个表面点上应用纹理坐标&#xff0c;并将纹理像素与模型的对应点进行匹配&#xff0c;使得模型表面…