仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 425|回复: 11
打印 上一主题 下一主题

[学习教程] 了解下JAVA的JDK1.4非堵塞套接字API概述

[复制链接]
谁可相欹 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:27:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
多谢指点,其实我对.net网页编程和ruby也不是很了解,对与java也只是刚起步的阶段,只是在学习中有了点想法就写出来了,现在俺本科还没毕业,所以对大型项目基本上也没有什么经验。
J2SE1.4版引进了非隔绝套接字(Nonblockingsockets),它同意在收集通讯使用程序和没有隔绝的历程中利用套接字。本文将具体先容甚么长短隔绝套接字(Nonblockingsockets)及其事情道理和用处。
从Java1.4起,程序员便能用一组新的API来举行I/O操纵。这是JSR51项目标了局,自2000年1月的Java1.4beta版,程序员即可以利用JSR51了。在Java1.4中增添了一些十分主要的新手艺来处置诸如在文件和套接字长进行高功能的读/写操纵,正轨表达式,译码/编码字符集,内存映照和文件锁定。在这篇文章中,我们将会商一个特别的新APIDDNewI/OAPI:Nonblockingsockets。
非隔绝套接字同意在通道上做输出/输入操纵而不必堵塞该通道的历程。本文中我将会商异步高功能读/写操纵和翻转高低计划和开辟基于接口的使用程序的技能。
Java开辟者大概会问,为何先容一种新的手艺来处置套接字?Java1.3.x的套接字又有哪些成绩?假定完成服务器端承受分歧的客户真个毗连。一样,假定客户端能撑持处置同步的多哀求。利用Java1.3.x,开辟如许的服务器端有两种分歧的选择:
●完成多线程服务为每一个毗连用户处置线程。
●利用内部第三方模块。
这两种办法都能够完成,可是假如合用第一种办法DD全部线程办理计划,包含相干并发性和抵触成绩DD都必要靠程序员来处置。第二个计划大概消费更年夜,且使使用程序依托“non-JDK”的内部模块。依托非隔绝套接字,你能完成非隔绝的服务无需间接办理线程大概接纳内部模块。
Buffer
在我们思索非隔绝套接字之前,不能不消费一些工夫在一个新的Java1.4的类:java.nio.Buffer上。一个Buffer实例只是原始数据的一个无限的容器。称其无限是由于它只能包括无限数目的字节;换句语说,它不是一个像Vector或是ArrayList一样的容器,后二者从实际上说是没无限度的。别的,一个Buffer实例仅能包括属于Java的基础数据范例。比方:int,char,double,Boolean,等等。
Buffer类是一个笼统类,它有7个子类分离对应于七种基础的数据范例:
●ByteBuffer
●CharBuffer
●DoubleBuffer
●FloatBuffer
●IntBuffer
●LongBuffer
●ShortBuffer
在非隔绝套接字编程中,一般一切新I/O体系能事情的情况中,极为主要的是办理Buffer对象怎样事情。这是由于新套接字通道利用Buffer对象经由过程收集来传送数据。
你可使用以下静态办法(即类办法)来创立一个新的Buffer实例:allocate,allocateDirect,wrap。鄙人面的例子中,三个Buffer对象将用三种分歧的办法来实例化。
ByteBufferbuffer1=ByteBuffer.allocate(1024);
ByteBufferbuffer2=ByteBuffer.allocateDirect(1024);
ByteBufferbuffer3=ByteBuffer.wrap(newString("hello").getBytes());
这段代码的前两行创立了两个ByteBuffer对象,它们都包括1024个字节。allocate和allocateDirect办法都做了不异的事情,分歧的是第二个办法间接利用操纵体系来分派Buffer。从而它将供应更快的会见速率。不幸的是,并不是一切的假造机都撑持这类间接分派的办法。第三利用用wrap办法。它创立了一个ByteBuffer对象,包括的字节由字符串“hello”构成。
Buffer对象的感化或多或少的与流的感化类似。“以后地位(currentposition)”是一个极为主要的观点,它盘算出你将要处置的Buffer对象的得当的地位。在任什么时候候,一个Buffer对象都有一个以后地位指向某一项。以后,每次读或写操纵城市主动的将以后地位指向Buffer中的下一项。
你能够用put办法写进一些数据到Buffer中:
//Writingonabuffer
IntBufferbuffer=IntBuffer.allocate(10);
for(inti=0;i<buffer.capacity();i++){
buffer.put(i);
}
这段代码创立了一个包括10个整型值的Buffer,然后将数字0到9放进到Buffer中。同时你能够看到,我利用了capacity办法来取得Buffer的容量。
<p>
最初被命名为Oak,目标设定在家用电器等小型系统的编程语言,来解决诸如电视机、电话、闹钟、烤面包机等家用电器的控制和通讯问题。
小女巫 该用户已被删除
沙发
发表于 2015-1-21 07:01:21 | 只看该作者
一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。
老尸 该用户已被删除
板凳
发表于 2015-1-29 08:02:11 | 只看该作者
是一种为 Internet发展的计算机语言
飘飘悠悠 该用户已被删除
地板
发表于 2015-2-4 07:04:47 | 只看该作者
你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。
5#
发表于 2015-2-9 18:28:12 | 只看该作者
是一种为 Internet发展的计算机语言
深爱那片海 该用户已被删除
6#
发表于 2015-2-10 10:02:11 | 只看该作者
当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?
柔情似水 该用户已被删除
7#
发表于 2015-2-13 23:26:43 | 只看该作者
另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。
乐观 该用户已被删除
8#
发表于 2015-3-2 22:06:40 | 只看该作者
其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。
admin 该用户已被删除
9#
发表于 2015-3-5 03:48:09 | 只看该作者
所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。
因胸联盟 该用户已被删除
10#
发表于 2015-3-10 22:50:15 | 只看该作者
应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展
小妖女 该用户已被删除
11#
发表于 2015-3-17 12:09:35 | 只看该作者
其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。
简单生活 该用户已被删除
12#
发表于 2015-3-24 09:38:49 | 只看该作者
还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-15 11:36

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表