35. 通用唯一识别码UUID

龺龹龵龳龱龰龯龬龫龨龳龱龦龤龠龝龙龘龔龒龑龏龋龈龆龄龹龁齽齹齵齲齮齭齫齩齨齦齣龳龱id齛龙齘齭齫齽齗齓齏齍龳齋齈齇齩齆齅齂齅齁鼽鼻龱id鼺鼹鼷鼵鼴鼰鼯龑鼬鼨鼤齓鼣鼠鼞齨鼚齩鼗鼻齅鼕鼔齮鼐鼎鼊鼈鼅鼁鼹黾黺鼗齩黸黴齨鼚黲鼔黮黫黩黧黤鼬齮齩龵龹黡龨黟黜鼷鼵黛黙齗鼐鼎鼊鼈鼅黕黒黑鼗黐齭齫黍黉黈黆龠龝龋黃齩黂齗黀鼈麽麹齩龒龑麶麵麳麯齍龳齋齈齩麫麩龳龱黀鼈鼐麥齩黀鼈麤麠麝鼻龱黀鼈鼐麚麙麖鼷麠麝麔麐黫麌鼎鼊鼈鼅黃麋麉鼻龱黀鼈麅鼻黐麂黫uuid龋黃齮麽麹黕

UUID龬鹴齽齍龳齈鹳鹰Universally Unique IDentifier齩鼗鹓黮鹐鹌鹋GUID麳麯齍龳齈鹳鹰Globally Unique IDentifier齩鹃鹁齽齗鸿鸽鸻龦龤黟鸺龠龝齩齏龹鸹鸸鸴鸰鸯鸮黈齽齗鸭鸫齦鸨鸦黟鸺鸣鸟鸛齩黮齽黃鸗鸴window鸒鼎鸎齩齇黫龳龱齽齓鸍鸋黆鹓鸉齍龳鸇齋齈龰龯齮鸆鸄齩鸃鷿黆鹓鸉鷼鷻黃鼗鷹齮鹓鷶鷴鸉鷶鷳齩鼵鼨龏鷲齁鼽齮id黫鷮龳鷫鷨齮齩鼻鷤龳龹麂鼵鸍鸋黜鷢齵鷟齮龰龯齩鷞鼻鸎鼗龱麠鷚鷗鷖龏鷲鷕龒龑麝鷔齩鷒鷏鷋鼗鷉黍齮鸆鸄齩麤龑鷇鷄鷀鷒鶽齆齅鶹鶷鶳齓鷖龏鷲鷕齩鼻黍齗麋鶲鶱齮鶮龹鶫鶳鼵黫龳鶩鶧鶦齩鷞鶥龵鶣UUID鶢鶟黈鶞鷟鶝鶚齩鶗鶔龹龵龳鶔UUID麩鶓鶑鷟鷇鷄鷀鷒鶽齩鷟鶏鼗鸫鶽黕

UUID鶍鶌龬

麠齗UUID齮鶋鶊黃rfc4122鸛鵽鵼齩鵻鵸鵷龬

http://www.rfc-editor.org/rfc/rfc4122.txt

麠齗鼻鵝RFC鼗龳龱鵕鵔齩黫麠齗鵐鵍鵌齮齩鵷龬

http://www.rfc-editor.org/errata_search.php?rfc=4122&eid=3546

UUID:

UUID黫龳龱鼗128麫鴻齮鴷鴵鴳16鵐鵍鴲齩齓龆鴱麶鶟鵐鴮齮鴫鸦龹鷼鷻齩鴩鸦鹋8-4-4-4-12

鴨鶊鵽鵼鹋龬'[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}'

麩龬34415db0-ed84-48e5-8aae-9d7e03bb45e9

鼻128麫鴻齮鴷鴵鴑鴍龳鴌齮鴩鸦齩黡鴋龳鴷鴇鵌鵽鵼麩鶔龬

time_low 龬4鵐鵍32鴷齩鷼鷻鹓鷶齮鶽鵐鴂

