新网建站教程公众号文章制作模板

张小明 2026/1/8 23:37:02
新网建站教程,公众号文章制作模板,长沙外贸建站,抖音小程序电脑上怎么打开一、NIO简介 NIO中的N为NEW, IO为INPUT/OUTPUT,也就是民间所说的Non-Blocking IO,它拥有高并发能力,到JDK1.7 出现了NIO2.0。 在单线程的情况下,当前的IO操作即使没有完成,当前线程也能做其他事情,不用等待某个操作涉及的数据全部完成再进行其他操作。具体解释为:NIO的…一、NIO简介NIO中的N为NEW, IO为INPUT/OUTPUT,也就是民间所说的Non-Blocking IO,它拥有高并发能力,到JDK1.7 出现了NIO2.0。在单线程的情况下,当前的IO操作即使没有完成,当前线程也能做其他事情,不用等待某个操作涉及的数据全部完成再进行其他操作。具体解释为:NIO的非阻塞模式下,线程发送数据与接收数据都是通过通道进行的,线程只需要去查看是否有数据要处理,如果没有就直接返回,不会等待。二、NIO架构设计Java NIO的核心组件包括:Channel(通道),Buffer(缓冲区),Selector(选择器)。1、缓冲区(内存区域)它本质上就是一个数组,提供了对数据的结构化访问以及维护读写位置等功能。(1)缓冲区的作用:负责与通道进行交互。在面向流的IO中我们可以直接把数据写到Stream对象里,而面向通道的IO则不行,线程需要先把数据写入到缓冲区,再将缓冲区里的数据写到通道对象里。(2)缓冲区的类别:最常用的是ByteBuffer(字节缓冲区),其他的还有CharBuffer、ShortBuffer等。ByteBuffer除了具有一般缓冲的操作之外还提供了一些特有操作,方便网络读写。2、通道通过它传输数据,与流的不同之处在于,通道是全双工的,同时支持读写操作,而流只能在一个方向上移动。通道的作用:用于在字节缓冲区和通道的另一侧的实体(通常是一个文件或者套接字)进行有效的数据传输。3、多路复用器(选择器)它会不断地轮询注册在它上面的通道,并且返回那些准备就绪的通道,以便进行后续的IO处理。对应linux操作系统中的epoll。注意:服务器和客户端可分别有自己的多路复用器(选择器)。三、ServerSocketChannel和SocketChannel的区别它们是一对,位于java.nio中的通信的类。其中ServerSocketChannel是服务器端用的通道,SocketChannel是服务端/客户端均可用的通道。使用的时候必须先建立ServerSocketChannel通道来等待客户端的连接。客户端则必须建立相对应的SocketChannel(客户端会给该通道随机分配一个端口号)来与服务器建立连接,服务器接收到客户端的连接后,创建一个新的SocketChannel(该端口号与ServerSocketChannel端口号相同)并通过ServerSocketChannel.accept()方法与客户端的SocketChannel建立连接,之后双方就可以进行通信了。即服务器端的每一个SocketChannel都唯一标识了一个客户端。现在我们给出一个测试样例,代码分为客户端和服务端,将它们分别放在不同的linux机器上,进行远程调用。注意客户端中申请连接用的IP和PORT一定是跟服务器中绑定的相同,否则无法建立连接。注意:需要关系两台测试机器的防火墙;确定端口未被占用。客户端代码如下:java.io.IOException; import java.net.InetSocketAddress; import java.nio.ByteBuffer; import java.nio.channels.SelectionKey; import java.nio.channels.Selector; import java.nio.channels.SocketChannel; import java.nio.charset.Charset; // NIO客户端 public class NIOClient { // 客户端的多路复用器(选择器) private Selector selector; // 与服务器通信的信道 SocketChannel socketChannel; static int sendCount = 0; public NIOClient(int port)throws IOException{ selector = Selector.open(); socketChannel = SocketChannel.open(); socketChannel.connect(new InetSocketAddress("9.30.249.84",port)); socketChannel.configureBlocking(false); socketChannel.register(selector, SelectionKey.OP_READ); } private void startNIOClient() { // 启动客户端读线程:读取服务器端发来的信息 new Thread(new ClientReadThread()).start(); } class ClientReadThread implements Runnable { public void run() { try { while (selector.select() 0) { // 遍历每个有可用IO操作Channel对应的SelectionKey for (SelectionKey sk : selector.selectedKeys()) { // 如果该SelectionKey对应的Channel中有可读的数据 if (sk.isReadable()) { // 使用NIO读取Channel中的数据 SocketChannel sc = (SocketChannel) sk.channel(); ByteBuffer readBuffer = ByteBuffer.allocate(1024); sc.read(readBuffer); readBuffer.flip(); // 将字节转化为为UTF-16的字符串
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

家装设计师用什么软件画图seo全网推广营销软件

Vue-next-admin:5大核心功能助你快速搭建专业后台管理系统 【免费下载链接】vue-next-admin 🎉🎉🔥基于vue3.x 、Typescript、vite、Element plus等,适配手机、平板、pc 的后台开源免费模板库(vue2.x请切换…

张小明 2026/1/9 2:08:29 网站建设

数据库能上传网站模板南海区建设网站

脚本编写与项目构建全攻略 命令选项与格式优化 在Linux命令行操作中,许多命令都有短选项和长选项两种形式。以 ls 命令为例: - [me@linuxbox ~]$ ls -ad - [me@linuxbox ~]$ ls --all --directory 这两条命令是等效的。在命令行输入选项时,为了减少输入量,通常会…

张小明 2026/1/9 4:18:25 网站建设

直接找高校研究生做网站行吗关键词搜索量查询

复制、粘贴,再复制、再粘贴……这些看似简单的操作,却是我们日常工作中最常重复的动作之一。然而,恰恰是这些高频操作,往往藏着提升效率的关键。 虽然 Windows 自带的剪贴板用起来顺手,但功能实在过于基础&#xff0c…

张小明 2026/1/9 4:18:23 网站建设

做网站怎样申请动态域名wordpress 获取分类地址

一、先上效果图最近动手实践了下 Vibe Coding,想尝试​一行代码不写,纯通过 Prompt 让 AI 写了一个富文本渲染引擎​。整体花了两天时间不到,效果如上图,支持的特性有:类似前端的 Block、InlineBlock、Inline 布局文本…

张小明 2026/1/9 4:18:21 网站建设

江苏连云港网站设计公司温州

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

张小明 2026/1/9 4:18:19 网站建设

景安网络网站建设企业网络推广方案模板

Python大佬正在用的你不知道的几个编程技巧 Python以其简洁优雅的语法吸引了无数开发者,但真正的高手往往掌握着一些不为人知的“隐藏技巧”。这些技巧不仅能让代码更加高效、优雅,还能解决一些棘手的问题。下面就是几个Python大佬常用而你或许还不知道的…

张小明 2026/1/9 4:18:17 网站建设