当前位置: 首页 > 编程日记 > 正文

开源库libuuid简介及使用

libuuid是一个开源的用于生成UUID(Universally Unique Identifier,通用唯一标识符)的库,它的源码可从https://sourceforge.net/projects/libuuid/ 下载,最新版本为1.0.3,更新于2013年4月27日,此库仅支持在类Linux下编译使用。UUID来源于OSF(Open Software Foundation,开源软件基金会)的DCE(Distributed Computing Environment,分布式计算环境)规范,UUID是指在一台机器上生成的数字,保证在全球范围的唯一性。

GUID(Globally Unique Identifier)跟UUID是同一个东西,来源于微软。

一个UUID是一个16字节(128位)的数字,一般通过32个十六进制表示,一个UUID被连字符分成5段,标准的UUID格式为xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx,即形式为8-4-4-4-12的32个字符,其中字母是16进制表示,大小写无关。

不同的UUID版本:

1. 基于时间的UUID:通过当前时间戳、机器MAC地址生成;

2. 基于名字空间的UUID(MD5):由用户指定一个namespace和一个具体的字符串,通过MD5散列函数来生成一个UUID;

3. 基于随机数的UUID:根据随机数或者伪随机数生成UUID;

4. 基于名字空间的UUID(SHA1):由用户指定一个namespace和一个具体的字符串,通过SHA1散列函数来生成一个UUID。

以下是libuuid测试代码(test_libuuid.cpp):

#include "funset.hpp"
#include <iostream>
#ifndef _MSC_VER
#include <uuid.h>int test_libuuid()
{uuid_t uuid1, uuid2, uuid3, uuid4, uuid5;char uuid1_str[37], uuid2_str[37], uuid3_str[37], uuid4_str[37];uuid_generate(uuid1);uuid_unparse(uuid1, uuid1_str);fprintf(stdout, "uuid1 result: %s\n", uuid1_str);uuid_generate_random(uuid2);uuid_unparse_lower(uuid2, uuid2_str);fprintf(stdout, "uuid2 result: %s\n", uuid2_str);uuid_generate_time(uuid3);uuid_unparse_upper(uuid3, uuid3_str);fprintf(stdout, "uuid3 result: %s\n", uuid3_str);uuid_generate_time_safe(uuid4);uuid_unparse(uuid4, uuid4_str);fprintf(stdout, "uuid4 result: %s\n", uuid4_str);uuid_parse(uuid1_str, uuid5);int ret = uuid_compare(uuid1, uuid5);fprintf(stdout, "uuid1 compare uuid5: %d\n", ret);ret = uuid_is_null(uuid1);fprintf(stdout, "uuid1 is null: %d\n", ret);uuid_clear(uuid1);ret = uuid_is_null(uuid1);fprintf(stdout, "uuid1 is null: %d\n", ret);ret = uuid_type(uuid2);fprintf(stdout, "uuid2 type: %d\n", ret);ret = uuid_variant(uuid2);fprintf(stdout, "uuid2 variant: %d\n", ret);struct timeval tv;time_t time_reg = uuid_time(uuid3, &tv);fprintf(stdout, "uuid3 time is: (%ld, %ld): %s\n", tv.tv_sec, tv.tv_usec, ctime(&time_reg));return 0;
}#else
int test_libuuid()
{fprintf(stderr, "Error: libuuid only support linux\n");return -1;
}
#endif

执行结果如下:

GitHub: https://github.com/fengbingchun/Messy_Test

相关文章:

深度学习会议论文不好找?这个ConfTube网站全都有

BDTC大会官网&#xff1a;https://t.csdnimg.cn/q4TY作者 | 刘畅 出品 | AI科技大本营&#xff08;ID:rgznai1000&#xff09;最近跟身边的硕士生、博士生聊天&#xff0c;发现有一个共同话题&#xff0c;大家都想要知道哪款产品能防止掉头发&#xff1f;养发育发已经成了茶余饭…

Java用for循环Map

