ï»??xml version="1.0" encoding="utf-8" standalone="yes"?>在线观看免费网站,国产呻吟对白刺激无套视频在线,а√天堂www在线а√天堂视频http://www.aygfsteel.com/longbow/category/2029.htmlMake it work, make it right, make it fast and make it openã€?/description>zh-cnWed, 28 Feb 2007 04:12:23 GMTWed, 28 Feb 2007 04:12:23 GMT60String poolhttp://www.aygfsteel.com/Longbow/archive/2005/07/15/7742.htmlJava求烦Java求烦Fri, 15 Jul 2005 01:31:00 GMThttp://www.aygfsteel.com/Longbow/archive/2005/07/15/7742.htmlhttp://www.aygfsteel.com/Longbow/comments/7742.htmlhttp://www.aygfsteel.com/Longbow/archive/2005/07/15/7742.html#Feedback1http://www.aygfsteel.com/Longbow/comments/commentRss/7742.htmlhttp://www.aygfsteel.com/Longbow/services/trackbacks/7742.html今天写代码涉及到大量的String操作åQŒçªç„‰™—´æƒŒ™“v一些关于String与其它class的不同之处,我是我以前在一½‹‡æ–‡ç« ä¸Šçœ‹åˆ°çš„,具体出处实在è®îC¸å¾—了åQŒçŽ°åœ¨åŠ ä¸Šä¸€ç‚¹å„¿è‡ªå·±çš„ç†è§£è®°å½•ä¸‹æ¥ï¼Œä»¥ä½œå¤‡å¿˜ã€?BR>
String的特ŒDŠä¹‹å¤„就是它可以像int½{‰ç®€å•ç±»åž‹ä¸€æ øP¼Œä½¿ç”¨â€?”来生成一个ObjectåQŒè€Œä¸å¿…用new˜q™ä¸ªå…³é”®å­—,ä¸ÞZ»€ä¹ˆå‘¢åQŸå…ˆæ¥çœ‹ä¸‹é¢çš„代码:
import junit.framework.TestCase;

public class TestStringPool extends TestCase {

    
private String string1;
    
private String string2;

    
protected void setUp() {
        string1 
= "abc";
        string2 
= "abc";
    }


    
public void testStringPool() {
        assertTrue(string1 
== string2);
    }


    
public void testNewString() {
        string1 
= new String("abc");
        string2 
= new String("abc");
        assertFalse(
"The objects don't use the 
            string pool", string1 == string2);
    }

}

˜q™é‡Œç”¨åˆ°äº?/SPAN>JUnitåQŒç”¨æ¥æµ‹è¯?/SPAN>String poolã€?/SPAN>

½W¬ä¸€ä¸ªæµ‹è¯•,说明两个String是同一ä¸?/SPAN>ObjectåQŒï¼ˆ==ž®±æ˜¯ç”¨æ¥æ¯”较objectçš?/SPAN>referenceåQ‰ã€‚而第二个‹¹‹è¯•则说明两ä¸?/SPAN>String Object不同ã€?/SPAN>

众所周知åQ?/SPAN>Javaçš?/SPAN>Stringæ˜?SPAN class=postbody>不可改变的字½W¦ä¸²å¯¹è±¡ã€‚äØ“äº†æé«˜æ•ˆçŽ‡ï¼ŒJavaä¸?/SPAN>String¾cÀLä¾›äº†ä¸²æ± (String pool)ã€‚æ­£å¦‚å¤§å®¶æ‰€çœ‹åˆ°çš„é‚£æ øP¼Œåœ¨ç¬¬ä¸€ä¸?/SPAN>test中就使用了串池。当你重新声明一ä¸?/SPAN>Stringåž‹å˜é‡äØ“abcæ—Óž¼Œž®†ä‹É用串池里原来的那ä¸?/SPAN>abcåQŒè€Œä¸é‡æ–°åˆ†é…å†…å­˜åQŒä¹Ÿž®±æ˜¯è¯ß_¼Œstring2ä¸?/SPAN>string1ž®†ä¼šæŒ‡å‘åŒä¸€å—å†…å­˜ã€‚æ‰€ä»¥ç»“æžœäØ“true。在½W¬äºŒä¸ªtest case中ä‹É用了普通对象的声明方式åQŒç³»¾lŸå°†ä¼šäØ“string1å’?/SPAN>string2å„åˆ†é…ä¸€å—å†…å­˜ã€‚æ‰€ä»¥ç»“æžœäØ“falseã€?/SPAN>

 ¾l“论åQšæˆ‘ä»¬æ¯”è¾ƒä¸¤ä¸ªStringçš„å€û|¼Œæœ€å¥½ç”¨equals()æ–ÒŽ³•åQŒè€Œæœ€å¥½ä¸è¦ä‹Éç”?=。这ž®±é¿å…äº†ä¸€äº›ä¸å¿…要的麻烦。另外,声明String的时候,最好用=åQŒè¿™æ ·å°±å¯ä»¥ä½“现String pool的作用了ã€?/FONT>



]]>
windows IP影射http://www.aygfsteel.com/Longbow/archive/2005/07/06/7216.htmlJava求烦Java求烦Wed, 06 Jul 2005 09:50:00 GMThttp://www.aygfsteel.com/Longbow/archive/2005/07/06/7216.htmlhttp://www.aygfsteel.com/Longbow/comments/7216.htmlhttp://www.aygfsteel.com/Longbow/archive/2005/07/06/7216.html#Feedback1http://www.aygfsteel.com/Longbow/comments/commentRss/7216.htmlhttp://www.aygfsteel.com/Longbow/services/trackbacks/7216.html¾l´æŠ¤ä¸€ä¸ªJ2EE™å¹ç›®åQŒç»å¸”Rœ€è¦ä¿®æ”¹client端所˜qžæŽ¥çš„server. 最éºÈƒ¦çš„就是每‹Æ¡éƒ½éœ€è¦æŠŠclient里面的所有的configå’Œpropertiesæ–‡äšg里的IP地址改一遍。如果不ž®å¿ƒå¿˜æŽ‰å‡ ä¸ªåQŒå°±ä¼šå‡ºçŽîC¸€äº›æ„æƒ³ä¸åˆ°çš„错误。如果要避免˜q™ç§éºÈƒ¦çš„事情,可以用windows IP影射ã€?/FONT>

