仓酷云
标题:
了解下JAVA的Java收集编程从进门到精晓(4):DNS缓存
[打印本页]
作者:
再见西城
时间:
2015-1-18 11:21
标题:
了解下JAVA的Java收集编程从进门到精晓(4):DNS缓存
J2ME在手机游戏开发的作用也是无用质疑的。至于桌面程序,可能有人说java不行,界面不好看,但是请看看net网页编程Beans和Eclipse吧,他们都是利用java开发的,而他们的界面是多么的华丽,所以界面决不是java的缺点。还有一个不得不提的优点就是大多java人员都挂在嘴边的java的跨平台性,目前这确实也是java优点之一。
在经由过程DNS查找域名的过程当中,大概会经由多台两头DNS服务器才干找到指定的域名,因而,在DNS服务器上查找域名长短常高贵的操纵。在Java中为了减缓这个成绩,供应了DNS缓存。当InetAddress类第一次利用某个域名(如www.csdn.net)创立InetAddress对象后,JVM就会将这个域名和它从DNS上取得的信息(如IP地点)都保留在DNS缓存中。当下一次InetAddress类再利用这个域名时,就间接从DNS缓存里取得所需的信息,而无需再会见DNS服务器。
DNS缓存在默许时将永久保存已经会见过的域名信息,但我们能够修正这个默许值。一样平常有两种办法能够修正这个默许值:
1.在程序中经由过程java.security.Security.setProperty办法设置平安属性networkaddress.cache.ttl的值(单元:秒)。以下面的代码将缓存超时设为10秒:
java.security.Security.setProperty("networkaddress.cache.ttl", 10);
2.设置java.security文件中的networkaddress.cache.negative.ttl属性。假定JDK的安装目次是C:jdk1.6,那末java.security文件位于c:jdk1.6jrelibsecurity目次中。翻开这个文件,找到networkaddress.cache.ttl属性,并将这个属性值设为响应的缓存超时(单元:秒)。
假如将networkaddress.cache.ttl属性值设为-1,那末DNS缓存数据将永久不会开释。上面的代码演示了利用和不利用DNS缓存所发生效果:
packagemynet;
import java.net.*;
public classMyDNS
{
public static void main(String[] args) throws Exception
{
// args[0]: 本机名 args[1]:缓冲工夫
if (args.length < 2)
return;
java.security.Security.setProperty("networkaddress.cache.ttl", args[1]);
long time = System.currentTimeMillis();
InetAddress addresses1[] = InetAddress.getAllByName(args[0]);
System.out.println("addresses1: "
+ String.valueOf(System.currentTimeMillis() - time)
+ "毫秒");
for (InetAddress address : addresses1)
System.out.println(address);
System.out.print("按恣意键持续
登录/注册后可看大图
1026345M8-0.gif
(59 Bytes, 下载次数: 15)
下载附件
保存到相册
了解下JAVA的Java收集编程从进门到精晓(4):DNS缓存
2015-1-18 11:21 上传
<br>");
System.in.read();
time = System.currentTimeMillis();
InetAddress addresses2[] = InetAddress.getAllByName(args[0]);
System.out.println("addresses2: "
+ String.valueOf(System.currentTimeMillis() - time)
+ "毫秒");
for (InetAddress address : addresses2)
System.out.println(address);
}
}
在下面的代码中设置了DNS缓存超时(经由过程args[1]参数),用户能够经由过程命令行参数将这个值传进MyDNS中。这个程序起首利用getAllByName创建一个InetAddress数组,然后经由过程System.in.read使程序停息。当用户守候一段工夫后,能够按恣意键持续,并利用统一个域名(args[0])再创建一个InetAddress数组。假如用户守候的这段工夫比DNS缓存超时小,那末不管情形怎样变更,addresses2和addresses1数组中的元素是一样的,而且创立addresses2数组所消费的工夫通常是0毫秒(小于1毫秒后,Java没法取得更准确的工夫)。
测试1:
实行以下命令(将DNS缓存超时设为5秒):
javamynet.MyDNSwww.126.com 5
运转了局1(在5秒以内按恣意键):
addresses1: 344毫秒
www.126.com/202.108.9.77
按恣意键持续
<br>
addresses2: 0毫秒
www.126.com/202.108.9.77
运转了局2(在5秒后按恣意键):
addresses1: 344毫秒
www.126.com/202.108.9.77
按恣意键持续
<br>
addresses2: 484毫秒
www.126.com/202.108.9.77
<p>
但是对于JAVA技术类的学习,我觉得大课堂反而会影响自身独立思考的过程,因为上课的时候,老师讲课的速度很快为了不遗漏要点,通常会仔细的听,
作者:
谁可相欹
时间:
2015-1-20 20:58
《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。
作者:
再见西城
时间:
2015-1-30 05:13
其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。
作者:
精灵巫婆
时间:
2015-2-6 07:31
Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
作者:
冷月葬花魂
时间:
2015-2-15 07:39
接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。
作者:
变相怪杰
时间:
2015-2-15 10:57
应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展
作者:
金色的骷髅
时间:
2015-3-4 11:25
Java是一种计算机编程语言,拥有跨平台、面向对java
作者:
第二个灵魂
时间:
2015-3-11 18:57
Java是一种计算机编程语言,拥有跨平台、面向对java
作者:
小妖女
时间:
2015-3-19 08:10
你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。
作者:
若天明
时间:
2015-3-27 15:08
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.jdon.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
欢迎光临 仓酷云 (http://ckuyun.com/)
Powered by Discuz! X3.2