Beispielcode zum spezifischen Arbeitsprozess von Nio
1 public void selector() throws IOException { 2 ByteBuffer buffer = ByteBuffer.allocate(1024); 3 Selector selector = Selector.open(); 4 ServerSocketChannel ssc = ServerSocketChannel.open(); 5 ssc.configureBlocking(false);//设置为非阻塞模式 6 ssc.socket().bind(new InetSocketAddress(8080)); 7 ssc.register(selector, SelectionKey.OP_ACCEPT);//注册监听事件 8 while(true) { 9 Set selectorKeys = selector.selectorKeys(); //取得所有key的集合10 Iterator it = selectorKeys.iterator();11 while(it.hasNext()) { //检查序列是否还有元素12 SelectionKey key = (SelectionKey) it.next();13 if((key.readyOps() & SelectionKey.OP_ACCEPT) == SelectionKey.OP_ACCEPT) {14 ServerSocketChannel ssChannel = (ServerSocketChannel) key.channel();15 SocketChannel sc = ssChannel.accept();//接受到服务端的请求16 sc.configureBlocking(false);17 sc.register(selector,SelectionKey.OP_ACCEPT);18 it.remove();19 } else if((key.readyOps() & SelectionKey.OP_READ) == SelectionKey.OP_READ) {20 SocketChannel sc = (SocketChannel) key.channel;21 while(true) {22 buffer.clear();23 int n = sc.read(buffer);//读取数据24 if(n <= 0) {25 break;26 } buffer.flip();28 } it.remove();30 } } } }
Der obige Code ist ein Codebeispiel aus dem Buch über den spezifischen Arbeitsprozess von Nio. Sein Arbeitsablauf kann im Detail wie folgt beschrieben werden:
Es gibt zwei Schlüsselklassen: Kanal und Selektor , sie sind Kernkonzepte in NIO. Der Kanal kann mit einem Transportmittel verglichen werden und ist ein bestimmtes Transportmittel wie Autos und Fahrräder. Der Selector kann mit einem Fahrzeugdispositionssystem verglichen werden, das für die Überwachung der Fahrzeugbetriebsbedingungen und spezifischer Dispositionsarbeiten verantwortlich ist.
Die serverSocketChannel-Klasse ist ein optionaler Kanal für Stream-orientierte Listening-Sockets. Nachdem eine solche Instanz auf der Serverseite erstellt wurde, ruft die Socket()-Methode (die diesem Kanal zugeordneten Informationen ab ) Server Socket) gibt eine Instanz der ServerSocket-Klasse zurück und verwendet die Methode void bind(SocketAddress endpoint) dieser Instanz, um ServerSocket
an eine bestimmte Adresse (IP-Adresse und Portnummer) zu binden. So wie jedes Taxi in einem Taxiunternehmen beim Unternehmen registriert sein muss, müssen wir auch die ServerSocketChannel-Instanz über die Methode register() beim angegebenen Selektor registrieren.
Rufen Sie dann die selectedKeys-Methode von Selector auf, um zu überprüfen, ob alle auf diesem Selektor registrierten Kommunikationskanäle über die erforderlichen Ereignisse verfügen. Wenn ein Ereignis auftritt, werden alle Ereignisse zurückgegeben, da der Schlüssel vorhanden ist .readyOps() erhält den Bereitschaftsoperationssatz dieses Schlüssels. Ich persönlich denke, dass key.readyOps()&SelectionKey.OP_ACCEPT bedeutet, dass sich der Bereitschaftsoperationssatz dieses Schlüssels im ACCEPT-Zustand befindet, d. h Der Server befindet sich im Überwachungsstatus. Das Kommunikationskanalobjekt kann über die Channel-Methode dieses Objekts abgerufen werden. Anschließend wird die Methode „accept()“ aufgerufen, um einen Socket-Kanal zurückzugeben, der standardmäßig den Blockierungsstatus verwendet Durch die Channel-Methode erhaltenes Kanalobjekt zum Lesen der Kommunikationsdaten. Die hier gelesenen Daten sind Puffer, und dieser Puffer ist ein Puffer, den wir steuern können.
Das obige ist der detaillierte Inhalt vonBeispielcode zum spezifischen Arbeitsprozess von Nio. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Als moderne Programmiersprache spielt die Go-Sprache eine wichtige Rolle in der Entwicklung. Die Go-Sprache bietet einige integrierte Zeitfunktionen und -strukturen, um die Zeitverarbeitung komfortabler zu gestalten. In diesem Artikel stellen wir einige häufig verwendete Zeitverarbeitungsmethoden in der Go-Sprache vor. time.Now() Wir können die Funktion time.Now() verwenden, um die aktuelle Zeit abzurufen: now:=time.Now()fmt.Println(now) Ausgabe: 2019-06-131

Analyse der Verantwortlichkeiten des Front-End-Ingenieurs: Was ist die Hauptaufgabe? Angesichts der rasanten Entwicklung des Internets spielen Front-End-Ingenieure eine sehr wichtige berufliche Rolle und spielen eine wichtige Rolle als Brücke zwischen Benutzern und Website-Anwendungen. Was machen Front-End-Ingenieure also hauptsächlich? In diesem Artikel werden die Verantwortlichkeiten von Front-End-Ingenieuren analysiert. Lassen Sie uns das herausfinden. 1. Grundlegende Verantwortlichkeiten von Front-End-Ingenieuren Website-Entwicklung und -Wartung: Front-End-Ingenieure sind für die Front-End-Entwicklung der Website verantwortlich, einschließlich des Schreibens von HTML, CSS und JavaScr der Website