具体æ–ÒŽ³•åQ?/FONT>

在windows安装目录修改\system32\drivers\etc\hosts:æ–‡äšg

在文仉™‡ŒåŠ ä¸Šä¾‹å¦‚˜q™æ ·çš„å­—ŒD?/FONT>

123.456.0.1           abcde

前面一ŒDµäØ“IP地址åQŒåŽé¢äؓ一个ä“Q意的server名字åQŒå¯ä»¥æ˜¯ä»ÀL„çš„å­—½W¦ä¸²ã€‚然后,在所有的属性文仉™‡Œä½¿ç”¨˜q™ä¸ªåå­—。以后再æƒÏx›´æ”¹serveråQŒå°±åªéœ€è¦ä¿®æ”¹hostsæ–‡äšgž®Þp¡Œäº†ã€?/FONT>



]]>
关于Generics的一点儿理解http://www.aygfsteel.com/Longbow/archive/2005/07/06/7201.htmlJava求烦Java求烦Wed, 06 Jul 2005 07:57:00 GMThttp://www.aygfsteel.com/Longbow/archive/2005/07/06/7201.htmlhttp://www.aygfsteel.com/Longbow/comments/7201.htmlhttp://www.aygfsteel.com/Longbow/archive/2005/07/06/7201.html#Feedback5http://www.aygfsteel.com/Longbow/comments/commentRss/7201.htmlhttp://www.aygfsteel.com/Longbow/services/trackbacks/7201.htmlJDK5.0已经release很久了,但一直没æœÞZ¼šå¥½å¥½å­¦ä¹ ä¸€ä¸‹ï¼Œä»Šå¤©å¯æœ‰æœÞZ¼šäº†ã€?/FONT>