time_mid 龬2鵐鵍16鴷齩鷼鷻鹓鷶齮鸛鵐鴂

time_hi_and_version龬2鵐鵍16鴷齩麐4鴷鷼鷻uuid鴁鳿鳽鳻齮鳷麚鴳鵷齏鴲齩鷒鳳鴷鷼鷻鹓鷶齮鼞鵐鴂

clk_seq_hi_res龬1鵐鵍8鴷齩麐2鷟3鴷鷼鷻uuid鳷麚鳯鳮鴳鵷齏鴲齩鷒鳳鴷鷼鷻鹓龔鵌鳭鼞鵐鴂

clk_seq_low龬1鵐鵍8鴷齩鷼鷻鹓龔鵌鳭鶽鵐鴂

node龬6鵐鵍48鴷齩鷼鷻鸉鷶黜齮齈鹳齋齈

uuid齮龨黟鳫齮黫鳪鸛鳦鳣齩鼷鳢鳟鳝黜麌鼎黟鸺鶢黃鳛齅鹓鷶齁鼽齮uuid龒黫齍龳齮鴳鷏鳗黜黫鼴鼰鷇鷄鷀鷒鶽鴲齩黡黜鳓鶳齓龵鷟鼗60鴷龹鷼鷻鹓鷶齩鳏鳎黫100鳌龘鳈鹳齩鳫麐鼊鼈鼅鳆鵌鳅麵鳃鳎鼔鸫黃鳂龘鳈鹳齩黃鲾龳鼎黟鸺鶢黜鲾龳鳆鵌鶳齓龏鷲鼷鲼鼽鲸uuid黮黫鼷鲾齮鴳黃rfc4122鸎鳓黮鵽鵼鲷鲴鼞鲰鷄鲯鲮uuid齮鸍鸋鲭鲪鴲齩鷞鼻鸎鼗龳龱龰龯齩黟鸺鶢齮鹓鷶鶳鼵鼴鼰齩麫麩鼗黐龨鴍鲨鲦齏黈鲤鲡鹓鷶齩鼻鷤龳龹齁鼽鲞鲾uuid齮鲛鷄麂鳯鼔鲷齩鸃齓鲘鲔鹓龔鵌鳭鵐鴂鲐鼊鼻龱龰龯齩黃龠龝鹁鲏鳣鹓鹓龔鵌鳭鵐鴂鲍鲌黫龳龱黸鶢鲋齩鸍鸋鲷鹓鷶黜鶳鼵鲞鲾齮龰龯齩鲉鸍鸋鸉鷶黜鲞鲾齮龰龯齩node鼗48鴷齩鲅鳻齮齇鶳齓黫龦鲄齮MAC鱽鱺鱶IP鱽鱺鱶鱲鶢鱱鱶url鱯齩齍龳齋齈龳鼎龨鴍齮齋齈齩齓黒鱭鱫鸉鷶黜齮鼴鼰黕

鼗鹓鱨鸴鸰鼷鼵鲯鲮鷟鹓鷶鱦鱣龨鴍齋齈齩齆齂齅鲭鼺齩鶳齓鱠齽黸鶢龈齮鴫鸦齩齆齅麩鶓齈鹳齓鶓鶩鴫鸦鴁鳿齮uuid鼹鼻麂黫麐鷢齵鷟齮uuid鴁鳿鳽鳻鳷麚鵐鴂齮鱞齽齩齇鼗4鴷齩鳫麐鴌鱜鲷5鶩鴁鳿鴫鸦齩龦黜鱘鱗麩鶔龬

UUID Version 1龬鸯齗鹓鷶齮UUID

