¶¨Ò壺
GOF¡¶Éè¼ÆÄ£Ê½¡·Öиø×´Ì¬Ä£Ê½ÏµĶ¨ÒåΪ£ºÔÊÐíÒ»¸ö¶ÔÏóÔÚÆäÄÚ²¿×´Ì¬¸Ä±äʱ¸Ä±äËüµÄÐÐΪ¡£
ÏÈ¿´Ò»¸öÀý×Ó£º
package com.state;
public class KissingPrincess {
// ±ê־룬±êÖ¾ÊÇÇàÍÜ»¹ÊÇÍõ×Ó¡£
private boolean isFrog = true;
// ¸ù¾ÝisFrog½øÐв»Í¬µÄ²Ù×÷¡£
public void greet() {
if (isFrog)
System.out.println("frog!");
else
System.out.println("prince!");
}
// ½«isFrogÉèÖóÉfalse¡£
public void kiss() {
isFrog = false;
}
// Ö÷º¯Êý¡£
public static void main(String[] args) {
KissingPrincess prince = new KissingPrincess();
prince.greet();
prince.kiss();
prince.greet();
}
}
Êä³ö½á¹û£º
frog!
prince!
Õâ¸öÀý×ÓÖУ¬ÓÃÁËÒ»¸ö±äÁ¿isFrogÀ´±êʶÊÇÇàÍÜ»¹ÊÇÍõ×Ó£¬Èç¹ûÊÇÍõ×ӵϰ£¬Êä³ö"prince!"£¬ÊÇÇàÍܵϰ£¬Êä³ö:“frog!”¡£
±¾ÀýÖеÄд·¨£¬ÓøöÅóÓѵϰÀ´Ëµ£¬Ö»ÊÇ“ÈëÃż¶³ÌÐòÔ±µÄд·¨”¡£ÔÚjavaÖУ¬ÒªÊ±Ê±×¢ÒâOOP(Object Oriented Programming)µÄ¸ÅÄî¡£
Èç¹û״̬ºÜ¶àµÄ»°£¬¾Í»áʹÓúܶàif else Óï¾ä£¬²»½ö·±ËöÄÑÓÚÎ ......
Reflection ÊÇ Java ³ÌÐò¿ª·¢ÓïÑÔµÄÌØÕ÷Ö®Ò»£¬ËüÔÊÐíÔËÐÐÖÐµÄ Java ³ÌÐò¶Ô×ÔÉí½øÐмì²é£¬»òÕß˵“×ÔÉ󔣬²¢ÄÜÖ±½Ó²Ù×÷³ÌÐòµÄÄÚ²¿ÊôÐÔ¡£ÀýÈ磬ʹÓÃËüÄÜ»ñµÃ Java ÀàÖи÷³ÉÔ±µÄÃû³Æ²¢ÏÔʾ³öÀ´¡£
Java µÄÕâÒ»ÄÜÁ¦ÔÚʵ¼ÊÓ¦ÓÃÖÐÒ²ÐíÓõò»ÊǺܶ࣬µ«ÊÇÔÚÆäËüµÄ³ÌÐòÉè¼ÆÓïÑÔÖиù±¾¾Í²»´æÔÚÕâÒ»ÌØÐÔ¡£ÀýÈ磬Pascal¡¢C »òÕß C++ ÖоÍûÓа취ÔÚ³ÌÐòÖлñµÃº¯Êý¶¨ÒåÏà¹ØµÄÐÅÏ¢¡£
JavaBean ÊÇ reflection µÄʵ¼ÊÓ¦ÓÃÖ®Ò»£¬ËüÄÜÈÃһЩ¹¤¾ß¿ÉÊÓ»¯µÄ²Ù×÷Èí¼þ×é¼þ¡£ÕâЩ¹¤¾ßͨ¹ý reflection ¶¯Ì¬µÄÔØÈ벢ȡµÃ Java ×é¼þ(Àà) µÄÊôÐÔ¡£
1. Ò»¸ö¼òµ¥µÄÀý×Ó
¿¼ÂÇÏÂÃæÕâ¸ö¼òµ¥µÄÀý×Ó£¬ÈÃÎÒÃÇ¿´¿´ reflection ÊÇÈçºÎ¹¤×÷µÄ¡£
import java.lang.reflect.*;
public class DumpMethods {
public static void main(String args[]) {
try {
Class c = Class.forName(args[0]);
Method m[] = c.getDeclaredMethods();
  ......
1¡¢Java.utilµÄ¼¯ºÏÀàÖеÄÔªËØ±ØÐëÊǶÔÏ󻯵ģ¬ËûÃDz»ÄÜÊÇ»ù±¾ÀàÐÍ¡£Èç²»ÄÜÉùÃ÷Set<char>»òList<int>¡£µ«¶ÔList<Integer>£¬¿ÉÒÔÍùÀïÃæ¼ÓintÐÍÊý¾Ý£¬Ëü»áÓÃJavaµÄautoboxing»úÖÆ×Ô¶¯×ª»»³ÉInteger¶ÔÏó¡£
2¡¢²ÎÊý»¯ÀàÖеÄÀàÐͲÎÊý¿ÉÒÔÊÇÊý×éÀàÐÍ£¬ÈçMap<String[],int[]),×¢Òâint[]ÐÍÊÇÒ»¸ö¶ÔÏ󣬶ø²»ÊÇÔʼÀàÐÍ¡£
3¡¢Èç¹û²»ÏëÓ÷ºÐ͹¦ÄÜ£¬¿ÉÒÔͨ¹ý´ø-source1.4±ê¼ÇÀ´±àÒ룻Ҳ¿ÉÒÔÔÚÉùÃ÷µÄÓò»ò·½·¨Ç°ÓÃ@SuppressWarings("unchecked")±ê×¢À´ºöÂÔ¡£
4¡¢Ò»¸öList<Integer>ÊÇÒ»¸öCollection<Integer>£¬µ«²»ÊÇÒ»¸öList<Object>£¬·ñÔòList<Integer>¿ÉÒÔת»»³ÉList<Object>,ÄÇôת»»ºóʲôÀàÐ͵ÄÊý¾Ý¶¼¿ÉÒÔ¼Ó½øÈ¥£¬Ã»Óдﵽ±àÒëÆÚÀàÐͰ²È«µÄÄ¿µÄ¡£¼´£ºÀà¿ÉÒÔÉÏתÐÍ£¬ÀàÐͲÎÊý²»ÄÜÉÏתÐÍ¡£
5¡¢JavaÖÐÒýÈë·ºÐ͵ı¾ÖÊ£ºÎªÁËÌṩ±àÒëÆÚµÄÀàÐͰ²È«¼ì²é£¬ÒÔÃâÀàÐͲ»°²È«µÄbug³öÏÖÔÚÔËÐÐÆÚ¡££¨×¢ÒâÕâÓëC++¼°C#ÖзºÐ͵ÄÄ¿µÄ²»Í¬£©
6¡¢Ò»¸öList<T>ÉÏתÐͳÉListÊǺϷ¨µÄ£¬ÕâÊÇΪÁ ......
ÎÊÌâÒ»£ºÈç±£¼ÓÔØJDBCÇý¶¯³ÌÐò£º
Õý³£ÎÒÃǼÓÔØÇý¶¯³ÌÐòÓÐÈý¸ö;¾¶£º
1.Class.forName(String)ÕâÏëµ±ÓÚclassLoaderÒ»¸öStringÖ¸¶¨µÄÀ࣬ÔÚ×°ÔØÊ±°Ñ¸ÃÇý¶¯³ÌÐòµÄ¾²Ì¬ÄÚÈݶ¼³õʼ»¯£¬ÆäʵÕâʱÇý¶¯³ÌÐòÀàµ÷ÓÃÁËDriverManager.registerDriver(driver)·½·¨¡£
2.ʹÓÃϵͳÊôÐÔ£ºSystem.getProperty().load(new FileInputStream("ÊôÐÔÎļþ"));
ÔÚÊôÐÔÎļþÖÐÖ¸¶¨jdbc.driver=drivername ÕâÑùµÄºÃ´¦ÊÇ¿ÉÒÔͬʱ¼ÓÔØ¶à¸öJDBC£¬»»Êý¾Ý¿âʱ²»Ó÷ÃÎÊJavaÔ´´úÂ룬ֻÊÇÐÞ¸ÄÊôÐÔÎļþ¡£
3.Ö±½ÓregisterDriver(driver£©ÕâÖÖ·½·¨×î¿É¿¿£¬¿ÉÒÔÔÚÈκλ·¾³ÏÂʹÓá£
1·½·¨¼òµ¥£¬µ«MSµÄJVM²»ÄÜÕýÈ·³õʼ»¯¡£±ÈÈçʹÓÃIEʱÔÚAPPLETÖоͲ»ÄÜʹÓã¬Ó¦¸ÃÓÃ3µÄ·½·¨¡£µ«3£©·½·¨ÔÚÁé»îÐÔ·½Ãæ²»Èç2£¬¿ÉÒÔ¸ù¾Ý»·¾³×ۺϿ¼ÂÇ¡£
ÎÊÌâ¶þ£º´ó¶ÔÏó´æ´¢
Ò»°ãÀ´Ëµ£¬´ó¶ÔÏó´æ´¢ÊǰÑÎļþ´æµ½Êý¾Ý¿âÖУ¬µ±È»Ò²¿ÉÒÔÄÚ´æÖеij¬´ó×Ö·û´®¡£¶ÔÓÚÏóͼƬÕâÑùµÄÎļþµ±È»ÊÇÓöþ½øÖÆ´æ´¢£¬ÕâÀïÓкܶàÎóÇø£¬ÍøÂçÉϵĽ̳Ì99%¶¼ÊÇÐв»Í¨µÄ£¬
Á¬SUN×Ô¼ºµÄÎĵµ¶¼Ò»Ö±´íÎó£¬ËäÈ»´íÎóºÜС¡£°´Ëµ¶þ½øÖÆÎļþÓ¦¸Ã´æÎªBLOBÀàÐÍ£¬µ«JBDC2²¢²»ÄÜÖ±½Ó ......
ÎÊÌâÒ»£ºÈç±£¼ÓÔØJDBCÇý¶¯³ÌÐò£º
Õý³£ÎÒÃǼÓÔØÇý¶¯³ÌÐòÓÐÈý¸ö;¾¶£º
1.Class.forName(String)ÕâÏëµ±ÓÚclassLoaderÒ»¸öStringÖ¸¶¨µÄÀ࣬ÔÚ×°ÔØÊ±°Ñ¸ÃÇý¶¯³ÌÐòµÄ¾²Ì¬ÄÚÈݶ¼³õʼ»¯£¬ÆäʵÕâʱÇý¶¯³ÌÐòÀàµ÷ÓÃÁËDriverManager.registerDriver(driver)·½·¨¡£
2.ʹÓÃϵͳÊôÐÔ£ºSystem.getProperty().load(new FileInputStream("ÊôÐÔÎļþ"));
ÔÚÊôÐÔÎļþÖÐÖ¸¶¨jdbc.driver=drivername ÕâÑùµÄºÃ´¦ÊÇ¿ÉÒÔͬʱ¼ÓÔØ¶à¸öJDBC£¬»»Êý¾Ý¿âʱ²»Ó÷ÃÎÊJavaÔ´´úÂ룬ֻÊÇÐÞ¸ÄÊôÐÔÎļþ¡£
3.Ö±½ÓregisterDriver(driver£©ÕâÖÖ·½·¨×î¿É¿¿£¬¿ÉÒÔÔÚÈκλ·¾³ÏÂʹÓá£
1·½·¨¼òµ¥£¬µ«MSµÄJVM²»ÄÜÕýÈ·³õʼ»¯¡£±ÈÈçʹÓÃIEʱÔÚAPPLETÖоͲ»ÄÜʹÓã¬Ó¦¸ÃÓÃ3µÄ·½·¨¡£µ«3£©·½·¨ÔÚÁé»îÐÔ·½Ãæ²»Èç2£¬¿ÉÒÔ¸ù¾Ý»·¾³×ۺϿ¼ÂÇ¡£
ÎÊÌâ¶þ£º´ó¶ÔÏó´æ´¢
Ò»°ãÀ´Ëµ£¬´ó¶ÔÏó´æ´¢ÊǰÑÎļþ´æµ½Êý¾Ý¿âÖУ¬µ±È»Ò²¿ÉÒÔÄÚ´æÖеij¬´ó×Ö·û´®¡£¶ÔÓÚÏóͼƬÕâÑùµÄÎļþµ±È»ÊÇÓöþ½øÖÆ´æ´¢£¬ÕâÀïÓкܶàÎóÇø£¬ÍøÂçÉϵĽ̳Ì99%¶¼ÊÇÐв»Í¨µÄ£¬
Á¬SUN×Ô¼ºµÄÎĵµ¶¼Ò»Ö±´íÎó£¬ËäÈ»´íÎóºÜС¡£°´Ëµ¶þ½øÖÆÎļþÓ¦¸Ã´æÎªBLOBÀàÐÍ£¬µ«JBDC2²¢²»ÄÜÖ±½Ó ......
1. Õ»(stack)Óë¶Ñ(heap)¶¼ÊÇJavaÓÃÀ´ÔÚRamÖдæ·ÅÊý¾ÝµÄµØ·½¡£ÓëC++²»Í¬£¬Java×Ô¶¯¹ÜÀíÕ»ºÍ¶Ñ£¬³ÌÐòÔ±²»ÄÜÖ±½ÓµØÉèÖÃÕ»»ò¶Ñ¡£
2. Õ»µÄÓÅÊÆÊÇ£¬´æÈ¡ËٶȱȶÑÒª¿ì£¬½ö´ÎÓÚÖ±½ÓλÓÚCPUÖеļĴæÆ÷¡£µ«È±µãÊÇ£¬´æÔÚÕ»ÖеÄÊý¾Ý´óСÓëÉú´æÆÚ±ØÐëÊÇÈ·¶¨µÄ£¬È±·¦Áé»îÐÔ¡£ÁíÍ⣬ջÊý¾Ý¿ÉÒÔ¹²Ïí£¬Ïê¼ûµÚ3µã¡£¶ÑµÄÓÅÊÆÊÇ¿ÉÒÔ¶¯Ì¬µØ·ÖÅäÄÚ´æ´óС£¬Éú´æÆÚÒ²²»±ØÊÂÏȸæËß±àÒëÆ÷£¬JavaµÄÀ¬»øÊÕ¼¯Æ÷»á×Ô¶¯ÊÕ×ßÕâЩ²»ÔÙʹÓõÄÊý¾Ý¡£µ«È±µãÊÇ£¬ÓÉÓÚÒªÔÚÔËÐÐʱ¶¯Ì¬·ÖÅäÄڴ棬´æÈ¡ËٶȽÏÂý¡£
3. JavaÖеÄÊý¾ÝÀàÐÍÓÐÁ½ÖÖ¡£
Ò»ÖÖÊÇ»ù±¾ÀàÐÍ(primitive types), ¹²ÓÐ8ÖÖ£¬¼´int, short, long, byte, float, double, boolean, char(×¢Ò⣬²¢Ã»ÓÐstringµÄ»ù±¾ÀàÐÍ)¡£ÕâÖÖÀàÐ͵͍ÒåÊÇͨ¹ýÖîÈçint a = 3; long b = 255L;µÄÐÎʽÀ´¶¨ÒåµÄ£¬³ÆÎª×Ô¶¯±äÁ¿¡£ÖµµÃ×¢ÒâµÄÊÇ£¬×Ô¶¯±äÁ¿´æµÄÊÇ×ÖÃæÖµ£¬²»ÊÇÀàµÄʵÀý£¬¼´²»ÊÇÀàµÄÒýÓã¬ÕâÀﲢûÓÐÀàµÄ´æÔÚ¡£Èçint a = 3; ÕâÀïµÄaÊÇÒ»¸öÖ¸ÏòintÀàÐ͵ÄÒýÓã¬Ö¸Ïò3Õâ¸ö×ÖÃæÖµ¡£ÕâЩ×ÖÃæÖµµÄÊý¾Ý£¬ÓÉÓÚ´óС¿ÉÖª£¬Éú´æÆÚ¿ÉÖª(ÕâЩ×ÖÃæÖµ¹Ì¶¨¶¨ÒåÔÚij¸ö³ÌÐò¿éÀïÃæ£¬³ÌÐò¿éÍ˳öºó£¬×Ö¶ÎÖµ¾ÍÏûʧÁË)£¬³öÓÚ×·ÇóËٶȵÄÔÒò£¬¾Í´æÔÚÓÚÕ»ÖС£
ÁíÍ⣬ջÓÐÒ»¸öºÜÖØÒªµÄÌØÊâÐÔ£ ......
ÔÚÕ⿪ʼ֮ǰ£¬ÎÒÃǵÃÏÈÁ˽âÒ»ÏÂʲôÊÇhttps¡£
https (Secure Hypertext Transfer Protocol) = °²È«³¬Îı¾´«ÊäÐÒé
httpsµÄÌØµãÊÇ£º
1.Êý¾Ý¼ÓÃÜ£¨SSL£© = Secure Socket Layer
2.Éí·ÝÈÏÖ¤
µ±ÄãµÄÏîÄ¿ÐèÒª¿¼Âǰ²È«ÐÔµÄʱºò£¬²¿·ÖÄ£¿é¿ÉÒÔÓõ½https¡£µ±È»ÕâЩ¶¼µÃµ½CA×¢²á£¬ÒªÇ®Ç®µÄŶ¡£
ÕâÀïÎÒÏë¸ø´ó¼Ò½éÉܸö²»Êշѵġ£ÓÃJDKµÄkeytool¹¤¾ßÉú³ÉÖ¤Ê顢ȻºóÔÚTomcatÏÂÅäÖÃserver.xml£¬¾Í¿ÉÒÔʵÏÖhttps£¬¶Ô´«ÊäµÄË«ÏòÊý¾Ý½øÐмÓÃܺͽâÃÜ¡£
Ë«ÏòµÄ¼ÓÃܽâÃܹý³Ì£º
ÓÃTomcatÀ´ÅäÖÃSSLÖ÷ÒªÓÐÏÂÃæÕâôÁ½´ó²½Ö裺
Ò»¡¢Éú³ÉÖ¤Êé
1.ÔÚÃüÁîÐÐÏÂÖ´ÐУº
%Java_home%\bin\keytool -genkey -alias tomcat -keyalg RSA
ÔÚ´ËÃüÁîÖУ¬keytoolÊÇJDK×Ô´øµÄ²úÉúÖ¤ÊéµÄ¹¤¾ß¡£°ÑRSAÔËËã·¨Ôò×÷ΪÖ÷Òª°²È«ÔËËã·¨Ôò£¬Õâ±£Ö¤ÁËÓëÆäËü·þÎñÆ÷ºÍ×é¼þµÄ¼æÈÝÐÔ¡£
Õâ¸öÃüÁî»áÔÚÓû§µÄhome directory²úÉúÒ»¸ö½Ð×ö" .keystore " µÄÐÂÎļþ¡£ÔÚÖ´Ðкó£¬ÄãÊ×Ïȱ»ÒªÇó³öʾkeystoreÃÜÂë¡£TomcatʹÓõÄĬÈÏÃÜÂëÊÇ" changeit "(È«¶¼ÊÇСд×Öĸ)£¬Èç¹ûÄãÔ¸Ò⣬Äã¿ÉÒÔÖ¸¶¨Äã×Ô¼ºµÄÃÜÂë¡£Ä㻹ÐèÒªÔÚserver.xmlÅäÖÃÎļþÀïÖ¸¶¨×Ô¼ºµÄÃÜÂ룬ÕâÔÚÒÔºó»áÓÐÃèÊö¡£
Èç¹ûÒ»ÇÐ˳Àû£¬ÄãÏÖÔÚ¾ÍÓµÓÐÁËÒ»¸ö¿ÉÒÔ±»ÄãµÄ· ......