Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Dao操作中的时间戳毫秒区分_Java_Mysql_Timestamp - Fatal编程技术网

Java Dao操作中的时间戳毫秒区分

Java Dao操作中的时间戳毫秒区分,java,mysql,timestamp,Java,Mysql,Timestamp,我有一个非常简单的dao操作,它工作得非常好(JUnit测试的一部分): for(int i=0;i

我有一个非常简单的dao操作,它工作得非常好(JUnit测试的一部分):

for(int i=0;i<5000;i++)
saveUser(lUser,newdate().getTime());
第二个参数是作为long值的时间戳。我测试了一种批量保存

我的问题是:从理论上讲,我的数据库(mysql)中有两个具有相同长值的条目吗在同样的过程中

在关系中的第一眼看到每个entrie的不同长值(至少最后一毫秒增加)

提前Thx


Stefan

是的,这是可能的,特别是如果您有一个快速硬件,并且两个保存操作同时完成。然后,两个创建的条目将具有相同的长值。

是的,这是可能的,特别是如果您有一个快速硬件,并且两个保存操作同时完成。然后,两个创建的条目将具有相同的长值。

是的,这是可能的,特别是如果您有一个快速硬件,并且两个保存操作同时完成。然后,两个创建的条目将具有相同的长值。

是的,这是可能的,特别是如果您有一个快速硬件,并且两个保存操作同时完成。然后,两个创建的条目将具有相同的长值。

您不能保证
new Date()
会准确地给出当前时间。通常情况下,它可能会在10毫秒左右出错。调用
newdate()
使用
System.currentTimeMillis()
currentTimeMillis()的Javadoc表示

以毫秒为单位返回当前时间。请注意,虽然返回值的时间单位为毫秒,但值的粒度取决于底层操作系统,可能更大。例如,许多操作系统以几十毫秒为单位测量时间

所以它依赖于操作系统。根据我的经验,Windows在提供准确日期方面尤其糟糕


当然,您不能保证连续调用
new Date()

会得到不同的日期。您不能保证
new Date()
会准确地给出当前时间。通常情况下,它可能会在10毫秒左右出错。调用
newdate()
使用
System.currentTimeMillis()
currentTimeMillis()的Javadoc表示

以毫秒为单位返回当前时间。请注意,虽然返回值的时间单位为毫秒,但值的粒度取决于底层操作系统,可能更大。例如,许多操作系统以几十毫秒为单位测量时间

所以它依赖于操作系统。根据我的经验,Windows在提供准确日期方面尤其糟糕


当然,您不能保证连续调用
new Date()

会得到不同的日期。您不能保证
new Date()
会准确地给出当前时间。通常情况下,它可能会在10毫秒左右出错。调用
newdate()
使用
System.currentTimeMillis()
currentTimeMillis()的Javadoc表示

以毫秒为单位返回当前时间。请注意,虽然返回值的时间单位为毫秒,但值的粒度取决于底层操作系统,可能更大。例如,许多操作系统以几十毫秒为单位测量时间

所以它依赖于操作系统。根据我的经验,Windows在提供准确日期方面尤其糟糕


当然,您不能保证连续调用
new Date()

会得到不同的日期。您不能保证
new Date()
会准确地给出当前时间。通常情况下,它可能会在10毫秒左右出错。调用
newdate()
使用
System.currentTimeMillis()
currentTimeMillis()的Javadoc表示

以毫秒为单位返回当前时间。请注意,虽然返回值的时间单位为毫秒,但值的粒度取决于底层操作系统,可能更大。例如,许多操作系统以几十毫秒为单位测量时间

所以它依赖于操作系统。根据我的经验,Windows在提供准确日期方面尤其糟糕


当然,您也不能保证连续调用
new Date()

会得到不同的日期。我认为,自UNIX时代以来,毫秒仍然是以合理准确的方式测量时间的最佳方式。然而,将时间戳仅仅作为主键并不太好。只要你有一个唯一的主键,你就不需要唯一的时间戳

如果出于某种原因,您仍然希望时间戳是唯一的,您可以应用“人工涂抹”。例如:

long last = 0;
for (int i = 0 ; i < 5000 ; i++) {
   long now = new Date().getTime();
   if (now <= last) {
      now = last + 1;
   }
   last = now;
   mUserDao.saveUser(lUser, now);
}
long last=0;
对于(int i=0;i<5000;i++){
long now=new Date().getTime();

如果(现在我认为从UNIX纪元开始的毫秒仍然是以合理准确的方式测量时间的最佳方式。但是,将时间戳仅作为主键并不太好。只要您有唯一的主键,就不需要唯一的时间戳

如果出于某种原因,您仍然希望时间戳是唯一的,您可以应用“人工涂抹”。例如:

long last = 0;
for (int i = 0 ; i < 5000 ; i++) {
   long now = new Date().getTime();
   if (now <= last) {
      now = last + 1;
   }
   last = now;
   mUserDao.saveUser(lUser, now);
}
long last=0;
对于(int i=0;i<5000;i++){
long now=new Date().getTime();

如果(现在我认为从UNIX纪元开始的毫秒仍然是以合理准确的方式测量时间的最佳方式。但是,将时间戳仅作为主键并不太好。只要您有唯一的主键,就不需要唯一的时间戳

如果出于某种原因,您仍然希望时间戳是唯一的,您可以应用“人工涂抹”