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

免费优化网站排名一个小程序制作价格

免费优化网站排名,一个小程序制作价格,深圳 网站设计,网站建设总体规划包括前言 在Java中#xff0c;提供了一些关于使用IO的API#xff0c;可以供开发者来读写外部数据和文件#xff0c;我们称这些API为Java IO。IO是Java中比较重要知识点#xff0c;且比较难学习的知识点。并且随着Java的发展为提供更好的数据传输性能#xff0c;目前有三种IO共… 前言 在Java中提供了一些关于使用IO的API可以供开发者来读写外部数据和文件我们称这些API为Java IO。IO是Java中比较重要知识点且比较难学习的知识点。并且随着Java的发展为提供更好的数据传输性能目前有三种IO共存分别是BIO、NIO和AIO。 同步阻塞I/O模式 是一个比较传统的通信方式模式简单使用方便。但并发处理能力低通信耗时依赖网速。 同步非阻塞模式 NIO 与原来的 I/O 有同样的作用和目的, 他们之间最重要的区别是数据打包和传输的方式。原来的 I/O 以流的方式处理数据而 NIO 以块的方式处理数据。 异步非阻塞I/O模型 是一种非阻塞异步的通信模式。在NIO的基础上引入了新的异步通道的概念并提供了异步文件通道和异步套接字通道的实现。 aio 目录结构如下图 新建客服端启动类 AioClient public class AioClient {public static void main(String[] args) throws Exception {AsynchronousSocketChannel socketChannel AsynchronousSocketChannel.open();FutureVoid future socketChannel.connect(new InetSocketAddress(192.168.108.89, 7397));System.out.println(com.lm.netty01.aio client start done. {码农明哥 | 欢迎关注获取源码});future.get();socketChannel.read(ByteBuffer.allocate(1024), null, new AioClientHandler(socketChannel, Charset.forName(GBK)));Thread.sleep(100000);}}客户端消息处理器类 public class AioClientHandler extends ChannelAdapter {public AioClientHandler(AsynchronousSocketChannel channel, Charset charset) {super(channel, charset);}Overridepublic void channelActive(ChannelHandler ctx) {try {System.out.println(程序员码农 | 链接报告信息: ctx.channel().getRemoteAddress());//通知客户端链接建立成功} catch (IOException e) {e.printStackTrace();}}Overridepublic void channelInactive(ChannelHandler ctx) {}Overridepublic void channelRead(ChannelHandler ctx, Object msg) {System.out.println(码农明哥 | 服务端收到 new Date() msg \r\n);ctx.writeAndFlush(客户端信息处理Success\r\n);} } 服务端 public class AioServer extends Thread {private AsynchronousServerSocketChannel serverSocketChannel;Overridepublic void run() {try {serverSocketChannel AsynchronousServerSocketChannel.open(AsynchronousChannelGroup.withCachedThreadPool(Executors.newCachedThreadPool(), 10));serverSocketChannel.bind(new InetSocketAddress(7397));System.out.println(com.lm.netty01 aio server start done. 欢迎关注获取源码});// 等待CountDownLatch latch new CountDownLatch(1);serverSocketChannel.accept(this, new AioServerChannelInitializer());latch.await();} catch (Exception e) {e.printStackTrace();}}public AsynchronousServerSocketChannel serverSocketChannel() {return serverSocketChannel;}public static void main(String[] args) {new AioServer().start();} } 初始化 public class AioServerChannelInitializer extends ChannelInitializer {Overrideprotected void initChannel(AsynchronousSocketChannel channel) throws Exception {channel.read(ByteBuffer.allocate(1024), 10, TimeUnit.SECONDS, null, new AioServerHandler(channel, Charset.forName(GBK)));} } 处理消息 public class AioServerHandler extends ChannelAdapter {public AioServerHandler(AsynchronousSocketChannel channel, Charset charset) {super(channel, charset);}Overridepublic void channelActive(ChannelHandler ctx) {try {System.out.println(码农明哥| 链接报告信息: ctx.channel().getRemoteAddress());//通知客户端链接建立成功ctx.writeAndFlush(码农明哥 | 通知服务端链接建立成功 new Date() ctx.channel().getRemoteAddress() \r\n);} catch (IOException e) {e.printStackTrace();}}Overridepublic void channelInactive(ChannelHandler ctx) {}Overridepublic void channelRead(ChannelHandler ctx, Object msg) {System.out.println(码农明哥 | 服务端收到 new Date() msg \r\n);ctx.writeAndFlush(服务端信息处理Success\r\n);} }Channle适配器模仿Netty public abstract class ChannelAdapter implements CompletionHandlerInteger, Object {private AsynchronousSocketChannel channel;private Charset charset;public ChannelAdapter(AsynchronousSocketChannel channel, Charset charset) {this.channel channel;this.charset charset;if (channel.isOpen()) {channelActive(new ChannelHandler(channel, charset));}}Overridepublic void completed(Integer result, Object attachment) {try {final ByteBuffer buffer ByteBuffer.allocate(1024);final long timeout 60 * 60L;channel.read(buffer, timeout, TimeUnit.SECONDS, null, new CompletionHandlerInteger, Object() {Overridepublic void completed(Integer result, Object attachment) {if (result -1) {try {channelInactive(new ChannelHandler(channel, charset));channel.close();} catch (IOException e) {e.printStackTrace();}return;}buffer.flip();channelRead(new ChannelHandler(channel, charset), charset.decode(buffer));buffer.clear();channel.read(buffer, timeout, TimeUnit.SECONDS, null, this);}Overridepublic void failed(Throwable exc, Object attachment) {exc.printStackTrace();}});} catch (Exception e) {e.printStackTrace();}}Overridepublic void failed(Throwable exc, Object attachment) {exc.getStackTrace();}public abstract void channelActive(ChannelHandler ctx);public abstract void channelInactive(ChannelHandler ctx);// 读取消息抽象类public abstract void channelRead(ChannelHandler ctx, Object msg);} 服务端测试 启动服务端 BIO 目录结构如下 客户端 public class BioClient {public static void main(String[] args) {try {Socket socket new Socket(192.168.2.178, 7397);System.out.println(itstack-demo-netty bio client start done. {关注公众号bugstack虫洞栈 | 欢迎关注获取源码});BioClientHandler bioClientHandler new BioClientHandler(socket, Charset.forName(utf-8));bioClientHandler.start();} catch (IOException e) {e.printStackTrace();}} } 消息处理器 public class BioClientHandler extends ChannelAdapter {public BioClientHandler(Socket socket, Charset charset) {super(socket, charset);}Overridepublic void channelActive(ChannelHandler ctx) {System.out.println(链接报告LocalAddress: ctx.socket().getLocalAddress());ctx.writeAndFlush(hi! 我是码农明哥 BioClient to msg for you \r\n);}Overridepublic void channelRead(ChannelHandler ctx, Object msg) {System.out.println(new SimpleDateFormat(yyyy-MM-dd HH:mm:ss).format(new Date()) 接收到消息 msg);ctx.writeAndFlush(hi 我已经收到你的消息Success\r\n);} } 服务端 public class BioServer extends Thread {private ServerSocket serverSocket null;public static void main(String[] args) {BioServer bioServer new BioServer();bioServer.start();}Overridepublic void run() {try {serverSocket new ServerSocket();serverSocket.bind(new InetSocketAddress(7397));System.out.println(com.lm.netty01.bio bio server start done. {关注码农明哥| 欢迎关注获取源码});while (true) {Socket socket serverSocket.accept();BioServerHandler handler new BioServerHandler(socket, Charset.forName(GBK));handler.start();}} catch (IOException e) {e.printStackTrace();}} }消息处理器 public class BioServerHandler extends ChannelAdapter {public BioServerHandler(Socket socket, Charset charset) {super(socket, charset);}Overridepublic void channelActive(ChannelHandler ctx) {System.out.println(链接报告LocalAddress: ctx.socket().getLocalAddress());ctx.writeAndFlush(hi! 我是码农明哥 BioServer to msg for you \r\n);}Overridepublic void channelRead(ChannelHandler ctx, Object msg) {System.out.println(new SimpleDateFormat(yyyy-MM-dd HH:mm:ss).format(new Date()) 接收到消息 msg);ctx.writeAndFlush(hi 我已经收到你的消息Success\r\n);} }适配器 public abstract class ChannelAdapter extends Thread {private Socket socket;private ChannelHandler channelHandler;private Charset charset;public ChannelAdapter(Socket socket, Charset charset) {this.socket socket;this.charset charset;while (!socket.isConnected()) {break;}channelHandler new ChannelHandler(this.socket, charset);channelActive(channelHandler);}Overridepublic void run() {try {BufferedReader input new BufferedReader(new InputStreamReader(this.socket.getInputStream(), charset));String str null;while ((str input.readLine()) ! null) {channelRead(channelHandler, str);}} catch (IOException e) {e.printStackTrace();}}// 链接通知抽象类public abstract void channelActive(ChannelHandler ctx);// 读取消息抽象类public abstract void channelRead(ChannelHandler ctx, Object msg); } BIO测试 启动服务端 NIO 目录结构如下 客户端 public class NioClient {public static void main(String[] args) throws IOException {Selector selector Selector.open();SocketChannel socketChannel SocketChannel.open();socketChannel.configureBlocking(false);boolean isConnect socketChannel.connect(new InetSocketAddress(192.168.2.178, 7397));if (isConnect) {socketChannel.register(selector, SelectionKey.OP_READ);} else {socketChannel.register(selector, SelectionKey.OP_CONNECT);}System.out.println(com.lm.netty01.nio nio client start done. {关注码农明哥 | 欢迎关注获取源码});new NioClientHandler(selector, Charset.forName(GBK)).start();} } 消息处理器 public class NioClientHandler extends ChannelAdapter {public NioClientHandler(Selector selector, Charset charset) {super(selector, charset);}Overridepublic void channelActive(ChannelHandler ctx) {try {System.out.println(链接报告LocalAddress: ctx.channel().getLocalAddress());ctx.writeAndFlush(hi! 我是码农明哥 NioClient to msg for you \r\n);} catch (IOException e) {e.printStackTrace();}}Overridepublic void channelRead(ChannelHandler ctx, Object msg) {System.out.println(new SimpleDateFormat(yyyy-MM-dd HH:mm:ss).format(new Date()) 接收到消息 msg);ctx.writeAndFlush(hi 我已经收到你的消息Success\r\n);} } 服务端 public class NioServer {private Selector selector;private ServerSocketChannel socketChannel;public static void main(String[] args) throws IOException {new NioServer().bind(7893);}public void bind(int port) {try {selector Selector.open();socketChannel ServerSocketChannel.open();socketChannel.configureBlocking(false);socketChannel.socket().bind(new InetSocketAddress(port), 1024);socketChannel.register(selector, SelectionKey.OP_ACCEPT);System.out.println(com.lm.netty01.nio server start done. {关注码农明哥 | 欢迎关注获取源码});new NioServerHandler(selector, Charset.forName(GBK)).start();} catch (IOException e) {e.printStackTrace();}}} 消息处理器 public class NioServerHandler extends ChannelAdapter {public NioServerHandler(Selector selector, Charset charset) {super(selector, charset);}Overridepublic void channelActive(ChannelHandler ctx) {try {System.out.println(链接报告LocalAddress: ctx.channel().getLocalAddress());ctx.writeAndFlush(hi! 我是码农明哥 NioServer to msg for you \r\n);} catch (IOException e) {e.printStackTrace();}}Overridepublic void channelRead(ChannelHandler ctx, Object msg) {System.out.println(new SimpleDateFormat(yyyy-MM-dd HH:mm:ss).format(new Date()) 接收到消息 msg);ctx.writeAndFlush(hi 我已经收到你的消息Success\r\n);}} Nio测试 启动NioServer 好了到这里就结束了基础的netty学习大家一定要跟着动手操作起来。需要的源码的 可私信我获取 重要 给大家构建了个资源群 欢迎圈友携朋友一起加入 大家需要的si我进。
http://www.dnsts.com.cn/news/228731.html

