青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

牽著老婆滿街逛

嚴(yán)以律己,寬以待人. 三思而后行.
GMail/GTalk: yanglinbo#google.com;
MSN/Email: tx7do#yahoo.com.cn;
QQ: 3 0 3 3 9 6 9 2 0 .

網(wǎng)游服務(wù)器中的GUID(唯一標(biāo)識碼)實(shí)現(xiàn)-基于snowflake算法

轉(zhuǎn)載自:http://www.cppfans.org/1623.html

本文中的算法采用twitter的snowflake算法,具體請搜索介紹,原來是用Scala寫的,因我項(xiàng)目需要,改寫成C++語言,主要用于高效的生成唯一的ID, 核心算法就是毫秒級時(shí)間(41位)+機(jī)器ID(10位)+毫秒內(nèi)序列(12位).

網(wǎng)上也有好多PHP寫的插件模塊,核心用了網(wǎng)絡(luò)通訊將生成的ID發(fā)送給PHP使用,沒深入研究PHP的模塊寫法。

廢話不多說了,還是直接上代碼好了。

uuid.h

#ifndef __UTIL_UUID_H__
#define __UTIL_UUID_H__

#include <stdint.h>

namespace utils
{
// twitter snowflake算法
// 64       63--------------22---------12---------0
// 符號位   |     41位時(shí)間   |10位機(jī)器碼|12位自增碼|
extern uint64_t get_time();

class unique_id_t
{
public:
    unique_id_t();
    ~unique_id_t();

    void set_epoch(uint64_t epoch);
    void set_machine(int32_t machine);
    int64_t generate();

private:
    uint64_t epoch_;
    uint64_t time_;
    int32_t machine_;
    int32_t sequence_;
};

}

#endif // !__UTIL_UUID_H__

uuid.cpp

#include "uuid.h"
#if defined(__GUNC__)
#include <sys/time.h>
#include <unistd.h>
#define EPOCHFILETIME 11644473600000000ULL
#else
#include <windows.h>
#include <time.h>
#define EPOCHFILETIME 11644473600000000Ui64
#endif

namespace utils
{
    uint64_t get_time()
    {
#ifdef __GUNC__
        struct timeval tv;
        gettimeofday(&tv, NULL);
        uint64 time = tv.tv_usec;
        time /= 1000;
        time += (tv.tv_sec * 1000);
        return time;
#else
        FILETIME filetime;
        uint64_t time = 0;
        GetSystemTimeAsFileTime(&filetime);

        time |= filetime.dwHighDateTime;
        time <<= 32;
        time |= filetime.dwLowDateTime;

        time /= 10;
        time -= EPOCHFILETIME;
        return time / 1000;
#endif
    }

    unique_id_t::unique_id_t()
    {
        epoch_ = 0;
        time_ = 0;
        machine_ = 0;
        sequence_ = 0;
    }

    unique_id_t::~unique_id_t()
    {

    }

    void unique_id_t::set_epoch(uint64_t epoch)
    {
        epoch_ = epoch;
    }

    void unique_id_t::set_machine(int32_t machine)
    {
        machine_ = machine;
    }

    int64_t unique_id_t::generate()
    {
        int64_t value = 0;
        uint64_t time = get_time() - epoch_;

        // 保留后41位時(shí)間
        value = time << 22;

        // 中間10位是機(jī)器ID
        value |= (machine_ & 0x3FF) << 12;

        // 最后12位是sequenceID
        value |= sequence_++ & 0xFFF;
        if (sequence_ == 0x1000)
        {
            sequence_ = 0;
        }

        return value;
    }
}

#ifdef __TEST__
#include <iostream>
void test()
{
    utils::unique_id_t* u_id_ptr = new utils::unique_id_t();
    u_id_ptr->set_epoch(uint64_t(1367505795100));
    u_id_ptr->set_machine(int32_t(100));
    for (int i = 0; i < 1024; ++i)
    {
        std::cout << u_id_ptr->generate() << std::endl;;
    }
}
#endif

這樣的唯一ID就可以用來表示你系統(tǒng)中使用的例如物品唯一ID,坐騎唯一ID等等數(shù)據(jù),方便記錄和追蹤。

轉(zhuǎn)載請注明:C++愛好者博客 » 網(wǎng)游服務(wù)器中的GUID(唯一標(biāo)識碼)實(shí)現(xiàn)-基于snowflake算法

