专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

高并发下的Id生成器

考虑到sql server以及c#,最多只能用decimal类型,也就是29位的数字,做了下面这个数字型id生成器:

class Program
    {
        static void Main(string[] args)
        {
            int i = 100000;
            Timing t = new Timing();

            t.Start();
            while(i-->0)
                UniqueIdGenerator.Next();
            t.Stop();

            t.Display("");
        }

    }

    public static class UniqueIdGeneratorHelper
    {
        public static long IP2Long(String strIP)
        {
            long[] ip = new long[4];
            string[] s = strIP.Split('.');
            ip[0] = long.Parse(s[0]);
            ip[1] = long.Parse(s[1]);
            ip[2] = long.Parse(s[2]);
            ip[3] = long.Parse(s[3]);
            return (ip[0] << 24) + (ip[1] << 16) + (ip[2] << 8) + ip[3];
        }
    }

    public static class UniqueIdGenerator
    {
        static UniqueIdGenerator()
        {
            ip = UniqueIdGeneratorHelper.IP2Long("192.168.1.21");//需要自己从配置文件中读取
        }

        private static long ip=0;
        public static decimal Next()
        {
            return decimal.Parse(DateTime.Now.ToString("yyyyMMddHHmmssff") + ip.ToString() + GetSequence().ToString());
        }

        private static int curSeq = 1;
        private static object o = 1;
        private static int GetSequence()
        {
            lock (o)
            {
                if (curSeq > 999)
                    curSeq = 1;
                return curSeq++;
            }
        }
    }

72_1.png

十万次请求,花了半秒不到,应该还行。

文章永久链接:https://tech.souyunku.com/38952

未经允许不得转载:搜云库技术团队 » 高并发下的Id生成器

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们