鸯齗鹓鷶齮UUID鹴鱒黟鸺麔麐鹓鷶鱏鱶黸鶢龈鷴鶢鼅MAC鱽鱺鶞鷟黕黂齗黃鸺鲪鸛鱍齽鲷MAC鱽鱺齩鼻龱鳷麚齮UUID鶳齓龏鷲黃麳鱋鱊鱇齮齍龳鸇黕鷞鱄黒鲾鹓齩鱍齽MAC鱽鱺黈鱂龹鶝麳鸇龰龯齩鼻麂黫鼻龱鳷麚UUID鰾鷟鰺鰹齮鱽鴫黕麩鰶鲍齽麤黫黃麯鰵龦鸛鱍齽齩黮鶳齓鱍齽鰱鳣齮鸺鲪齩齓IP鱽鱺龹鰯鰫MAC鱽鱺--Java齮UUID鰥鰥黫鼻鷤鷏鰣齮鴳麔鰟黮鶌鰛鲷鲯鲮MAC齮黧鳎鴲黕

UUID Version 2龬DCE鶝麳齮UUID

DCE鴳Distributed Computing Environment鴲鶝麳齮UUID鷴鸯齗鹓鷶齮UUID鸺鲪鲞鲾齩鷞黈鰔鹓鷶鱏齮麐4鴷鰒鰑鹋POSIX齮UID鱦GID黕鼻龱鳷麚齮UUID黃鷏鳗鸛鰉鰅齽鷟黕

UUID Version 3龬鸯齗鱱鵐齮UUID鴳MD5鴲

鸯齗鱱鵐齮UUID鹴鱒黟鸺鱱鵐鷴鱱鵐鸉鷶齮MD5鰁鳭鲋鶞鷟黕鼻龱鳷麚齮UUID龏鷲鲷龬鲞鲾鱱鵐鸉鷶鸛鼷鲾鱱鵐鼽鲸齮UUID齮齍龳鸇麅鼷鲾鱱鵐鸉鷶鸛齮UUID齮齍龳鸇麅鲞鲾鱱鵐鸉鷶鸛鲞鲾鱱鵐齮UUID鼴鼰鼽鲸黫鲞鲾齮黕

UUID Version 4龬黸鶢UUID

鰀鯾黸鶢龈齩鱦鱣鯽黸鶢龈鼽鲸UUID齩鷏鳗鸛鰥鰥鱍齽鯼鹰鯹黜齮鼕黸鶢龈鼽鲸鼅黕

UUID Version 5龬鸯齗鱱鵐齮UUID鴳SHA1鴲

鷴鳷麚3齮UUID鸺鲪鳽鯲齩麤黫鰁鳭鲋黟鸺鱍齽SHA1鴳Secure Hash Algorithm 1鴲鸺鲪黕

麐鷢鯯齵鷟clk_seq_hi_res鸛鼗鯭鷟鯬鴷齮鳷麚鳯鳮Variant鵐鴂齩齇黫鳛齅鷔鯩鼺鼹鶳齓麉鸍鹋uuid鵐鴂鸨麯齮鳷麚麥齩黃uuid鸛麳鯨鵐鴂鴷齮鯤鱜鯡黛黙齗鼻龱鵐鴂鲋齮龨鰒齩鲞麔齗黫uuid鶢鶟齮鳷麚麥齩齓黜鸍鯠齮鵐鴂鯤鱜鳫麐鴌鹋10齩麤齽鲷鯭龱鴷麅Variant鵐鴂齮鷒鯟鲋鱦鹋鲍黍鯜龹鳯鳣麖龏鯘齩鱦鹋鯕鯑鸇鶌鰛黕

鹴鱒黜鳓齮鯍鯊齩鯇鸹鴁鳿鳷麚齮4鴷鷴鳯鳮鵐鴂齮鯭鴷齩鯯鼗122鴷齩鼻黫龳龱黩鼔齮龈鵐鴳5齏鳓黲36龱鯄鴲齩龠龝齁鼽鲞鲾uuid齮鷇鷄黫鯃鯁鯃鯁鯀齮齩鼻龱黫龳龱鳛齅鷇鮼鼺齩鮺黉齮鶫龬

