我们有一个有趣的挑战。我们必须控制对驻留在“bins”中的数据的访问。可能会有数十万个“垃圾箱”。对每个垃圾箱的访问都是单独控制的,但这些限制可以而且可能会重叠。我们正在考虑在位掩码(1、2、3、4 等)中为每个 bin 分配一个位置。
然后,当用户登录系统时,我们会查看他的安全属性并确定允许他查看哪些 bin。使用该信息,我们为该用户构建了一个位掩码,其中“设置”位对应于他允许查看的 bin 的标识符。因此,如果他可以看到 bin 1、3 和 4,他的位掩码将是 1101。
因此,当用户搜索数据时,我们可以查看返回行的 bin 索引,看看该位是否设置在他的位掩码上。如果他的位掩码设置了该位,我们让他看到该行。我们计划将位掩码存储为BigInteger
Java 中的 a。
我的问题是:假设索引号没有变得比 Integer.MAX_INT 大,那么BigInteger
位掩码是否会扩展到数十万位位置?BigInteger.isBitSet(n)
在 n 可能很大的地方(例如 874,837)需要永远运行吗?创造这样的作品需要永远BigInteger
吗?
其次:如果您有其他方法,我很想听听。