Wenn wir über Programmiersprachen und Berufe sprechen, fällt uns vor allem Java ein. Die meisten Unternehmen auf der ganzen Welt verwenden Java. Es ist beliebt und es gibt viele Jobmöglichkeiten. Wenn Sie mit Hilfe von Java-Kenntnissen im Jahr 2023 einen Job bekommen möchten, dann ist das gut für Sie, denn Java-Kenntnisse können Ihnen schnell einen Job verschaffen. Außerdem kann es Ihre Karriere schnell voranbringen. Es gibt keinen Zaubertrick, mit dem Sie schnell einen Job finden. Aber deine Fähigkeiten sind für dich wie Magie. Wählen Sie einen Job, der Sie zufriedenstellt, und ein gutes Umfeld, das Ihre Karriere erheblich bereichern kann. Wenn Sie ein Neuling sind und Erfahrung haben, bietet Ihnen Java ebenfalls einen guten Job. Viele Unternehmen nutzen Java als Hauptprogramm für ihre Entwicklung. Es

Mögliche Aufgaben: 1. Anwendungsentwicklung auf Unternehmensebene; 3. Entwicklung mobiler Anwendungen; 5. Wissenschaftliche Datenverarbeitung und künstliche Intelligenz; Entwicklung von Industrieanwendungen usw. Detaillierte Einführung: 1. Anwendungsentwicklung auf Unternehmensebene: Java nimmt eine wichtige Position in der Anwendungsentwicklung auf Unternehmensebene ein und kann zur Entwicklung großer und komplexer Systeme wie ERP, CRM usw. verwendet werden. Diese Systeme müssen normalerweise große Datenmengen verarbeiten, eine hohe Parallelität unterstützen und die Systemstabilität gewährleisten. 2. Website-Entwicklung: einschließlich Front-End und Back-End usw.

Jobs, die Sie durch das Erlernen von Java finden können: 2. Website-Entwicklung; . Softwareentwicklung und -wartung; 10. Sicherheit und Verschlüsselung; 12. Beratung; Detaillierte Einführung: 1. Java nimmt eine sehr wichtige Position in der Anwendungsentwicklung auf Unternehmensebene ein. Mit Java können verschiedene komplexe Anwendungen auf Unternehmensebene entwickelt werden, z. B. OA-Systeme.

Die sukzessive Veröffentlichung großer Modelle wie ChatGPT hat bei vielen Menschen zu Stress und Angst geführt, dass KI bald ihren Job übernehmen wird. In diesem Zusammenhang hat OpenAI auch eine Studie veröffentlicht, die zeigt, dass die Auswirkungen von ChatGPT alle Einkommensklassen abdecken und Arbeitsplätze mit hohem Einkommen möglicherweise größeren Risiken ausgesetzt sind. Was sind die Fakten? Sollten wir alle Jobs automatisieren, auch die befriedigenden? Dies ist eine von mehreren Fragen, die kürzlich vom Future of Life Institute aufgeworfen wurden, das ein Moratorium für groß angelegte Experimente mit künstlicher Intelligenz gefordert hat und inzwischen von mehr als 10.000 Menschen unterzeichnet wurde, darunter Elon Musk, Steve Wozniak und Andrew Yang

Aufgaben, die die C-Sprache in Zukunft erledigen kann: 2. Spieleentwicklung; 5. Algorithmenentwicklung; 9, Bildungsbereich; 10. Datenanalyse und maschinelles Lernen; 11. Softwareentwicklung und -wartung; Detaillierte Einführung: 1. Die C-Sprache ist eine gängige Sprache für die Programmierung auf Systemebene. Sie kann zur Entwicklung von Betriebssystemen und eingebetteten Systemen verwendet werden. 2. Spieleentwicklung , usw.

Caching trägt dazu bei, Datenbanknetzwerkaufrufe beim Ausführen von Abfragen zu reduzieren. Cache- und Sitzungsverknüpfung der Ebene 1. Es wird implizit implementiert. Der Cache der ersten Ebene existiert, bis das Sitzungsobjekt existiert. Sobald das Sitzungsobjekt beendet/geschlossen ist, sind keine zwischengespeicherten Objekte mehr vorhanden. Der Cache der zweiten Ebene funktioniert für mehrere Sitzungsobjekte. Es ist mit der Session Factory verknüpft. Cache-Objekte der zweiten Ebene stehen allen Sitzungen über eine einzige Sitzungsfabrik zur Verfügung. Diese Cache-Objekte werden beendet, wenn eine bestimmte Sitzungsfabrik geschlossen wird. Um den Second-Level-Cache zu implementieren, müssen wir die folgenden Abhängigkeiten hinzufügen, um den Second-Level-Cache zu verwenden. <!--https://mvnrepository.com/artifact/net.sf.ehcache/ehcache--><de
