English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Basis technologische Techniken für Java NIO und NodeJS

Unterstützung der unteren Technologien für Java NIO und NodeJS

Wie allgemein bekannt, wurden in den letzten Versionen von Java einige Erweiterungen für Java NIO, NIO2Unterstützung, gleichzeitig ist eines der am besten gelobten Vorteile des NodeJS-Technologiepools seine leistungsstarke IO, daher ist das Thema, das wir heute diskutieren möchten, die unteren Technologien, die diese Technologien unterstützen.

Bevor wir beginnen, möchten wir eine Frage stellen:

Warum NodeJS und Java NIO2Waren sie nicht früher aufgetreten?

Antwort:meinungsweise ist die untere Unterstützungstechnologie noch nicht ausgereift.

Was bedeutet die untere Technologie? Richtig, ich denke, viele haben bereits erraten, dass es sich um Betriebssystemtechnologie handelt. Die beiden Konzepte Java NIO2und NodeJS ohne Ausnahme Benutzerstatus-Technologien oder说是应用层技术 sind, und diese Anwendungsschichttechnologien laufen auf dem OS. Gleichzeitig mit dem Fortschritt des Betriebssystems wird die unterstützte Programmiermodell auch reicher. Man kann sagen, dass diese beiden Technologien vollständig aus der Entwicklung heraus entstanden sind, um die Vorteile des Fortschritts des Betriebssystems zu nutzen. Im Allgemeinen ist die Technologie, die zuerst diese Vorteile genießen kann, C\C++Weil die Fortschritte des OS in der Regel die meisten Systemaufrufe bereitstellen, während C\C++ist der bequemste, um diese Systemaufrufe anzuwenden, aber gleichzeitig auch der komplexeste. Andere Plattformen müssen sich ständig weiterentwickeln, verpacken, damit Benutzer diese Vorteile nutzen können. Sobald eine Plattform keine Updates mehr durchführt, ist dies der Zeitpunkt, an dem diese Plattform in den Verfall gerät. Für den Benutzer bedeutet eine einfachere Verpackung, dass sie freundlicher sind, was dazu führt, dass mehr Menschen sie nutzen. Obwohl viele Menschen schnell Code auf diesen Plattformen schreiben können, verstehen sie oft nicht das Wesentliche, weil sie im Wesentlichen nicht die Motivation und Prinzipien dieser Technologien verstehen. Die Technologien, die wir unten diskutieren, sind die unteren Technologien dieser beiden Technologien.>

Unabhängig von der Design des jeden OS, unten5Diese IO-Modelle sind alle unverzichtbar.

1. blocking I/O
2. nonblocking I/O
3. I/O Multiplexing (select, poll und epoll)
4. signalgetriebene I/O (SIGIO)
5. asynchrone I/O (POSIX aio_ Funktionen)

1. blocking I/O

Wie gezeigt, einer der Vorteile dieses IO-Modells ist die einfache Programmierung, es ist auch eines der earliest unterstützten IO-Modelle von OS, der Nachteil ist, dass der Systemaufruf den Benutzerthread blockiert, was zur Verschwendung von CPU-Zeit führt und die IO-Effizienz niedrig ist.

2. nonblocking I/O

Wie gezeigt, eine Verbesserung dieses IO-Modells ist, dass das IO nicht blockiert ist, aber eine lange Warteschleife erfordert, was ebenfalls die CPU-Zeitspanne verschwendet.

3. I/O Multiplexing (select, poll und epoll)

Wie im Bild gezeigt, ist dieses IO-Modell das stabilste IO-Modell, das von heutigen OS bereitgestellt wird. Die meisten gängigen Anwendungen sind auf diesem IO-Modell basiert, z.B. NodeJS, aber diese Plattformen fügen oft eine Schicht der Verpackung hinzu, um AIO direkt zu unterstützen.

4. signalgetriebene I/O (SIGIO)

Wie im Bild gezeigt, wird dieses IO-Modell aufgrund der Vergleichsmodelle3Kein Performance-Vorteil, und aufgrund der instabilen Systemunterstützung wird es selten von Designern verwendet.

5. asynchrone I/O (POSIX aio_ Funktionen)

Wie im Bild gezeigt, ist dieses IO-Modell das perfekte AIO und das Programmiermodell ist auch am einfachsten, aber nur wenige OS unterstützen diese Modelle perfekt. Informationen im Internet zeigen, dass Linux in dieser Hinsicht Anstrengungen unternimmt. Sobald das OS in dieser Hinsicht Fortschritte macht, könnten Programmierframes, Plattformen und Programmiermodelle erheblich vereinfacht werden müssen.

Obwohl dieses Modell selten von OS unterstützt wird, bedeutet das nicht, dass es keine solchen AIO-Modelle gibt. Viele Frameworks haben这方面 gearbeitet und haben im Benutzermodus AIO simuliert, damit Benutzer sich mehr auf die Geschäftslogikcode konzentrieren können.

6. Synchronität und Asynchronität, blockiert und nicht blockiert

Synchron und asynchron beziehen sich auf die Interaktion zwischen Anwendung und Kernel. Synchron bedeutet, bis die Daten gelesen sind, zurückzukehren, asynchron bedeutet, sofort zurückzukehren. Blockiert und nicht blockiert beziehen sich auf Prozesse und Threads, wobei im blockierten Modus das Lesen oder Schreiben der Thread bis zum Abschluss wartet, während im nicht blockierten Modus das Lesen oder Schreiben der Thread sofort einen Statuswert zurückgibt.

Das ist der gesamte Inhalt dieses Artikels. Wir hoffen, dass er Ihnen bei Ihrem Lernen hilft und wir bitten Sie, die呐喊教程 mehr zu unterstützen.

Erklärung: Der Inhalt dieses Artikels wurde aus dem Internet übernommen und gehört dem Urheberrechtsinhaber. Der Inhalt wurde von Internetnutzern freiwillig beigesteuert und hochgeladen. Diese Website besitzt keine Eigentumsrechte und hat den Inhalt nicht manuell bearbeitet. Sie übernimmt auch keine Haftung für rechtliche Fragen. Wenn Sie verdächtige urheberrechtliche Inhalte finden, freuen wir uns über eine E-Mail an: notice#oldtoolbag.com (Bitte ersetzen Sie # durch @ beim Senden von E-Mails und geben Sie relevante Beweise an. Sobald nachgewiesen wird, dass die Inhalte urheberrechtlich geschützt sind, wird diese Website die betreffenden Inhalte sofort löschen.)

Gefällt mir