服务器唯一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等同步工具。


相关文章
|
1月前
|
弹性计算 负载均衡 数据库
2024阿里云服务器试用规则及云产品试用常见问题解答
2024年阿里云服务器可以试用吗?不仅是云服务器产品,包括无影云电脑、云数据库 RDS、统型负载均衡 CLB、对象存储 OSS、文件存储 NAS等云产品都是可以试用的,只是需要注意的是,我们在试用云服务器产品之后,免费试用权益无法与新用户优惠购买活动同享,也就是说,领取了云服务器ECS免费试用权益的用户,将不能参产品新用户的相关活动。本文为大家介绍2024年阿里云服务器和其他云产品的试用规则及试用常见问题解答。
2024阿里云服务器试用规则及云产品试用常见问题解答
|
10月前
|
弹性计算 负载均衡 小程序
阿里云服务器免费试用活动可试用配置、参与条件及规则汇总
2023阿里云服务器免费试用活动可试用配置、参与条件及规则汇总,阿里云服务器免费试用申请链接入口,阿里云个人用户和企业用户均可申请免费试用,最高可以免费使用3个月,阿里云服务器网分享阿里云服务器免费试用申请入口链接及云服务器配置
245 0
|
11月前
|
弹性计算 网络协议 安全
阿里云服务器开放端口教程(通过配置安全组规则)
阿里云服务器开放端口教程(通过配置安全组规则)阿里云服务器端口怎么打开?云服务器ECS端口在安全组中开启,轻量应用服务器端口在防火墙中打开,阿里云服务器网以80端口为例,来详细说下阿里云服务器端口开放图文教程,其他的端口如8080、3306、443、1433也是同样的方法进行开启端口:
1173 0
|
11月前
|
弹性计算 网络协议 安全
阿里云服务器开放端口教程(配置安全组规则)
阿里云服务器开放端口教程(配置安全组规则)阿里云服务器端口怎么打开?云服务器ECS端口在安全组中开启,轻量应用服务器端口在防火墙中打开,阿里云服务器网以80端口为例,来详细说下阿里云服务器端口开放图文教程,其他的端口如8080、3306、443、1433也是同样的方法进行开启端口:
673 0
|
缓存 Linux 网络安全
iptables规则有100个,会影响Linux服务器的性能吗?底层原理是什么?
iptables规则有100个,会影响Linux服务器的性能吗?底层原理是什么?
859 0
|
弹性计算 机器人
EventBridge创建ECS规则测试
EventBridge创建ECS规则测试
122 0
EventBridge创建ECS规则测试
|
NoSQL MongoDB 数据库
分布式服务器框架之Server.Core库中实现YFUniqueEntity、YFUniqueIDBase 管理MongoDB 自定义Id的自增
YFUniqueEntity是数据库中的结构,GetUniqueID函数中会根据Type和自增步长去数据库中寻找该类型的当前ID是多少,然后会用当前的Id去加上步长,把更新后的新ID插入到MongoDB中记录着ID的那张表里。
|
SQL NoSQL MongoDB
分布式服务器框架之Servers.Core库中实现MongoDB对象实体类 管理对象ID
MongoDB中的ID是一个hash码,和传统的关系数据库相比MongoDB没有办法实现ID的自增,如果需要ID自增的话,所以要自己管理ID,并且把对应类型的ID写入到一个专门的Collection(其实就是Sql中的Table)里面去,每次创建新对象的时候,都要取到该类型当前的ID,然后在这个基础上+1,比如当前是角色的ID是1,又创建了一个新的角色,要在原来的基础上+1 ID=2。今天先把MongoDB的对象实体基类实现了。
|
弹性计算 网络协议 网络安全
阿里云服务器开通1723端口教程配置安全组规则
阿里云服务器安装PPTP需要1723端口,阿里云服务器默认没有开通1723端口,可以在云服务器安全组中开放1723端口
895 0
阿里云服务器开通1723端口教程配置安全组规则
|
弹性计算 网络安全
阿里云服务器开放端口教程(通过配置安全组规则)
阿里云服务器开放端口是通过配置安全组规则来实现的,安全组是一种虚拟防火墙
73064 4
阿里云服务器开放端口教程(通过配置安全组规则)