初心者プログラマは、言語を習得するだけで特定の言語エンジニアと呼ばれるようになるという誤解に陥りがちです。しかし、本当にそうなのでしょうか?これはそうではありません。
今日は、Java 開発エンジニアが具体的に何を開発するのかについて話します。正確に言うと、Java バックエンドは正確に何をしているのでしょうか?
Java がバックエンド言語であることは誰もが知っています。バックエンドとはサーバーを指します。サーバー側のコードは通常、サーバー上で実行されます。通常、Java プログラムを実行するサーバーは Linux サーバーです。
これらのサーバーは通常、インターネット企業のコンピューター室と呼ばれる場所に設置されており、私たちのような Java プログラマーのコードは通常、このコンピューター室のサーバー上で実行されます。
Java には仮想マシンと呼ばれる概念があります。これは Android エミュレータと考えることができます。たとえば、コンピュータに Android エミュレータをインストールすると、 APP、モバイルゲームなどのインストールなど、Android アプリケーションを実行するために使用されます。
つまり、JDKと呼ばれるものをコンピュータにインストールすると、Javaの実行環境であるJREがコンピュータ上に存在し、この実行環境を利用してJavaアプリケーションを実行できるようになります。
Java プログラムがコンピューター上でどのように実行されるかを理解した後、私たちが普段学ぶ Java の基本的な知識について話しましょう。
実際、これらの基本的な Java 文法はコードを書くための基礎的な知識であり、英語の 26 文字に相当します。一般的なものには、基本的な型変数、for ループ、if else およびその他の基本的な文法が含まれます。 , これらの基本知識を習得したら、非常に簡単なコードをいくつか書き始めることができます。
さらに、Java には、クラスやインターフェイスなどの概念を含むオブジェクト指向機能など、いくつかの特別な概念もあります。なぜ Java はこれらの機能を導入するのでしょうか? Java は実際には、ユーザーがより良い設計、抽象化、およびプログラムを行えるようにすることを望んでいます。
初心者の方は、実際にコードを書いてみると徐々に理解できるので、あまり深く理解する必要はありません。
基本的な知識について説明した後は、Java でよく言われるコレクション クラスが何のためにあるのかにも興味があると思います。現実には、次のようなコレクション クラスの使用が必要なシナリオがたくさんあるためです。ユーザー名のリストについて話しましょう。どうやって保存しますか?
これを行うにはリストを使用しますよね? したがって、コレクション クラスの役割は、プログラミングでデータをより適切に保存できるようにすることです。
実際、コレクション クラスの概念はデータ構造に由来しています。コンピュータには、ファイル ツリー、リンク リスト、配列、その他の構造など、特別なデータ ストレージ構造が多数あるため、コンピュータ理論ではこれらの格納されたデータ構造を指します。データ モデルはいくつかの共通構造に抽象化されており、総称してデータ構造と呼ばれます。
では、Java の並行プログラミングは何をするのでしょうか? Java のマルチスレッドは、コンピュータの CPU コアを有効に活用することであり、並行プログラミングによって、プログラムの並行性の効率を向上させることができます。
ただし、同時プログラミングにはオペレーティング システムのサポートとコンピューター ハードウェアのサポートが必要であるため、マルチスレッドを完全に理解したい場合は、Java のスレッドまたはスレッド プールを理解するだけでは十分ではありません。また、オペレーティング システムとコンピューターの構成原理を理解する必要もあります。
並行プログラミングと同様に、Java にもネットワーク プログラミングの概念があります。Java のネットワーク プログラミングは他の言語と似ています。実際、これも TCP/IP プロトコルに基づく API のセットです。ネットワーク経由プログラミングを行うと、プログラム内でネットワークの相手側に送信したいデータを転送できます。ネットワーク プログラミングと並行プログラミングを使用すると、Java プログラマはすでに非常に強力です。
# 終了 これらの点を踏まえて、私たちが普段話している Java バックエンド テクノロジとは何なのかについて話しましょう。Alipay を例に考えてみましょう。以前は Alipay ユーザーはそれほど多くありませんでした。1 つのサーバーと 1 つのデータベースですべてのビジネスをサポートできます。
Alipay ユーザーの数が増加すると、1 台のサーバーでは同時に多数のユーザーのニーズを満たすことができなくなり、複数のサーバーがクラスターを形成し、ユーザーは負荷の高いサーバーを使用できるようになりました。これらのサーバーにアクセスすることにより、各ユーザーは異なるマシンにアクセスできるため、転用効果が得られ、サーバーへの負荷が軽減されます。
データベースはデータの信頼性を確保する必要があるため、特定のデータベースがハングアップしてバックアップが存在しない場合、データにアクセスできなくなります。これは大規模システムでは許可されないため、マスター/スレーブ展開が行われます。データベース。
しかし、実際には、ビジネスの発展に伴い、データベースへの負荷も増大しています。アクティブとスタンバイの配置では、データベースのアクセス パフォーマンスの問題を解決できません。そのため、データベースを別のテーブルに分割する必要があります。アクティブデータベースとスタンバイデータベースで をベースに、大量のデータを含むテーブルを複数のテーブルに分割し、データベースリクエストを別のデータに振り分けます。たとえば、サブデータベース 100 個とサブテーブル 100 個は、データテーブルを 10,000 個のデータテーブルに分割します。
この時点で別の問題が発生します。データベースに複数のスタンバイ データベースがあり、プライマリ データベースがハングアップしたときにマスターとスレーブの切り替えが必要な場合、プライマリ データベースとスタンバイ データベースの間でデータが不整合になる可能性があり、これが問題になります。も分散理論で研究される問題の一つですが、比較的複雑なのでここでは省略します。
先ほど分散技術について触れました。実際、ロード バランシング、サブデータベース、サブテーブルはすべて分散技術の実装です。サブデータベースとサブテーブルを実行したくない場合はどうすればよいですか。他の方法でデータベースへのアクセスを減らすことができますか? プレッシャーについてはどうでしょうか?キャッシュが登場しました。キャッシュにより、サーバーは最初にリクエストをキャッシュに送信できます。キャッシュされたデータは通常メモリ内にあるため、アクセス速度は非常に速く、これらのリクエストはデータベースを経由する必要がありません。
ビジネスの発展に伴い、単一ポイントのキャッシュへの負担が大きくなるため、分散キャッシュが登場します。一般的に、キャッシュはデータの信頼性を保証できません。データが失われる可能性があり、キャッシュにはデータの一部しか保存できず、すべての問題を解決できるわけではありません。
したがって、特定のビジネスのリクエスト量が非常に大きい場合、キャッシュだけでは問題を解決できませんが、この時点で、メッセージ キューを使用して、大量のトラフィックの同時リクエストの問題を解決することもできます。
リクエスト メッセージの一部をメッセージ キューに保存し、サーバーのリクエスト処理能力に基づいてメッセージを徐々に取り出し、これらのメッセージを徐々に処理することで、非常に優れた解決策を実現できます。高い同時実行性の問題。もちろん、前提として、メッセージ キューはメッセージ ストレージの信頼性を保証する必要があり、これはほとんどのメッセージ キューが保証する機能でもあります。
ここまで一気に Java バックエンドの概要を説明しましたが、まだ触れていないこともたくさんあります。一晩では終わらせられないでしょう。
一般的に Java バックエンド技術は難しくもなく単純でもありません。できるだけ理解しやすい内容を心がけています。実際には、それぞれの技術の背後には多くの複雑さが存在します。実装原理はもちろん、 Java バックエンド技術の全体的な概念を理解すると、その後の学習にさらに役立つと思います。
以上がJava バックエンドの概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。