- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试将 Java 8 中的高数据速率 UDP 流接口(interface)模拟器/测试器写入具有非常准确的时间处理器卡的实时机器。每条消息都有一个时间字段,该字段以微秒为单位。该接口(interface)依赖于高分辨率时间处理器来进行数据包排序。该界面依赖于我没有的高精度时间卡,需要从等式中模拟。我想我可以使用这样的东西来逃避:
TimeUnit.MILLISECONDS.toMicros(System.currentTimeMillis());
它确实有效,但在运行了很长一段时间后,我发现 UDP 对我不利,因为我发送了几百个具有相同确切时间戳的乱序数据包,而接口(interface)的另一端无法分辨出它发送的数据包收到的东西有问题。接口(interface)在一定程度上可以容忍这种情况,但这在具有高精度时钟的真实系统上并不是真正的问题。
为了缓解这种情况,我在 currentTimeMillis() 中添加了一种合成微秒的感觉,如下所示:
class TimeFactory {
private long prev;
private long incr;
public long now() {
final long now = TimeUnit.MILLISECONDS.toMicros(System.currentTimeMillis());
long synthNow = now;
if(now == prev) {
if(incr < 999) {
incr += 1;
}
synthNow += incr;
} else {
incr = 0;
}
prev = now;
return synthNow;
}
}
有没有人像这样处理过合成时间?有没有其他方法可以收紧这段代码,或者有更好的方法来处理这个问题(以某种方式使用 nanoTime)?如果我确实发送了超过 999 个数据包,将其递增到毫秒范围内是否安全(即:递增 + 1000 或更多)?看起来我在 currentTimeMillis() 调用之间有大约 10-15 毫秒的差异,但我确信这非常依赖于系统。
最佳答案
如果有人对此感兴趣,我最终解决了缺少高分辨率系统时钟的问题。它会给我一个合成微秒计数器,该计数器会递增,直到 System.currentTimeMillis() 返回更新值或您调用了 999 次。在实践中,我最多只看到 ~500 增量。看起来我不会担心溢出到毫秒范围内。
我仍然愿意接受其他更现实的结果替代方案。
public class SyntheticMicrosClock extends Clock {
private final ZoneId zone;
private long prev;
private long incr;
SyntheticMicrosClock (ZoneId zone) {
this.zone = zone;
}
@Override
public ZoneId getZone() {
return zone;
}
@Override
public Clock withZone(ZoneId zone) {
if (zone.equals(this.zone)) { // intentional NPE
return this;
}
return new SyntheticMicrosClock(zone);
}
public long micros() {
final long now = TimeUnit.MILLISECONDS.toMicros(millis());
long synthNow = now;
if(now == prev) {
if(incr < 999) {
incr += 1;
}
synthNow += incr;
} else {
incr = 0;
}
prev = now;
return synthNow;
}
@Override
public long millis() {
return System.currentTimeMillis();
}
@Override
public Instant instant() {
return Instant.ofEpochSecond(0, micros());
}
}
为了使用它,我在需要的地方注入(inject)了我的合成时钟。例如:
Clock synthClock = Inject or new SynthClock(ZoneOffset.UTC);
Instant.now(synthClock);
关于java - 将人类时间与计算机时间结合成合成时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23973097/
有没有一种方法(程序、库)可以大致了解文档是用哪种语言编写的? 我有一堆混合语言的文本文档(~500K),需要导入支持 i18n 的 CMS (Drupal).. 我不需要完美的匹配,只需要一些猜测。
Closed. This question needs details or clarity。它当前不接受答案。
使用 UTF-8 编码。 (Multiple languages in one HTML page)。 跨不同浏览器(包括 iPad 上的 Safari)在单个网页上正确显示多种人类语言的最佳做法是什
我有一个完全可用的代码,它是为 Windows 编写的,是用 Visual Studio 构建的。 我想做的是为该软件添加另一种语言。我的想法是在窗口角落放置两个标志(一个英语和一个德语),并在用户点
我刚刚得到一个脚本,我想对其进行一些更改,我正在寻找某人为我开发一份自由职业,以使我将提供的加载字符串可读以进行编辑。 Lua代码是这样的: ------------------------- ENG
有没有不是简单逐字翻译的语言翻译项目?一个具有先进算法/设计的? 目前主流和流行的翻译软件,例如谷歌翻译,似乎是查找一个词或一组连续的词,然后将其直接翻译成不知何故确定为最佳匹配的内容。但是因为它不是
基于 Twilio 的人类/非人类检测 - 我正在尝试通过如下所示的代码来检测调用是否被人类或机器人接听 HashMap params = new HashMap(); params.put("Fro
这是目前(不确定)我能想到的处理多语言网站的最佳方式,它不涉及 gettext、zend_translate 或任何 php 插件或框架。 我认为它非常简单:我有 3 种语言,我将它们的“内容”写在不
我是一名优秀的程序员,十分优秀!