'准确'和'准确'之间有什么区别?
如果有差异,你能给出一个例子
谢谢!
我正在编写需要微秒分辨率或更好的时间戳的软件.
我打算System.currentTimeMillis结合System.nanoTime这种方式使用,虽然它只是一个粗略的代码草图:
private static final long absoluteTime = (System.currentTimeMillis() * 1000 * 1000);
private static final long relativeTime = System.nanoTime();
public long getTime()
{
final long delta = System.nanoTime() - relativeTime;
if (delta < 0) throw new IllegalStateException("time delta is negative");
return absoluteTime + delta;
}
Run Code Online (Sandbox Code Playgroud)
文档nanoTime说:
这种方法提供纳秒级精度,但不一定是纳秒级分辨率(即,值的变化频率) - 除了分辨率至少与分辨率一样好之外,不做任何保证
currentTimeMillis().
所以它没有给我们任何优于毫秒的分辨率保证.
更深入一点nanoTime(在可预见的本地方法下):
Windows使用的QueryPerformanceCounterAPI承诺分辨率小于1微秒,这很棒.
Linux使用clock_gettime带有标志来确保值是单调的,但不会对解决方案做出任何承诺.
Solaris类似于Linux
该消息来源没有提到OSX或基于Unix的操作系统如何处理这个问题.
(来源)
我已经看到了一些模糊的暗示,它将" 通常 "具有微秒分辨率,例如另一个问题的答案: …
假设有一个布尔变量,最初赋值false.有没有办法说,让这个变量true在接下来的5分钟内然后让它false再次出现?
我目前的想法是我可以将变量与时间戳一起存储,然后一旦变量转到true,时间戳设置为当前时间,然后通过一个方法检查变量的值,true如果当前时间和初始时间戳形成持续时间小于5分钟,然后false持续时间大于5分钟.我正在考虑从一个隐式转换Boolean到一个RichBoolean通过一个优雅的方法名称来处理这个机制的东西.
是否有更优雅或Scala本地方式这样做?