|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
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("按恣意键持续
<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技术类的学习,我觉得大课堂反而会影响自身独立思考的过程,因为上课的时候,老师讲课的速度很快为了不遗漏要点,通常会仔细的听, |
|