ハッシュとは、レコードの保存場所とそのキーワードの間に一定の対応関係 f を確立し、各キーワードのキーが保存場所 f (キー) に対応し、キーワードと保存場所の相互関係を確立するものです。 . 対応関係、この関係fをハッシュ関数(ハッシュ関数)といいます。この記事の編集者は主にハッシュ関数の競合処理の問題について話します。
検索プロセス中、キー コードの比較の数は競合の数によって異なります。競合が少ないほど、検索の精度は高くなります。効率が低下すると、競合が多くなり、検索効率が低くなります。したがって、競合の数に影響を与える要因は、検索効率に影響を与える要因となります。競合の数に影響を与える要素は次の 3 つです:
1. ハッシュ関数が一様であるかどうか;
2. 競合の処理方法;
3.ハッシュ テーブルの充填係数。
ハッシュ テーブルの充填率は次のように定義されます: α = テーブルに充填された要素の数 / ハッシュ テーブルの長さ
α は充填度の符号率です。ハッシュテーブルの。テーブルの長さは固定値であるため、αは「テーブルに埋められる要素の数」に比例するため、αが大きいほどテーブルに埋められる要素が多くなり、競合する可能性が高くなります。 α、テーブルに入力される要素が少ないほど、競合が発生する可能性は低くなります。
実際、ハッシュ テーブルの平均検索長は充填係数 α の関数ですが、競合を処理する方法が異なれば機能も異なります。
ハッシュの競合を解決する方法には、一般に次のようなものがあります。
NO.1 オープン アドレス指定方法
いわゆるオープン アドレス指定方法とは、競合が発生すると、ハッシュの競合を解決する方法を意味します。次の空のアドレス: ハッシュ テーブルが十分に大きい限り、空のハッシュ アドレスは常に見つかり、レコードが保存されます。
式: f(key)=(f(key) di)%m(di=1,2,3….m-1)
たとえば、キーワードセットは { 12, 67, 56, 16, 25, 37, 22, 29, 15, 47, 48, 34}、テーブルの長さは 12 です。ハッシュ関数 f(key) = key mod 12.
最初の 5 つの数値 {12, 67, 56, 16, 25} を計算すると、それらはすべて競合のないハッシュ アドレスであり、直接保存されます。キー = 37 を計算すると、f(37) であることがわかります。 = 1. この時点では、25 の場所と競合します。したがって、上記の式 f(37) = (f(37) 1) mod 12 =2, を適用します。したがって、37 はインデックス 2 の場所に格納されます。次の 22、29、15、および 47 には競合はなく、正常にデポジットされます。 48 で f(48) = 0 を計算しますが、これは 12 の 0 の位置と競合します。それは問題ではありません。f(48) = (f(48) 1) mod 12 = 1 となりますが、これは位置と競合します。 25の。したがって、 f(48) = (f(48) 2) mod 12 = 2 ですが、まだ競合が存在します... f(48) = (f(48) 6) mod 12 = 6 になるまで空きはありません。以下の表にあります。
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | |
12 | 25 |
# #16 |
##67 | 56 |
以上がデータ構造内のハッシュ テーブル (ハッシュ テーブル) の従来の競合処理の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

.NETでのC#のプログラミングプロセスには、次の手順が含まれます。1)C#コードの作成、2)中間言語(IL)にコンパイルし、3).NETランタイム(CLR)によって実行される。 .NETのC#の利点は、デスクトップアプリケーションからWebサービスまでのさまざまな開発シナリオに適した、最新の構文、強力なタイプシステム、および.NETフレームワークとの緊密な統合です。

C#は、Microsoftによって開発された最新のオブジェクト指向プログラミング言語であり、.NETフレームワークの一部として開発されています。 1.C#は、カプセル化、継承、多型を含むオブジェクト指向プログラミング(OOP)をサポートしています。 2。C#の非同期プログラミングは非同期を通じて実装され、適用応答性を向上させるためにキーワードを待ちます。 3. LINQを使用してデータ収集を簡潔に処理します。 4.一般的なエラーには、null参照の例外と、範囲外の例外インデックスが含まれます。デバッグスキルには、デバッガーと例外処理の使用が含まれます。 5.パフォーマンスの最適化には、StringBuilderの使用と、不必要な梱包とボクシングの回避が含まれます。

C#.NETアプリケーションのテスト戦略には、ユニットテスト、統合テスト、エンドツーエンドテストが含まれます。 1.単位テストにより、コードの最小ユニットがMSTEST、ヌニット、またはXUNITフレームワークを使用して独立して動作することを保証します。 2。統合テストでは、一般的に使用されるシミュレートされたデータと外部サービスを組み合わせた複数のユニットの機能を検証します。 3.エンドツーエンドのテストでは、ユーザーの完全な操作プロセスをシミュレートし、通常、セレンは自動テストに使用されます。

C#シニア開発者とのインタビューでは、非同期プログラミング、LINQ、.NETフレームワークの内部作業原則などのコア知識をマスターする必要があります。 1.非同期プログラミングは、非同期を通じて操作を簡素化し、アプリケーションの応答性を向上させるのを待ちます。 2.LinqはSQLスタイルでデータを操作し、パフォーマンスに注意を払います。 3.ネットフレームワークのCLRはメモリを管理し、ガベージコレクションに注意して使用する必要があります。

C#.NETインタビューの質問と回答には、基本的な知識、コアの概念、高度な使用が含まれます。 1)基本知識:C#は、Microsoftが開発したオブジェクト指向言語であり、主に.NETフレームワークで使用されています。 2)コアの概念:委任とイベントは動的な結合方法を可能にし、LINQは強力なクエリ関数を提供します。 3)高度な使用:非同期プログラミングは応答性を向上させ、式ツリーは動的コード構造に使用されます。

C#.NETは、その強力なエコシステムと豊富なサポートのため、マイクロサービスを構築するために人気のある選択肢です。 1)asp.netcoreを使用してRestfulapiを作成して、順序の作成とクエリを処理します。 2)GRPCを使用して、マイクロサービス間の効率的な通信を実現し、注文サービスを定義および実装します。 3)Dockerコンテナ化されたマイクロサービスを介して展開と管理を簡素化します。

C#および.NETのセキュリティベストプラクティスには、入力検証、出力エンコード、例外処理、認証と承認が含まれます。 1)正規表現または組み込みのメソッドを使用して入力を検証して、悪意のあるデータがシステムに入るのを防ぎます。 2)XSS攻撃を防ぐための出力エンコード、httputility.htmlencodeメソッドを使用します。 3)例外処理により、情報の漏れが回避され、エラーが記録されますが、詳細情報はユーザーに返されません。 4)ASP.Netidentityおよび請求に基づく許可を使用して、不正アクセスから申請を保護します。

C言語におけるコロン( ':')の意味:条件付きステートメント:条件付き式とステートメントの分離ブロックループステートメント:初期化、条件付きおよび増分式のマクロ定義の分離:マクロ名とマクロ値の分離単一行コメント:コメントアレイの寸法としてのコロンから行までのコンテンツを表す:アレイの寸法を指定する


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

SublimeText3 中国語版
中国語版、とても使いやすい
