Java インタビュー - 高度な同時処理

王林
リリース: 2020-11-23 16:06:12
転載
3513 人が閲覧しました

Java インタビュー - 高度な同時処理

高同時実行処理方法:

(学習ビデオ共有: java 教育ビデオ )

1. 最も基本的なものからローカル レベルから始めて、作成するコードを最適化し、必要なリソースの無駄を削減します。

a. 新しいオブジェクトの頻繁な使用を避けるアプリケーション全体でインスタンスが 1 つだけ必要なクラスの場合は、シングルトン モードを使用できます。 String 接続操作の場合は、StringBuffer または StringBuilder を使用し、静的メソッドを通じてツール クラスにアクセスできます。

b. 間違った方法の使用を避け、条件判定にinstanceofを使用しないようにしてください。 Java では、Vector よりも優れたパフォーマンスを持つ ArrayList などの効率的なクラスを使用します。

2. HTML の静的化

リンク アドレスを通じてアクセスします。このリンク アドレスを通じて、サーバーの対応するモジュールがリクエストを処理し、対応する JSP ページに移動し、最後に必要なデータを生成します。しかし、リクエストが数千万件あり、同時リクエストが多すぎるとサーバーへの負荷が増大し、最悪の場合サーバーがダウンしてしまいます。では、この状況を回避するにはどうすればよいでしょうか? test.do の最初のリクエストの結果を HTML ファイルに保存し、ユーザーが毎回この HTML ファイルにアクセスするようにすると、サーバーにアクセスする必要がなくなります。サーバーへの負荷は大きくなりません。削減?

静的ページを自動的に生成するにはどうすればよいですか? ユーザーがそのページにアクセスすると、test.html が自動的に生成され、ユーザーに表示されます。

3. 画像サーバーの分離

Web サーバーの場合、画像が最も多くのリソースを消費するため、ページから画像を分離する必要があり、画像は独立した画像サーバーに配置されます。このようなアーキテクチャにより、ページ アクセス リクエストを提供するサーバー システムへの負荷が軽減され、画像の問題によるシステムのクラッシュが確実に回避されます。画像サーバーでは、さまざまな構成を最適化できます。

4. キャッシュ

私が特に触れたキャッシュ メカニズムは、Hibernate のキャッシュ メカニズムです。毎回データベースからデータを取得することを避けるために、ユーザーが頻繁にアクセスするデータをメモリに置きます。キャッシュが非常に大きい場合でも、メモリ内のキャッシュをハードディスクに置くことができます。高度な分散キャッシュ データベースも使用されており、システムのストレス耐性を高めることができます。

(さらに関連する面接の質問に関する推奨事項: Java 面接の質問と回答)

5. バッチで送信

プロジェクトに取り組む当時は一度に渡せるパラメータが多すぎて、データベースでは一度に渡せるパラメータの最大数が3万件と規定されており、当時は5万件のレコードがあったので、どうやって送信するのか?エレベーターが一度に多くの人を乗せられない場合、重量超過のバグが報告されるため、人々はまとめて送られます。

別の試験システムでは、非常に多くの受験者が同時にデータベースに提出すると、データベースへの負荷が増大し、データベースがダウンすることがありました。その際に使用された方法は、ajax を使用することでした。待ち時間のない非同期送信により、受験者が送信ボタンをクリックすると自動的に回答が送信されるため、突然の停電などで受験者が以前に行った質問が失われることもありません。

6. データベース クラスター

複雑なアプリケーションとそれにアクセスする多数のユーザーに直面すると、1 つのデータ セットではすぐに需要を満たすことができなくなるため、データベース クラスターを使用する必要があります。またはデータベーステーブルのハッシュ。

ビジネス モジュールとアプリケーション モジュール、または機能モジュールをアプリケーションにインストールしてデータを分離します。異なるモジュールは異なるデータベースまたはテーブルに対応し、特定の戦略に従って特定のページまたは機能をより小さなデータベースに分散します。

7. DB の最適化

a. データベースを設計するときは、後のメンテナンスも考慮する必要がありますデータベースの 3 つのパラダイムは、データベースを設計するときに従うべき原則です。

b. インデックスの作成: インデックスの作成は適切である必要があります。テーブルが頻繁にクエリされ、追加や変更にはめったに使用されない場合は、追加や変更、削除操作のためにメンテナンスが必要なため、このテーブルのインデックスを作成できます。インデックスの効率は、インデックスがもたらす効率を大幅に上回っています。

c. テーブル フィールドのタイプの選択は適切である必要があります

フィールドの長さ、タイプなどを含め、実際に保存されているデータに基づいて選択する必要があります。長さは長すぎてはいけません。そうでない場合は、効率に影響します。

d. 主キーはこのテーブルを表し、外部キーはテーブルを関連付けるテーブルのグループを表すため、外部キーは注意して使用する必要があります。削除や変更などを行うときは、外部キーを関連付ける必要があります。 。

e. データベース操作では、

PrepareStatement がプリコンパイルされているため、prepareStatement を使用し、ステートメントの使用量を減らすようにしてください。

Connection は readOnly に設定されています。Connection はライブラリへの接続であり、ヘビーウェイトです。そのまま使用できます。

接続プールを使用すると、データベース内のデフォルトの接続数を変更できます。

関連する推奨事項: Java 入門チュートリアル

以上がJava インタビュー - 高度な同時処理の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:csdn.net
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!