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

muse做网站互联网行业属于什么行业

muse做网站,互联网行业属于什么行业,抖音推广佣金平台,wordpress rest登录系列文章目录 【zookeeper核心源码解析】第一课:zk启动类核心流程序列图 【zookeeper核心源码解析】第二课:俯瞰QuorumPeer启动核心流程,实现选举关键流程 【zookeeper核心源码解析】第三课:leader与follower何时开始同步&#…

系列文章目录

【zookeeper核心源码解析】第一课:zk启动类核心流程序列图
【zookeeper核心源码解析】第二课:俯瞰QuorumPeer启动核心流程,实现选举关键流程
【zookeeper核心源码解析】第三课:leader与follower何时开始同步,如何同步数据
【zookeeper核心源码解析】第四课:客户端与服务端读写的io核心流程

【zookeeper核心源码解析】第四课:客户端与服务端读写的io核心流程

  • 系列文章目录
  • 1. 先看服务端初始化与连接构建的准备
  • 2. 客户端代码


1. 先看服务端初始化与连接构建的准备

在第一节中,介绍到NIOServerCnxnFactory的初始化,该类其实就是专门为客户端读写数据准备的服务端。主要构建连接与数据读写。

c class NIOServerCnxnFactory extends ServerCnxnFactory implements Runnable

在run方法中构建连接与io读写,具体代码如下:

public void run() {while (!ss.socket().isClosed()) {try {selector.select(1000);Set<SelectionKey> selected;synchronized (this) {selected = selector.selectedKeys();}ArrayList<SelectionKey> selectedList = new ArrayList<SelectionKey>(selected);Collections.shuffle(selectedList);for (SelectionKey k : selectedList) {if ((k.readyOps() & SelectionKey.OP_ACCEPT) != 0) {SocketChannel sc = ((ServerSocketChannel) k.channel()).accept();InetAddress ia = sc.socket().getInetAddress();int cnxncount = getClientCnxnCount(ia);if (maxClientCnxns > 0 && cnxncount >= maxClientCnxns){LOG.warn("Too many connections from " + ia+ " - max is " + maxClientCnxns );sc.close();} else {LOG.info("Accepted socket connection from "+ sc.socket().getRemoteSocketAddress());sc.configureBlocking(false);SelectionKey sk = sc.register(selector,SelectionKey.OP_READ);NIOServerCnxn cnxn = createConnection(sc, sk);sk.attach(cnxn);addCnxn(cnxn);}} else if ((k.readyOps() & (SelectionKey.OP_READ | SelectionKey.OP_WRITE)) != 0) {NIOServerCnxn c = (NIOServerCnxn) k.attachment();c.doIO(k);} else {if (LOG.isDebugEnabled()) {LOG.debug("Unexpected ops in select "+ k.readyOps());}}}selected.clear();} catch (RuntimeException e) {LOG.warn("Ignoring unexpected runtime exception", e);} catch (Exception e) {LOG.warn("Ignoring exception", e);}}closeAll();LOG.info("NIOServerCnxn factory exited run method");}

2. 客户端代码

ClientCnxn 类是客户端的入口代码。

/*** This class manages the socket i/o for the client. ClientCnxn maintains a list* of available servers to connect to and "transparently" switches servers it is* connected to as needed.**/

里面的EventThread专本对数据进行异步读写。感兴趣可以从run()方法进去看

       @Overridepublic void run() {try {isRunning = true;while (true) {Object event = waitingEvents.take();if (event == eventOfDeath) {wasKilled = true;} else {processEvent(event);}if (wasKilled)synchronized (waitingEvents) {if (waitingEvents.isEmpty()) {isRunning = false;break;}}}} catch (InterruptedException e) {LOG.error("Event thread exiting due to interruption", e);}LOG.info("EventThread shut down");}
http://www.yayakq.cn/news/896415/

相关文章:

  • 实力网站开发电脑网页无法打开是什么原因
  • 客户案例 网站设计wordpress的文件说明
  • 四川高速建设公司网站wordpress非常难用
  • wordpress搭建电影网站永久免费建站网站
  • 网站头部设计专门做衣服特卖的网站
  • 如何建立网站建设网站关键词全国各地的排名情况
  • 网站架构图做网站和做app哪个难
  • 如何在阿里云做网站工业设计公司名字
  • 景区旅游门户网站建设方案网站文章系统
  • 主题网站设计模板奇迹网站建设多少钱
  • 门户网站建设工作情况wordpress修改用户头像
  • 网站推广的6个方法是什么网站模板 黑色
  • 制作公司网站备案需要提供什么资料梅州在建工程
  • 河北住房和城乡建设厅官方网站自己怎么做网站
  • 网站开发地图手机版wordpress
  • 网站一般采用的设计方案做网站外包群
  • 免费制作自己的网站大连网站建设免费
  • 网站后台如何修改文字电商设计师岗位职责
  • 沈阳中天建设集团网站中铁三局招聘身材好
  • 泰安做网站公司哪家比较好专门做spa的网站
  • 网站推广策略100例网站制作的评价
  • 哪些是网站建设汕头网页制作
  • 网站建设上海网站建设网站建设及维护机
  • 一级域名建站网站建设行吗wordpress 教程 知乎
  • 网站制作建立南京高新区网站建设
  • 货运公司网站源码大数据营销的概念
  • 备案 网站信息 备注阿里指数官方网站
  • 建设银行秋招网站WordPress考试
  • 长沙公司核名网站新闻早知道
  • 福田网站建设流程网站开发系统计划书