Node.jsとは何ですか?該当するシナリオは何ですか?
node.js は、Chrome JavaScript ランタイムに基づいて構築されたプラットフォームです。適用可能なシナリオには、ローカライズされたオンライン音楽アプリケーション、ローカライズされたオンライン検索アプリケーション、ローカライズされたオンライン APP などが含まれます。
node.js とは?
簡単に言えば、Node.js はサーバー側で実行される JavaScript です。 Node.js は、Chrome JavaScript ランタイム上に構築されたプラットフォームです。 Node.js は、Google の V8 エンジンをベースにしたイベント駆動型 I/O サーバーサイド JavaScript 環境であり、V8 エンジンは JavaScript を非常に高速に実行し、非常に優れたパフォーマンスを発揮します。NodeJS の適用可能なシナリオを原理的に理解する
NodeJS はバックエンドのパフォーマンスが高いため、近年人気のサーバーサイド JS プラットフォームです。一方、nodeJS プラットフォーム上の npm、grunt、express などの強力なコードおよびプロジェクト管理アプリケーションの台頭により、同時実行の優れたパフォーマンスがフロントエンドの作業方法とプロセスをほぼ再定義しました。 NodeJS の成功はその威力を示していますが、すべての状況が NodeJS をサーバーサイド プラットフォームとして使用するのに適しているわけではありません。 答えはもちろんノーで、インターネット上にはさまざまな意見があります。それではNodeJSの応用を原理から理解していきましょう。
NodeJS について話す前に、まず従来の(Apache に代表される) サーバー側処理プラットフォームの仕組みを見てみましょう。並行性を処理します。
1. Apache のマルチスレッド高同時実行モード
Apache は現在、世界でナンバー 1 の Web サーバー ソフトウェアです。マルチスレッドの同時実行性は、大多数のサーバー テクノロジ セレクターによって歓迎されています。しかしその後、Apache はいくつかの大規模な WEB アプリケーションにおけるブロッキングという欠点を徐々に明らかにしました。 学生の中には、Apache は同時処理用にマルチスレッド化されているのではないかと疑問に思う人もいるかもしれません。なぜ依然としてブロックが発生するのでしょうか? これを理解するには、まずスレッドの概念を理解する必要があります。1.1 スレッドとは何ですか?
公式の説明を引用します: スレッドが独立して実行できる最小の CPU ユニットは、同じプロセス内で同時に実行できますそして、プロセスの下でメモリ アドレス空間を共有します(この機能に注意してください)。
同じプロセス内のスレッドが同じファイルとメモリ (メモリ アドレス空間) を共有することがわかります。そのため、異なるスレッドが同じ変数を占有する必要がある場合、それらのスレッドは次の条件に基づいて決定されると想像できます。先着順: 先着順の原則に基づき、最初に到着したスレッドが実行中の場合、後続のスレッドは待機することしかできません。つまり、ブロッキング キュー シーケンスに加わります。これがスレッドをブロックする原因です。 したがって、プロセスは複数のスレッドをサポートできますが、それらは同時に実行されているように見えますが、互いに同期していません。プロセス内の複数のスレッドは同じメモリ アドレス空間を共有します。つまり、同じ変数とオブジェクトにアクセスでき、同じヒープからオブジェクトを割り当てます。これによりスレッド間で情報を共有しやすくなりますが、プログラマは同じプロセス内の他のスレッドに干渉しないように注意する必要があります。
マルチスレッド並列処理の欠点を理解すると、NodeJS の能力をよりよく理解できるようになります。 NodeJS は非同期でシングルスレッドであるためです。2. NodeJS の非同期 I/O 原則
まず、Apache がデータベースをリクエストするためのコードを見てみましょう:
は非同期コールバック という 4 つの単語です。 query の 2 番目のパラメータはコールバック関数であり、プロセスは db.query を実行すると、結果が返されるのを待たずに、イベント ループに入るまで直接次のステートメントを実行し続けます。データベースの実行結果が返されると、イベントはイベント キューに送信され、スレッドがイベント ループに入った後にのみ前のコールバック関数が呼び出されます。より専門的な用語は、非同期 I/O です。スレッドは 1 つだけで大丈夫です。
では、なぜ NodeJS はシングルスレッドでありながら非同期実装を実現できるのでしょうか?ここで、前の図に移動し、図内のイベント キューをクリックします。
NodeJS の動作原理は実際には イベント ループ であることがわかりましたか。 NodeJS ロジックのすべてがコールバック関数に記述されており、コールバック関数は戻った後に非同期で実行されると言えます。
これを見ると、NodeJS のすべての処理が非同期であれば成功するのではないかと思わずにはいられません。違う、違う、違う!もちろんそうではありません。忘れないでください。NodeJS がこれらを実装するための基礎は シングル スレッド です。そうです、シングルスレッドです。 1 つのスレッドがすべての操作を処理します。
NodeJS が寒風の中で同時に 100,000 人の軍隊に直面していることを想像してみてください。OK、問題ありません。敵の 1 人がやって来て街に投げ込まれ、もう 1 人がやって来て街に投げ込まれます。市。街の人々は全員兵士なので、これらの敵を非常にうまく消化できます。しかし、張飛や趙雲のようなキャラクターが登場すると、古いノードは惨めな気分になるため、彼は張飛と300ラウンド戦い、彼を不自由にし、その後彼を街に投げ込みます。そうなると、後方の10万人の軍隊は、この300発の砲撃を待たなければならないことになる。 。 。
それでは、これは何を意味するのでしょうか? NodeJSはブロックしないということですが、その後のコールバック処理でブロックが発生するのではなく、NodeJS自身によるロジックの計算や処理でブロックが発生します。 NodeJS には非常に強力な分散機能があり、非同期コールバックのイベントをループできることはすでにわかっています。しかし、イベントをループするときに複雑な論理操作が発生した場合、シン シングル スレッドで数百万の論理 同時実行をどのようにサポートできるのでしょうか? I/O やネットワーク通信などの NodeJS の時間のかかる操作はすべて、実行とコールバックのためにワーカー スレッドに引き渡されるため、非常に高速です。ただし、CPU の通常の動作では、CPU 自体が抵抗することしかできません。
そう言えば、NodeJS の機能についてはおおよそ理解できたのではないでしょうか。ということで、該当シナリオは基本的に準備完了です~!
3. NodeJS の応用シナリオ
NodeJS は同時実行処理には強いですが、計算やロジック処理には弱いため、複雑な論理演算を入れるとフロントエンド (クライアント) に移動して完了し、NodeJS は非同期 I/O を提供するだけで済むため、高い同時実行性と高性能の処理を実現できます。 RESTFUL API、リアルタイム チャット、強力なクライアント ロジックを備えたシングルページ APP など、さまざまな状況が考えられます。具体例としては、ローカライズされたオンライン音楽アプリケーション、ローカライズされたオンライン検索アプリケーション、ローカライズされたオンライン APP などが挙げられます。
ところで、Apache はかなり抑制されているので、甘いデートをしてください。 Apache には、マルチスレッドで同時実行性の高い共有メモリ アドレス空間という特性があります。つまり、サーバーが十分に強力で、プロセッサに十分なコア数がある場合、Apache は非常にうまく動作するため、比較的高速な (同時) 非同期処理に適しています。大量の計算と複雑なバックエンド ビジネス ロジックを必要とするアプリケーション。
推奨学習: 「node.js ビデオ チュートリアル 」
以上がNode.jsとは何ですか?該当するシナリオは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











