当前位置: 首页 > 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/92337.html

相关文章:

  • 网站分析 案例关键词自动生成器
  • 如何介绍自己的网站刷神马seo排名首页排名
  • 福建住建设厅官方网站淘宝的前100个关键词排名
  • 网站 数据库 关系快速提高关键词排名的软件
  • node.js 做网站做什么推广最赚钱
  • 网页制作与网站建设服务器百度推广开户
  • 个人网站申请semester是什么意思
  • 网站建设的主要功能有哪些百度无广告搜索引擎
  • 做网站如何添加视频torrentkitty磁力官网
  • 大庆百度做网站多少钱海南百度总代理
  • 三门峡 网站开发网站seo什么意思
  • 徐州哪里做网站好网店培训机构
  • 网站开发数据库动态管理近期的时事热点或新闻事件
  • vb.net 网站开发百度手机助手app免费下载
  • 欧美服装网站模板重庆网站优化排名推广
  • 上海市建设考核中心网站软件定制开发平台
  • 成品型网站建设如何进行网络营销推广
  • 网站建设成功案例怎么写seo兼职论坛
  • 武汉市城市建设委员会网站山东百搜科技有限公司
  • 网站文件夹名称资源
  • 网站新年特效seo刷网站
  • 西安手机网站案例东莞搜索seo网站关键词优化
  • 网站建设流程品牌整合营销方案
  • 东莞营销网站建设优化品牌推广方案案例
  • 网站需要怎么做的营销顾问
  • 个人网站备案 资料凡科建站下载
  • wordpress文章定时发布广告优化师
  • 网站的月度流量统计报告怎么做淘宝推广
  • 赣州建站看广告赚钱
  • 网店网站技术方案百度推广登录官网入口