我需要在Java中生成一个唯一的10位数ID.以下是此ID的限制:
我到目前为止找到的最佳解决方案如下:
private static int inc = 0;
private static long getId(){
long id = Long.parseLong(String.valueOf(System.currentTimeMillis())
.substring(1,10)
.concat(String.valueOf(inc)));
inc = (inc+1)%10;
return id;
}
Run Code Online (Sandbox Code Playgroud)
该解决方案存在以下问题:
是否有其他解决方案来创建此ID?
我没想到的任何其他问题?
谢谢你的帮助,
我正在尝试从我的eclipse创建一个jar,为了能够使用外部.jars,我在类路径中使用这个带有多个.jars的清单:
Manifest-Version: 1.0
Sealed: true
Main-Class: src.BatchTester
Class-Path: . P:/Tools/xstream/1.4.2/lib/kxml2-2.3.0.jar P:/Tools/xstream/1.4.2/lib/xstream-1.4.2.jar P:/Tools/StringTemplate/4.0.5/lib/antlr-3.3-complete.jar P:/Tools/StringTemplate/4.0.5/lib/ST-4.0.5.jar P:/Tools/Jdbc/lib/sqljdbc4.jar
Run Code Online (Sandbox Code Playgroud)
显然,如果我没有将库放在类路径中,则会出现以下错误:
java.lang.NoClassDefFoundError: com/thoughtworks/xstream/XStream
Run Code Online (Sandbox Code Playgroud)
但是当我把它们放在类路径中时,错误会变为:
java.lang.NoClassDefFoundError: src/BatchTester
Run Code Online (Sandbox Code Playgroud)
因此,它无法找到我的主要课程.我在类路径中.尝试了几种可能性,比如添加或删除类路径,但无法使其工作.
知道怎么解决这个???
感谢您的时间和精力,
PS:创建.jar之后,清单里面的类路径看起来像:
Class-Path: . P:/Tools/xstream/1.4.2/lib/kxml2-2.3.0.jar P:/Tools/xstr
eam/1.4.2/lib/xstream-1.4.2.jar P:/Tools/StringTemplate/4.0.5/lib/ant
lr-3.3-complete.jar P:/Tools/StringTemplate/4.0.5/lib/ST-4.0.5.jar P:
/Tools/Jdbc/lib/sqljdbc4.jar
Run Code Online (Sandbox Code Playgroud)
使用新的线条和空格,但即使将其更改为"正确"格式,我也遇到了同样的问题.
PS2:我知道有一些像Fat-Jar这样的插件你可以使它工作,但我不想在我的.jar中插入超过需要的数据
我发现我的Java应用程序出现舍入错误.用于舍入的方法是:
public static double round(double value,double precision)
{
return Math.round(value * precision) / precision;
}
Run Code Online (Sandbox Code Playgroud)
这可能有一个错误(即圆形(138.515,100)应返回138.52,并返回138.51)所以我创建了以下圆形:
// Mikeldi's rounder
public static double round2DecimalPlaces(double value,int decimalPlaces)
{
int s = value<0?-1:1;
double p = 1;
for (int i = 0; i < decimalPlaces; i++) {
p*=10;
}
double n = (long) value;
double d = ((value*10*p)-(n*10*p));
d +=s*5;
d /= 10;
d = (long)d;
d /= p;
return d+n;
}
Run Code Online (Sandbox Code Playgroud)
我创建了这种方法,因为其他舍入方法给系统增加了太多的延迟(低延迟系统).这个比前一个快了大约10倍.
注意:此轮组仅用于舍入到正确的decimalPlaces(或0).
这个新的圆领我有没有看到任何问题?
谢谢,