为什么80%的码农都做不了架构师&#xff1f;>>> 根据JDK5的新特性,用For循环Map,例如循环Map的Key for(String dataKey : paraMap.keySet()) { System.out.println(dataKey ); } 注意的是,paraMap 是怎么样定义的,如果是简单的Map paraMap new …

iOS 应用发布到AppStore流程

iOS开发者&#xff0c;把开发出来的App上传到App Store是必须的。下面就来详细介绍下具体流程。 方法/步骤 1打开苹果开发者中心 打开后点击&#xff1a;Member Center 2如果你的电脑没有保存密码&#xff0c;则会提示你输入开发者帐号和密码&#xff0c;因为我的电脑已经保存了…

FFmpeg中编码类型为rawvideo无须解码直接显示测试代码

在 https://blog.csdn.net/fengbingchun/article/details/93975325 中介绍过通过FFmpeg可以直接获取usb视频流并解码显示的测试代码&#xff0c;当时通过usb获取到的视频流编码类型为AV_CODEC_ID_RAWVIDEO&#xff0c;像素格式为AV_PIX_FMT_YUYV422&#xff0c;其实编码类型为r…

一场高质量的技术盛会怎样炼成?「2019中国大数据技术大会」蓄势待发,还不快上车?...

2019年12月&#xff0c;一场轰动国内产业界、学术界、科研界及投资领域的顶级科技盛会即将拉开帷幕&#xff0c;它涵盖大数据、人工智能、云计算、AIoT、金融科技、智能制造等十几个前沿领域的热门话题。在过去十二年里&#xff0c;这场盛会从最初仅 60 余人参加的技术沙龙到如…

融合应用11.1.8安装,一步一步的引导

融合应用11.1.8安装,一步一步的引导 融合应用11.1.8 安装并不是简单的与电子商务套件11 i / R12安装。 所以我们需要安装划分为许多步骤。 请注意,11.1.8 11.1.7总统发布供应是几乎相同的。 在同一时间的步骤和一些组件11.1.6和11.1.5相比有所不同。 这里我们有实际使用同一个…

FFmpeg中一个线程获取视频流一个线程执行scale测试代码

在https://blog.csdn.net/fengbingchun/article/details/94712986 中介绍过如果usb视频流编码类型为rawvideo则无需进行解码&#xff0c;可直接通过av_read_frame获取视频流然后再通过sws_scale进行像素格式转换&#xff0c;当在高分辨率情况下&#xff0c;有时达不到实时显示&…

医疗影像处理:去除医疗影像中背景的影响2D/3D【numpy-code】| CSDN博文精选

BDTC大会官网&#xff1a;https://t.csdnimg.cn/q4TY作者 | chestnut--来源 | CSDN博客在医疗影像中特别是CT影像&#xff0c;包含大量的背景&#xff0c;在进行器官分割时&#xff0c;首先去除背景对分割的效果有很好的提升。本博客使用Python处理医疗影像并去除背景的影像。使…

iOS APP提交上架最新流程

iOS APP提交上架最新流程 反复提交的过程中对上架流程熟悉了好多&#xff0c;写篇帖子送给同为菜鸟的你&#xff0c;如果里面有很菜的东西&#xff0c;大牛请自动忽略&#xff0c;毕竟这也是还为菜鸟的我的备忘录呢&#xff01; 首先得描述一下各个证书的定位&#xff0c;作…

Spring mvc Data Redis—Pub/Sub(附Web项目源码)

一、发布和订阅机制 当一个客户端通过 PUBLISH 命令向订阅者发送信息的时候&#xff0c;我们称这个客户端为发布者(publisher)。 而当一个客户端使用 SUBSCRIBE 或者 PSUBSCRIBE 命令接收信息的时候&#xff0c;我们称这个客户端为订阅者(subscriber)。 为了解耦发布者(publish…

iOS分析崩溃日志

前言 iOS分析定位崩溃问题有很多种方式&#xff0c;但是发布到AppStore的应用如果崩溃了&#xff0c;我们该怎么办呢&#xff1f;通常我们都会在系统中接入统计系统&#xff0c;在系统崩溃的时候记录下崩溃日志&#xff0c;下次启动时将日志发送到服务端&#xff0c;比较好的第…

