服务器唯一id生成规则
在使用hashCode的时候,发现会出现相同id,虽然几率很小。虽然发现并不是hashCode的原因,而是其他逻辑的问题。
但是还是试着自己写了一个id生成器,有些id是int的,比如说任务id;有些id是long的,比如说玩家id。
先贴代码来看:
private static AtomicInteger id = new AtomicInteger(0);public static long getId(){return (ServerKit.getServerId() & 0xFFFF) << 48 | (System.currentTimeMillis()/1000L & 0xFFFFFFFF) << 16 | id.addAndGet(1) & 0xFFFF;}private static AtomicInteger IntId = new AtomicInteger(0);public static int getIntId(){return ((int)(System.currentTimeMillis() - 1000000000000L)/1000)<<16L | (IntId.addAndGet(1));}
在生成玩家id的时候把服务器的id也参与,便于以后的合服。
因为服务器是多线程,所以就用了 AtomicInteger 类型,不用再使用类似 sync等同步工具。
服务器唯一id生成规则相关推荐
- node 生成随机头像_唯一ID生成算法剖析
引在业务开发中,大量场景需要唯一ID来进行标识:用户需要唯一身份标识:商品需要唯一标识:消息需要唯一标识:事件需要唯一标识-等等,都需要全局唯一ID,尤其是分布式场景下.唯一ID有哪些特性或者说要求呢 ...
- [转]【分布式系统】唯一ID生成策略总结
文章目录 全局唯一id介绍 全局唯一id特点: 常见全局唯一id生成策略 1.数据库自增长序列或字段生成id 2.UUID 3.Redis生成ID 4.zookeeper生成ID 5.Twitter的 ...
- java 唯一id生成算法_唯一ID生成算法剖析
在业务开发中,大量场景需要唯一ID来进行标识:用户需要唯一身份标识:商品需要唯一标识:消息需要唯一标识:事件需要唯一标识-等等,都需要全局唯一ID,尤其是分布式场景下. 唯一ID有哪些特性或者说要求呢 ...
- c#随机数生成编号_忘掉 Snowflake,感受一下性能高出587倍的全局唯一ID生成算法...
今天我们来拆解 Snowflake 算法,同时领略百度.美团.腾讯等大厂在全局唯一 ID 服务方面做的设计,接着根据具体需求设计一款全新的全局唯一 ID 生成算法.这还不够,我们会讨论到全局唯一 ID ...
- 微信用户全局唯一标识_忘掉 Snowflake,感受一下性能高出587倍的全局唯一ID生成算法...
今天我们来拆解 Snowflake 算法,同时领略百度.美团.腾讯等大厂在全局唯一 ID 服务方面做的设计,接着根据具体需求设计一款全新的全局唯一 ID 生成算法.这还不够,我们会讨论到全局唯一 ID ...
- 分布式与微服务——Iaas,Paas和Saas、单体应用和缺点、微服务概念、传统 分布式 SOA 架构与微服务架构的区别、微服务实战、什么是RPC、CAP定理和BASE理论、唯一ID生成、实现分布式
文章目录 1-什么是Iaas,Paas和Saas 一 IaaS基础设施服务 二 paas平台即服务 三saas软件即服务 四 总结 2-单体应用和缺点 一 单体应用 二 单体应用的缺陷 3-微服务概念 ...
- 唯一ID生成算法剖析,看看这篇就够了
本文转载自腾讯技术工程 引 在业务开发中,大量场景需要唯一ID来进行标识:用户需要唯一身份标识:商品需要唯一标识:消息需要唯一标识:事件需要唯一标识-等等,都需要全局唯一ID,尤其是分布式场景下. 唯 ...
- 唯一ID生成算法剖析
引 在业务开发中,大量场景需要唯一ID来进行标识:用户需要唯一身份标识:商品需要唯一标识:消息需要唯一标识:事件需要唯一标识-等等,都需要全局唯一ID,尤其是分布式场景下. 唯一ID有哪些特性或者说要 ...
- 【分布式系统】唯一ID生成策略总结
文章目录 全局唯一id介绍 全局唯一id特点: 常见全局唯一id生成策略 1.数据库自增长序列或字段生成id 2.UUID 3.Redis生成ID 4.zookeeper生成ID 5.Twitter的 ...
最新文章
- Splay ---- 文艺平衡树区间翻转的建树模式
- arrays must all be same length
- 第一章 Shiro简介——跟我学习springmvc shiro mybatis
- ITK:多相Chan和Vese稀疏场水平集分割
- Install Shield制作安装包技巧(SQL篇)
- Ubuntu 13.04 双显卡安装NVIDIA GT 630M驱动
- oracle外部表kup-04023,Oracle外部表学习
- 地址栏引用PHP中变量,PHP 读取地址栏 参数
- 笔记+R︱信用风险建模中神经网络激活函数与感知器简述
- 深度学习自学(二十八):Altas人脸SDK实现之-回调函数
- 路由交换技术-实验4:VLAN创建、划分、修剪及Trunk链路
- 小程序定位并获取城市编码
- 互联网软件开发和传统软件开发的不同(转型互联网开发需要适应的那些事)
- 治疗长期失眠的最好食物,不可错过!
- 组员组长mysql_GitHub - gzh51906/ManKeZhan: 组长:黄林芳 组员:陈炜,王佳伟
- 楷体DB_2312 安装包
- HDLBITS笔记34:Lemmings1、Lemmings2、Lemmings3、Lemmings4
- 宝塔linux面板命令大全
- AutoCAD 2008 简体中文精简版(适合低配置电脑)
- matlab n阶方阵,用matlab编程设A=(aij)n*n为n阶方阵,求a从1到n? 爱问知识人
热门文章
- poj 2352 Stars(线段树)
- 好用的爬虫软件?动态ip软件告诉你
- 取子字符串的两种情形的解决办法(c#)
- NBTC明年6月将举行5G频谱拍卖 2.6GHz频段成关注重点
- 集合覆盖 顶点覆盖: set cover和vertex cover
- http://blog.csdn.net/xingfuzhijianxia/article/details/6433918
- 第一行代码读书笔记1+常见错误分析
- 学习汇编语言 -王爽,自已完成的一道课程设计题 (5)
- samba服务中,关于读写(也就是下载和上传)权限的优先级
- 推荐一个.NET下转Json的利器,FastJson