相关文章:

  • 做网站有哪几种语言成都 专业 网站建设
  • 哪里可以做营销型网站网站开发思维导图内容
  • 福州制作网站企业营销咨询公司排名
  • 网站备案更名如何找外贸公司
  • 工厂 网站建设南京马鞍山网站建设
  • 电信备案网站重庆seo小z博客
  • 后台网站地图贵阳网站优化排名
  • 网站开发制作公司有哪些关键词优化内容
  • 做网站快速赚钱建设网站的公司兴田德润实力强
  • 换ip对网站有影响吗北京建设管理有限公司官网
  • 阳光梦网站建设深圳注册公司怎么注册
  • 宁波新亚建设公司网站使用vue做商城网站项目难点
  • 深圳市网站开发公司网站设计方案书
  • 网站建设费计入管理费用怎么查询网站空间商
  • 网站建议公司html教程视频自学免费
  • 江门网站如何制作运城手机网站制作
  • 懒人手机网站模板律师微网站制作
  • 百度包年推广网站建设易语言怎么做网站
  • 全国二级建造师注册信息查询网站表白网站制作软件
  • 龙岗义乌网站制作为何用wdcp建立网站连不上ftp
  • 建立网站需要多少钱首选y湖南岚鸿品牌网站推广与品牌建设
  • 网站建设是软件开发吗上海企业核名查询
  • 免费做网站送域名的衡水网站公司
  • 淘宝网站建设的目标wordpress cms 模板
  • 源码网站怎么做长沙百度seo排名
  • 网站建设营销一站式服务软件开发用什么软件编程
  • 购物网站产品做促销能赚钱吗做暧暧网站在线看
  • 快速建站教程网网站运营外包方案
  • 新闻媒体网站开发文档建设网站号码是多少钱
  • 网站seo技术教程东莞制作网站建设的公司