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