KMPËã·¨µÄJavaʵÏÖÀý×ÓÒÔ¼°²âÊÔ·ÖÎö
±³¾°¼ò½é£ºKMPËã·¨ÓÃÀ´´¦Àí×Ö·û´®Æ¥ÅäµÄ¡£¸øÄãA,BÁ½¸ö×Ö·û´®£¬¼ì²éB´®ÊÇ·ñÊÇA´®µÄ×Ó´®£¬ÀàËÆÓÚJavaµÄString.indexOf("")¡£Ö®ËùÒÔ½Ð×öKMP£¬ÊÇÒòΪÕâ¸öËã·¨ÊÇÓÉKnuth¡¢Morris¡¢PrattÈý¸öÌá³öÀ´µÄ£¬È¡ÁËÕâÈý¸öÈ˵ÄÃû×ÖµÄÍ·Ò»¸ö×Öĸ¡£
ÔÀí½éÉÜ£ºÕÒµ½Æ¥Åäʧ°ÜʱµÄ×îºÏÊʵĻØÍËλÖ㬶ø²»ÊǼòµ¥µÄ»ØÍ˵½×Ó´®µÄµÚÒ»¸ö×Ö·û£¨³£¹æµÄö¾Ù²éÕÒ·½Ê½£¬ÊǼòµ¥µÄ»ØÍ˵½×Ó´®µÄµÚÒ»¸ö×Ö·û£¬½ÓÏÂÀ´×¼±¸Ð´Ò»ÆªKMPËã·¨µÄÐÔÄÜ·ÖÎöJavaʵÏÖʵÀý£©£¬¼´¿ÉÌá¸ß²éÕÒµÄЧÂÊ¡£Òò´ËΪÁËÕÒµ½Õâ¸öºÏÊʵÄλÖã¬ÏȶÔ×Ó´®Ô¤´¦Àí£¬´Ó¶øµÃµ½Ò»¸ö»ØÍËλÖõÄÊý×é¡£¹ý¶àµÄÀíÂ۾Ͳ»½éÉÜÁË¡£
×ÜÌå¶øÑԱȽϼòµ¥£¬KMPËãÒ»¸ö¾µäµÄËã·¨Àý×Ó£¬ºÜ¶à±ÊÊÔ¡¢ÃæÊÔÒ²»áÎÊÆð¡£ÏÖ×ܽáһϣ¬·ÅÔÚÕâÀ﹩´ó¼Ò²Î¿¼¡¢½»Á÷£¬Ï£Íû¶Ô´ó¼ÒÓÐËù°ïÖú£¬ÏÂÃæÖ±½Ó¸ø³öʵÏÖÀý×Ó£¬²âÊÔÓë·ÖÎöÒ²°üº¬ÆäÖС£
Ò»¡¢Ò»¸öÎļþÔ´´úÂë
KMP.java
Ô´´úÂëΪ£º
package algorithm.kmp;
/**
* KMPËã·¨µÄJavaʵÏÖÀý×ÓÓë²âÊÔ¡¢·ÖÎö
* @author ´ÞÎÀ±ø
* @date 2009-3-25
*/
public class KMP {
/**
* ¶Ô×Ó´®¼ÓÒÔÔ¤´¦Àí£¬´Ó¶øÕÒµ½Æ¥Åäʧ°Üʱ×Ó´®»ØÍ˵ÄλÖÃ
* ÕÒµ½Æ¥Åäʧ°ÜʱµÄ×îºÏÊʵĻØÍËλÖ㬶ø²»ÊÇ»ØÍ˵½×Ó´®µÄµÚÒ»¸ö×Ö·û£¬¼´¿ÉÌá¸ß²éÕÒµÄЧÂÊ
* Òò´ËΪÁËÕÒµ½Õâ¸öºÏÊʵÄλÖã¬ÏȶÔ×Ó´®Ô¤´¦Àí£¬´Ó¶øµÃµ½Ò»¸ö»ØÍËλÖõÄÊý×é
* @param B£¬´ý²éÕÒ×Ó´®µÄcharÊý×é
* @return
*/
public static int[] preProcess(char [] B) {
int size = B.length;
int[] P = new int[size];
P[0]=0;
int j=0;
//ÿѻ·Ò»´Î£¬¾Í»áÕÒµ½Ò»¸ö»ØÍËλÖÃ
for(int i=1;i<size;i++){
//µ±ÕÒµ½µÚÒ»¸öÆ¥ÅäµÄ×Ö·ûʱ£¬¼´j>0ʱ²Å»áÖ´ÐÐÕâ¸öÑ»·
//»òÕß˵p2ÖеÄj++»áÔÚp1֮ǰִÐУ¨ÏÞÓÚµÚÒ»´ÎÖ´ÐеÄÌõ¼þÏ£©
//p1
while(j>0 && B[j]!=B[i]){
j=P[j];
}
//p2£¬ÓÉ´Ë¿ÉÒÔ¿´³ö£¬Ö»Óе±×Ó´®Öк¬ÓÐÖØ¸´×Ö·ûʱ£¬»ØÍ˵ÄλÖòŻᱻÓÅ»¯
if(B[j]==B[i]){
j++;
}
//ÕÒµ½Ò»¸ö»ØÍËλÖÃj£¬°ÑÆä·ÅÈëP[i]ÖÐ
P[i]=j;
}
return P;
&n
Ïà¹ØÎĵµ£º
ÀàµÄ³õʼ»¯ºÍ¶ÔÏó³õʼ»¯ÊÇ JVM ¹ÜÀíµÄÀàÐÍÉúÃüÖÜÆÚÖзdz£ÖØÒªµÄÁ½¸ö»·½Ú£¬Google ÁËÒ»±éÍøÂ磬ÓйØÀà×°ÔØ»úÖÆµÄÎÄÕµ¹ÊDz»ÉÙ£¬È»¶øÀà³õʼ»¯ºÍ¶ÔÏó³õʼ»¯µÄÎÄÕ²¢²»¶à£¬ÌرðÊÇ´Ó×Ö½ÚÂëºÍ JVM ²ã´ÎÀ´·ÖÎöµÄÎÄÕ¸üÊÇÏÊÓÐËù¼û¡£
±¾ÎÄÖ÷Òª¶ÔÀàºÍ¶ÔÏó³õʼ»¯È«¹ý³Ì½øÐзÖÎö£¬Í¨¹ýÒ»¸öʵ¼ÊÎÊÌâÒýÈ룬½«Ô´´úÂëת»»³É JVM ×Ö½ÚÂëºó£¬ ......
±¾×÷Æ·²ÉÓÃ֪ʶ¹²ÏíÊðÃû-·ÇÉÌÒµÐÔʹÓÃ-Ïàͬ·½Ê½¹²Ïí 2.5 Öйú´ó½Ðí¿ÉÐÒé½øÐÐÐí¿É¡£
ÎÞÂÛÔÚC/C++»¹ÊÇÔÚJava£¬Ç¿ÖÆÀàÐÍת»»ÒѾ²»ÊÇİÉúµÄ¸ÅÄîÁË¡£µ«ÊÇÒªÏëÈ«ÃæÕÆÎÕJavaÖÐÀàÐÍת»»µÄÒªµã¿É²»ÄÇô¼òµ¥£¬±¾ÎĽ«´øÁì´ó¼ÒһͬÁ˽âÓйØJavaÀàÐÍת»»µÄËùÓÐÒªµã¡£
ÊýÖµÀàÐ͵ÄÀàÐÍת»»
ÖÚËùÖÜÖª£¬JavaÓÐÁ½ÖÖÊý¾ÝÀàÐÍ£º»ù±¾Êý¾Ý ......
game
server responsibility:
Initialize
the server socke;
Wait
for a client to connect;
Accept
the client connection;
Create
a daemon thread to support the clien;
Go
back to step 2.
game daemon responsibility:
Accept
client player connection;
Pair
......
Javaѧϰ·Ïß
ÏÈѧϰj2se
Ҫѧϰj2ee¾ÍÒªÏÈѧϰj2se£¬¸Õ¿ªÊ¼Ñ§Ï°j2seÏȽ¨Ò鲻ҪʹÓÃIDE£¬È»ºó½¥½¥µÄ¹ý¶Éµ½Ê¹ÓÃIDE¿ª·¢£¬±Ï¾¹ÓÃËü·½±ãÂѧϰj2seÍÆ¼öÁ½±¾Ê飬¡¶java2ºËÐļ¼ÊõÒ»¶þ¾í¡·£¬¡¶java±à³Ì˼Ïë¡·£¬¡¶javaģʽ¡·¡£ÆäÖС¶java±à³Ì˼Ïë¡·ÒªÑжÁ£¬¾«¶Á¡£ÕâÒ»¶Îʱ¼äÊÇ»ù±¾¹¦Ñ§Ï°£¬Ê±¼ä»áºÜ³¤£¬Ò²¿ÉẠ̈ܺܶ¬ÕâÒª¿´Ñ§Ï ......
µÚÒ»£¬Ì¸Ì¸final, finally, finalizeµÄÇø±ð¡£
¡¡¡¡µÚ¶þ£¬Anonymous Inner Class (ÄäÃûÄÚ²¿Àà) ÊÇ·ñ¿ÉÒÔextends(¼Ì³Ð)ÆäËüÀ࣬ÊÇ·ñ¿ÉÒÔimplements(ʵÏÖ)interface(½Ó¿Ú)?
¡¡¡¡µÚÈý£¬Static Nested Class ºÍ Inner ClassµÄ²»Í¬£¬ËµµÃÔ½¶àÔ½ºÃ(ÃæÊÔÌâÓеĺÜÁýͳ)¡£
¡¡¡¡µÚËÄ£ ......