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

漳州建设项目公告网站公众号排版编辑器

漳州建设项目公告网站,公众号排版编辑器,做分析图的地图网站,广州微网站开发1. 参考 建议按顺序阅读以下三篇文章 为什么NIO被称为同步非阻塞#xff1f; Java IO 与 NIO#xff1a;高效的输入输出操作探究 【Java.NIO】Selector#xff0c;及SelectionKey 2. 实战 我们将模拟一个简单的HTTP服务器#xff0c;它将响应客户端请求并返回一个固定的…1. 参考 建议按顺序阅读以下三篇文章 为什么NIO被称为同步非阻塞 Java IO 与 NIO高效的输入输出操作探究 【Java.NIO】Selector及SelectionKey 2. 实战 我们将模拟一个简单的HTTP服务器它将响应客户端请求并返回一个固定的响应”Hello, World!”。我们将使用IO和NIO两种不同的方式实现此服务器。 2.1 传统阻塞IO import java.io.*; public class TraditionalIOExample {public static void main(String[] args) {try {// 打开文件InputStream input new FileInputStream(example.txt);OutputStream output new FileOutputStream(output.txt);// 读取和写入数据int data;while ((data input.read()) ! -1) {output.write(data);}// 关闭文件input.close();output.close();} catch (IOException e) {e.printStackTrace();}} }2.2 非阻塞NIO import java.io.IOException; import java.net.InetSocketAddress; import java.nio.ByteBuffer; import java.nio.channels.*; import java.util.Iterator; import java.util.Set;public class NioHttpServer {public static void main(String[] args) {try {// 创建服务端通道ServerSocketChannel serverChannel ServerSocketChannel.open();// 绑定访问端口serverChannel.socket().bind(new InetSocketAddress(8080));// 通道设置为非阻塞serverChannel.configureBlocking(false);// 通过open方法创建一个SelectorSelector selector Selector.open();/** 必须将channel注册到selector上并订阅OP_ACCEPT事件SelectionKey.OP_CONNECT channel成功连接到另一个服务器称为”连接就绪“SelectionKey.OP_ACCEPT server socket channel准备好接收新进入的连接称为”接收就绪“SelectionKey.OP_READ 有数据可读的通道可以说是”读就绪“SelectionKey.OP_WRITE 有数据可写的通道可以说是”读就绪“*/serverChannel.register(selector, SelectionKey.OP_ACCEPT);while (true) {// 返回你所感兴趣的事件连接接受读或写已经准备就绪的那些通道int readyChannels selector.select();if (readyChannels 0){continue;}// 访问”已选择键集“中的就绪通道SetSelectionKey selectedKeys selector.selectedKeys();// 可以遍历这个已选择的集合来访问就绪的通道IteratorSelectionKey keyIterator selectedKeys.iterator();while (keyIterator.hasNext()) {SelectionKey key keyIterator.next();// 注意每次迭代末尾的remove()调用Selector不会自己从已选择集中移除SelectioKey实例必须在处理完通道时自己移除。keyIterator.remove();// 一个server socket channel准备号接收新进入的连接称为”接收就绪“if (key.isAcceptable()) {ServerSocketChannel server (ServerSocketChannel) key.channel();// 客户端socker注册进来SocketChannel clientChannel server.accept();clientChannel.configureBlocking(false);clientChannel.register(selector, SelectionKey.OP_READ);// 客户端通道是否有数据流进来} else if (key.isReadable()) {SocketChannel clientChannel (SocketChannel) key.channel();ByteBuffer buffer ByteBuffer.allocate(1024);clientChannel.read(buffer);buffer.flip();byte[] bytes new byte[buffer.remaining()];buffer.get(bytes);String request new String(bytes);String response HTTP/1.1 200 OK\r\n\r\nHello, World!\r\n;ByteBuffer responseBuffer ByteBuffer.wrap(response.getBytes());clientChannel.write(responseBuffer);clientChannel.close();}}}} catch (IOException e) {e.printStackTrace();}} }3. 模型 上述代码结合该模型第二次阅读代码会有更深的理解 4. 原理 多路复用才是NIO不阻塞的原因
http://www.zqtcl.cn/news/691417/

相关文章:

  • 企业网站优化兴田德润怎么样网站建设建设公司资质要求
  • 如何把网站做跳转浏览器链接地址wordpress 离线更新
  • 乌海学校网站建设wordpress默认主题下载
  • 海兴县做网站如何选网站建设公司
  • asp网站设为首页代码孝仙洪高速公路建设指挥部网站
  • 浦东新区网站开发人才网站建设策划书
  • 网站做flash好不好免费微信公众号素材网
  • 开发网站嵌入广告汕头电商网站建设
  • 电脑做科目一网站购物网站怎么创建
  • c2c网站建设公司wordpress被公众号干掉
  • wordpress托管建站网站页面布局和样式设计
  • 建站平台江苏省建设监理协会网站
  • 安徽网站开发培训价格百度seo排名公司
  • 青海网站建设费用oa系统和erp系统区别
  • 个人做网站的注意事项网站开发工程师6
  • 镇江百度网站建设北京网站开发价格
  • 大岭山镇仿做网站推广计划表格
  • 网站备案地址不是我的地址怎么办建设银行网站查询业务收费吗
  • 电商网站设计内容网站编辑及seo招聘
  • 用什么网站开发浙江省住房和建设厅网站
  • 站长工具seo优化建议微信小程序线上商城怎么申请
  • 建筑网站开发设计做网站的公司msgg
  • 设计师个人网站模板网站的尾页要怎么做
  • 营销型网站建设风格设定包括哪些方面wordpress企业魔板
  • 怎样做淘客网站做绿色产品的网站
  • 关于网站建设的通知wordpress点注册后一直不出来
  • 科技公司网站设计方案开发公司绩效考核
  • 深圳网站建设推进旗县政务网站建设工作方案
  • 南宁 网站建设网站集约建设
  • 做网站编辑好吗吉林省四平市