Laravel --實戰篇 UUID(唯一識別碼)
前言 : 一般的唯一識別id都是各種時間戳、毫秒級時間戳加php內建函式或者加上隨機數等手段來生成的。 下面給大家介紹一個元件,也是我在各個實戰專案中必不可少的一個元件,ramsey/uuid。
一、ramsey/uuid的實現方式
● 機器hash(防止多臺機器之間ID衝突)
● 程式ID(防止多程式衝突)
● 時間戳(秒)
● 自增值(同一秒內自增)該方法號稱是1000年以內不會出現重複資料的一種演算法id(具體情況是不是這樣,博主也無從得知,沒有用那麼大的資料量去特意做個測試).
二、適用場景
為什麼說我在每個專案中基本上都用到這個組建呢,記得博主當初剛剛步入程式設計師的時候經常為各個表的自增id的關聯查詢而頭疼 什麼uid 、tuid 、 suid ....後來使用唯一識別id後大大減輕了這種負擔。
1.使用者唯一識別id
2.多商家時 產品唯一識別id
3.訂單號
4.多表時的唯一識別id
還有很多不做一一列舉...
三、使用方法
在Laravel的根目錄中執行:
composer require ramsey/uuid
最簡單直接的引入方法
// 名稱空間
use Ramsey\Uuid\Uuid;
$data = Uuid::uuid1();
$str = $data->getHex(); //32位字串方法
dd($str);
那麼他可以獲取多少種資料型別呢?Uuid獲取出來是這樣的
array(
'string' => '6ba7b810-9dad-11d1-80b4-00c04fd430c8',
'curly' => '{6ba7b810-9dad-11d1-80b4-00c04fd430c8}',
'hex' => '6ba7b8109dad11d180b400c04fd430c8',
'bytes' => 'a6e4EJ2tEdGAtADAT9QwyA==',
'int' => '143098242404177361603877621312831893704',
'fields' => array(
'time_low' => '6ba7b810',
'time_mid' => '9dad',
'time_hi_and_version' => '11d1',
'clock_seq_hi_and_reserved' => '80',
'clock_seq_low' => 'b4',
'node' => '00c04fd430c8',
),
'urn' => 'urn:uuid:6ba7b810-9dad-11d1-80b4-00c04fd430c8',
'time' => '1d19dad6ba7b810',
'clock_seq' => '00b4',
'variant' => Uuid::RFC_4122,
'version' => 1,
),
裡面的各種長度可以自定義獲取。另外Uuid的靜態方法有多少呢?在底部簡主會引入原文作者的筆記,方法很多,到目前為止我都沒有用完。 但是簡主經常用的就是:
$data = Uuid::uuid1();
$data = Uuid::uuid2();
$data = Uuid::uuid3();
$data = Uuid::uuid4();
//括號裡面也可以根據具體業務新增引數
$data = Uuid::uuid1('123123123');
$data = Uuid::uuid1(time());
...
...
如果用在使用者身上,基本上每個使用者從註冊開始就相當於繫結了一個身份證(形容是不是很形象)
下面引入原文作者ramsey的原文筆記連結 大概快1900行的程式碼筆記。
原文筆記
相關文章
- iOS專案開發實戰——獲取當前的UUID(通用唯一識別碼)iOSUI
- js如何生成唯一識別符號UUIDJS符號UI
- python之uuid通用唯一識別符號模組PythonUI符號
- Android開發 - UUID 類通用唯一識別符號解析AndroidUI符號
- Android 唯一識別碼Android
- 【iOS】使用UUID+KeyChain記錄裝置唯一標識iOSUIAI
- KNN 演算法-實戰篇-如何識別手寫數字KNN演算法
- laravel 佇列之Homestead(ubuntu)下laravel使用RabbitMQ——實戰篇Laravel佇列UbuntuMQ
- Java 實現的SnowFlake生成UUID (Java程式碼實戰-007)JavaUI
- 開發中常用工具 - 獲取裝置的唯一標識、UDID、UUID、keychain儲存UUID、判斷網路型別等UIAI型別
- 探尋UUID的起源與奧秘:從時間戳到唯一標識UI時間戳
- iOS獲取手機唯一識別符號來判斷不同終端登入(IDFA和UUID分析)iOS符號UI
- Laravel-生成唯一固定長度邀請碼Laravel
- 『等冪和唯一解定理(唯一解陣列解碼篇)』陣列
- 機器學習實戰-SVM模型實現人臉識別機器學習模型
- 人臉識別檢測專案實戰
- 實戰四:手把手教你實現數字識別
- PaddlePaddle車牌識別實戰和心得
- NLP專案實戰02:英文文字識別
- 鴻蒙專案實戰(六):識別本地圖片鴻蒙地圖
- 實戰 | 基於深度學習模型VGG的影象識別(附程式碼)深度學習模型
- 獲取Android裝置唯一標識碼Android
- UI2CODE智慧生成程式碼——元件識別篇UI元件
- MySQL實戰45講——普通索引和唯一索引MySql索引
- 人工智慧之演算法知識與實戰篇人工智慧演算法
- iOS怎樣獲取裝置唯一識別符號iOS符號
- Python實戰:截圖識別文字,過萬使用量版本!(附原始碼!!)Python原始碼
- 【實戰】基於OpenCV的水錶字元識別(OCR)OpenCV字元
- TensorFlow 2.0 程式碼實戰專欄開篇
- DNA甲基化實戰分析-----bismark 程式碼篇
- C#人臉識別入門篇-STEP BY STEP人臉識別--入門篇C#
- Laravel —— 服務注入實戰案例Laravel
- laravel 實戰延遲解鎖Laravel
- Sentinel 實戰-限流篇
- python:實戰篇Python
- oracle的long型別欄位的應用-- 實戰篇Oracle型別
- 實戰篇——CSRF漏洞pikachu靶場實戰
- 實戰篇——SQL隱碼攻擊sqli-labs-master靶場實戰三SQLAST