import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends Activity implements OnClickListener {
private TextView tv;
private Button button1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button1 = (Button) findViewById(R.id.button1);
tv = (TextView) findViewById(R.id.tv);
button1.setOnClickListener(this);
UUID
uuid
=
UUID
.random
UUID
();
tv.setText(
uuid
.toString());
@Override
public void onClick(View v) {
UUID
uuid
=
UUID
.random
UUID
();
tv.setText(
uuid
.toString());
主管提出一个想法,把
uuid
改造成数值型的,并且让同一个公司的数据id更相近,一是节省了空间,二是tidb需要数值型id来分库分表,而且同一家公司的数据id更接近或许能提高查询效率吧,大概。
公司使用两个字节的数值型 256*256,就是说最多有65536家公司,一般来说是够用了。然后其他数据的id则使用八个字节。
从二进制的结构来说,前两个字节保存公司id,中间四个字节保存时间的秒数,后两个...
调用对方接口保存数据的时候发现对方的Id为
UUID
,我方Id为Long,所以就把
UUID
转换成了
数字
public Long getId(String
UUID
){
Integer userId=
uuid
.toString().hashCode();
userId= userId< 0 ? -userId: userId; //String.hashCode()可能会是负数,如果为负数需要转换为正数
return Long.valueOf(S
* 生成随机数
* GUID: 即Globally Unique Identifier(全球唯一标识符) 也称作
UUID
(Universally Unique
* IDentifier) 。
* 所以GUID就是
UUID
。
* GUID是一个128位长的
数字
,一般用16进制表示。
下载完成后再页面中引入v4方法,其他的也行,看个人 需求,
uuid
生成的是类似xxx-xxx-xxx格式的一串字符串,所以先用BigInt()函数转换为
数字
(用这个而不用parseInt()是转换的
数字
太大),用正则把‘-’去除后转为字符串再提取你想要的长度就行了。(0x代表的是16进制,v4生成的
uuid
就是在16进制里随机取得字母和
数字
)其他方式也行,比如CDN引入之类的。使用
uuid
首先要下载。
UUID
自动生成纯
数字
代码展示如下:
Integer
uuid
=
UUID
.random
UUID
().toString().replaceAll("-","").hashCode();
uuid
=
uuid
< 0 ? -
uuid
:
uuid
;//String.hashCode() 值会为空
如果不需要纯
数字
可把Integer换成String ,末尾去掉hashCode()即可,也就不需要判断了。
public static String get
UUID
(){
return
UUID
.random
UUID
().toString().replace("-","");
public static Integer get
UUID
InOrderId(){
for (int i = 0; i<100; i++){
Integer orderId=
UUID
.random
UUID
().toString().hashCode();
orderId = orderId < 0