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

企业网站主页设计图片常州网页

企业网站主页设计图片,常州网页,网页设计与网站开发基础教程,网站系统设计一、Netty概述 1.Netty是什么#xff1f; Netty 是一个异步的、基于事件驱动的网络应用框架#xff0c;用于快速开发可维护、高性能的网络服务器和客户端。 2.Netty的地位怎么样#xff1f; Netty 在 Java 网络应用框架中的地位就好比#xff1a;Spring 框架在 JavaEE …一、Netty概述 1.Netty是什么 Netty 是一个异步的、基于事件驱动的网络应用框架用于快速开发可维护、高性能的网络服务器和客户端。 2.Netty的地位怎么样 Netty 在 Java 网络应用框架中的地位就好比Spring 框架在 JavaEE 开发中的地位 以下的框架都使用了 Netty因为它们有网络通信需求 Cassandra - nosql 数据库 Spark - 大数据分布式计算框架 Hadoop - 大数据分布式存储框架 RocketMQ - ali 开源的消息队列 ElasticSearch - 搜索引擎 gRPC - rpc 框架 Dubbo - rpc 框架 Spring 5.x - flux api 完全抛弃了 tomcat 使用 netty 作为服务器端 Zookeeper - 分布式协调框架 3.Netty有哪些优势 Netty vs NIO工作量大bug 多 需要自己构建协议 解决 TCP 传输问题如粘包、半包 epoll 空轮询导致 CPU 100% 对 API 进行增强使之更易用如 FastThreadLocal ThreadLocalByteBuf ByteBuffer Netty vs 其它网络应用框架 Mina 由 apache 维护将来 3.x 版本可能会有较大重构破坏 API 向下兼容性Netty 的开发迭代更迅速API 更简洁、文档更优秀 久经考验16年Netty 版本 2.x 2004 3.x 2008 4.x 2013 5.x 已废弃没有明显的性能提升维护成本高 二、使用Netty实现一个简单的网络通信模型 开发一个简单的服务器端和客户端 客户端向服务器端发送“HelloWorld”服务器只接收并打印输出不返回。 加依赖 dependencygroupIdio.netty/groupIdartifactIdnetty-all/artifactIdversion4.1.39.Final/version/dependency 服务器端 public class HelloServer {public static void main(String[] args) {// 1. 启动器负责组装netty组件启动服务器new ServerBootstrap()// 2. BossEventLoop, WorkerEventLoop(selector,thread), group组.group(new NioEventLoopGroup())// 3. 选择 服务器的 ServerSocketChannel 实现.channel(NioServerSocketChannel.class) // OIO BIO// 4.boss 负责处理连接 worker(child) 负责处理读写决定了 worker(child)能执行那些操作handler.childHandler(// 5. channel 代表和客户端进行数据读写的通道 Initializer 初始化负责添加别的handlernew ChannelInitializerNioSocketChannel() {Overrideprotected void initChannel(NioSocketChannel ch) throws Exception {// 6. 添加具体的 handlerch.pipeline().addLast(new StringDecoder()); // 将ByteBuf 转换为字符串ch.pipeline().addLast(new ChannelInboundHandlerAdapter(){ // 自定义 handlerOverridepublic void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {// 打印上一步转换好的字符串System.out.println(msg);}});}})// 7.绑定监听端口.bind(9090);} }代码解读 1.服务器端创建一个新的ServerBootstrap实例。ServerBootstrap是Netty中用于设置服务器端的参数并启动服务器的启动类。 2.为服务器设置一个事件循环组。NioEventLoopGroup是一个基于NIO非阻塞I/O的实现用于处理I/O操作的多线程事件循环。这允许服务器处理多个并发连接。可以理解为创建一个组组中包含多个eventLoop把 eventLoop 理解为处理数据的工人 工人可以管理多个 channel 的 io 操作并且一旦工人负责了某个 channel就要负责到底绑定。 工人既可以执行 io 操作也可以进行任务处理每位工人有任务队列队列里可以堆放多个 channel 的待处理任务任务分为普通任务、定时任务。 3.选择一个serverChannel的实现有基于NIO的服务器端实现、OIO(阻塞IO)的服务器端实现、基于Linux的Epoll的服务器端实现等。 4.添加事件处理逻辑。 5.ChannelInitializer是一个特殊的channel处理器用于对channel中的handler进行初始化具体的handler添加到initChannel()方法中。可以把handler 理解为数据的处理工序。 6.数据传输都是以字节形式传输Netty使用ByteBuf对NIO中ByteBuffer进行增强通过StringDecode()解码成字符传输给msg最终打印输出。pipeline可以理解为把多道工序合在一起 pipeline负责发布事件读、读取完成...传播给每个 handler handler 对自己感兴趣的事件进行处理重写了相应事件处理方法 7.绑定端口用于客户端连接。 客户端 public class HelloClient {public static void main(String[] args) throws InterruptedException {// 1. 启动类new Bootstrap()// 2. 添加EventLoop.group(new NioEventLoopGroup())// 3. 选择客户端 channel 实现.channel(NioSocketChannel.class)// 4. 添加处理器.handler(new ChannelInitializerNioSocketChannel() {Overrideprotected void initChannel(NioSocketChannel ch) throws Exception {ch.pipeline().addLast(new StringEncoder());}})// 5. 连接到服务器.connect(new InetSocketAddress(localhost,9090))// 6. 等待connect建立连接完毕.sync()// 7. 获取channel对象.channel()// 8. 向服务发送数据.writeAndFlush(hello, world);} }代码解读 1.客户端创建一个新的Bootstrap实例。Bootstrap是Netty中用于设置客户端参数并启动客户端的启动类。 2.NioEventLoopGroup同 Server。 3.选择客户 Socket 实现类NioSocketChannel 表示基于 NIO 的客户端实现其它实现还有基于OIO的客户端实现、基于Linux的Epoll的客户端实现等。 4.添加 SocketChannel 的处理器ChannelInitializer 处理器仅执行一次它的作用是待客户端 SocketChannel 建立连接后执行 initChannel 以便添加更多的处理器。 5.指定要连接的服务器和端口。 6.Netty 中很多方法都是异步的如 connect这时需要使用 sync 方法等待 connect 建立连接完毕。 7.获取 channel 对象它即为通道抽象可以进行数据读写操作。 8.写入消息并清空缓冲区。 运行结果 流程梳理
http://www.w-s-a.com/news/986026/

