使用boost进行CRC64计算

因接入平台,平台提供的是一个字符串的key作为用户标识,而且要用到分布式,所以没法用以前的数据库递增来做用户ID,于是用CRC64来生成uint64_t来作为用户ID,做法也比较简单。如下:赌王娱乐城

     std::map<size_t, size_t> xLongMap;

     char szTemp[128] = {0};

     boost::crc_optimal<64, 0x04C11DB7, 0, 0, false, false> crc;
     for (uint32_t i = 0; i < 1000000000; ++i)
     {
         memset(szTemp, 0, sizeof(szTemp));
         sprintf_s(szTemp, "%d%s%s%s", i, "1a2b3c", "4d5e6f", "7g8h9i");

         crc.process_bytes(szTemp, strlen(szTemp));
         size_t nPos = crc.checksum();
         crc.reset();

         if (!xLongMap.insert(std::map<size_t, size_t>::value_type(nPos, 0)).second)
         {
             std::cout << "重复了,当前数量:" << i << ", 字串为:" << szTemp << ", hash pos: " << nPos << std::endl;
             system("pause");
             break;
         }
     }

需要包含boost/crc.hpp

测试下来1.3亿没有重复,还是比较给力的。

可惜的是后来也没用到这个算法,因为key中有URL转义,导致有%这样的字符,后来就用了别的方法。

时间: 2024-09-30 20:22:38

使用boost进行CRC64计算的相关文章

boost 日期时间计算

示例代码如下: 1 #include <boost/date_time/gregorian/gregorian.hpp> 2 #include <boost/date_time/posix_time/posix_time.hpp> 3 using namespace boost::gregorian; 4 using namespace boost::posix_time; 5 #include <iostream> 6 using namespace std; 7 #

开关电源三种拓扑及变压器计算

开关电源三种拓扑:buck,boost,buck-boost.拓扑图如下: Buck BoostΔ Buck-Boost 变压器计算: 一.Buck电路变压器计算 BUCK电路在最高输入电压时为电感最恶劣工作条件: 1.首先设定如下参数:输入电压Vin,输出电压Iout,工作频率f: 2.由于电路工作在临界模式,所以电感峰值电流为2Iout: 3.占空比D=Vout/Vin: 4.由伏秒平衡V*ton=L*I:可得L=(V*dt)/di =(v*dt)/Ipk ,其中ton=D*T=D/f: 5

(转载)STL map与Boost unordered_map的比较

原链接:传送门 今天看到 boost::unordered_map,它与 stl::map的区别就是,stl::map是按照operator<比较判断元素是否相同,以及比较元素的大小,然后选择合适的位置插入到树中.所以,如果对map进行遍历(中序遍历)的话,输出的结果是有序的.顺序就是按照operator< 定义的大小排序.而boost::unordered_map是计算元素的Hash值,根据Hash值判断元素是否相同.所以,对unordered_map进行遍历,结果是无序的. 用法的区别就是

(转)STL map与Boost unordered_map

转:http://blog.csdn.net/orzlzro/article/details/7099231 今天看到 boost::unordered_map, 它与 stl::map的区别就是,stl::map是按照operator<比较判断元素是否相同,以及比较元素的大小,然后选择合适的位置插入到树中.所以,如果对map进行遍历(中序遍历)的话,输出的结果是有序的.顺序就是按照operator< 定义的大小排序. 而boost::unordered_map是计算元素的Hash值,根据Ha

map和unordered_map

1.boost::unordered_map, 它与 stl::map的区别就是,stl::map是按照operator<比较判断元素是否相同,以及比较元素的大小,然后选择合适的位置插入到树中.所以,如果对map进行遍历(中序遍历)的话,输出的结果是有序的.顺序就是按照operator< 定义的大小排序.而boost::unordered_map是计算元素的Hash值,根据Hash值判断元素是否相同.所以,对unordered_map进行遍历,结果是无序的.2.用法的区别就是,stl::map

Boost中的Timer的使用——计算时间流逝

使用Boost中的Timer库计算程序的执行时间 程序开发者都会面临一个共同的问题,即写出高质量的代码完成特定的功能.评价代码质量的一个重要标准就是算法的执行效率,也就是算法的执行时间.为了可靠的提高程序的执行效率,首先要知道执行程序所消耗的时间,然后找出可行的方案对程序进行优化.C++程序员在开发代码的过程中难免会遇见此类问题,本文以Boost中的Timer库为例,详细讲解如何测量程序的执行时间. Boost中Timer库的介绍 Timer是Boost中的一个很小的时间库,提供时间度量和进度显

Lucene4:获取中文分词结果,根据文本计算boost

1. 要求 环境: Lucene 4.1版本/IKAnalyzer 2012 FF版本/mmseg4j 1.9版本 实现功能: 1).给定输入文本,获取中文拆分词结果:2).给定输入文本,对该文本按一定规则进行权重打分:如:文本中包含指定关键词的频率越高,分值越高. 2. 实现代码 package com.clzhang.sample.lucene; import java.io.*; import java.util.*; import org.apache.lucene.analysis.A

C/C++利用Boost::Asio网络库建立自己的Socket服务器

引言 寸光阴,当下我们或许更需要利用现有的知识,应用现有的技术.网络是当前互联网的根本,了解网络便开始显得极其重要.今天我们利用Boost库中Asio部分,浅尝网络服务器.此处不做过于深入的开展,为达成学习目的,只做简单的异步并发服务器. 注意:本篇代码没有直接引用boost等命名空间,为的是新入门Boost的同学能够更好的了解每个参数在boost的具体命名空间位置,有助于更好的理解boost的布局. 版权所有:_OE_,转载请注明出处:http://blog.csdn.net/csnd_ayo

8 C++ Boost 日期 时间

目录: 1,日期 构造date 继续构造date对象 date特别的值 date能访问的函数 boost date_time 与tm转换 日期的加减运算 计算时间段 日期的迭代器 日期生成器 4月的第一个/最后一个星期一 日期生成器: 某月的第几个星期几,某天的前一个/后一个星期一 日期生成器算法 日历类 gregorian_calendar 2,时间 posix 时间的构造 时间的操作 时间段 操作 时间迭代器 1,日期 构造date [email protected]:~/boost$ ca