仓酷云

标题: 发布一篇nio框架中的多个Selector布局 [打印本页]

作者: 活着的死人    时间: 2015-1-18 11:25
标题: 发布一篇nio框架中的多个Selector布局
唉!都是钱闹的1.Swing和.net网页编程开发比较------从市场份额看.net网页编程开发主要占据大部分的中小型和中型的的桌面开发,原因是它封装了很多工具
跟着并发数目的进步,传统nio框架接纳一个Selector来支持大批毗连事务的办理和触发已碰到瓶颈,因而如今各类nio框架的新版本都接纳多个Selector并存的布局,由多个Selector平衡地往办理大批毗连。这里以Mina和Grizzly的完成为例。
在Mina2.0中,Selector的办理是由org.apache.mina.transport.socket.nio.NioProcessor来处置,每一个NioProcessor对象保留一个Selector,卖力详细的select、wakeup、channel的注册和作废、读写事务的注册和判别、实践的IO读写操纵等等,中心代码以下:
public NioProcessor(Executor executor) {
        super(executor);
        try {
            // Open a new selector
            selector = Selector.open();
        } catch (IOException e) {
            throw new RuntimeIoException("Failed to open a selector.", e);
        }
    }

    protected int select(long timeout) throws Exception {
        return selector.select(timeout);
    }

    protected boolean isInterestedInRead(NioSession session) {
        SelectionKey key = session.getSelectionKey();
        return key.isValid() && (key.interestOps() & SelectionKey.OP_READ) != 0;
    }

    protected boolean isInterestedInWrite(NioSession session) {
        SelectionKey key = session.getSelectionKey();
        return key.isValid() && (key.interestOps() & SelectionKey.OP_WRITE) != 0;
    }
    protected int read(NioSession session, IoBuffer buf) throws Exception {
        return session.getChannel().read(buf.buf());
    }

    protected int write(NioSession session, IoBuffer buf, int length) throws Exception {
        if (buf.remaining() <= length) {
            return session.getChannel().write(buf.buf());
        } else {
            int oldLimit = buf.limit();
            buf.limit(buf.position() + length);
            try {
                return session.getChannel().write(buf.buf());
            } finally {
                buf.limit(oldLimit);
            }
        }
    }
<p>
再举这样一个例子:如果你想对一个数字取绝对值,你会怎么做呢?java的做法是intc=Math.abs(-166);而ruby的做法是:c=-166.abs。呵呵,这就看出了java与ruby的区别。
作者: 活着的死人    时间: 2015-1-21 06:09
Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
作者: 分手快乐    时间: 2015-1-30 09:21
如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。
作者: 谁可相欹    时间: 2015-1-30 23:32
你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。
作者: 兰色精灵    时间: 2015-2-1 19:39
你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。
作者: 海妖    时间: 2015-2-2 13:12
是一种使用者不需花费很多时间学习的语言
作者: 灵魂腐蚀    时间: 2015-2-4 23:33
我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。
作者: 蒙在股里    时间: 2015-2-7 13:51
Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)
作者: 深爱那片海    时间: 2015-2-12 06:58
还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。
作者: 飘灵儿    时间: 2015-2-23 18:55
是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言
作者: 爱飞    时间: 2015-3-7 09:57
J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。
作者: 小魔女    时间: 2015-3-13 03:07
接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。
作者: 因胸联盟    时间: 2015-3-20 10:45
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.jdon.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
作者: 仓酷云    时间: 2015-4-14 15:02
象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2