先来看一ŒDµä»£ç ï¼š

public class TestDate {

    
public static void main(String[] args) {
        Date date 
= new Date();
        Object 
object = new Object();
        Timestamp stamp 
= new Timestamp(date.getTime());
        System.
out.println("date&stamp:" + date.compareTo(stamp));
        System.
out.println("stamp&date:" + stamp.compareTo(date));
        System.
out.println("date&object:" + date.compareTo(object));
    }
}


˜q™æ®µä»£ç çœ‹ä¸ŠåŽÕd¾ˆæ™®é€šï¼Œä½†æ˜¯å¦‚æžœç”?.4å’?.5分别¾~–译ž®×ƒ¼šå‡ºçŽ°ä¸åŒçš„ç»“æžœã€‚å…ˆæ¥è¯´ç”?.4¾~–译的情况:首先ç”?.4¾~–译åQŒç¼–译器不会报错åQŒå¦‚果运行的话,前面两个输出语句会分别打印â€?åQ?”,而第三个会throw一个ClassCast exception. 因䨓Date不能与object比较åQŒä½†æ˜¯äؓ什么能¾~–译通过呢?察看JDK源代码就可以知道了,Date实现了Comparable接口åQŒè¿™ä¸ªæŽ¥å£ä¸­çš„CompareTo()æ–ÒŽ³•的参数就是Object。所以Date也不得不有一个以Object为参数的CompareTo()æ–ÒŽ³•åQŒä½†æ˜¯è¿™ä¸ªæ–¹æ³•是没有意义的,Date应该与Date比较åQŒæ‰€ä»¥Date˜q™ä¸ªClass里面ž®±å‡ºçŽîCº†ä¸¤ä¸ªComparaToæ–ÒŽ³•åQŒä¸€ä¸ªæ˜¯ä»¥Date为参敎ͼŒå¦ä¸€ä¸ªæ˜¯ä»¥Object为参敎ͼŒ˜q™æ˜¯1.4以前åQŒä¸å¾—不采用的方法。不然Datež®±æ²¡æ³•实现Comparable接口了ã€?/FONT>

JDK1.5中Generics的出现解决了˜q™ä¸ªé—®é¢˜åQŒå¦‚果看1.5中Date¾cÈš„æºä»£ç çš„话,ž®×ƒ¼šå‘现它只有一个CompareTo()æ–ÒŽ³•了,那它怎么来实现Comparable接口呢,˜q™å°±æ˜¯Generics的功劳了。在Date声明æ—Óž¼Œå®žçްComparable接口是这么写的:...Comparable...åQŒåƈ且Comparable接口的声明是˜q™æ ·çš„:Comparable。这个T代表Type。它可以是ä“Q何Object。Comparable的实现类只要说明T是什么具体类型就可以了。因此,Datež®±å¯ä»¥åªæœ‰ä¸€ä¸ªCompareTo()æ–ÒŽ³•åQŒåˆå¯ä»¥å®žçްComparable接口了。如果用1.5¾~–译上面的Code的话åQŒå°±ä¼šå‘现这ŒDµCode是不能编译通过的,¾~–译器会提示“Severity Description Resource In Folder Location Creation Time 2 The method compareTo(Date) in the type Date is not applicable for the arguments (Object)”,˜q™å°±é¿å…äº?.4中出现的问题。我惛_¦‚æžœä‹É用了1.5以后å’׃»¬¾~–写代码æ—Óž¼Œå‡ºçްClassCastException的几率就会很ž®äº†åQŒå› ä¸ºç¼–译器会替你发现这æ ïLš„错误ã€?/FONT>

˜q™å°±æ˜¯Generics的好处了ã€?/FONT>

