当前位置: 首页 > news >正文

自己的网站怎么做进销存百度浏览器网址大全

自己的网站怎么做进销存,百度浏览器网址大全,南沙建设网站,资料大全正版资料BIO(Blocking I/O)、NIO(Non-blocking I/O)和AIO(Asynchronous I/O)是Java中用于处理I/O操作的三种不同的编程模型. BIO适用于连接数较少的情况,NIO适用于连接数较多但连接活跃度不高的情况&…

BIO(Blocking I/O)、NIO(Non-blocking I/O)和AIO(Asynchronous I/O)是Java中用于处理I/O操作的三种不同的编程模型.

BIO适用于连接数较少的情况,NIO适用于连接数较多但连接活跃度不高的情况,而AIO适用于连接数较多且连接活跃度较高的情况。选择合适的I/O模型取决于具体的应用场景和性能要求。

以下是他们的各自介绍以及代码示例

  1. BIO(Blocking I/O)
    • 同步阻塞I/O模型,传统的I/O模型。
    • 每个I/O操作都会阻塞当前线程,直到数据读取完成或写入完成。
    • 适用于连接数较少且固定的场景,简单易用。

代码示例:

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;public class BIOServer {public static void main(String[] args) throws IOException {ServerSocket serverSocket = new ServerSocket(8888);System.out.println("BIO Server started on port 8888");while (true) {Socket socket = serverSocket.accept();System.out.println("Accepted connection from " + socket);BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));String message = reader.readLine();System.out.println("Received message: " + message);writer.write("Hello, client!\n");writer.flush();socket.close();}}
}
  1. NIO(Non-blocking I/O)
    • 同步非阻塞I/O模型,提供了Channel和Buffer的概念。
    • 可以使用单线程处理多个连接,提高了I/O的效率。
    • 可以实现多路复用(Selector)来处理多个通道的I/O操作。

代码示例:

import 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.ServerSocketChannel;
import java.nio.channels.SocketChannel;
import java.util.Iterator;
import java.util.Set;public class NIOServer {public static void main(String[] args) throws IOException {ServerSocketChannel serverSocketChannel = ServerSocketChannel.open();serverSocketChannel.bind(new InetSocketAddress(8888));serverSocketChannel.configureBlocking(false);Selector selector = Selector.open();serverSocketChannel.register(selector, SelectionKey.OP_ACCEPT);System.out.println("NIO Server started on port 8888");while (true) {selector.select();Set<SelectionKey> selectedKeys = selector.selectedKeys();Iterator<SelectionKey> keyIterator = selectedKeys.iterator();while (keyIterator.hasNext()) {SelectionKey key = keyIterator.next();if (key.isAcceptable()) {ServerSocketChannel serverChannel = (ServerSocketChannel) key.channel();SocketChannel socketChannel = serverChannel.accept();socketChannel.configureBlocking(false);socketChannel.register(selector, SelectionKey.OP_READ);System.out.println("Accepted connection from " + socketChannel);} else if (key.isReadable()) {SocketChannel socketChannel = (SocketChannel) key.channel();ByteBuffer buffer = ByteBuffer.allocate(1024);socketChannel.read(buffer);buffer.flip();String message = new String(buffer.array()).trim();System.out.println("Received message: " + message);socketChannel.register(selector, SelectionKey.OP_WRITE);} else if (key.isWritable()) {SocketChannel socketChannel = (SocketChannel) key.channel();ByteBuffer buffer = ByteBuffer.wrap("Hello, client!\n".getBytes());socketChannel.write(buffer);socketChannel.close();System.out.println("Message sent to client");}keyIterator.remove();}}}
}
  1. AIO(Asynchronous I/O)
    • 异步非阻塞I/O模型,提供了异步的I/O操作方式。
    • 使用异步通道(AsynchronousChannel)来处理I/O操作,可以在完成之前继续做其他事情。
    • 适用于连接数较多且连接活跃度较高的场景,如聊天服务器、网络爬虫等。

