资源描述
JAVA 高效编程
1、 字符串连接的用法
StringBuffer c = new StringBuffer() ; //侧重于操作
StringBuilder c = new StringBuilder() ; //侧重于连接
c.append( "ABC" );
2、 字符串比较
String s1 = “aaa” ;
String s2 = “a11”;
s1. equals ( s2) ;
s1. equalsIgnoreCase(s2) ;
3、 字符串为空判断
String s ;
if (s == null || s.length() < 1) ;
4、 对象创建是要付出代价的, 不要在经常调用的方法中创建对象,尤其是忌讳在循环中创建对象。
应当重用一个已有的对象时,就不要试着去创建新的对象。在类中尽量使用全局私有变量;把变量定义在循环的外面。
5、 遍历集合
当serviceDepartList 为null时,那么它后面的遍历代码就抛出NullPointException.所以在遍历集合时应该总是小心一些。
for(int i = 0; serviceDepartList != null && i < serviceDepartList.size();i++) {ServiceDepartmentDTO serviceDepart = (ServiceDepartmentDTO)serviceDepartList.get(i);
}
6、 使用对象前一定要作为空判断。
7、 访问成员变量总是使用this关键字。
8、 我们的程序里不可避免大量使用字符串处理,避免使用String,应大量使用StringBuffer,每一个String对象都得独立占用内存一块区域;
9、 避免集中创建对象尤其是大对象,JVM会突然需要大量内存,这时必然会触发GC优化系统内存环境;显示的声明数组空间,而且申请数量还极大。
10、
11、 其它
12、 SQL注入攻击
危害:不仅可以直接操作查询修改数据库内容,攻击者甚至可以直接获得服务器的系统级权限。
一般情况下来操作数据库的话,直接采用的是jdbc的方法来操作数据库。而jdbc提供给我们查询操作数据库有两个方法:Statement方法和带数据预处理的PreparedStatement方法。采用PreparedStatement方法来操作数据库不仅提高查询效率,而且可以有效的避免SQL注入攻击。
但是如果sql语句中存在变量和占位符混用的话,一样可以产生sql注入攻击的,来看段代码:
sqlStr = “select id from info where city='"+ city+ "' and open=? order by id desc”;
stmt = conn.prepareStatement(sqlStr);
stmt.setString(1,var1);
虽然使用了prepareStatement来查询数据库,但是变量city和占位符混用,导致传入的city还是可以被修改来构造sql查询语句的,因而SQL注入产生。应该避免混用。上面的例子安全编码应为:
sqlStr = “select id from info where city=? and open=? order by id desc”;
stmt = conn.prepareStatement(sqlStr);
stmt.setString(1,city);
stmt.setString(2,var1);
展开阅读全文