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

自己做优惠券网站企业信息管理系统免费

自己做优惠券网站,企业信息管理系统免费,手机上如何制作app,葫芦岛建设网站点击上方☝SpringForAll社区 轻松关注#xff01;及时获取有趣有料的技术文章本文来源#xff1a;http://yeming.me/2016/03/12/netty1/netty服务端代码分析服务端启动配置对于 ServerBootstrap#xff1a;ServerBootstrap继承于 AbstractBootstrap#xff0c;它从父类继承… 点击上方☝SpringForAll社区 轻松关注及时获取有趣有料的技术文章本文来源http://yeming.me/2016/03/12/netty1/netty服务端代码分析服务端启动配置对于 ServerBootstrapServerBootstrap继承于 AbstractBootstrap它从父类继承了 EventLoopGroupgroup ChannelFactoryextendsCchannelFactory自己新增了 EventLoopGroupchildGroup ChannelHandlerchildHandler。上面 b.group开始的链式代码就是初始化上面这些属性的值的。bossgroup和 workergroup可以看到都是 NioEventLoopGroup,可以理解成2个线程池。从 bossgroup中随便选一个作为 Reactor模型中的 acceptor监听客户端连接创建 socketChannel然后从 workergroup选取一个io线程来处理 socketChannel的读取事件。对于 NioEventLoopGroup和 NioEventLoop先看下类图可以看到 NioEventLoopGroup继承了 EventLoopGroupNioEventLoop实现了EventLoop,而EventLoop又继承自EventLoopGroup。eventloopgroup.next()又可以返回一个eventloop。可以看到EventLoop最终继承于线程池Executor。而最终NioEventLoopGroup又实现了EventLoop接下来我们还会分析下NioEventLoopGroup服务端注册感兴趣事件和监听端口注册感兴趣事件b.bind最终调用到AbstractBootstrop的以下方法final ChannelFuture initAndRegister() { this.group().register(channel);(中间省略) }这个this.group就是一开始设置的bossgroup(NioEventLoopGroup),看到这个方法基本可以想到这个应该是把channel注册到某个选择器上MultithreadEventLoopGrouppublic ChannelFuture register(Channel channel) { return this.next().register(channel); }上面的类图已经可以看出 NioEventLoopGroup继承自 MultithreadEventLoopGroup最终 this.next()又会返回 NioEventLoop所以也就是可以理解是把 channel注册到 NioEventLoop上(我们猜想 NioEventLoop可以想象成封装了一个 selector)this.next()返回 NioEventLoop继承于 SingleThreadEventLoopchannel.unsafe().register(this,promise);最终调用到 AbstractUnsafe的 register方法 eventLoop.execute(new OneTimeTask() { public void run() { AbstractUnsafe.this.register0(promise); } });这里通过 bossgroup启动一个线程最终调用到 protected void doRegister() throws Exception { boolean selected false; while(true) { try { this.selectionKey this.javaChannel().register(this.eventLoop().selector, 0, this); return; } catch (CancelledKeyException var3) { if(selected) { throw var3; } this.eventLoop().selectNow(); selected true; } } }监听端口可以看到第四张截图ChannelFuture regFuture this.initAndRegister();if(regFuture.cause() ! null) { return regFuture;} else if(regFuture.isDone()) { doBind0(regFuture, channel, localAddress, promise1); return promise1;} else { AbstractBootstrap.doBind0(regFuture, channel, localAddress, promise); } }); return promise;}可以看到 initAndRegister()这个方法就是上面我们说的注册感兴趣的事件。后面的 elseif和 else都有 dobind0 方法这个方法也是通过之前的线程池启动一个线程去监听一个端口。参考netty api说明http://www.boyunjian.com/javadoc/io.netty/netty-transport/4.0.0.Alpha7//io/netty/channel/DefaultChannelFuture.htmlNetty 4源码解析服务端启动http://blog.csdn.net/dc726/article/details/47858077Netty 4源码解析请求处理http://blog.csdn.net/dc726/article/details/48084367Netty系列之Netty线程模型(http://www.infoq.com/cn/articles/netty-threading-model?utmsourceinfoqutmmediumpopularlinks_homepage● Spring IOC流程清楚不聊聊看● 面试官ScheduleThreadPoolExecutor了解不● 配置中心只有Apollo么看看点评的Lion● 面试官说从源码角度说说Java线程池● JedisPool连接池相关配置● Hystrix初探● 别再关注删库跑路了谈谈数据库架构● 那些年非常火的MyCAT是什么● Java14带来了许多新功能● 关于烂代码的那些事(上)● 关于整洁代码的那些事(中)● 关于整洁代码的那些事(下)● 面试官说Spring AOP 实现原理给我说说● 深入理解JVM - 方法调用● Spring Boot神操作-多个数据源Service层封装● Lombok经常用但是你知道它的原理是什么吗
http://www.pierceye.com/news/417092/

相关文章:

  • 买了一个域名如何做网站做歌手的网站
  • 制作精美网站建设服务周到外贸没有公司 如何做企业网站
  • jsp手机销售网站的建设做网站的收钱不管了
  • 购物分享网站流量排名帮忙做ppt的网站
  • 网站建设分几步易语言 wordpress
  • 网站备案申请模板网页制作软件手机版
  • 深圳网站开发企业建一个网站怎么赚钱吗
  • 购物网站开发小结自己搭建局域网云桌面终端
  • 做ssp用什么建网站vps搭建asp网站
  • 顺义网站建设网站认证值不值得做
  • 怎么做网站用dreamwer环球影城排队太热了
  • 台州网站建设技术外包网站创建教程
  • 发布设计任务的网站什么页游好玩人多
  • 增加网站关键词库中国建设银行黄陂支行网站
  • 企业网络优化湖北seo整站优化
  • 二百块做网站深圳网约车租赁公司哪家好
  • 软文500字范文WordPress博客程序优化
  • 企业网站内容如何备案建博会广州网站
  • 加工平台苏州纳米所海南seo排名
  • 个人适合做什么网站上海做网站建设的公司
  • 常见c2c网站有哪些网络文化经营许可证申请条件
  • 深圳龙华汽车网站建设移动页面
  • 陈巴尔虎旗网站建设重庆哪些网站推广公司
  • 网站做熊掌号码网站没被收录怎么办
  • 淘宝京东网站建设目的网站标题写什么作用
  • 棋牌网站开发工程师什么是营销网站建设
  • 邢台网站制作地址拿网站的文章做外链
  • 怎么样做钓鱼网站怎么建网站app
  • 高校财务网站建设国外网站ip地址
  • 重要的龙岗网站建设影视公司网站模板