但是˜q˜æœ‰ä¸€ç‚¹å€¼å¾—考虑åQŒå¦‚果我们去掉错误的那一行代码,åœ?.5中编译然后运行,会发现还有地方与1.4çš„ä¸åŒã€‚ç¬¬ä¸€è¡Œè¾“å‡ø™¯­å¥ä¼šæ‰“印1åQŒè€Œä¸æ˜?åQŒè¿™è¯´æ˜Ž1.5è®¤äØ“å…ähœ‰ç›¸åŒæ—‰™—´çš„timestampå’Œdate是不同的åQŒä½†1.4è®¤äØ“å®ƒä»¬ç›¸åŒã€‚æˆ‘æœ‰çœ‹äº†ä¸€ä¸?.5å’?.4的源代码åQŒå‘现它们CompareTo(Date ...)的实现方法是不一æ ïLš„åQŒå¯èƒ½é—®é¢˜å°±å‡ºçŽ°åœ¨è¿™é‡Œã€‚æˆ‘æ²¡æœ‰è¯•ç€åŽ»è¯»å®ƒçš„ä»£ç åQŒç­‰æœ‰æ—¶é—ß_¼Œä¸€å®šå¥½å¥½ç ”½I¶ä¸€ä¸‹ã€?/FONT>

最后,˜q˜æœ‰ä¸€ä¸ªé—®é¢˜ï¼Œå¦‚æžœç”?.5¾~–译òq¶è¿è¡Œï¼Œä¼šthrow一个ClassCastExceptionåQŒè€Œç”¨1.4则不会出现这个问题。我惌™¿™æ˜¯å› ä¸ºtimestamp¾l§æ‰¿äº†Dateçš„CompareTo()æ–ÒŽ³•åQŒæ‰€ä»¥ä¸€ä¸ªtimestampž®±å¯ä»¥ä¸ŽDate比较了,但是应用了Generics以后˜q™ç§æƒ…况是不允许的,而且代码也没有特ŒDŠå¤„理,因此ž®×ƒ¼šæœ‰Exception了。看来Generics也会带来一些其他的问题ã€?/FONT>

我想˜q™ç§æƒ…况是可以避免的åQŒåŽŸåˆ™å°±æ˜¯åªæ¯”è¾ƒå…ähœ‰ç›¸åŒ¾cÕdž‹çš„两个对象,而不与其父类或子¾cÀL¯”较。如果必™åÀL¯”较的话,也应该用相应的方法è{åŒ–äØ“ç›¸åŒçš„ç±»åQŒå†˜q›è¡Œæ¯”较ã€?/FONT>



]]>
Ö÷Õ¾Ö©Öë³ØÄ£°å£º ³¤ÖÎÏØ| »ù¡ÊÐ| Æ½ÒØÏØ| ÆÁÄÏÏØ| °à¸êÏØ| äųØÏØ| ȪÖÝÊÐ| ÒÇÂ¤ÏØ| ÁÙ²×ÊÐ| ¿µ±£ÏØ| »ª°²ÏØ| ¼ÎÉÆÏØ| Ì¨Ç°ÏØ| ¹óÖÝÊ¡| ³£ÄþÊÐ| ÓÀÌ©ÏØ| ÇàÌïÏØ| ÃçÀõÏØ| Æ¤É½ÏØ| ÖêÖÞÏØ| ÕØÔ´ÏØ| Îå¼ÒÇþÊÐ| ÑγØÏØ| »³»¯ÊÐ| ÁÉÄþÊ¡| ÇíÖÐ| ¾°µÂÕòÊÐ| °¢ÀÕÌ©ÊÐ| ÌïÑôÏØ| ÇàÍ­Ï¿ÊÐ| °¢À­ÉÆÓÒÆì| ãëÉÏÏØ| »ªÒõÊÐ| ÆÁ¶«ÊÐ| ÁèÔ´ÊÐ| ×¼¸ñ¶ûÆì| Ú¯°²ÏØ| ÎÚÀ¼²ì²¼ÊÐ| ¶¼²ýÏØ| Á«»¨ÏØ| ͬ½­ÊÐ|