1、涉及到的表結構
create table `int_item_identity` (2、redis 依賴包`id` int(11) not null auto_increment comment 'id',
`name` varchar(255) not null comment '名稱',
`alias` varchar(255) not null comment '別名',
`rule` varchar(255) not null comment '字首prefix',
`length` bigint(20) not null comment '長度',
`init_value` bigint(20) not null comment '初始值',
`cur_value` bigint(20) not null comment '當前值',
`max_value` bigint(20) not null comment '最大值',
`step` int(5) not null comment '步長,每次加的長度',
`version` int(5) not null comment '版本號',
primary key (`id`) using btree
) engine=innodb auto_increment=46 default charset=utf8 row_format=dynamic comment='自定義編碼範圍';
org.springframework.boot
spring-boot-starter-data-redis
2.1.3.release
3、 簡要的**塊
@slf4j
/*** 主鍵
*/private final static string int_item_identity,
key_format,
max_id_format,
data,
value,
empty_string;
/*** 靜態**塊
*/static
/*** 通用的查詢
*/@autowired
/*** 通用的查詢
*/@autowired
/*** redis 字串操作
*/@autowired
private redisstringclient redisstringclient;
/*** redis set操作
*/@autowired
private redisclient redisclient;
/*** 自定義編碼範圍
*/@autowired
private identityservice identityservice;
/*** 傳送簡訊
*/@autowired
private intmessagesendservice messagesendservice;
/*** 獲取編碼,這個繼承這個,傳泛型
* * @return 返回 編碼
*/protected string getcode()
/*** 獲取編碼,這個繼承這個,傳泛型
* * @param prefix 字首
* @return 返回 編碼
*/protected string getcode(string prefix)
/*** 獲取編碼,按照傳的表名和主鍵
* * @param tablename 表名
* @param primarykey 主鍵名稱
* @param prefix 字首
* @return 返回編碼
*/protected string getcode(string tablename, string primarykey, string prefix)
assert.notnull(tablename, "表名不能為空");
intitemidentity intitemidentity = getintitemidentity(tablename);
assert.notnull(intitemidentity, "編碼關係沒有配置");
if (stringutils.isblank(prefix))
// 獲取最大值
string maxid = getmaxid(tablename, primarykey, prefix, intitemidentity);
//設定子執行緒共享
servletrequestattributes servletrequestattributes = (servletrequestattributes) requestcontextholder.getrequestattributes();
if (servletrequestattributes != null)
return maxid;
} /**
* 獲取 泛型精確型別
*/protected class<?> getactualtype()
/*** 獲取 泛型精確型別
* * @param supertype 類
* @return 返回泛型物件
*/protected class<?> getactualtype(type supertype)
return (class<?>) type;
} return null;
} // --- 私有方法 ---
/*** 獲取實體類的表名
*/private string gettablename()
return ((table) annotation).name();
} /**
* 獲取表的主鍵
*/private string getprimarykey()
field fields = type.getdeclaredfields();
for (field field : fields)
column column = field.getannotation(column.class);
if (column == null)
return column.name();
} return null;
} /**
* 獲取最大的id
* * @param tablename 表名
* @param primarykey 主鍵名稱
* @param prefix 字首
* @param intitemidentity 實體物件
* @return 返回 最大id
*/private string getmaxid(string tablename, string primarykey, string prefix, intitemidentity intitemidentity) catch (exception e) ", e);
maxid = exceptionhandle(key, primarykey, tablename, prefix);
} if (redismaxid == null || intitemidentity.getcurvalue() == null
|| redismaxid <= intitemidentity.getcurvalue())
return maxid;
} /**
* 異常處理
* * @param key key
* @param primarykey 主鍵的字段
* @param tablename 表名
* @param prefix 字首
* @return 返回最大值
*/private string exceptionhandle(string key, string primarykey, string tablename, string prefix)
assert.notnull(primarykey, "表主鍵不能為空");
try catch (exception e) ", e);
} return maxid;
} /**
* 獲取 intitemidentity
* * @param tablename 表名
* @return 返回 intitemidentity
*/private intitemidentity getintitemidentity(string tablename) catch (exception e) ", e);
} if (intitemidentity == null) else
} catch (exception e) ", e);
}} return intitemidentity;
}}
生成唯一碼
根據年月日 隨機數獲取19位的資料序列 public static long getrandomid 根據年月日 隨機數獲取19位的資料序列 public static long gethashcodeid var num 19 s.length var f datetime.now.tostrin...
python 基於 uuid 生成唯一碼
一 概述 uuid是128位的全域性唯一識別符號,通常由32位元組的字串表示。它可以保證時間和空間的唯一性,也稱為guid,全稱為 uuid universally unique identifier python 中叫 uuid guid globally unique identifier c ...
獲取裝置唯一碼
有些企業內部程式需要對訪問程式的真機做白名單限制,對於裝置唯一碼,蘋果做出了如下限制 1.從ios7之後,獲取mac位址會返回固定值 02 00 00 00 00 00 2.試圖獲取udid 裝置唯一碼 的程式不會通過蘋果的審核。我們可以在程式第一次啟動時生成這個id並儲存起來,但是,如果使用者刪除...