生成GUID的算法

简介: 类库 调用
类库
<?php
// guid.php
class System {
  function currentTimeMillis() {
    list($usec, $sec) = explode(" ",microtime());
    return $sec.substr($usec, 2, 3);
  }
}

class NetAddress {
  var $name = 'localhost';
  var $ip   = '127.0.0.1';
  function getHost($coumputer_name, $ip) { // static
    $address = new NetAddress();
    $address->name = $coumputer_name;
    $address->ip   = $ip;

    return $address;
  }

  function toString() {
    return strtolower($this->name.'/'.$this->ip);
  }
}

class Random {
  function nextLong() {
    $tmp = rand(0,1)?'-':'';
    return $tmp.rand(1000, 9999).rand(1000, 9999).rand(1000, 9999).rand(100, 999).rand(100, 999);
  }
}

class Guid{
  var $valueBeforeMD5;
  var $valueAfterMD5;
  function Guid($computer_name, $ip){
    $this->getGuid($computer_name, $ip);
  }

  function getGuid($coumputer_name, $ip){
    $address = NetAddress::getHost($coumputer_name, $ip);
    $this->valueBeforeMD5 = $address->toString().':'.System::currentTimeMillis().':'.Random::nextLong();
    $this->valueAfterMD5 = md5($this->valueBeforeMD5);
  }
  
  function newGuid() {
   $Guid = new Guid();
   return $Guid;
  }

  function toString() {
   $raw = strtoupper($this->valueAfterMD5);
   return substr($raw,0,8).'-'.substr($raw,8,4).'-'.substr($raw,12,4).'-'.substr($raw,16,4).'-'.substr($raw,20);
  }
}
?>

调用
<?php
require_once('guid.php');
$computer_name = $_SERVER["SERVER_NAME"];
$ip            = $_SERVER["SERVER_ADDR"];
$guid = new Guid($computer_name, $ip);
print $guid->toString();
目录
相关文章
|
人工智能 开发者
解决HuggingFace模型下载难题:AI快站的高效加速服务
在AI研发领域,获取优质模型资源是关键。国内开发者常因海外服务器导致的下载困难而苦恼,尤其是大型模型下载更是耗时且充满挑战。AI快站(aifasthub.com)作为huggingface镜像网站,提供了高效的加速下载服务。它不仅解决了huggingface大模型下载的速度问题,还支持断点续传,保证下载连续性。此外,AI快站还提供全面及时更新的模型资源,是国内AI开发者的理想选择。
1837 0
|
9月前
|
机器学习/深度学习 人工智能 算法
现身说法,AI小白的大模型学习路径
写这篇文章的初衷:作为一个AI小白,把我自己学习大模型的学习路径还原出来,包括理解的逻辑、看到的比较好的学习材料,通过一篇文章给串起来,对大模型建立起一个相对体系化的认知,才能够在扑面而来的大模型时代,看出点门道。
952 79
|
9月前
|
人工智能 前端开发 搜索推荐
研发智能化新篇章:通义灵码企业级方案与实践
《研发智能化新篇章:通义灵码企业级方案与实践》简介: 本文探讨了通义灵码在提升企业研发效能方面的核心影响和实际应用。首先分析了AIGC(人工智能生成内容)如何从个体效率、协同效率和持续化三个维度提升企业生产力。接着,通过亚信科技的实际案例,展示了其在不同场景下的智能化实践,包括智能编程助手的选型、部署及效果评估。最后,展望了未来研发智能化的发展方向,提出构建覆盖软件开发全流程的智能体工具集,以进一步降低使用门槛并提升整体效率。文中强调了通义灵码在代码补全、知识问答等方面的应用成效,并指出了企业在落地过程中面临的挑战及应对策略。
395 1
|
10月前
|
网络虚拟化
配置BGP/MPLS IP VPN示例
本文介绍了通过配置MPLS VPN实现分部与总部之间的通信需求。具体要求为分部1和分部2只能与总部通信,而分部之间不能通信。配置思路包括使用BGP协议传递路由,并将各分部分别划分到不同的VPN实例中(VPN1、VPN2、VPN3),通过设置RD和Target属性确保路由隔离。操作步骤涵盖设备IP地址配置、MPLS域内互通、PE上的VPN实例配置、接口绑定、MP-IBGP配置、CE与PE间的路由交换及MPLS LDP功能配置。最终验证显示,同一VPN内的CE设备可以相互通信,不同VPN的CE设备则无法通信,满足了组网需求。
配置BGP/MPLS IP VPN示例
|
12月前
|
存储 关系型数据库 Linux
2024 年 16 个适用于 Linux 的开源云存储软件 (上)
2024 年 16 个适用于 Linux 的开源云存储软件 (上)
2024 年 16 个适用于 Linux 的开源云存储软件 (上)
|
人工智能 自然语言处理 算法
|
安全 Linux 开发者
Linux笔记之ldd命令详解
`ldd`命令是Linux环境下一个非常实用的工具,用于显示一个程序运行时所需的共享库依赖。它帮助开发者和系统管理员快速诊断程序运行问题,特别是在处理"找不到库文件"或者"错误的库文件版本"等错误时。然而,出于安全的考虑,对于不信任的可执行文件,应该慎用 `ldd`命令,可以考虑使用其他工具如 `objdump`。总的来说,懂得如何妥善且安全地使用 `ldd`,对于维护一个稳定和高效的Linux系统来说,是非常重要的。
609 9
|
Java 调度
java中模拟同时并发请求
java中模拟同时并发请求
209 0
|
存储 弹性计算 数据库
2024最新阿里云优惠券领取入口整理、代金券查询方法和使用教程
2024最新阿里云优惠券领取入口整理、代金券查询方法和使用教程。阿里云优惠券是什么?2024年阿里云优惠券领取地址链接和使用方法。阿小云连夜整理阿里云优惠券领取入口,包括领券中心、学生无门槛300元代金券、域名优惠口令、代金券查询和使用方法
1392 7
|
机器学习/深度学习 分布式计算 大数据