posted on 2014-05-29 01:33 楊粼波 閱讀(893) 評論(0)  編輯 收藏 引用 所屬分類: C++

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产日韩在线视频| 欧美精品色网| 黑人极品videos精品欧美裸| 久久久999精品| 午夜免费久久久久| 狠狠爱www人成狠狠爱综合网| 久久久999精品| 欧美成人网在线| 亚洲一二三区在线| 欧美在线999| 亚洲国产精品va| 一级日韩一区在线观看| 国产一区二区三区四区在线观看 | 日韩亚洲欧美综合| 国产精品永久| 欧美高清视频www夜色资源网| 欧美日本韩国| 久久一本综合频道| 欧美激情日韩| 久久久www成人免费精品| 另类尿喷潮videofree | 在线不卡欧美| 99视频+国产日韩欧美| 黄色亚洲在线| 一区二区三区不卡视频在线观看| 国产一区二区| 99亚洲一区二区| 影音先锋日韩有码| 亚洲小说区图片区| 91久久线看在观草草青青| 亚洲一区视频| 99riav久久精品riav| 久久精品国产亚洲aⅴ| 在线中文字幕一区| 久久一区免费| 久久精品国产精品| 亚洲一区二区精品视频| 久久夜色精品亚洲噜噜国产mv | 狠狠噜噜久久| 中国女人久久久| 日韩一本二本av| 久久蜜桃资源一区二区老牛| 欧美一级欧美一级在线播放| 欧美久久久久久久| 亚洲国产福利在线| 国产亚洲欧美一区二区三区| 一本大道久久a久久精品综合| 亚洲欧洲日韩综合二区| 久久久99国产精品免费| 欧美在线精品免播放器视频| 欧美日韩在线一二三| 亚洲第一视频| 亚洲国内精品| 欧美r片在线| 欧美国产精品va在线观看| 国产综合在线看| 久久精品2019中文字幕| 久久久久88色偷偷免费| 国产精品一区二区久久| 亚洲欧美精品在线观看| 午夜在线不卡| 国产精品一二三视频| 亚洲综合成人婷婷小说| 性欧美超级视频| 国产亚洲精品bt天堂精选| 亚洲欧美国产三级| 久久精品夜色噜噜亚洲a∨ | 国产精品腿扒开做爽爽爽挤奶网站| 亚洲精品一区二区三区av| 日韩视频在线一区二区三区| 欧美劲爆第一页| 亚洲美女在线看| 亚洲在线电影| 国产精品揄拍一区二区| 久久av二区| 亚洲国产黄色| 一区二区久久久久久| 欧美性做爰毛片| 亚洲欧美变态国产另类| 在线亚洲免费| 久久精品人人做人人爽| 国产亚洲激情| 久久久久久日产精品| 欧美国产欧美亚洲国产日韩mv天天看完整| 伊人精品久久久久7777| 狼人社综合社区| 最新亚洲一区| 国产精品theporn| 午夜在线a亚洲v天堂网2018| 裸体女人亚洲精品一区| 亚洲免费观看| 国产精品女主播| 久久人体大胆视频| 一区二区三区精品视频| 久久久久网站| 99av国产精品欲麻豆| 国产精品中文在线| 免费国产一区二区| 亚洲一区在线观看视频| 欧美成人午夜激情视频| 亚洲欧美日韩国产精品| 好看的日韩视频| 欧美日韩精品中文字幕| 久久久久99精品国产片| 99国产一区| 欧美大胆成人| 欧美在线免费观看视频| 亚洲精品免费一区二区三区| 国产欧美日韩不卡| 欧美日韩国产一区精品一区| 久久精品二区| 亚洲综合成人在线| 日韩亚洲精品在线| 亚洲国产精品第一区二区| 欧美永久精品| 亚洲一区二区伦理| 亚洲精品日韩激情在线电影 | 西瓜成人精品人成网站| 亚洲精品一区在线观看| 欧美大片免费观看在线观看网站推荐| 亚洲综合不卡| 夜夜嗨av一区二区三区四区| 一区二区三区自拍| 好吊色欧美一区二区三区视频| 国产精品麻豆va在线播放| 欧美激情中文不卡| 免费黄网站欧美| 久久精品导航| 久久精品国产精品 | 香蕉久久国产| 亚洲一区二区精品在线| 一区二区精品在线观看| 日韩午夜激情电影| 亚洲国产精品久久久久秋霞蜜臀 | 久久这里有精品视频| 久久精品国产精品亚洲精品| 欧美一区二区三区四区高清| 亚洲综合色婷婷| 亚洲免费视频网站| 亚洲免费伊人电影在线观看av| 一本色道久久| 一区二区三区四区五区精品视频| 亚洲精品一区二区三区樱花 | 欧美在线视频日韩| 久久国产精品99久久久久久老狼 | 亚洲天堂成人在线视频| 亚洲视频一二三| 亚洲一区图片| 欧美亚洲一区在线| 久久婷婷综合激情| 欧美国产大片| 亚洲欧洲日产国码二区| 日韩视频一区二区三区在线播放免费观看 | 在线观看欧美黄色| 亚洲福利在线视频| 亚洲美女黄网| 亚洲综合清纯丝袜自拍| 欧美一级久久久| 久久久综合激的五月天| 嫩草国产精品入口| 91久久精品日日躁夜夜躁国产| 99国产一区| 欧美亚洲日本国产| 免费永久网站黄欧美| 欧美日韩三级一区二区| 国产午夜精品久久久久久久| 精品成人久久| 亚洲精选大片| 欧美一区亚洲| 欧美福利一区| 亚洲一区激情| 男女精品网站| 国产精品久久午夜| 在线欧美一区| 亚洲综合首页| 蜜桃av一区二区在线观看| 亚洲精品在线一区二区| 性欧美超级视频| 欧美人成免费网站| 国产一区视频在线观看免费| 亚洲精品少妇30p| 欧美一级片一区| 亚洲人成毛片在线播放| 久久aⅴ乱码一区二区三区| 欧美精品在线免费播放| 韩国av一区二区三区在线观看| 亚洲伦伦在线| 久久久久久久尹人综合网亚洲| 99国产精品久久久久老师| 久久亚洲精品一区二区| 国产美女精品人人做人人爽| 亚洲美女性视频| 久久亚洲图片| 亚洲网站在线播放| 欧美久久久久| 亚洲美女在线观看| 欧美aⅴ99久久黑人专区| 欧美亚洲专区| 国产精品日韩精品欧美在线 | 在线观看欧美日韩|