この記事では、NodeJS V8 エンジンのメモリとガベージ コレクター (GC) について詳しく説明します。

ノンブロッキングおよびイベント駆動に基づいて構築されたノード サービスには、メモリ消費量が少ないという利点があり、大量のネットワーク リクエストの処理に非常に適しています。大量のリクエストを前提として、「メモリ制御」に関する問題を考慮する必要があります。 1. V8 のガベージ コレクション メカニズムとメモリ制限 Js はガベージ コレクション マシンによって制御されます

ノード用の Docker イメージの選択は些細なことのように思えるかもしれませんが、イメージのサイズと潜在的な脆弱性は、CI/CD プロセスとセキュリティに大きな影響を与える可能性があります。では、最適な Node.js Docker イメージを選択するにはどうすればよいでしょうか?

Node 19 が正式リリースされましたので、この記事では Node.js 19 の 6 つの主要な機能について詳しく説明します。

ファイル モジュールは、ファイルの読み取り/書き込み/開く/閉じる/削除の追加など、基礎となるファイル操作をカプセル化したものです。ファイル モジュールの最大の特徴は、すべてのメソッドが **同期** と ** の 2 つのバージョンを提供することです。 asynchronous**、sync サフィックスが付いているメソッドはすべて同期メソッドであり、持たないメソッドはすべて異種メソッドです。

Node.js はどのように GC (ガベージ コレクション) を行うのでしょうか?次の記事で詳しく説明します。

イベント ループは Node.js の基本的な部分であり、メイン スレッドがブロックされていないことを確認することで非同期プログラミングが可能になります。イベント ループを理解することは、効率的なアプリケーションを構築するために重要です。次の記事では、Node のイベント ループについて詳しく説明します。お役に立てれば幸いです。

Nodejs実行可能ファイルをpkgでパッケージ化するにはどうすればよいですか?次の記事では、pkg を使用して Node プロジェクトを実行可能ファイルにパッケージ化する方法を紹介します。