海思3559A上编译FFmpeg源码操作步骤

1. 从https://github.com/FFmpeg/FFmpeg/releases 下载你需要的版本&#xff1b; 2. 因为ffmpeg编译选项较多&#xff0c;为了更方便的了解有哪些选项&#xff0c;可将编译选项写入到一个文本文件configure_help.txt中&#xff0c;执行&#xff1a; ./configure --help > …

不到顶会现场也能听论文讲解?这个视频集合网站值得收藏

BDTC大会官网&#xff1a;https://t.csdnimg.cn/q4TY作者 | 刘畅出品 | AI科技大本营&#xff08;ID:rgznai1000&#xff09;最近跟身边的硕士生、博士生聊天&#xff0c;发现有一个共同话题&#xff0c;大家都想要知道哪款产品能防止掉头发&#xff1f;养发育发已经成了茶余饭…

通过cat /proc/cpuinfo看处理器特点

2019独角兽企业重金招聘Python工程师标准>>> 在我的服务器上执行cat /proc/cpuinfo得到如下信息&#xff08;摘录最后一项&#xff0c;从0-23共24项&#xff09;&#xff1a; processor: 23&#xff1a;超线程技术的虚拟逻辑核第24个 vendor_id: GenuineIntel&#…

2016cocoapods安装流程及使用

一&#xff1a;参考安装流程&#xff1a;http://blog.csdn.NET/showhilllee/article/details/38398119/。 二&#xff1a;我的安装步骤。 1:安装cocoapods需要ruby&#xff0c;先查看ruby环境是不是最新版本。如果不是最新版本&#xff0c;需要先升级到最新版本。在终端输入以下…

FFmpeg中拉取rtsp视频流并缩放显示测试代码

之前在https://blog.csdn.net/fengbingchun/article/details/92198857中给出过仅拉取rtsp视频流的测试代码&#xff0c;这里在此代码的基础上进行扩充&#xff0c;包括设置使用多线程进行解码&#xff0c;使用sws_scale函数进行图像格式转换和缩放&#xff0c;并通过OpenCV进行…

全面分析阿里数据中台,小白也能看懂 | CSDN原力计划

扫码参与CSDN“原力计划”作者 | yuanziok来源 | CSDN原力计划获奖作品数据中台被誉为大数据的下一站&#xff0c;由阿里兴起&#xff0c;核心思想是数据共享&#xff0c;2015年阿里提出“大中台&#xff0c;小前台”的策略。2018 年因为“腾讯数据中台论”&#xff0c;中台再度…

【Stage3D学习笔记续】山寨Starling(八):核心优化(批处理)的实现

批处理是使GPU进行高效绘制的一种技术手段&#xff0c;也是整个渲染流程中最核心的技术&#xff0c;到目前为止我们并没有使用到这种技术手段&#xff0c;下面我们看看我们现在的渲染机制。 先想一想我们最开始是怎么向GPU绘制一幅图像的&#xff0c;可以回头查看Stage3D学习笔…

MBProgressHUD 使用详解

MBProgressHUD是一个显示HUD窗口的第三方类库&#xff0c;用于在执行一些后台任务时&#xff0c;在程序中显示一个表示进度的loading视图和两个可选的文本提示的HUD窗口。我想最多是应用在加载网络数据的时候。其实苹果官方自己有一个带有此功能的类UIProgressHUD&#xff0c;只…

V4L2获取usb视频流测试代码

Video4Linux2(Video for Linux Two, 简称V4L2)是Linux中关于视频设备的驱动框架&#xff0c;为上层访问底层的视频设备提供统一接口。V4L2主要支持三类设备&#xff1a;视频输入输出设备、VBI设备和Radio设备&#xff0c;分别会在/dev目录下产生videoX、vbiX和radioX设备节点&a…

深度学习渐趋冷静,为何图形计算却逆势反涨?

