活着的死人 发表于 2015-1-18 11:25:32

发布一篇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:16

Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。

分手快乐 发表于 2015-1-30 09:21:41

如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。

谁可相欹 发表于 2015-1-30 23:32:28

你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。

兰色精灵 发表于 2015-2-1 19:39:23

你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。

海妖 发表于 2015-2-2 13:12:25

是一种使用者不需花费很多时间学习的语言

灵魂腐蚀 发表于 2015-2-4 23:33:02

我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。

蒙在股里 发表于 2015-2-7 13:51:26

Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)

深爱那片海 发表于 2015-2-12 06:58:41

还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。

飘灵儿 发表于 2015-2-23 18:55:29

是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言

爱飞 发表于 2015-3-7 09:57:42

J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。

小魔女 发表于 2015-3-13 03:07:10

接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。

因胸联盟 发表于 2015-3-20 10:45:38

关于设计模式的资料,还是向大家推荐banq的网站 http://www.jdon.com/,他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。

仓酷云 发表于 2015-4-14 15:02:59

象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
页: [1]
查看完整版本: 发布一篇nio框架中的多个Selector布局