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

呼和浩特百度seo优化设计答案五年级上册

呼和浩特百度seo,优化设计答案五年级上册,那种漂亮的网站怎么做的,行业网站建设的开发方案优质博文:IT-BLOG-CN 一、Netty 服务端启动过程 【1】创建服务端Channel; 【2】初始化服务端Channel; 【3】注册Selector; 【4】端口绑定:我们分析源码的入口从端口绑定开始,ServerBootstrap的bind(int in…

优质博文:IT-BLOG-CN

一、Netty 服务端启动过程

【1】创建服务端Channel
【2】初始化服务端Channel
【3】注册Selector
【4】端口绑定:我们分析源码的入口从端口绑定开始,ServerBootstrapbind(int inetPort)方法,实际上是AbstractBootstrapbind(int inetPort)方法。ServerBootstrap继承了AbstractBootstrap

二、分析服务端创建Channel的过程

【1】bind()【分析入口,端口绑定】在bind()方法中,有一个doBind()方法,处理端口绑定:

public ChannelFuture bind(SocketAddress localAddress) {validate();if (localAddress == null) {throw new NullPointerException("localAddress");}return doBind(localAddress);// 实际绑定
}

【2】在doBind()方法中,调用initAndRegister来处理初始化和注册:

private ChannelFuture doBind(final SocketAddress localAddress) {final ChannelFuture regFuture = initAndRegister();// 初始化与注册// ...
}

【3】initAndRegister()【初始化并注册】进入initAndRegister()方法里面,发现是调用了channelFactory(Channel工厂) 的newChannel()来创建channel

final ChannelFuture initAndRegister() {Channel channel = null;try {channel = channelFactory.newChannel();// channelFactory创建Channelinit(channel);}//...
}

【4】newChannel()【创建服务端channel】进去newChannel()方法,就能看到,实际上是通过反射Class.newInstance()来创建Channel对象的:

public T newChannel() {try {return clazz.newInstance();// Channel工厂通过反射,来创建Channel} catch (Throwable t) {throw new ChannelException("Unable to create Channel from class " + clazz, t);}
}

那么,这个class到底是啥呢,什么时候传递进来的?

【5】ChannelFactory的初始化:【接收服务端ChannelClass,通过反射生成Channel】还记得之前我们的第一个Demo里面有一个channel()方法,我们传递了一个参数NioServerSocketChannel.class

ServerBootstrap serverBoot = new ServerBootstrap();
serverBoot.group(bossGroup,workGroup).channel(NioServerSocketChannel.class)// 设置服务端Channel//...
);

进去channel()方法中:

public B channel(Class<? extends C> channelClass) {if (channelClass == null) {throw new NullPointerException("channelClass");}return channelFactory(new ReflectiveChannelFactory<C>(channelClass));// 传递class给ChannelFactory的构造方法
}

然后,我们进去ChannelFactory的构造方法里面:

public ReflectiveChannelFactory(Class<? extends T> clazz) {if (clazz == null) {throw new NullPointerException("clazz");}this.clazz = clazz;// 接收传递进来的Channel的Class
}
@Override
public T newChannel() {try {return clazz.newInstance();// 通过Channel的Class反射生成Channel对象} catch (Throwable t) {throw new ChannelException("Unable to create Channel from class " + clazz, t);}
}

到此,Channel的创建过程就出来了,一句话总结就是:通过我们在ServerBootstrapchannel(clazz)方法里面设置的Class,通过Java反射,Class.newInstance来生成最终的Channel对象。

http://www.mmbaike.com/news/75829.html

相关文章:

  • 做爰全过程免费的视频网站郑州靠谱seo整站优化
  • 阿里云服务器可以做网站中国关键词网站
  • 织梦网站系统删除如何制作一个属于自己的网站
  • 网站建设需要哪些必备文件东莞网站提升排名
  • 安装vs2015网站开发企业网站制作多少钱
  • wordpress好用的文章编辑器谷歌sem和seo区别
  • 网站建设公司 电话销售没什么效果chrome官网下载
  • 网站的在线支付怎么做腾讯推广平台
  • 天津百度首页优化排名上海排名优化seobwyseo
  • 域名备案期间 网站访问上海快速优化排名
  • h5做的网站有哪些汕尾网站seo
  • 学做网站多少钱成都seo招聘信息
  • 宝鸡外贸网站建设专门代写平台
  • 网上请人做软件的网站b站推广网站2024年
  • h5网站网站建设seo关键词报价查询
  • 凡科做的网站百度收不收录衡水网站seo
  • 百度竞价关键词出价技巧新乡搜索引擎优化
  • 建论坛型网站怎么把产品推广到各大平台
  • app网站开发学习重庆企业网站排名优化
  • 做任务 网站nba西部最新排名
  • 网站开发包含的项目和分工sem代运营推广公司
  • 网站做行业认证好处推广营销方案
  • 响应式网站的优点网络运营工作内容
  • 郑州公司网站销售渠道都有哪些
  • 做明星粉丝网站郑州seo代理外包公司
  • 怎样做同城配送网站网站搭建详细教程
  • 持续推进网站建设爱站长尾词
  • 品牌网站 响应式网站中国站长之家官网
  • 培训网站系统建设方案网站源码
  • 惠州网站建设哪里找大数据营销系统软件