¶¯Ì¬´úÀíÊÇÖ¸¿Í»§Í¨¹ý´úÀíÀàÀ´µ÷ÓÃÆäËü¶ÔÏóµÄ·½·¨
¶¯Ì¬´úÀíʹÓó¡ºÏ:
•
Ô¶³Ì·½·¨µ÷ÓÃ(RMI)
•
1.´´½¨Ò»¸öʵÏÖ½Ó¿ÚInvocationHandlerµÄÀ࣬Ëü±ØÐëʵÏÖinvoke·½·¨
2.´´½¨±»´úÀíµÄÀàÒÔ¼°½Ó¿Ú
3.ͨ¹ýProxyµÄ¾²Ì¬·½·¨
newProxyInstance(ClassLoader loader, Class[] interfaces, InvocationHandler h) ´´½¨Ò»¸ö´úÀí
4.ͨ¹ý´úÀíµ÷Ó÷½·¨
²Î¼û³ÌÐòVectorProxy.java
package com.langsin.dynamicproxy;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.util.List;
import java.util.Vector;
public class VectorProxy implements InvocationHandler
{
private Object proxyobj;
public VectorProxy(Object obj)
{
proxyobj = obj;
}
public static Object factory(Object obj)
{
Class<?> cls = obj.getClass();
return Proxy.newProxyInstance(cls.getClassLoader(),
cls.getInterfaces(), new VectorProxy(obj));
}
public Object invoke(Object proxy, Method method, Object[] args)
t ......
ÔÚÍøÉÏ¿´µ½ºÜ¶àÈ˶¼ÔÚΪDelphiÊÇ·ñÖ§³ÖC++/JavaÖеľ²Ì¬±äÁ¿¼°¾²Ì¬·½·¨µÄ¹¦ÄܶøÀ§ÈÅ,ÆäʵÕâÔÚDelphiÖÐÊǺܼòµ¥µÄ.
¾²Ì¬·½·¨¾ÍÊÇʹÓÃClass Function. ¾²Ì¬±äÁ¿ÔòʹÓõ¥Ôª¾Ö²¿±äÁ¿À´ÊµÏÖ. ´úÂëÈçÏÂ:
//=========================================
// StaticVarTestU - ¶¨ÒåÁË¿ÉÒÔ¼ÆÊýµÄÀ࣬ͨ¹ýÀà·½·¨¼´¿É·ÃÎÊ´ËÀàµÄ¶ÔÏóÊý
//=========================================
unit StaticVarTestU;
interface
type
TStaticVarClass = class
public
//constructor
constructor Create();
destructor Destroy; override;
//Àà·½·¨£¬È¡µÃ¶ÔÏóµÄ¼ÆÊý
class function ObjectCount: integer;
protected
private
end;
implementation
Var
LObjCount: integer;
{ TStaticVarClass }
constructor TStaticVarClass.Create;
begin
inc(LObjCount); //ʹÓþֲ¿±äÁ¿
end;
destructor TStaticVarClass.Destroy;
begin
dec(LObjCount); //ʹÓþֲ¿±äÁ¿
inherited;
end;
class function TStaticVarClass.ObjectCount: integer;
begin
Result := LObjCount; //·µ»Ø¾Ö²¿±äÁ¿
end;
initialization
LObjC ......
ÔÚÍøÉÏ¿´µ½ºÜ¶àÈ˶¼ÔÚΪDelphiÊÇ·ñÖ§³ÖC++/JavaÖеľ²Ì¬±äÁ¿¼°¾²Ì¬·½·¨µÄ¹¦ÄܶøÀ§ÈÅ,ÆäʵÕâÔÚDelphiÖÐÊǺܼòµ¥µÄ.
¾²Ì¬·½·¨¾ÍÊÇʹÓÃClass Function. ¾²Ì¬±äÁ¿ÔòʹÓõ¥Ôª¾Ö²¿±äÁ¿À´ÊµÏÖ. ´úÂëÈçÏÂ:
//=========================================
// StaticVarTestU - ¶¨ÒåÁË¿ÉÒÔ¼ÆÊýµÄÀ࣬ͨ¹ýÀà·½·¨¼´¿É·ÃÎÊ´ËÀàµÄ¶ÔÏóÊý
//=========================================
unit StaticVarTestU;
interface
type
TStaticVarClass = class
public
//constructor
constructor Create();
destructor Destroy; override;
//Àà·½·¨£¬È¡µÃ¶ÔÏóµÄ¼ÆÊý
class function ObjectCount: integer;
protected
private
end;
implementation
Var
LObjCount: integer;
{ TStaticVarClass }
constructor TStaticVarClass.Create;
begin
inc(LObjCount); //ʹÓþֲ¿±äÁ¿
end;
destructor TStaticVarClass.Destroy;
begin
dec(LObjCount); //ʹÓþֲ¿±äÁ¿
inherited;
end;
class function TStaticVarClass.ObjectCount: integer;
begin
Result := LObjCount; //·µ»Ø¾Ö²¿±äÁ¿
end;
initialization
LObjC ......
ÔÚÍøÉÏ¿´µ½ºÜ¶àÈ˶¼ÔÚΪDelphiÊÇ·ñÖ§³ÖC++/JavaÖеľ²Ì¬±äÁ¿¼°¾²Ì¬·½·¨µÄ¹¦ÄܶøÀ§ÈÅ,ÆäʵÕâÔÚDelphiÖÐÊǺܼòµ¥µÄ.
¾²Ì¬·½·¨¾ÍÊÇʹÓÃClass Function. ¾²Ì¬±äÁ¿ÔòʹÓõ¥Ôª¾Ö²¿±äÁ¿À´ÊµÏÖ. ´úÂëÈçÏÂ:
//=========================================
// StaticVarTestU - ¶¨ÒåÁË¿ÉÒÔ¼ÆÊýµÄÀ࣬ͨ¹ýÀà·½·¨¼´¿É·ÃÎÊ´ËÀàµÄ¶ÔÏóÊý
//=========================================
unit StaticVarTestU;
interface
type
TStaticVarClass = class
public
//constructor
constructor Create();
destructor Destroy; override;
//Àà·½·¨£¬È¡µÃ¶ÔÏóµÄ¼ÆÊý
class function ObjectCount: integer;
protected
private
end;
implementation
Var
LObjCount: integer;
{ TStaticVarClass }
constructor TStaticVarClass.Create;
begin
inc(LObjCount); //ʹÓþֲ¿±äÁ¿
end;
destructor TStaticVarClass.Destroy;
begin
dec(LObjCount); //ʹÓþֲ¿±äÁ¿
inherited;
end;
class function TStaticVarClass.ObjectCount: integer;
begin
Result := LObjCount; //·µ»Ø¾Ö²¿±äÁ¿
end;
initialization
LObjC ......
File£¨ÎļþÀࣩ
¾¡¹Üjava.io¶¨ÒåµÄ´ó¶àÊýÀàÊÇʵÐÐÁ÷ʽ²Ù×÷µÄ£¬FileÀ಻ÊÇ¡£ËüÖ±½Ó´¦ÀíÎļþºÍÎļþϵͳ¡£Ò²¾ÍÊÇ˵£¬FileÀàûÓÐÖ¸¶¨ÐÅÏ¢ÔõÑù´ÓÎļþ¶ÁÈ¡»òÏòÎļþ´æ´¢£»ËüÃèÊöÁËÎļþ±¾ÉíµÄÊôÐÔ¡£File¶ÔÏóÓÃÀ´»ñÈ¡»ò´¦ÀíÓë´ÅÅÌÎļþÏà¹ØµÄÐÅÏ¢£¬ÀýÈçȨÏÞ£¬Ê±¼ä£¬ÈÕÆÚºÍĿ¼·¾¶¡£´ËÍ⣬File»¹ä¯ÀÀ×ÓĿ¼²ã´Î½á¹¹¡£ºÜ¶à³ÌÐòÖÐÎļþÊÇÊý¾ÝµÄ¸ùÔ´ºÍÄ¿±ê¡£¾¡¹ÜËüÃÇÔÚСӦÓóÌÐòÖÐÒòΪ°²È«ÔÒò¶øÊܵ½ÑϸñÏÞÖÆ£¬ÎļþÈÔÊÇ´æ´¢¹Ì¶¨ºÍ¹²ÏíÐÅÏ¢µÄÖ÷Òª×ÊÔ´¡£JavaÖеÄĿ¼µ±³ÉFile ¶Ô´ý£¬Ëü¾ßÓи½¼ÓµÄÊôÐÔ——Ò»¸ö¿ÉÒÔ±» list( )·½·¨¼ì²âµÄÎļþÃûÁÐ±í¡£
ÏÂÃæµÄ¹¹Ô캯Êý¿ÉÒÔÓÃÀ´Éú³ÉFile ¶ÔÏó£º
File(String directoryPath)
File(String directoryPath, String filename)
File(File dirObj, String filename)
ÕâÀdirectoryPathÊÇÎļþµÄ·¾¶Ãû£¬filename ÊÇÎļþÃû£¬dirObj Ò»¸öÖ¸¶¨Ä¿Â¼µÄFile ¶ÔÏó¡£ÏÂÃæµÄÀý×Ó´´½¨ÁËÈý¸öÎļþ£ºf ......
Õâ±¾ÊéÏêϸ½²½âÁËģʽÀíÂÛµÄÓÉÀ´£¨ºÜ¶àÈË¿ÉÄܲ»ÖªµÀģʽÀíÂÛÓëÖйúµÀ¼Ò˼ÏëµÄÔ¨Ô´£©£¬ÃæÏò¶ÔÏóµÄÈí¼þÉè¼ÆÔÔò£¬Ò»Ö±½²µ½¶þÊ®¼¸¸öÉè¼ÆÄ£Ê½£¬ÒÔ¼°ÕâЩģʽÔÚJavaÓïÑÔÖеÄʵÏֵȵȡ£ÊéÖиø³öÁË´óÁ¿À´×Ô»ª¶û½ÖϵͳµÄÕæÊµÏîÄ¿µÄÀý×Ó£¬ÓÃÀ´½²½âÉè¼ÆÄ£Ê½ÔÚϵͳÉè¼ÆÖеÄÓ¦ÓᣠÕâ±¾Êé´¦ÓÚÀíÂÛºÍʵ¼ùÖ®¼ä£¬ÊÇÒ»±¾¶¨Î»¶ÀÌØ¡¢·ç¸ñ¶ÀÌØµÄÊ顣ϣÍû¸÷λϲ»¶¡£ ÑÖºê javapatterns@yahoo.com www.WebEndsHere.com ÔʼģÐÍģʽÊôÓÚ¶ÔÏóµÄ´´½¨Ä£Ê½[GOF95]¡£Í¨¹ý¸ø³öÒ»¸öÔÐͶÔÏóÀ´Ö¸Ã÷ËùÒª´´½¨µÄ¶ÔÏóµÄÀàÐÍ£¬È»ºóÓø´ÖÆÕâ¸öÔÐͶÔÏóµÄ°ì·¨´´½¨³ö¸ü¶àͬÀàÐ͵ĶÔÏó¡£Õâ¾ÍÊÇÔʼģÐÍģʽµÄÓÃÒâ¡£ ´ÓËï´óÊ¥µÄÊÖ¶Î̸Æð --------------------- ËïÎò¿ÕÔÚÓë»Æ·ç¹ÖµÄÕ½¶·ÖУ¬“ʹһ¸öÉíÍâÉíµÄÊֶΣº°ÑºÁë¾¾ÏÂÒ»°Ñ£¬ÓÿڽÀµÃ·ÛË飬ÍûÉÏÒ»Å磬½ÐÉù‘±ä£¡’±äÓаÙÊ®¸öÐÐÕߣ¬¶¼ÊÇÒ»Ñù´ò°ç£¬¸÷Ö´Ò»¸ùÌú°ô£¬°ÑÄǹÖΧÔÚ¿ÕÖС£” »»ÑÔÖ®£¬ËïÎò¿Õ¿ÉÒÔ¸ù¾Ý×Ô¼ºµÄÐÎÏñ£¬¸´ÖƳöºÜ¶à“ÉíÍâÖ®Éí”À´¡£ ÀÏËïµÄÕâÖÖÉíÍâÉíµÄÊÖ¶ÎÔÚÃæÏò¶ÔÏóµÄÉè¼ÆÁìÓòÀ½Ð×öÔʼģÐÍ£¨Prototype£©Ä£Ê½¡£ JavaÓïÑԵĹ¹¼þÄ£ÐÍÖ±½ÓÖ§³ÖÔʼģÐÍģʽ¡£ËùÓеÄJavaBean¶¼¼Ì³Ð×Ôjava.lang.Object£¬¶øObjectÀàÌá¹ ......
ÍÆ¼öÒ»¿îJava·´±àÒëÆ÷£¬Ò²Ê¹ÓÃÁËͦ¾ÃµÄÁË£¬¸Ð¾õ»¹ÊǺܺÃÓ㬾ÍÄóöºÍ´ó¼Ò·ÖÏíһϡ£
Õâ¿î·´±àÒëÆ÷½Ð "Java Decompiler", ÓÉ Pavel Kouznetsov¿ª·¢£¬Ä¿Ç°×îа汾Ϊ0.2.5.
ËüÓÉ C++¿ª·¢£¬²¢ÇÒ¹Ù·½¿ÉÒÔÏÂÔØ windows¡¢linuxºÍÆ»¹ûMac OsÈý¸öƽ̨µÄ¿ÉÖ´ÐгÌÐò¡£
±¾ÈËÖ®ËùÒÔÈÏΪËü»¹²»´í£¬ÊÇÆäÓÐÏÂÃæ¼¸¸ö¹¦ÄÜ£º
1. Ö§³Ö¶ÔÕû¸öJarÎļþ½øÐз´±àÒ룬²¢±¾Ô´´úÂë¿ÉÖ±½Óµã»÷½øÐÐÏà¹Ø´úÂëµÄÌø×ª
2. Ö§³ÖÖÚ¶àJava±àÒëÆ÷µÄ·´±àÒë(Ö§³Ö·ºÐÍ£¬ AnnotationºÍenumö¾ÙÀàÐÍ)
jdk1.1.8
jdk1.3.1
jdk1.4.2
jdk1.5.0
jdk1.6.0
jikes-1.22
harmony-jdk-r533500
Eclipse Java Compiler v_677_R32x, 3.2.1 release
jrockit90_150_06
ͼʾ:
3. ¿ìËÙ²éÕÒÔ´Îļþ¹¦ÄÜ(Ctrl+Shift+T)
4. °²×°·½±ã.Ö»ÓÐ600K,Ö±½ÓÔËÐм´¿É¡£
5. Ö§³ÖÎļþµÄÍϷʦÄÜ£¬Ô´´úÂë¸ßÁÁÏÔʾ
µ±È»¶ÔÓÚ·´±àÒëµÄЧ¹û£¬¸Ð¾õ»¹¿ÉÒÔ¡£µ±È»ÔÚ±¾ÈËʹÓùý³ÌÒ²³öÏÖ¹ý£¬±àÒëЧ¹û²»¼ÑµÄÇé¿ö¡£µ«´Ó×ÜÌåÉÏÀ´¿´ÒѾÈÃÎÒͦÂúÒâÁË£¬ºÇºÇ¡£
Good Luck!
Yours Matthew! ......
1.È¥ÍøÕ¾http://files.zentus.com/sqlitejdbc/ÏÂÔØsqlitejdbc.¸ù¾Ý×ÔÒÑÐèÒª£¬ÏÂÔØsqlitejdbc.(sqlitejdbcÓÐÁ½¸ö°æ±¾£¬Ò»ÖÖÊÇpureµÄÒ»ÖÖÊÇnativeµÄ¡£nativeµÄËٶȿ졣Ëü·ÅÔÚ**-bin.tgzÀï¡£ÎÒϵľÍÊÇÕâÖÖsqlitejdbc-v056-bin.tgz£©
2. ÏÂÔØºó½âѹsqlitejdbc-v056-bin.tg £¬ÓÐÒÔϼ¸¸öÎļþ£º libsqlitejdbc.so£¬sqlitejdbc.dll£¬
libsqlitejdbc.jnilib£¬sqlitejdbc-v056-native.jar¡£
ÆäÖÐlibsqlitejdbc.soÊÇlinuxÏµĶ¯Ì¬Á´½Ó¿â£¬sqlitejdbc.dllÊÇwindowsÏµĶ¯Ì¬Á´½Ó¿â£¬ libsqlitejdbc.jnilibÊÇMacÏµĶ¯Ì¬Á´½Ó¿â¡£
3.¸ù¾Ý×ÔÒѵIJÙ×÷ϵͳ½«sqlitejdbc-v056-native.jarÓë¶ÔÓ¦¶¯Ì¬Á´½Ó¿â·Åµ½jdk/jre/lib/extÀï¡£(ÎÒµÄÊÇlinux,Ôò½«sqlitejdbc-v056-native.jar Óëlibsqlitejdbc.so ·Åµ½jdk/jre/lib/extÖУ©¡£
3.Èç¹ûÄãÖ»ÊÇËæ±ãµÄ½«sqlitejdbc.jar·ÅÔÚÈÎһĿ¼£¬²¢ÇÒÄãÓÖÊÇrun in pure-java mode£¨´¿javaģʽÏÂÔËÐУ¿ÊÇÕâôÒëÂð£©Çë²Î¿¼http://www.xerial.org/trac/Xerial/wiki/SQLiteJDBC
4.Èç¹ûÄãÒÑ¿´Á˵ÚÈý²½µÄÍøÕ¾£¬ÒÔÏ¿ÉÒÔ²»Óÿ´ÁË£¬ÏÂÃæµÄ½éÉÜÖ»ÊǸ´Êö3ÀïÃæµÄ¶øÒÑ¡£
5.ת×Ôhttp://www.xerial.org/trac/Xerial/wiki/SQLiteJDBC µÄʵÀý¾ÑéÖ¤¿ÉÒÔÔËÐС£
import java. ......