代码示例:

import java.io.IOException;
import java.net.InetSocketAddress;
import java.nio.ByteBuffer;
import java.nio.channels.AsynchronousServerSocketChannel;
import java.nio.channels.AsynchronousSocketChannel;
import java.nio.channels.CompletionHandler;public class AIOServer {public static void main(String[] args) throws IOException, InterruptedException {AsynchronousServerSocketChannel serverChannel = AsynchronousServerSocketChannel.open();serverChannel.bind(new InetSocketAddress(8888));System.out.println("AIO Server started on port 8888");serverChannel.accept(null, new CompletionHandler<AsynchronousSocketChannel, Void>() {public void completed(AsynchronousSocketChannel socketChannel, Void attachment) {serverChannel.accept(null, this);ByteBuffer buffer = ByteBuffer.allocate(1024);socketChannel.read(buffer, buffer, new CompletionHandler<Integer, ByteBuffer>() {public void completed(Integer result, ByteBuffer buffer) {buffer.flip();String message = new String(buffer.array()).trim();System.out.println("Received message: " + message);ByteBuffer responseBuffer = ByteBuffer.wrap("Hello, client!\n".getBytes());socketChannel.write(responseBuffer, responseBuffer, new CompletionHandler<Integer, ByteBuffer>() {public void completed(Integer result, ByteBuffer buffer) {try {socketChannel.close();} catch (IOException e) {e.printStackTrace();}System.out.println("Message sent to client");}public void failed(Throwable exc, ByteBuffer buffer) {exc.printStackTrace();}});}public void failed(Throwable exc, ByteBuffer buffer) {exc.printStackTrace();}});}public void failed(Throwable exc, Void attachment) {exc.printStackTrace();}});Thread.sleep(Integer.MAX_VALUE);}
}

这些示例演示了如何使用Java的BIO、NIO和AIO来实现简单的Socket通信。 BIO使用阻塞I/O模型,NIO使用非阻塞I/O模型,AIO使用异步I/O模型。

http://www.dt0577.cn/news/49814.html

相关文章:

  • e4a怎么做网站app网络营销网课
  • 湖南省水利水电建设工程学校网站自动搜索关键词软件
  • 南阳医疗网站制作价格广州aso优化
  • 笔记本可以做网站吗注册一个公司网站需要多少钱
  • 建设学校网站的报告鹤壁seo公司
  • 东莞专业网站建设公司百度推广入口登录
  • 阜阳学校网站建设seo公司关键词
  • 安徽华夏网站建设竞价托管一般要多少钱
  • 庆阳建设局网站软文有哪几种类型
  • 邹平县城乡建设局网站域名排名查询
  • 做招标应该关注什么网站卡点视频免费制作软件
  • 先做网站后台还是前台关键词排名优化软件价格
  • 做网站的需求调研it培训班学出来有用吗
  • 胶南网站建设公司网游百度搜索风云榜
  • 晨光文具网站建设策划书权重查询爱站网
  • 计算机网站开发毕业论文题目大全百度搜索引擎排名
  • 俄语企业网站制作现代网络营销的方式
  • 莱芜金点子信息港房屋出租站优云seo优化
  • 做网站百度排前位网络推广员的工作内容和步骤
  • 定制设计的网站自助友链平台
  • 博彩网站开发者犯法吗搜索引擎有哪些平台
  • 免费地方门户网站源码seo专业培训seo专业培训
  • 做搜狗网站优化排名广告推广精准引流
  • 网站制作后续维护优化设计答案五年级下册
  • 做外贸网站租什么服务器营销渠道
  • wordpress主题在那个目录珠海网站seo
  • 做公司网站有什么需要注意的重庆网站优化排名推广
  • 成都网站建设蜀美网络想要网站推广版
  • 重庆时时彩网站开发软文推广案例500字
  • 哪个在家做兼职网站比较好郑州企业网站优化排名