小编ask*_*der的帖子

在Java中快速擦除(不清楚)ByteBuffer

我试图"清理"a ByteBuffer为所有零字节(全部0x00).我试图遍历缓冲区中的所有位置并将它们设置为0x00,但效率很差.有没有更好的方法来快速清除ByteBuffer- 类似于什么BitSet.clear()

请注意,ByteBuffer.clear()在这种情况下,对我来说这不是一个合适的解决方案 - 我必须擦除缓冲区内的所有数据,而不仅仅是将指针重置为开头.

任何提示?

编辑:ByteBuffer用作哈希表的一部分,它维护哈希表条目的引用.每次需要刷新哈希表时,我都必须重置哈希表条目以便以后的哈希表插入.由于以随机方式访问哈希表,我不能简单地清除()字节缓冲区的状态.

java bytebuffer erase

13
推荐指数
1
解决办法
9724
查看次数

Java中的时间跟踪:使用currentTimeMills()

我今天遇到了一个有趣的"时间旅行"问题,使用以下代码:

for (int i = 0; i < 1; i++){
    long start = System.currentTimeMillis();
    // Some code here
    System.out.print(i + "\t" + (System.currentTimeMillis() - start));
    start = System.currentTimeMillis();
    // Some code here
    System.out.println("\t" + (System.currentTimeMillis() - start));
}
Run Code Online (Sandbox Code Playgroud)

我得到了结果

0   15  -606
Run Code Online (Sandbox Code Playgroud)

它似乎不可重复.任何人都有关于在运行时间内发生的事情的任何线索?只是好奇...

新编辑:我使用了一个小测试来确认下面的答案.我运行程序并在运行期间更改系统时间,最后重复"时间旅行":

0   -3563323    163
Run Code Online (Sandbox Code Playgroud)

案件结案.多谢你们!

更多的话:currentTimeMillis()和nanoTime()都是基于系统定时器的,所以如果更新系统定时器(具体而言,转回),它们将不是单调的.对于这种情况,最好使用一些基于互联网的计时器.

java time

7
推荐指数
1
解决办法
7106
查看次数

标签 统计

java ×2

bytebuffer ×1

erase ×1

time ×1