在開發過程中,我們資料表一般都使用自增數字作為id主鍵,而id是數字型,不容易理解。我們把id按一定格式轉為編號後,很容易根據編號知道代表的是什麼內容。
例如訂單表id=20160111197681234,只看id我們並不知道這個id是訂單表的id,而轉為編號o-20160111197681234,則很容易看出是訂單表的記錄,然後可以根據id在訂單表中搜尋。
編號建立的規則
1.唯一
使用自增id生成,保證唯一性
2.盡可能短
可使用數字求餘對應字母的方式處理,建立較短的編號
演算法原理
1.加自定義字首,用於標識
2.格式使用字首+字母+數字組成,數字只保留n位,超過的使用數字求餘的方式使用字母對應
例如:
id=1
字首=f
數字保留3位
則建立的編號為:f-a-001
**如下:
idcode.class.php
<?php
/*** php 根據自增id建立唯一編號類
* date: 2016-11-27
* author: fdipzone
* ver: 1.0
** func
* public create 建立編號
*/class idcode
if($word=='')
// 生成數字部分
$mod = $id % $base;
$digital = str_pad($mod, $num_length, 0, str_pad_left);
$code = sprintf('%s-%s-%s', $prefix, $word, $digital);
return $code;
}} // class end
?>
demo.php
<?php
require 'idcode.class.php';
$test_ids = array(1,9,10,99,100,999,1000,1009,2099,3999,9999,14999,99999);
foreach($test_ids as $test_id)
?>
輸出:1 = f-a-001
9 = f-a-009
10 = f-a-010
99 = f-a-099
100 = f-a-100
999 = f-a-999
1000 = f-b-000
1009 = f-b-009
2099 = f-c-099
3999 = f-d-999
9999 = f-j-999
14999 = f-o-999
99999 = f-vd-999
php 根據自增id建立唯一編號類
在開發過程中,我們資料表一般都使用自增數字作為id主鍵,而id是數字型,不容易理解。我們把id按一定格式轉為編號後,很容易根據編號知道代表的是程式設計客棧什麼內容。例如訂單表id 20160111197681234,只看id我們並不知道這個id是訂單表的id,而轉為編號o 2016011119768...
分布式唯一ID自增(雪花演算法)
public class idworker if datacenterid maxdatacenterid datacenterid 0 this.workerid workerid this.datacenterid datacenterid methods 獲得下乙個id 該方法是執行緒安全的 ...
Spark中便捷生成全域性唯一自增ID
利用spark rdd api所提供的的zipwithindex 和 zipwithuniqueid 生成id,兩者的區別如下。zipwithindex 首先基於分割槽索引排序,然後是每個分割槽中的項的排序。所以第乙個分割槽中的第一項得到索引0,第二個分割槽的起始值是第乙個分割槽的最大值。從0開始。...