宿題のためにJavaで仮想ファイルシステムを作成しています。私は、読み取り、変更、削除の3つのアクセス許可のみで構成された非常に単純なアクセス許可ルールを設計します。ファイルシステムツリーが拡張されているため、ユーザーは任意のレベルの任意のファイル/フォルダを選択できます。ユーザーがフォルダのアクセス許可を変更すると、このフォルダ内のすべてのファイル/フォルダも変更内容を継承し、独自のアクセス許可を更新する必要があります。しかし、下のすべてのノードを更新することは、ツリーが本当に深くなったり、例えば息子ノードのアクセス権が変更された後に父親の許可が変更されたときには非効率的になることがあります。変更されたノードのすべてのブランチを更新するだけでなく、どのようにすれば効率的にすることができますか?フォルダ/ファイルシステムのパーミッションの効率的な継承
0
A
答えて
0
権限の更新を行うコストとオブジェクトの有効なアクセス許可を計算するコストとの間にはトレードオフがあります。
たとえば、アクセス許可とアクセス許可のタイムスタンプを保存することで、アクセス許可の更新を高速化できます。次に、ノードとそのすべての祖先のパーミッション/タイムスタンプのペアを調べることにより、ノードの実効パーミッションを計算します。新しいタイムスタンプを持つものが優先されます。もちろん、これは、ノードの有効なアクセス権の計算が遅いことを意味します。
(あなたはその後、ディレクトリのパーミッション/タイムスタンプのペアのメモリ内のLRUキャッシュを速く効果的なアクセス許可の計算を行うことができます。)
関連する問題
- 1. Doctrine2:継承したクラスの効率的なマッピング
- 2. Djangoのパーミッションの階層化 - モデルや他のパーミッションから継承
- 3. 目的のCの継承
- 4. C++の基本的な継承
- 5. c#継承一般的なもの
- 6. laravelの基本的な継承
- 7. C++一般的な継承の誤解
- 8. Javaでの動的継承
- 9. 静的メソッドの継承
- 10. 静的機能の継承
- 11. Haskellの効率的なオーバーロード
- 12. VBAの効率的なループ
- 13. ハスケルの効率的なハッシュマップコンテナ?
- 14. Haskellの効率的なキュー
- 15. 効率的なツリーのソート
- 16. Windowsの効率的なステレオマッチングアルゴリズム
- 17. GLSLの効率的なバイキュービックフィルタリングコード?
- 18. フレーズアナグラムの効率的なアルゴリズム
- 19. Pythonの効率的なマッププロット
- 20. Pythonの効率的なシフトスケジューリング
- 21. WPFの効率的なライブログビューア
- 22. ArrayListの効率的なonDraw
- 23. numpyの効率的なループ
- 24. CCSpriteの効率的なアニメーション
- 25. 循環的継承
- 26. 階層的継承
- 27. 目的C継承
- 28. 効率的なタイマーアルゴリズム
- 29. 効率的なリストコピー
- 30. 効率的なストップウォッチ
おかげで、スティーブン。私の理解が正しければ、perimissionを変更し、その子を更新しないノードにペアのを渡すことを意味しますか?ノードのパーミッションを計算するときは、そのパーミッションを取得するためにその親をトレースして最新のパーミッションタイムスタンプを見つけますか?したがって、この場合、許可を計算する複雑さはログスケールですか? –
ChaosBB
そうです。 –