三九宝宝网宝宝百科宝宝知识

用java获得机器的唯一号

03月06日 编辑 39baobao.com

[幼儿园用纸盒制作机器人]纸盒机器人是很多小朋友喜欢的课堂。 活动目标: 1、在了解机器人的外形特征的基础上,尝试用纸盒等多种材料制作机器人。 2、喜欢动手制作玩具,体验创意制作的乐趣。 活动准备: 1...+阅读

一、上Google搜一下Mac及CPU ID的C代码

二、上java.sun.com找那个JNI的指南

三、你用二的方法把一的代码给包一下。

其实利用在java中的runtime来执行在win里面的ipconfig -all的命令可以实现的!!

java.lang.Process proc = Runtime.getRuntime().exec("ipconfig /all");

InputStream istr = proc.getInputStream();

byte[] data = new byte[1024];

istr.read(data);

netdata = new String(data);

分析其中的netdata就是那!,有关cpu的可以类同实现!

如何在高并发分布式系统中生成全局唯一Id

1、 使用数据库自增Id

优势:编码简单,无需考虑记录唯一标识的问题。

缺陷:

1) 在大表做水平分表时,就不能使用自增Id,因为Insert的记录插入到哪个分表依分表规则判定决定,若是自增Id,各个分表中Id就会重复,在做查询、删除时就会有异常。

2) 在对表进行高并发单记录插入时需要加入事物机制,否则会出现Id重复的问题。

3) 在业务上操作父、子表(即关联表)插入时,需要在插入数据库之前获取max(id)用于标识父表和子表关系,若存在并发获取max(id)的情况,max(id)会同时被别的线程获取到。

4) 等等。

结论:适合小应用,无需分表,没有高并发性能要求。

2、 单独开一个数据库,获取全局唯一的自增序列号或各表的MaxId

1) 使用自增序列号表

专门一个数据库,生成序列号。开启事物,每次操作插入时,先将数据插入到序列表并返回自增序列号用于做为唯一Id进行业务数据插入。

注意:需要定期清理序列表的数据以保证获取序列号的效率;插入序列表记录时要开启事物。

使用此方案的问题是:每次的查询序列号是一个性能损耗;如果这个序列号列暴了,那就杯具了,你不知道哪个表使用了哪个序列,所以就必须换另一种唯一Id方式如GUID。

2) 使用MaxId表存储各表的MaxId值

专门一个数据库,记录各个表的MaxId值,建一个存储过程来取Id,逻辑大致为:开启事物,对于在表中不存在记录,直接返回一个默认值为1的键值,同时插入该条记录到table_key表中。而对于已存在的记录,key值直接在原来的key基础上加1更新到MaxId表中并返回key。

使用此方案的问题是:每次的查询MaxId是一个性能损耗;不过不会像自增序列表那么容易列暴掉,因为是摆表进行划分的。

详细可参考:《使用MaxId表存储各表的MaxId值,以获取全局唯一Id》

我截取此文中的sql语法如下:

第一步:创建表

create table table_key

(

table_name varchar(50) not null primary key,

key_value int not null

)

第二步:创建存储过程来取自增ID

create procedure up_get_table_key

(

table_name varchar(50),

key_value int output

)

as

begin

begin tran

declare key int

--initialize the key with 1

set key=1

--whether the specified table is exist

if not exists(select table_name from table_key where table_name=table_name)

begin

insert into table_key values(table_name,key) --default key vlaue:1

end

-- step increase

else

begin

select key=key_value from table_key with (nolock) where table_name=table_name

set key=key+1

--update the key value by table name

update table_key set key_value=key where table_name=table_name

end

--set ouput value

set key_value=key

--commit tran

commit tran

if error>0

rollback tran

end

感谢园友的好建议:

java怎么生成类似的树状ID如1111

package com.huawei.test; public class JunitTest { private static String EMPTY = ""; public static void main(String[] args) { //测试 System.out.println(IdBuilder(1, "_", 10)); } /** * id构建 * param id 需要定制的ID * param separator 分割符 * param layer 层数 * return 生成的ID */ public static String IdBuilder(int id, String separator, int layer) { StringBuilder sb = new StringBuilder(); for (int i = 1; i

以下为关联文档:

java反汇编工具怎么用java class反编译工具JODE使用方式如下: 1.JODE是一个可运行的JAR文件,在windows环境下双击即可运行。 2.JODE不是通过常规的Open->File的方式来加载JAVA编译后的类文件(*.clas...

怎么用java导出word文档java导出word大致有6种解决方案: 1:Jacob是Java-COM Bridge的缩写,它在Java与微软的COM组件之间构建一座桥梁。使用Jacob自带的DLL动态链接库,并通过JNI的方式实现了在Java平台...

关于用Java生成word文档的问题/* * To change this template, choose Tools | Templates * and open the template in the editor. * * Created on 2009-7-11, 10:54:59 */ package newpackage1; import...

机器人等级考试将来有什么用1、中小学升级考试:浙江、江苏、重庆、深圳、北京、上海等经济发达省市,已将机器人技术纳入特长生招生范围。 2、教育部在2018年1月16日公布高中新课标,编程、机器人、人工智能...

公众号助手有什么用方法/步骤 1 微信公众号助手主要作用:微信公众平台无法在手机上面登陆,那么如何用手机通过微信公众平台群发消息呢?这就需要通过微信公众号助手,绑定私人账号后,即可通过手机向公...

用马克笔画动漫人物的脸用多少号色阴影用多少号皮肤偏白黄的角色大概用130多色吧,好像是,我记得我画的时候好像用的是133还是131来着?你就你就找那种看起来像肉色的那种颜色,好像30几号也可以,你干涂在脸上,你觉得颜色比较深,看起来不是很舒服,但...

java反射机制有什么用增加程序的灵活性。 如struts中。请求的派发控制。 当请求来到时。struts通过查询配置文件。找到该请求对应的action。已经方法。 然后通过反射实例化action。并调用响应met...

素描入门各型号铅笔怎么用一、有关素描使用的铅笔正确的选择以及使用方式解释如下: 素描铅笔,不同于一般的铅笔,一般素描铅笔从4H一直到了8B,有的铅笔厂家生产的有的到了10B,对于这个,我们不需要管它到多少...

java中内部类该何时用怎么用java中内部类该何时用怎么用,什么时候该使用内部类及使用内部类的好处:1.在一个类内部还存在另一个类,则后者为内部类; 2.内部类可声明成public或private,当内部类声明成public或...

推荐阅读
图文推荐