興味深い課題があります。「ビン」にあるデータへのアクセスを制御する必要があります。数十万の「ビン」が存在する可能性があります。各ビンへのアクセスは個別に制御されますが、制限は重複する可能性があり、おそらく重複する可能性があります。各ビンにビットマスク内の位置 (1、2、3、4 など) を割り当てることを考えています。
次に、ユーザーがシステムにログインすると、ユーザーのセキュリティ属性を調べて、ユーザーが表示できるビンを決定します。その情報を使用して、このユーザーのビットマスクを作成します。「設定」ビットは、ユーザーが表示できるビンの識別子に対応します。したがって、ビン 1、3、4 が見える場合、ビット マスクは 1101 になります。
したがって、ユーザーがデータを検索すると、返された行のビン インデックスを見て、そのビットがビットマスクに設定されているかどうかを確認できます。彼のビットマスクにそのビットが設定されている場合、その行を表示させます。BigInteger
ビットマスクをJavaに格納する予定です。
私の質問は次のとおりです。インデックス番号が Integer.MAX_INT よりも大きくならないと仮定すると、BigInteger
ビットマスクは数十万のビット位置に合わせてスケーリングされますか? BigInteger.isBitSet(n)
n が巨大になる可能性がある場合 (例: 874,837) 、実行するのに永遠にかかるでしょうか? そのようなものを作成するのに永遠にかかるでしょうBigInteger
か?
2 つ目: 別のアプローチがある場合は、ぜひお聞かせください。