Exemple de code sur le processus de travail spécifique de 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 } } } }
Le code ci-dessus est un exemple de code tiré du livre sur le processus de travail spécifique de Nio. Son processus de fonctionnement peut être décrit en détail comme suit :
Il existe deux classes clés : Canal et sélecteur , ce sont des concepts fondamentaux dans NIO. Le canal peut être comparé à un moyen de transport, et il s'agit d'un moyen de transport spécifique, comme les voitures et les vélos. Le Selector peut être comparé à un système de répartition de véhicules, chargé de surveiller les conditions de fonctionnement des véhicules et les travaux de répartition spécifiques.
La classe serverSocketChannel est un canal optionnel pour les sockets d'écoute orientées flux. Après avoir créé une telle instance côté serveur, utilisez la méthode Socket() (récupérez les informations associées à ce canal). Server Socket) renvoie une instance de la classe ServerSocket et utilise la méthode void bind(SocketAddress endpoint) de cette instance pour lier ServerSocket
à une adresse spécifique (adresse IP et numéro de port). Tout comme chaque taxi d'une compagnie de taxi doit être enregistré auprès de l'entreprise, nous devons également enregistrer l'instance ServerSocketChannel auprès du sélecteur spécifié via la méthode register().
Appelez ensuite la méthode selectedKeys de Selector pour vérifier si tous les canaux de communication enregistrés sur ce sélecteur ont les événements requis. Si un événement se produit, tous les événements seront renvoyés SelectionKey, depuis la clé. .readyOps() obtient l'ensemble d'opérations prêt de cette clé, je pense personnellement que key.readyOps()&SelectionKey.OP_ACCEPT signifie que l'ensemble d'opérations prêt de cette clé est dans l'état ACCEPT, c'est-à-dire le Le serveur est dans l'état d'écoute, l'objet canal de communication peut être obtenu via la méthode Channel de cet objet, puis la méthode accept() est appelée pour renvoyer un canal socket, qui est par défaut dans un état de blocage. Vous pouvez également utiliser la communication. objet canal obtenu par la méthode Channel pour lire les données de communication, et Les données lues ici sont Buffer, et ce Buffer est un tampon que nous pouvons contrôler.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

En tant que langage de programmation moderne, le langage Go joue un rôle important dans le développement. Le langage Go fournit des fonctions et des structures temporelles intégrées pour rendre le traitement du temps plus pratique. Dans cet article, nous présenterons quelques méthodes de traitement du temps couramment utilisées dans le langage Go. time.Now() Nous pouvons utiliser la fonction time.Now() pour obtenir l'heure actuelle : now:=time.Now()fmt.Println(now) sortie : 2019-06-131

Lorsque nous parlons de langages de programmation et d’emplois, un langage de programmation qui nous vient à l’esprit est Java. La plupart des entreprises dans le monde utilisent Java. C'est populaire et les opportunités d'emploi sont nombreuses. Si vous souhaitez obtenir un emploi grâce aux compétences Java en 2023, c'est une bonne chose pour vous car les compétences Java peuvent vous permettre d'obtenir un emploi rapidement. De plus, cela peut rapidement faire progresser votre carrière. Il n’existe pas de tour de magie qui vous permettra de trouver un emploi rapidement. Mais vos compétences sont comme de la magie pour vous. Choisissez un emploi qui vous satisfait et un bon environnement qui peut grandement valoriser votre carrière. Si vous êtes débutant et avez de l'expérience, Java vous offre également un bon travail. De nombreuses entreprises utilisent Java comme programme principal pour leur développement. il

Analyse des responsabilités de l'ingénieur front-end : quel est le travail principal ? Avec le développement rapide d'Internet, les ingénieurs front-end jouent un rôle professionnel très important, jouant un rôle essentiel de pont entre les utilisateurs et les applications du site Web. Alors, que font principalement les ingénieurs front-end ? Cet article analysera les responsabilités des ingénieurs front-end, découvrons-le. 1. Responsabilités de base des ingénieurs front-end Développement et maintenance du site Web : les ingénieurs front-end sont responsables du développement front-end du site Web, y compris la rédaction du code HTML, CSS et JavaScr du site Web.

