Ò»¡¢Java ClassLoader
1£¬Ê²Ã´ÊÇClassLoader
Óë C »ò C++ ±àдµÄ³ÌÐò²»Í¬£¬Java ³ÌÐò²¢²»ÊÇÒ»¸ö¿ÉÖ´ÐÐÎļþ£¬¶øÊÇÓÉÐí¶à¶ÀÁ¢µÄÀàÎļþ×é³É£¬Ã¿Ò»¸öÎļþ¶ÔÓ¦ÓÚÒ»¸ö Java Àà¡£
´ËÍ⣬ÕâЩÀàÎļþ²¢·ÇÁ¢¼´È«²¿¶¼×°ÈëÄڴ棬¶øÊǸù¾Ý³ÌÐòÐèҪװÈëÄÚ´æ¡£ClassLoader ÊÇ JVM Öн«Àà×°ÈëÄÚ´æµÄÄDz¿·Ö¡£
¶øÇÒ£¬Java ClassLoader ¾ÍÊÇÓà Java ÓïÑÔ±àдµÄ¡£ÕâÒâζ×Å´´½¨Äú×Ô¼ºµÄ ClassLoader ·Ç³£ÈÝÒ×£¬²»±ØÁ˽â JVM µÄ΢Сϸ½Ú¡£
2£¬Ò»Ð©ÖØÒªµÄ·½·¨
A)loadClass
ClassLoader.loadClass() ÊÇClassLoaderµÄÈë¿Úµã¡£¸Ã·½·¨µÄ¶¨ÒåΪ£ºClass loadClass( String name, boolean resolve );
name£ºJVM ÐèÒªµÄÀàµÄÃû³Æ£¬Èç Foo »ò java.lang.Object¡£
resolve£º²ÎÊý¸æËß·½·¨ÊÇ·ñÐèÒª½âÎöÀà¡£
B)defineClass
defineClass·½·¨ÊÇClassLoaderµÄÖ÷Òª¾÷ÇÏ¡£¸Ã·½·¨½ÓÊÜÓÉÔʼ×Ö½Ú×é³ÉµÄÊý×é²¢°ÑËüת»»³ÉClass¶ÔÏó¡£
C)findSystemClass
findSystemClass·½·¨´Ó±¾µØÎļþϵͳÖÐѰÕÒÀàÎļþ£¬Èç¹û´æÔÚ£¬¾ÍʹÓÃdefineClass½«Ôʼ×Ö½Úת»»³ÉClass¶ÔÏó£¬ÒÔ½«¸ÃÎļþת»»³ÉÀà¡£
D)resolveClass
¿ÉÒÔ²»ÍêÈ«µØ(²»´ø½âÎö)×°ÈëÀ࣬Ҳ¿ÉÒÔÍêÈ«µØ(´ø½âÎö)×°ÈëÀà¡£µ±±àдÎÒÃÇ×Ô¼ºµÄloadClassʱ¿ ......
1.final¹Ø¼ü×ÖÐÞÊÎÀàʱ£¬ËµÃ÷ÆäÀ಻ÄÜÓÐ×ÓÀ࣬Ҳ¾ÍÊÇ˵¸ÃÀ಻Äܱ»¼Ì³Ð£¬¸ÃÀàµÄ³ÉÔ±±äÁ¿ÔÚÕâÀォ²»Æð×÷Óá£
2.final¹Ø¼ü×ÖÐÞÊη½·¨Ê±£¬ËµÃ÷¸Ã·½·¨²»Äܱ»ÖØÐ´£¬ÒòΪÀà¶¼²»Äܱ»¼Ì³ÐÁË£¬·½·¨¾Í¸ü²»ÄÜÖØÐ´ÁË¡£
3.ÀàÀï¿ÉÒÔº¬ÓÐfinal¹Ø¼ü×ÖÐÞÊεķ½·¨¡£
4.ÔÚjavaÀ³éÏóÀà×îÉÙÒªº¬ÓÐÒ»¸ö³éÏó·½·¨£¬ÈÃËüµÄ×ÓÀàȥʵÏÖÕâ¸ö³éÏó·½·¨£¬³éÏóÀàÀïÒ²¿ÉÒÔ¶¨ÒåһЩ·½·¨¡£
5.³éÏóÀàÊDz»ÄÜʵÀý»¯£¬Ö»ÄÜȥʵÏÖËùÓеijéÏó·½·¨£¬·ñÔò¾ÍÖ»ÄÜ»¹ÊÇÒ»¸ö³éÏóÀà¡£
6.¼Ì³ÐÁ˳éÏóÀà¾Í±ØÐëȥʵÏָóéÏóÀàµÄ³éÏó·½·¨¡£
Èç¹û³éÏóÀàµÄ×ÓÀàûÓÐʵÏÖ¸¸ÀàµÄ³éÏó·½·¨£¬¾Í±ØÐëΪ³éÏóÀà¡£
³éÏóÀàºÍÆÕͨ¼Ì³ÐÀàÒ»Ñù£¬¶¼±ØÐëÊǵ¥¼Ì³Ð£¬»òÕßÊǶà²ã¼Ì³Ð¡£
7.½Ó¿ÚÀïµÄ³ÉÔ±±äÁ¿Ä¬ÈÏΪpublic static finalÀàÐ͵ġ£
8.½Ó¿Ú²»ÄÜÉùÃ÷ΪfinalµÄ£¬ÒòΪfinalÀàÐ͵ıØÐëҪʵÏÖ¡£½Ó¿ÚºÃ±ÈÒ»¸ö¹æ¶¨£¬½Ó¿ÚÖ»¶¨ÒåÁËÐÎʽ£¬Ã»ÓоßÌ嶨Òå²Ù×÷¡£
9.½Ó¿Ú×ñÑÀàµÄ¶¨ÒåÔÔò£¬½Ó¿ÚҲͬÑù¿ÉÒԼ̳С£µ«£¨À಻Äܶà¼Ì³Ð£¬¿ÉÒÔ¶à²ã¼Ì³Ð£©½Ó¿Ú¼È¿ÉÒÔ¶à²ã¼Ì³Ð£¬Ò²¿ÉÒÔ¶à¼Ì³Ð¡£
10.ÔÚ¶¨Òå½Ó¿ÚµÄʱºò£¬½Ó¿ÚÀïµÄ·½·¨ÊÇûÓз½·¨ÌåµÄ¡£½Ó¿ÚÀﶨÒåµÄ·½·¨ÐèÒªÔÚÆä×ÓÀàȥʵÏÖ¡£½Ó¿ÚµÄ±äÁ¿Ä¬Èϱ»ÐÞÊÎΪpublic static finalÀàÐÍ
11.½Ó¿ÚÀ ......
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
public class CipherTest {
public static void main(String[] args) {
try {
byte[] keydata = { (byte) 0x00, (byte) 0x01, (byte) 0x02,
(byte) 0x03, (byte) 0x04, (byte) 0x05, (byte) 0x06,
(byte) 0x07, (byte) 0x08, (byte) 0x09, (byte) 0x0a,
(byte) 0x0b, (byte) 0x0c, (byte) 0x0d, (byte) 0x0e,
(byte) 0x0f, (byte) 0x10, (byte) 0x11, (byte) 0x12,
(byte) 0x13, (byte) 0x14, (byte) 0x15, (byte) 0x16,
(byte) 0x17, };
String algorithm = "DESede";
String clearTextString = "I wanna be with you.";
String encoding = "US-ASCII";
// javax.crypto.spec.DESedeKeySpec
SecretKey key = new SecretKeySpec(keydata, algorithm);
Cipher cipher = Cipher.getInstance(algorithm);
byte[] clearText = clearTextString.getBytes(encoding);
cipher.init(Cipher.ENCRYPT_MODE, key);
byte[] encryptedText = cipher.doFinal(cle ......
import java.util.Enumeration;
public class CipherTest implements Enumeration {
private int N;
private int c[], k;
private Object[] objs;
public CipherTest(Object[] items) {
N = items.length;
c = new int[N + 1];
for (int i = 0; i <= N; i++)
c[i] = i;
objs = items;
k = 1;
}
public boolean hasMoreElements() {
return (k < N);
}
public Object nextElement() {
int i = 0;
if ((k & 1) != 0)
i = c[k];
Object tmp = objs[k];
objs[k] = objs[i];
objs[i] = tmp;
k = 1;
while (c[k] == 0)
c[k] = k++;
c[k]--;
return objs;
}
public static void main(String[] args) {
// String[] strs = { "1", "2", "3", "4" };
Integer[] nums = new Integer[6];
for (int i = 0; i < nums.length; i++)
nums[i] = i + 1;
System.out.println("N=" + nums.length);
Enumeration e = new CipherTest(nums);
int count = 0;
while (e.hasMoreElements()) {
Object[] a = (Object[]) ......
Õ⼸ÌìÍøÂçÓÐÎÊÌ⣬ËùÒÔ½ñÌìÒ»Æð×ܽá³öÀ´
ÀàµÄС½á
1£¬Àà³éÏóÁËËùÓоßÓÐÒ»¶¨¹²ÐÔµÄʵÌåµÄ¹²Í¬Ìسơ£Ò»¸öÀàÖУ¬±äÁ¿ÓÃÀ´±íʾÊôÐÔ£¬·½·¨ÓÃÀ´±íʾ¹¦ÄÜ£¬Àà°ÑÊý¾ÝºÍ¶ÔÊý¾ÝµÄ²Ù×÷·â×°³ÉÒ»¸öÕûÌå¡£³ÌÐòÓïÑÔÖУ¬Í¨¹ýÀà´´½¨¶ÔÏó¡£
2£¬¹¹Ô캯ÊýµÄ×÷ÓÃÔÚÓÚÉùÃ÷ÀàµÄ¶ÔÏóºó£¬ÎªÆä·ÖÅä´¢´æµ¥Ôª£¬¼´´´½¨ÊµÀý¡£
3,²»Í¬¶ÔÏóµÄʵÀý±äÁ¿½«±»·ÖÅ䲻ͬµÄÄÚ´æ¿Õ¼ä£¬ËùÓжÔÏóµÄÀà±äÁ¿¶¼·ÖÅ䏸ÏàͬµÄÒ»¿éÄÚ´æ¿Õ¼ä¡£
4£¬¶ÔÏóÊÇÒýÓÃÐͱäÁ¿¡£¶ÔÏóµ÷ÓñäÁ¿¼°·½·¨»áÊܵ½È¨ÏÞµÄÏÞÖÆ£¬Javaͨ¹ýÐÞÊηûpublic private protectedµÈÀ´ËµÃ÷ʹÓÃȨÏÞ£¬ÔÚȨÏÞ·¶Î§ÄÚ£¬¶ÔÏó¹ýͨ¹ýµ÷Ó÷½·¨¿ÉÒÔ²úÉúÒ»¶¨ÐÐΪ¡£
5£¬ÊµÀý·½·¨Ö»ÄÜÓɶÔÏóµ÷Óã¬ÊµÀý·½·¨¼ÈÄܶÔÀà±äÁ¿²Ù×÷Ò²ÄܶÔʵÀý±äÁ¿²Ù×÷£¬Àà·½·¨¼È¿ÉÓɶÔÏóµ÷Óã¬ÓÖ¿ÉÖ±½ÓÓÉÀàÃûµ÷Ó㬶øÀà·½·¨Ö»ÄܶÔÀà±äÁ¿½øÐвÙ×÷¡£
6£¬°üÊÇJavaÓï¾äÖÐÓÐЧ¹ÜÀíÀàµÄ»úÖÆ¡£Èç¹ûÀàÔÚͬһ¸ö°üÖУ¬ÄÇôÏàÓ¦¶ÔÏóÄÜ·ÃÎÊ×Ô¼ºµÄÓкóÉÔ±£¬Èç¹ûÀ಻ÔÚͬһ¸ö°üÖУ¬ÄÇôÏàÓ¦¶ÔÏóÖ»ÄÜ·ÃÎÊpublicºÍprotected³ÉÔ±¡£
ÔÚ³ÌÐòÖУ¬ÀàÖ÷ÒªÓÐÁ½¸öÈÎÎñ£»
1£¬ÀඨÒåÁËÓëÆäÓйصijéÏóÎÎÒÃÇ¿ÉÒÔʹÓÃÀàÃèÊöÕæÊÇÊÀ½çµÄʵÌ壬ÎÞÂÛËûÃÇÓжิÔÓ¡£
2£¬ÀàÊdzÌÐòÄ£¿é»¯µÄ»ù´¡¡£
ÔÚϵͳ¹¹ÔìÖо¡¿ÉÄÜÔËÓÃÈËÀà ......
À´Ô´: http://xfshiyuan.blog.sohu.com/100496073.html
ÓÉÓÚͬһ½ø³ÌµÄ¶à¸öÏ̹߳²ÏíͬһƬ´æ´¢¿Õ¼ä£¬ÔÚ´øÀ´·½±ãµÄͬʱ£¬Ò²´øÀ´ÁË·ÃÎʳåÍ»Õâ¸öÑÏÖØµÄÎÊÌâ¡£JavaÓïÑÔÌṩÁËרÃÅ»úÖÆÒÔ½â¾öÕâÖÖ³åÍ»£¬ÓÐЧ±ÜÃâÁËͬһ¸öÊý¾Ý¶ÔÏó±»¶à¸öÏß³Ìͬʱ·ÃÎÊ¡£
¡¡¡¡ÐèÒªÃ÷È·µÄ¼¸¸öÎÊÌ⣺
¡¡¡¡1)synchronized¹Ø¼ü×Ö¿ÉÒÔ×÷Ϊº¯ÊýµÄÐÞÊηû£¬Ò²¿É×÷Ϊº¯ÊýÄÚµÄÓï¾ä£¬Ò²¾ÍÊÇÆ½Ê±ËµµÄͬ²½·½·¨ºÍͬ²½Óï¾ä¿é¡£Èç¹ûÔÙϸµÄ·ÖÀ࣬synchronized¿É×÷ÓÃÓÚinstance±äÁ¿¡¢object reference(¶ÔÏóÒýÓÃ)¡¢staticº¯ÊýºÍclass literals(ÀàÃû³Æ×ÖÃæ³£Á¿)ÉíÉÏ¡£
¡¡¡¡2)ÎÞÂÛsynchronized¹Ø¼ü×Ö¼ÓÔÚ·½·¨ÉÏ»¹ÊǶÔÏóÉÏ£¬ËüÈ¡µÃµÄËø¶¼ÊǶÔÏ󣬶ø²»ÊǰÑÒ»¶Î´úÂë»òº¯Êýµ±×÷Ëø¨D¨D¶øÇÒͬ²½·½·¨ºÜ¿ÉÄÜ»¹»á±»ÆäËûÏ̵߳ĶÔÏó·ÃÎÊ¡£
¡¡¡¡3)ÿ¸ö¶ÔÏóÖ»ÓÐÒ»¸öËø(lock)ÓëÖ®Ïà¹ØÁª¡£
¡¡¡¡4)ʵÏÖͬ²½ÊÇÒªºÜ´óµÄϵͳ¿ªÏú×÷Ϊ´ú¼ÛµÄ£¬ÉõÖÁ¿ÉÄÜÔì³ÉËÀËø£¬ËùÒÔ¾¡Á¿±ÜÃâÎÞνµÄͬ²½¿ØÖÆ¡£
¡¡¡¡1¡¢synchronized¹Ø¼ü×ÖµÄ×÷ÓÃÓòÓжþÖÖ£º
¡¡¡¡1)ÊÇij¸ö¶ÔÏóʵÀýÄÚ£¬synchronized aMethod(){}¿ÉÒÔ·ÀÖ¹¶à¸öÏß³Ìͬʱ·ÃÎÊÕâ¸ö¶ÔÏóµÄsynchronized·½·¨(Èç¹ûÒ»¸ö¶ÔÏóÓжà¸ösynchronized·½·¨£¬Ö»ÒªÒ»¸öÏ̷߳ÃÎÊÁËÆäÖеÄÒ»¸ösync ......