在实际业务处理中,有时需要生成全局唯一ID来区别同类型的不同事物,介绍一下几种方式及其C++实现

//获取全局唯一ID
//server_id为服务的id,因当同一个服务部署在多个服务器上时,需要区别
unsigned long long GetUniqueID(unsigned int server_id)
{
static unsigned long long seq_id = ;
unsigned long long seq = seq_msg_id++ ;
seq = (seq<<);
seq = (seq>>);
unsigned long long tag = ((unsigned long long)server_id<<);
seq = (seq | tag) ;
return seq ;
} /**
获取全局唯一ID,且ID为奇数
*/
unsigned long long GetOddID(unsigned int server_id)
{
unsigned long long id = GetUniqueID(server_id);
while (true)
{
if ((id & 0x01) == 0x01)
{
return id;
}
else
{
id = GetUniqueID(server_id);
}
}
} //利用MD5库提供的64位哈希函数,来将字符串生成相应的hash值
//从而可得到经md5转化后的报文摘要 //数据库的UUID

最新文章

  1. 我这么玩Web Api(二):数据验证,全局数据验证与单元测试
  2. 用bootstrap实现多张图片手动轮回
  3. Android打造属于自己的数据库操作类。
  4. 获取IMap上绘制的Element的区域范围
  5. Web自动化测试 Selenium 2/3
  6. js首字母大写--单个单词的处理方式
  7. php 处理透明背景的图片时的问题
  8. MyBatis的简单操作
  9. C#获取单个字符的拼音声母
  10. 嵌入式系统 Boot Loader
  11. Android Bundle类别
  12. iOS开发之监听键盘高度的变化
  13. laravel中数据库在哪个文件中配置
  14. [HNOI2011]数学作业
  15. python之路之简单介绍:
  16. CE找基址
  17. mybatise 实现同一字段多模糊查询
  18. 使用经验风险最小化ERM方法来估计模型误差 开坑
  19. 纯css3实现的win8加载动画
  20. ugui的优化

热门文章

  1. Ubuntu 16.04 LTS制作本地源
  2. java中final用法
  3. Spark Streaming之一:整体介绍
  4. 如何通过ISO安装win7程序
  5. JDBC---bai
  6. 关于pipe管道的读写端关闭问题
  7. Python 标准库 -&gt; Pprint 模块 -&gt; 用于打印 Python 数据结构
  8. ASP.NET 连接MySql数据库
  9. hadoop-2.6.0.tar.gz + spark-1.6.1-bin-hadoop2.6.tgz + zeppelin-0.5.6-incubating-bin-all.tgz(master、slave1和slave2)(博主推荐)(图文详解)
  10. cookie禁用后的session