La sortie successive de grands modèles tels que ChatGPT a fait que de nombreuses personnes se sentent stressées et craignent que l’IA ne prenne bientôt le dessus sur leur travail. À cet égard, OpenAI a également publié une étude montrant que l’impact de ChatGPT couvre toutes les classes de revenus et que les emplois à revenu élevé peuvent être confrontés à des risques plus importants. Quels sont les faits ? Devons-nous automatiser tous les travaux, même les plus satisfaisants ? C'est l'une des nombreuses questions soulevées récemment par le Future of Life Institute, qui a appelé à un moratoire sur les expériences d'intelligence artificielle à grande échelle et qui a maintenant été signé par plus de 10 000 personnes, dont Elon Musk, Steve Wozniak et Andrew Yang.

Emplois possibles : 1. Développement d'applications au niveau de l'entreprise ; 2. Développement de sites Web ; 3. Développement d'applications mobiles ; 5. Analyse de mégadonnées ; 6. Informatique scientifique et intelligence artificielle ; développement d'applications industrielles, etc. Introduction détaillée : 1. Développement d'applications au niveau de l'entreprise : Java occupe une position importante dans le développement d'applications au niveau de l'entreprise et peut être utilisé pour développer des systèmes vastes et complexes, tels que ERP, CRM, etc. Ces systèmes doivent généralement traiter de grandes quantités de données, prendre en charge une concurrence élevée et garantir la stabilité du système. 2. Développement de sites Web : y compris front-end et back-end, etc.

Emplois que vous pouvez trouver en apprenant Java : 1. Développement d'applications au niveau de l'entreprise ; 2. Développement de sites Web ; 3. Développement Android ; 5. Big data et cloud computing ; . Développement et maintenance de logiciels ; 9. Programmation de systèmes et de réseaux ; 10. Sécurité et cryptage ; 12. Consultation et conseil ; Introduction détaillée : 1. Développement d'applications au niveau de l'entreprise. Java occupe une position très importante dans le développement d'applications au niveau de l'entreprise. Grâce à Java, diverses applications complexes au niveau de l'entreprise peuvent être développées, telles que des systèmes OA, etc.

Emplois que le langage C peut effectuer à l'avenir : 1. Développement de systèmes ; 2. Développement de jeux ; 3. Développement de réseaux ; 5. Développement de compilateurs ; 7. Sécurité de réseau ; 9, domaine de l'éducation ; 10. Analyse des données et apprentissage automatique ; 11. Développement et maintenance de logiciels ; Introduction détaillée : 1. Développement de systèmes. Le langage C est un langage commun pour la programmation au niveau système. Il peut être utilisé pour développer des systèmes d'exploitation et des systèmes embarqués. Si vous maîtrisez le langage C, vous pouvez devenir ingénieur en développement de systèmes. , etc.

Chrome enregistrera automatiquement les URL qui ont été saisies dans la barre d'adresse et « associera automatiquement le contenu de la requête » à l'avenir, mais souvent, nous n'avons pas besoin de certaines URL, comment les supprimer ? L'éditeur rencontre souvent ce problème. Les adresses saisies auparavant seront bloquées devant les adresses couramment utilisées, ce qui nécessitera de sélectionner plusieurs fois pour accéder au site Web souhaité. J'ai cherché comment le supprimer au moins trois fois car... je l'oublie à chaque fois. Dans les raccourcis de la barre d'adresse de l'aide officielle de Chrome Raccourcis clavier Chrome, la touche de raccourci de suppression est clarifiée : ▍Windows supprime le contenu de l'association de la barre d'adresse. Appuyez sur la touche fléchée vers le bas pour mettre en surbrillance le contenu correspondant, puis appuyez sur la touche Maj+Supprimer ▍macOS. supprime le contenu de l'association du bar d'adresse cliquez vers le bas
