1.尽量指定类的final修饰符,因为带有final修饰符的类是不可派生的。
2.尽量重用对象。
3.尽量使用局部变量。
4.不要重复初始化变量。
5.在Java+Oracle的应用系统开发中,Java中内嵌的SQL语句应尽量使用大写,以减轻Oracle解析器解析的负担。
6.在Java编程过程中进行数据库连接、I/O流操作时务必小心,使用完毕后应及时关闭以释放资源。
7.JVM(Java虚拟机)有自身的GC(垃圾回收机制),但并非十分机智。用户对象后手动设置成null。
8.在使用同步机制时,应尽量使用方法同步代替代码同步。
9.尽量减少对变量的重复计算。
10.尽量采用lazy loading 的策略,即在需要时才开始创建。
11.谨慎使用异常。
12.不要在循环中使用try-catch,放在最外层。
13.注意StringBuffer(表示可变的可写的字符串)的使用。设置合适的容量。
14.合理使用Java类java.util.Vector。一个Vector就是一个java.lang.Object实例的数组。
15.当复制大量数据时,使用System.arraycopy()命令。
16.尽量使用重构。
17.不适用new 关键字创建类实例。
18.谨慎使用乘法和除法。如某些乘法可以用移位代替。
19.在JSP网页关闭无用的会话。 <@page session = “false”>
20.JDBC与I/O。
21.Servlet与内存使用。
22.使用缓冲标记。
23.选择合适的引用机制。如include指令和include动作。
24.及时清除不再需要的会话。
25.不要将数组声明为public static final;
26.HashMap的遍历效率。
27.Array数组和ArrayList的使用。
摘自 http://tomcat-oracle.iteye.com/blog/1980924
产生密钥
E:\Java\jdk1.6.0_22\bin\keytool -genkey -v -keystore android.keystore -alias android.keystore -keyalg RSA -validity 20000
签署密钥
E:\Java\jdk1.6.0_22\bin\jarsigner -verbose -keystore android.keystore -signedjar aBMI_signed.apk aBMI.apk android.keystore
验证密钥
E:\Java\jdk1.6.0_22\bin\jarsigner -verify -verbose -certs aBMI_signed.apk
在ARC中会自动注册到autoreleasepool中:
1、取得非自己生成并持有的对象时(即编译器检测不是以alloc/new/copy/mutableCope开始的方法名):
@ autoreleasepool{ id __strong obj = [NSMutableArray array]; //[NSMutableArray array]会自动注册到autoreleasepool }
如果是alloc/new/copy/mutableCope开头的方法必须:
@ autoreleasepool{ id __autoreleasing obj =[ [NSObject alloc] init]; }
2、对象作为函数返回值时;
+ (id) array{ return [[NSObject alloc] init]; } //or + (id) array{ id obj = [[NSObject alloc] init]; return obj; }
3、id的指针或对象的指针在没有显式指定时;
- (BOOL)moveItemAtPath:(NSString *)srcPath toPath:(NSString *)dstPath error:(NSError **)error NS_AVAILABLE(10_5, 2_0);
(NSError **)error 实际编译成 (NSError *__autoreleasing *)
注意点:
1、在ARC中不能使用autorelease方法,不能使用NSAutoreleasePool类;
2、在使用附有__weak修饰符的变量时必定要使用注册到autoreleasepool中的对象;
3、赋值给对象指针时,所有修饰符号必须一致。
但是,例如上面的第三点,定义一个NSError __strong *error = nil,传给方法参数是不一致的,其实编译器自动的做了转化:
NSError __strong *error = nil;
NSError __ autoreleasing *tmp= error;
调用方法;
error = tmp;
4、NSRunLoop等实现无论ARC有效还是无效,均能随时释放注册到autoreleasepool中的对象。
5、无论ARC,都能调用非公开方法_objc_ autoreleasePoolPrint()查看注册到autoreleasepool中的对象。