selector的理解

对于nio这块估计在几年前就有关注,知道非阻塞,线程池,缓冲池,io的模式select,poll,epoll,甚至epoll中的et,lt.

但是最近才有时间实际看了看netty的源码,才发现原来selector可以这么用,在我的印象中觉得一个服务其实一个selector就够用了,并且本身对于selector的理解也不是很深,今天就大说说自己的认识吧.

jvm把操作系统的很多特性都封装了起来,理解起来就比较困难,selector我的理解就是一个句柄,更像是一颗树,应用层把要做的事情绑定到这个树上面,对应的事情发生变化时,操作系统的底层会改变状态,然后通过java的select的方法不断的循环,就可以获取发生变化的连接.其实这块可以不限于网络方面,libevent的管道模型也是通过selector进行通知的.

这样比如在在网络绑定完地址后,就可以把当前的serversocket绑定到selector上面,当有新的连接过来,会改变serversocket的状态,select就可以获取出连接的socket,然后把socket就要读数据,就把socket在绑定到selector上面并且对这个网络的读感兴趣.写也类似,这样就完成了网络的消息通信.

在netty中,分为了boss和worker(我看的版本比较低3.多的)boss只会绑定有连接的selecotr,而把数据的读写都绑定到别的selector上面,这样可以充分发挥多核的优势.每个boss或worker线程都会有自己的selector,并且对linux的epollcpu 利用问题做了处理.

时间: 2024-10-14 03:05:32

selector的理解的相关文章

***iOS开发中@selector的理解与应用

@selector 是什么? 1一种类型 SEL2代表你要发送的消息(方法), 跟字符串有点像, 也可以互转.: NSSelectorFromString() / NSSelectorFromString() 3可以理解为类似函数指针的东西--是能让Objective-C动态调用方法的玩意.--是 object-c 的动态后绑定技术 可以通过字符串 访问的函数指针4其实就是消息响应函数---选一个消息响应的函数地址给你的action[email protected](function_name)

Prototype使用学习手册指南之Selector.js

Prototype 中的Selector主要支持tag选择器.class选择器和id选择器,还有属性(attribute)选择器,Selector是利用css selector来匹配选择页面元素的,所以要理解Selector首先应该对css selector有所理解,下面是css2 selector的语法,当然很多浏览器只是支持其中的一部分,基本上包含我们平时所用的所有类型 The following table summarizes CSS2 selector syntax, 详细的可以看ht

安卓实战开发之CardView的selector及GrideView的item按下状态保留selector(state_activated)的实现

android的selector对于android开发者而言再熟悉不过了,只要定义一个drawable目录下定义一个selector的xml文件,在布局文件中background引用这个xml文件或者在代码中setBackgroundDrawable的时候使用此xml就可以实现控件按下或有焦点或激活状态等不同状态的效果.你真的对selector的使用全了解吗? 前言 项目中确实用到了像多个标签,然后选中规格要给文字的边框加点颜色,对于长度和个数不确定的情况呢我们通常可以在代码中通过数据的长度动态

iOS runtime探究(二): 从runtime開始深入理解OC消息转发机制

你要知道的runtime都在这里 转载请注明出处 http://blog.csdn.net/u014205968/article/details/67639289 本文主要解说runtime相关知识,从原理到实践.由于包括内容过多分为下面五篇文章详细解说.可自行选择须要了解的方向: 从runtime開始: 理解面向对象的类到面向过程的结构体 从runtime開始: 深入理解OC消息转发机制 从runtime開始: 理解OC的属性property 从runtime開始: 实践Category加入属

(转)Android 之自定义控件样式在drawable文件夹下的XML实现

Android自定义控件样式在drawable文件夹下的XML中,在布局文件中通过设置控件的background属性达到效果. 一.控件常见状态: 在XML文件中用到了selector节点,selector可以理解为状态切换器,不同的状态下切换不同的样式,各种状态用Item节点表示,以下为一些常见的状态 (注意:statelist中第一个匹配当前状态的item会被使用.因此,如果第一个item没有任何状态特性的话,那么它将每次都被使用,这也是为什么默认的值必须总是在最后,各种状态可以交叉使用):

Runtime ----- 带你上道

在IOS开发和学习过程中,我们经常会接触到一个词: Runtime  .很多开发者对之既熟悉又陌生,基本都是浅尝辄止,达不到灵活使用的水平(话说开发中也确实不经常用..)本文和大家一起研究一下,Runtime到底是什么,还有他的一些应用场景,毕竟Runtime是OC动态特性的核心,熟练掌握它可以帮助我们更好的控制类的属性及方法,编写出更高效的代码. 一.什么是Runtime  不管你之前如何理解的Runtime,先把他扔一边,我们从头梳理一下: 1.有一种大气而准确的说法 : Objective

TinyMce 使用初探

参考:http://www.tinymce.com/    官网 http://www.tinymce.com/wiki.php    wiki 尤其第二项Configuration尤为有用 http://blog.csdn.net/chenloveyue/article/details/7039913     相关配置文件中文注释 版本: TinyMce 4.X 1. 安装     下载解压缩即可 2. Demo      1 <!DOCTYPE HTML> 2 <html lang=

UILabel Button UITextField

UILabelUILabel *label1 = [[UILabel alloc]initWithFrame:CGRectMake(50.0, 20.0, 200.0, 50.0)]; //设置Label的位置和大小 //设置显示文字 label1.text = @"用户名"; //设置字体:粗体,正常的是 SystemFontOfSize label1.font = [UIFont boldSystemFontOfSize:20]; //设置文字颜色 label1.textColor

iOS 注册或登录页面(UILable,UITextField,UIButton)

注册或登录页面 如下图 1,这里为了展现UITextField的文本框关联键盘的设置,这里把"密码"和"确定密码"的关联键盘都设置为数字键盘,实际应用中密码一般都允许为数字或字母. 2,实现了键盘收回操作. 3,这里没有写对"用户名"进行特殊字符过滤的代码. 实现代码: #import "ViewController.h" @interface ViewController () @end @implementation Vi