批编号的Java算法
我有一些不寻常的问题要解决。我需要一些提示或链接开始。我有10个数据槽的队列。一旦队列已满,我需要将其发送到服务器。然而,除了这些数据,我还发送了开始和结束序列号。现在,这个数字必须是唯一的,并且是递增的。因此,对于第一次发送,start=1,end=10。在第二次发送时,它将是start=11,end=20,依此类推。发送队列中的数据后,将从队列中的索引0记录新条目
我如何有效地解决这个问题
你可以在下面搜索框中键入要查询的问题!
我有一些不寻常的问题要解决。我需要一些提示或链接开始。我有10个数据槽的队列。一旦队列已满,我需要将其发送到服务器。然而,除了这些数据,我还发送了开始和结束序列号。现在,这个数字必须是唯一的,并且是递增的。因此,对于第一次发送,start=1,end=10。在第二次发送时,它将是start=11,end=20,依此类推。发送队列中的数据后,将从队列中的索引0记录新条目
我如何有效地解决这个问题
# 1 楼答案
(你的问题缺少很多背景知识,所以这基本上是在黑暗中拍摄的…)
由于任何16位数字都可以放入Java
int
原语中,因此您可以:通过使用合适的位掩码将Java
int
转换为16位数字:警告:此转换有损且不容易可逆
通过保持一个单独的历元
int
,将16位数字转换为32位int
,该历元在每次翻滚时递增一:我不认为它能比Java中的效率更高。更不用说任何可以运行Java的CPU通常都会围绕任何16位处理器运行,除了一些DSP
几个相关的问题:
注意有符号/无符号转换:Java没有无符号类型,这可能会使事情复杂化,具体取决于您的操作
请注意,根据JLS,所有操作的
byte
、char
和short
原语类型都隐式转换为int
。当存储在内存中时,它们实际上是否小于32位取决于具体的实现。是的,这使得short
类型非常无用