私はウェブサイトインターセプターを作成しようとしていますが、私が見つけた最も簡単な方法は/ etc / hostsの末尾にその行を置くことです。百万のウェブサイトがlocalhostにリダイレクトされ、インターネット検索や通常のオペレーティングシステムの動作が遅くなるのをブロックしたくない場合はどうすればよいですか?
答え1
他のフラットファイルデータベースと同じです。
これは実際に一般的な現象です。
この問題はファイル形式に固有の問題であり、/etc/passwd
に/etc/group
も同じことが当てはまります/etc/shells
。/etc/phones
、、、、、その他。/etc/ttys
これらのファイルは索引付けまたはソートされていないため、すべての照会は可能な限りファイル全体の順次スキャンでなければなりません。存在しないアイテムを探す/etc/services
/etc/fstab
/etc/hosts
〜しなければならないファイルの各レコードを読み取ります。挿入と削除は必ずお読みください。書くファイルの各履歴。
BSDがユーザーアカウントデータベースをこのフラットファイル形式からBerkeley DBに変換した理由が/etc/pwd.db
あります/etc/spwd.db
。それがすべてです。 Berkeleyデータベースはいindexで検索され、ファイルの先頭から順次検索されません。これは一つDNSが機能します(フラットファイルアクセス方法がHOSTS.TXT
問題の原因の1つであり、このファイルをネットワーク経由で複製することも別の原因です)。
そのため、電子メールシステムには、CDB、Berkeley DB、その他の形式のデータベースが含まれており、ドメインリストや仮想ユーザーアカウントなどの項目を設定します。対照的に、Cライブラリは代わりに他のデータベース形式を使用することを提案しません/etc/hosts
。
また、シェルの特別なコマンドパラメータの完成から、ネットワークツールとシステム監視/管理ユーティリティ、印刷、WWWブラウザ、および電子メールシステムまで、このテーブルで検索を実行することに関する多くの作業があります。
何百万ものレコードを含むフラットファイルデータベースは、これについての悪い考えです。
ファイルが部分的に上書きされた状態(非常に望ましくない結果をもたらす可能性がある)にあることをシステムが認識しないように挿入と削除を原子的に実行しなければならないという事実も扱っていませんでした。これそんなことはありません。あなたのアプローチがテキストエディタでファイルを素早く開くことであれば。デフォルトでは、ほとんどのテキストエディタはデフォルトでアトミックファイルの更新を実行しません。フラット・ファイル・データベース、特に大規模なデータベースは、素直に想像するよりも慎重な処理が必要です。いいえ、まさにその人です。いいえ「シンプルなテキストファイル」です。
もちろん、名前ルックアップを使用してWWWサーバーへのアクセスをフィルタリングするのも悪いメカニズムです。