鸛鮹鮶鮵鮱齮鷇鷄黫鮮龄齦鮪龳鳈鹳齩龫龨龙龘鮦龳鮤鮹鮶齩龳鮣鮦10齮21鮟鴫鮜齩麳鯡鸛鮵鮱齩鶳鼵鼚鼽鼻鷤齮鮙鵸鼁鼹

鱦鱣1鮮鮕鼎黟鸺鶢齩龙鼎龙龘齁鼽1鮕龱uuid齩龒龑龳鮑鴱龆鮕鮜鮏黈鼴鼰

鼻鷤齮鷇鷄麂黫uuid鼴鼰齮鷇鷄齩黫鮋鼵鮉麋鶲鶱齮鶮鶷鶝鳦齮鮇鹋uuid鼵鮄龏鼷鼴鼰鼺鼹

drupal鸛齮uuid龬

黃drupal鸛鷏鳮齽鷟鲷uuid齩麩鰶龦鮁鶋魾鶑齮黩鼔鹓齩黈魻魺龈鯾魹齦鷼齦魹齩黒鹓uuid魸鱂龹魶魵齩龠龝鸛uuid黂齓齇魳鱱齮uuid鼊鼈齵魯齩麩鶔龬

鯑鼅鼊鼈id龬uuid

鳽龬Drupal\Component\Uuid\Php

鱍齽鴫鸦龬echo \Drupal::service("uuid")->generate();

鳆鵌鰯鹰鸍鯠麩鶔龬

class Php implements UuidInterface {
  public function generate() {
    // 使用密码级别的随机数生成器产生高质量随机性,将二进制转为16进制,$hex有32个字符
    $hex = bin2hex(Crypt::randomBytes(16));
    // 一个字节有两个十六进制字符,提取8个十六进制字符,4字节32位比特,表示时间低字段
    $time_low = substr($hex, 0, 8);
    //两字节表示时间中字段
    $time_mid = substr($hex, 8, 4);
    //此处字符4(不是数字)表示uuid创建版本为4,意指使用随机数生成,占用4比特位
    $time_hi_and_version = '4' . substr($hex, 13, 3);
    // 提取8比特位,并转换为十进制整数
    $clock_seq_hi_and_reserved = base_convert(substr($hex, 16, 2), 16, 10);
    //将前两位设置为0
    $clock_seq_hi_and_reserved &= 0b00111111;
    //将前两位设置为10
    $clock_seq_hi_and_reserved |= 0b10000000;
    //提取1字节(8位)做时钟序列低位
    $clock_seq_low = substr($hex, 18, 2);
    //余下的6字节48位作为设备标识
    $node = substr($hex, 20);
    //格式化输出
    $uuid = sprintf('%s-%s-%s-%02x%s-%s',
      $time_low, $time_mid, $time_hi_and_version,
      $clock_seq_hi_and_reserved, $clock_seq_low,
      $node
    );
    return $uuid;
  }
}

鶳齓龵魋uuid齮鴋鯬鴂齮鴋龳龱鵐鴮鲏魉鹋4齩黫麹鹋drupal鱍齽黸鶢龈齮鴫鸦龹鼽鲸uuid齩魇鷋鼗齽鷟鹓鷶黮鷋鼗齽鷟龨鴍齋齈齩鴋魃鴂齮鴋龳龱鵐鴮鹋鷨麶鶟10**鷼鷻齮鲋齩齆鰯鷼鳫麐uuid齮鳷麚鳽鳻

黃drupal鸛uuid黫齓鬾鸰鴫鸦齵魯齩鲾鹓鯯齵魯鲷鷒鯟鲛鶩鼽鲸鴫鸦齩鷞龒龑鬻鬸鼣鼠

麩鰶龒龑鬶鷲龳龱uuid鶳鱍齽龬

Drupal\Component\Uuid\Uuid:: isValid($uuid);

鬲鬱bool鲋齩鷼鷻黫鮋鴮鬭uuid齮鴻鬩黕

本书共83小节:

评论 (写第一个评论)