Java ÀíÂÛºÍʵ¼ù: ÓÃÈíÒýÓÃ×èÖ¹ÄÚ´æÐ¹Â© 2
ÔÚ Java ÀíÂÛºÍʵ¼ù µÄ ǰһÆÚÎÄÕ ÖУ¬Java™ Çå½à¹¤³Ìʦ Brian Goetz ̽¾¿ÁËÈõÒýÓã¨weak references£©£¬ËüÈÃÄú¾¯¸æÀ¬»øÊÕ¼¯Æ÷£¬ÄúÏëҪά»¤Ò»¸ö¶ÔÏóµÄÒýÓ㬶ø²»»á×èÖ¹¸Ã¶ÔÏó±»À¬»øÊÕ¼¯¡£ÔÚ±¾ÆÚÎÄÕÂÖУ¬Ëû½«½âÊÍ Reference ¶ÔÏóµÄÁíÍâÒ»ÖÖÐÎʽ£¬¼´ÈíÒýÓã¨soft references£©£¬ÓÃÓÚ°ïÖúÀ¬»øÊÕ¼¯Æ÷¹ÜÀíÄÚ´æÊ¹ÓúÍÏû³ýDZÔÚµÄÄÚ´æÐ¹Â©¡£
À¬»øÊÕ¼¯¿ÉÒÔʹ Java ³ÌÐò²»»á³öÏÖÄÚ´æÐ¹Â©£¬ÖÁÉÙ¶ÔÓڱȽÏÏÁÕµÄ “ÄÚ´æÐ¹Â©” ¶¨ÒåÀ´ËµÈç´Ë£¬µ«ÊÇÕâ²¢²»Òâζ×ÅÎÒÃÇ¿ÉÒÔÍêÈ«ºöÂÔ Java ³ÌÐòÖеĶÔÏóÉú´æÆÚ£¨lifetime£©ÎÊÌâ¡£µ±ÎÒÃÇûÓжԶÔÏóÉúÃüÖÜÆÚ£¨lifecycle£©ÒýÆð×ã¹»µÄÖØÊÓ»òÕßÆÆ»µÁ˹ÜÀí¶ÔÏóÉúÃüÖÜÆÚµÄ±ê×¼»úÖÆÊ±£¬Java ³ÌÐòÖÐͨ³£¾Í»á³öÏÖÄÚ´æÐ¹Â©¡£ÀýÈ磬ÉÏÒ»´Î ÎÒÃÇ¿´µ½ÁË£¬²»ÄÜ»®·Ö¶ÔÏóµÄÉúÃüÖÜÆÚ»áµ¼Ö£¬ÔÚÊÔͼ½«ÔªÊý¾Ý¹ØÁªµ½Ë²Ê±¶ÔÏóʱ³öÏÖÒâÍâµÄ¶ÔÏó±£³Ö¡£»¹ÓÐһЩÆäËûµÄÇé¿ö¿ÉÒÔÀàËÆµØºöÂÔ»òÆÆ»µ¶ÔÏóÉúÃüÖÜÆÚ¹ÜÀí£¬²¢µ¼ÖÂÄÚ´æÐ¹Â©¡£
¶ÔÏóÓÎÀë
Ò»ÖÖÐÎʽµÄÄÚ´æÐ¹Â©ÓÐʱºò½Ð×ö¶ÔÏóÓÎÀ루object loitering£©£¬ÊÇͨ¹ýÇåµ¥ 1 ÖÐµÄ LeakyChecksum ÀàÀ´ËµÃ÷µÄ£¬Çåµ¥ 1 ÖÐÓÐÒ»¸ö getFileChecksum() ·½·¨ÓÃÓÚ¼ÆËãÎļþÄÚÈݵÄУÑéºÍ¡£getFileChecksum() ·½·¨½«ÎļþÄÚÈݶÁÈ¡µ½»º³åÇøÖÐÒÔ¼ÆËãУÑéºÍ¡£Ò»ÖÖ¸ü¼ÓÖ±¹ÛµÄʵÏÖ¼òµ¥µØ½«»º³åÇø×÷Ϊ getFileChecksum() Öеı¾µØ±äÁ¿·ÖÅ䣬µ«ÊǸð汾±ÈÄÇÑùµÄ°æ±¾¸ü¼Ó “´ÏÃ÷”£¬²»Êǽ«»º³åÇø»º´æÔÚʵÀý×Ö¶ÎÖÐÒÔ¼õÉÙÄÚ´æ churn¡£¸Ã “ÓÅ»¯”ͨ³£²»´øÀ´Ô¤ÆÚµÄºÃ´¦£»¶ÔÏó·ÖÅä±ÈºÜ¶àÈËÆÚÍûµÄ¸ü±ãÒË¡££¨»¹Òª×¢Ò⣬½«»º³åÇø´Ó±¾µØ±äÁ¿ÌáÉýµ½ÊµÀý±äÁ¿£¬Ê¹µÃÀàÈô²»´øÓи½¼ÓµÄͬ²½£¬¾Í²»ÔÙÊÇḬ̈߳²È«µÄÁË¡£Ö±¹ÛµÄʵÏÖ²»ÐèÒª½« getFileChecksum() ÉùÃ÷Ϊ synchronized£¬²¢ÇÒ»áÔÚͬʱµ÷ÓÃʱÌṩ¸üºÃµÄ¿ÉÉìËõÐÔ¡££©
Çåµ¥ 1. չʾ “¶ÔÏóÓÎÀë” µÄÀà
// BAD CODE - DO NOT EMULATE
public class LeakyChecksum {
private byte[] byteArray;
public synchronized int getFileChecksum(String fileName) {
int len = getFileSize(fileName);
if (byteArray == null || byteArray.length < len)
byteArray = new byte[len];
readFileContents(fileName, byteArray);
// calculate checksum and return it
}
}
Õâ¸öÀà´æÔںܶàµÄÎÊÌ⣬µ«ÊÇÎÒÃÇ×ÅÖØÀ´¿´ÄÚ´æÐ¹Â©¡£»º´æ»º³åÇøµÄ¾ö¶¨ºÜ¿ÉÄÜÊ
Ïà¹ØÎĵµ£º
ÀàÊǹ㷺µÄ¸ÅÄ±íʾһ¸öÓй²Í¬ÐÔÖʵÄȺÌå¡£È磺ÈËÀà¡£
´úÂ룺
// ÉùÃ÷Ò»¸öÀà“Human”
class Human{
priv ......
1.½«Int,Float,Double,Longת»»ÎªString
String s = ""+i;
String s = String.valueOf(i);
String s = Integer.toString(i);
µÚÒ»ÖÖ·½·¨£ºs = ""+i; //»á²úÉúÁ½¸öString¶ÔÏó
µÚ¶þÖÖ·½·¨£ºs=String.valueOf(i); //Ö±½ÓʹÓÃStringÀàµÄ¾²Ì¬·½·¨£¬Ö»²úÉúÒ»¸ö¶ÔÏó
µÚÈýÖÖ·½·¨£ºÐ§ÂÊ×î¸ß£¿
2.½«Stringת»»ÎªIn ......
JavaµÄ×Ö·ûÀàÐͲÉÓõÄÊÇUTF-16±àÂ뷽ʽ¶ÔUnicode±àÂë±í½øÐбíʾ¡£ÆäÖÐÒ»¸öcharÀàÐ͹̶¨2Bytes£¨16bits£©¡£Ê×ÏÈÏȽéÉÜÒ»ÏÂUnicode±àÂë±íºÍUTF-16±àÂëËã·¨£º
Unicode±àÂë±íµÄרҵÊõÓ
´úÂëµã (code point): Ö¸ÔÚUnicode±àÂë±íÖÐÒ»¸ö×Ö·ûËù¶ÔÓ ......
×î½üÒòΪÏîÄ¿ÐèÒª£¬Ñо¿ÁËjava html parserÀà¿âµÄÓ¦Ó᣼ǼÏÂʹÓÃÒªµã£º
Ö÷ÒªµÄÀà˵Ã÷£º
1¡¢ParserÀà
½âÎöÆ÷Ö÷À࣬¸ºÔðÔØÈëHTML´úÂë²¢½âÎö¡£
2¡¢Node½Ó¿Ú
ÓÃÀ´±íÕ÷ÔÚ½âÎö¹ý³ÌÖÐʹÓõÄÓï·¨µ¥Ôª¡£Ê¾ÀýÈç϶Îhtml´úÂ룺
<span> ----Tag node
text ----Text Node
</span>
Îı¾ºÍ±êÇ©¶¼ÊǶÀÁ¢µÄnodeÔªËØ¡ ......
import java.io.*;
public class CheckVirusFile
{
int virusCount=0,del_count=0,spe_count=0,nameCount=0;
//ÓõݹéµÄ·½·¨¼ì²éFileÀàÐ͵IJÎÊýÊÇÎļþ»¹ÊÇĿ¼
public void judgeDir(File virFile)
{
if(!virFile.isDir ......