不知不觉&#xff0c;2019 年的进度条已经快撑不住了 ▓▓▓▓▓▓▓▓▓▓▓▓▓░░ 88%。就像这个进度条一样&#xff0c;人工智能的发展也绝不是一蹴而就的事&#xff0c;而是一步一个脚印逐渐发展&#xff0c;最后达成某个目标。近年来&#xff0c;深度学习领域的技术发展…

数字图像处理课设

2019独角兽企业重金招聘Python工程师标准>>> 对于整个窗体的设计&#xff0c;菜单组件&#xff08;MenuStrip)和工具条&#xff08;ToolStrip&#xff09;来添加相应的功能事件当然还有右击鼠标就能弹出相应的属性框&#xff0c;也是使用了叫contextMenuStrip的组件…

Swift3.0带来的变化汇总

var string "Hello-Swift" //获取某个下标后一个下标对应的字符 char"e" //swift2.2 //var char string[startIndex.successor()] //swift3.0 var char string[string.index(after: startIndex)] //获取某个下标前一个下标对应的字符 char2 "t&qu…

通过配置NFS使Ubuntu和海思3559A板子共享目录

之前在Ubuntu和海思3559A板子之间来回拷贝文件都是用的scp命令&#xff0c;不是很方便&#xff0c;这里通过配置NFS来实现它们之间共享目录&#xff0c;操作步骤如下&#xff1a; 1. 在Ubuntu上安装NFS&#xff0c;执行以下命令&#xff0c;执行结果如下&#xff1a; sudo ap…

22w+的人选择了这款蓝牙耳机

01现在有两个电子产品&#xff0c;应该是你们现在必有的&#xff0c;手机和电脑。但还有一样不可缺少的电子产品&#xff0c;那就是耳机。不管喜不喜欢带&#xff0c;反正你手里肯定有一个&#xff0c;应该没人不认可我说的这个话吧。反正我去哪都会带着耳机&#xff0c;听不听…

自定义数字格式字符串输出示例

自定义数字格式字符串输出示例 MSDN 下表阐释了通过给特定数据类型和值应用某些自定义数字格式字符串来创建的输出。输出是通过使用 ToString 方法和美国英语 (en-US) 区域性生成的。 “格式字符串”列指示格式字符串&#xff0c;“数据类型”列指示所用的数据类型&#xff0c;…

海思3559A上编译LIVE555源码操作步骤

1. 从http://www.live555.com/liveMedia/public/ 下载live.2019.06.28.tar.gz&#xff0c;并解压缩&#xff1b; 2. 生成静态库&#xff0c;拷贝一份config.armlinux&#xff0c;取名为config.hi3559a&#xff0c;修改后的内容如下: CROSS_COMPILE? /opt/hisi-linux/x86-ar…

基于海康机器视觉算法平台的对位贴合项目个人理解 | CSDN原力计划

扫码参与CSDN“原力计划”作者 | 果汁分你一半哈哈来源 | CSDN原力计划获奖作品都说“纸上得来终觉浅&#xff0c;绝知此事要躬行”&#xff0c;可惜咱没这条件呀&#xff0c;没项目咱也不能干坐着呀&#xff0c;那咱发挥主观能动性&#xff0c;咱不是学机械的么&#xff0c;还…

解决Swift中present(uiImagePickerController,animated: true,completion: nil)闪退的问题

swift中开发选择图片上传&#xff0c;会使用到Tap Gesture Recognizer控件&#xff0c;对应 UITapGestureRecognizer API&#xff0c;以下是代码示例&#xff08;取自IOS developer library&#xff09;&#xff1a; IBAction func selectImageFromPhotoLibrary(_ sender: UIT…

测试发现equals和hashCode与书上描述的不一样

2019独角兽企业重金招聘Python工程师标准>>> 如果两个对象根据equals()方法比较是相等的&#xff0c;那么调用这两个对象中任意一个对象的hashCode方法都必须产生同样的整数结果。但是现实情况&#xff0c;两者产生的hashCode值却不相等求解&#xff1f; 转载于:htt…