相关文章:

  • 陕西营销型手机网站建设深圳制作网站服务
  • 受欢迎的锦州网站建设Wordpress 图片左右滑动
  • 湖南优化网站建设线上网站建设需求
  • 建什么类型的网站访问量比较大哪些外包公司比较好
  • php网站地图外贸建站哪家强外贸网站怎么做
  • 宁波五金网站建设中国建筑网官网投诉查询
  • 哪个网站注册域名便宜免费流程图制作网站
  • 潍坊做网站南宁网站seo优化公司
  • 网站建设的基本技术步骤无网站营销
  • 我国旅游网站的建设网站开发 混合式 数据库
  • 淘宝客网站域名家居网站开发项目计划书
  • 网站打不开显示asp苏州注册公司需要多少钱
  • 凡科建站登录官网wordpress主题有什么用
  • 西安双语网站建设怎么做网页动图
  • 宝安自适应网站建设无锡新区企业网站推广
  • 肇庆建设局网站cpanel 安装wordpress
  • 长春启做网站多少怎样换wordpress域名
  • 山西网站建设情况汇总vs2010 c 建设网站
  • 网站推广策划书 精品深圳市住建局和建设局官网
  • 住房和城乡建设部干部学院网站一般做公司网站需要哪几点
  • 网站制作流程详解(学做网站第一步)免费个人网站模版ps
  • 狮山网站建设公司微信平台软件开发
  • 绥芬河网站建设学网站开发的能找什么工作
  • 网站域名申请之后如何做网站微信公众号网页版登录入口
  • 网站优化图片省级精品课程网站
  • 婚纱摄影的网站模板怎么做网站自己当站长
  • 江西建设部网站wordpress弹出式广告
  • 工商年检在哪个网站做中国建设银行个人登录
  • seo做网站郑州巩义网站建设
  • 建设银行网站机构特点业务发展网站推广工作计划