怎么做网站报告珠海网站建设推广

张小明 2026/1/10 6:48:38
怎么做网站报告,珠海网站建设推广,东莞设计网站建设方案,网站忘记备案一、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进行投诉反馈,一经查实,立即删除!

凤翔做网站西城做网站

多 Agent 协作中的角色通信优化:基于话题的消息过滤与路由技术 在复杂 AI 应用中,多 Agent 协作正在成为越来越常见的设计模式。无论是构建智能客服、任务规划 Agent,还是开发具备推理能力的自主体系统,多个 Agent 之间都需要进行…

张小明 2026/1/3 17:42:16 网站建设

杭州做网站的公司哪家好河北建设局网站首页

欢迎大家加入开源鸿蒙跨平台开发者社区,一起共建开源鸿蒙跨平台生态。 跨段隐私纵深防御:Flutter轻量适配鸿蒙API8/9实现 技术背景与需求 跨段隐私纵深防御的核心在于通过轻量化工具实现多终端(如Flutter与鸿蒙设备)间的隐私数据安…

张小明 2026/1/3 12:19:21 网站建设

茂名做网站报价字体在线生成器

第一章:深入Zend引擎:Rust如何安全注册PHP函数(专家级避坑指南)在现代PHP扩展开发中,利用Rust编写高性能、内存安全的Zend扩展正成为趋势。然而,将Rust函数安全地注册到Zend引擎并非简单绑定,需…

张小明 2026/1/3 11:14:25 网站建设

怎样使用仿站小工具做网站企业vi设计需求

高校教学新帮手:Kotaemon搭建课程答疑机器人在高校课堂里,一个常见的场景是:下课铃响后,三五个学生围住讲台前的老师,反复询问同一个知识点;而更多未到场的学生,则在微信群或学习平台上留下一连…

张小明 2026/1/5 7:29:11 网站建设

正能量不良网站软件下载标识设计公司排名

WELearn助手:智能化学习解决方案全面解析 【免费下载链接】WELearnHelper 显示WE Learn随行课堂题目答案;支持班级测试;自动答题;刷时长;基于生成式AI(ChatGPT)的答案生成 项目地址: https://gitcode.com/gh_mirrors…

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