`
erntoo
  • 浏览: 31874 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论
  • erntoo: 修改somaxconn该内核参数默认值一般是128,对于负载很 ...
    rpm

PHP算法-生成序列号

    博客分类:
  • PHP
阅读更多
/**
 * 根据当前无重复的$codes,补充生成长度为$length,总数为$amount的
 *
 * @param int $length
 *            长度
 * @param int $amount
 *            需要总数
 * @param string $prefix
 *            前缀
 * @param array $codes
 *            初始codes
 * @return array $codes 无重复的codes,含输入参数
 */
myrand($length, $amount = 1, $prefix = '', $codes = []) {
    $seed = [ '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'];
    $codes_tmp = [];
    $need = $amount - count($codes);
    for ($c = 0; $c < $need; $c++) {
        $code = '';
        for ($i = 0; $i < $length; $i++) {
            $index = rand(0, 31);
            $code .= $seed[$index];
        }
        $codes_tmp[] = $prefix . $code;
    }
    $codes = array_unique(array_merge($codes, $codes_tmp));
    unset($codes_tmp);
    $number = count($codes);
    $d = $amount - $number;
    if ($d > 0) {
        $codes = array_unique(array_merge($codes, myrand($length, $amount, $prefix, $codes)));
    }
    return $codes;
}

 

分享到:
评论

相关推荐

    数据库序列号生成器

    1. **序列号生成算法**:生成序列号的算法可以是简单的自增、随机数生成、时间戳加盐(确保时间相关的唯一性)或者是更复杂的分布式ID生成算法,如Twitter的Snowflake算法,它考虑了多节点环境下的分布式一致性。...

    (源码)基于PHP的雪花算法ID生成系统.zip

    1. 全局唯一ID生成通过雪花算法生成全局唯一的ID,确保在分布式系统中每个ID都是唯一的。 2. 自定义配置提供配置参数,如数据中心标识位数、机器标识位数、序列号位数等,以适应不同的业务需求。 3. 回调函数机制...

    myEclipse序列号

    官方提供的序列号是经过验证的,但有时用户可能需要自动生成序列号进行测试或学习目的。这通常涉及到软件许可的灰色地带,因此应谨慎对待非官方序列号的生成。 描述中提到的“自动序列号生成”可能指的是利用编程...

    php-snowflake.tar.gz 随机生成ID,一直安装用的tar包

    Snowflake算法是一种分布式ID生成策略,最初由Twitter开源,它能生成具有时间戳、工作节点ID和序列号的64位无符号整数ID,确保ID的全局唯一性。 在描述中,我们看到一系列编译和安装PHP扩展的步骤,这通常适用于...

    PHP生成唯一ID之SnowFlake算法

    算法通过拼接时间戳、机器ID和序列号来生成唯一ID。每次生成ID时,首先计算当前时间戳,并与epoch时间戳做差值计算,然后将结果与机器ID和序列号结合生成64位的ID。 时间戳部分保证了ID随时间的递增,机器ID保证了...

    多语言新雪花算法(SnowFlake IdGenerator)-算法实现资源

    SnowFlake算法的生成原理基于时间戳、工作机器ID、序列号三个主要部分,确保了生成ID的全局唯一性。时间戳部分记录了ID生成的时间点,工作机器ID区分了不同的分布式节点,序列号则在同一毫秒内进行计数,保证即使在...

    Delphi(delphi7-XE)标准RSA加密,解密,签名.与C,Java,php等通用

    RSA算法是一种非对称加密技术,它在信息安全领域有着广泛的应用,特别是在数据加密、数字签名以及安全通信等方面。本篇文章将深入探讨Delphi (从delphi7到XE版本)中的RSA实现,以及如何与其他编程语言如C、Java、PHP...

    php-snowflake::snowflake:基于Snowflake算法PHP ID生成器(Twitter已宣布)

    一个基于Snowflake算法PHP ID生成器(Twitter已宣布)。描述雪花算法PHP实现。 Snowflake是一项网络服务,可通过一些简单的保证大规模生成唯一的... 因此,如果要使用雪花算法生成唯一ID,则必须确保:在同一节点的同一

    dedid全局唯一 ID(主键)生成器

    Snowflake算法是一种基于时间戳、工作节点ID和序列号的分布式ID生成方案,确保在分布式环境中产生的ID具有全局唯一性、时间有序性和无冲突性。 然而,与Snowflake不同的是,dedid生成器的最后12位允许使用不仅仅是...

    多语言新雪花算法(SnowFlake IdGenerator)-node

    SnowFlake算法生成的ID可以保证在分布式系统中全局唯一,并且趋势递增。它由以下几个部分组成: 1. 第一位是未使用的符号位,始终为0。 2. 时间戳部分,占据了接下来的41位。它表示自一个固定的时间点(例如:2014年...

    多语言新雪花算法(SnowFlake IdGenerator)-c语言基础

    该算法生成的ID是一个64位的整数,其中包含时间戳、数据中心标识、机器标识以及序列号,这样的设计能够确保在高并发场景下的ID唯一性和有序性。 在多语言环境中实现雪花算法,尤其是C语言,可以为各种编程语言提供...

    donkeyid, php扩展,64位自增id生成器.zip

    1. **分布式一致性**:`donkeyid`可能采用了类似于Twitter的Snowflake算法,将64位ID分为多个部分,如时间戳、工作节点标识和序列号,确保在分布式环境中全局唯一。 2. **时间戳**:前几位用于存储当前时间戳,这样...

    利用时间生成8位不重复数

    生成的8位十六进制字符串在大多数情况下已经足够独特,但考虑到时间戳的精度,如果系统在同一秒内需要生成多个不重复的8位数字,可能需要结合其他策略,如添加进程ID、随机数或者序列号,以确保在极短时间内生成的ID...

    PHP实现生成唯一编号(36进制的不重复编号)

    最后,2位校验码是通过特定算法生成的,用于验证编号的正确性和完整性。 Code类包含两个关键方法: 1. `encodeID($int, $format)`:此方法接受一个10进制整数`$int`和一个格式化参数`$format`,表示所需的编号位数...

    zend7.1注册码

    - **组成结构**:`3727234F6095F72034F6095F`这个序列号由数字和大写字母组成,按照一定的算法生成。 - **验证过程**:当用户在安装过程中输入此序列号后,软件会对其进行校验。如果匹配成功,则完成激活;反之,则...

    php-luhn-summarize:p 的实现。 PHP中的luhn摘要算法

    Luhn 算法不仅适用于信用卡号验证,还可以用于自定义序列号的生成和验证,例如软件激活码、会员卡号等。在实际项目中,可以结合其他安全措施,如数据库查询、加密存储等,进一步提高数据安全性。 在提供的压缩包 ...

    Laravel开发-laravel-snowflake .zip

    laravel-snowflake就是Laravel对这个算法的实现,它能够生成类似于Twitter Snowflake的64位ID,这些ID由时间戳、工作节点ID和序列号三部分组成,确保了全局唯一性。 1. **雪花算法(Snowflake)详解** - **时间戳*...

    Laravel开发-laravel-snowflake

    - 序列号:12位,每个工作节点在同一毫秒内可以生成 4096 个唯一的 ID。 这样的设计使得 Snowflake ID 具有时间有序性,同时避免了冲突。 **2. 安装与配置 `laravel-snowflake`** 要在 Laravel 项目中使用 `...

    PHP内置函数生成随机数实例

    mt_rand()函数与rand()函数类似,但是它使用Mersenne Twister算法来生成随机数,这使得mt_rand()生成随机数的速度更快,而且质量更高。mt_rand()函数也有无参数和两个参数两种形式,其参数的意义与rand()函数相同,...

    PHP随机数 C扩展随机数

    在上述C扩展的示例`get_random__num_str`函数中,可以看到它使用了类似Twitter雪花算法的策略,结合了时间戳、数据中心ID、工作节点ID和序列号来生成唯一ID。这个ID可以作为`srand()`的种子,从而确保每个请求生成的...

Global site tag (gtag.js) - Google Analytics