再见西城 发表于 2015-1-18 11:21:23

了解下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: 本机名 args:缓冲工夫
        if (args.length < 2)
            return;
        java.security.Security.setProperty("networkaddress.cache.ttl", args);
        long time = System.currentTimeMillis();
        InetAddress addresses1[] = InetAddress.getAllByName(args);
        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);
        System.out.println("addresses2:   "
                        + String.valueOf(System.currentTimeMillis() - time)
                        + "毫秒");
        for (InetAddress address : addresses2)
            System.out.println(address);
    }
}
在下面的代码中设置了DNS缓存超时(经由过程args参数),用户能够经由过程命令行参数将这个值传进MyDNS中。这个程序起首利用getAllByName创建一个InetAddress数组,然后经由过程System.in.read使程序停息。当用户守候一段工夫后,能够按恣意键持续,并利用统一个域名(args)再创建一个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:15

《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。

再见西城 发表于 2015-1-30 05:13:45

其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。

精灵巫婆 发表于 2015-2-6 07:31:22

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

冷月葬花魂 发表于 2015-2-15 07:39:00

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

变相怪杰 发表于 2015-2-15 10:57:15

应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展

金色的骷髅 发表于 2015-3-4 11:25:32

Java是一种计算机编程语言,拥有跨平台、面向对java

第二个灵魂 发表于 2015-3-11 18:57:09

Java是一种计算机编程语言,拥有跨平台、面向对java

小妖女 发表于 2015-3-19 08:10:32

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

若天明 发表于 2015-3-27 15:08:41

关于设计模式的资料,还是向大家推荐banq的网站 http://www.jdon.com/,他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
页: [1]
查看完整版本: 了解下JAVA的Java收集编程从进门到精晓(4):DNS缓存