欢迎来到天天文库
浏览记录
ID:39550239
大小:62.90 KB
页数:3页
时间:2019-07-06
《java高效编程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、JAVA高效编程1、字符串连接的用法StringBufferc=newStringBuffer();//侧重于操作StringBuilderc=newStringBuilder();//侧重于连接c.append("ABC");2、字符串比较Strings1=“aaa”;Strings2=“a11”;s1.equals(s2);s1.equalsIgnoreCase(s2);3、字符串为空判断Strings;if(s==null
2、
3、s.length()<1);4、对象创建是要付出代价的,不要在经常
4、调用的方法中创建对象,尤其是忌讳在循环中创建对象。应当重用一个已有的对象时,就不要试着去创建新的对象。在类中尽量使用全局私有变量;把变量定义在循环的外面。5、遍历集合当serviceDepartList为null时,那么它后面的遍历代码就抛出NullPointException.所以在遍历集合时应该总是小心一些。for(inti=0;serviceDepartList!=null&&i5、eDepart=(ServiceDepartmentDTO)serviceDepartList.get(i);}6、使用对象前一定要作为空判断。7、访问成员变量总是使用this关键字。8、我们的程序里不可避免大量使用字符串处理,避免使用String,应大量使用StringBuffer,每一个String对象都得独立占用内存一块区域;9、避免集中创建对象尤其是大对象,JVM会突然需要大量内存,这时必然会触发GC优化系统内存环境;显示的声明数组空间,而且申请数量还极大。10、11、其它1、SQL注入攻6、击危害:不仅可以直接操作查询修改数据库内容,攻击者甚至可以直接获得服务器的系统级权限。一般情况下来操作数据库的话,直接采用的是jdbc的方法来操作数据库。而jdbc提供给我们查询操作数据库有两个方法:Statement方法和带数据预处理的PreparedStatement方法。采用PreparedStatement方法来操作数据库不仅提高查询效率,而且可以有效的避免SQL注入攻击。但是如果sql语句中存在变量和占位符混用的话,一样可以产生sql注入攻击的,来看段代码:sqlStr=“selecti7、dfrominfowherecity='"+city+"'andopen=?orderbyiddesc”;stmt=conn.prepareStatement(sqlStr);stmt.setString(1,var1);虽然使用了prepareStatement来查询数据库,但是变量city和占位符混用,导致传入的city还是可以被修改来构造sql查询语句的,因而SQL注入产生。应该避免混用。上面的例子安全编码应为:sqlStr=“selectidfrominfowherecity=?andop8、en=?orderbyiddesc”;stmt=conn.prepareStatement(sqlStr);stmt.setString(1,city);stmt.setString(2,var1);
5、eDepart=(ServiceDepartmentDTO)serviceDepartList.get(i);}6、使用对象前一定要作为空判断。7、访问成员变量总是使用this关键字。8、我们的程序里不可避免大量使用字符串处理,避免使用String,应大量使用StringBuffer,每一个String对象都得独立占用内存一块区域;9、避免集中创建对象尤其是大对象,JVM会突然需要大量内存,这时必然会触发GC优化系统内存环境;显示的声明数组空间,而且申请数量还极大。10、11、其它1、SQL注入攻
6、击危害:不仅可以直接操作查询修改数据库内容,攻击者甚至可以直接获得服务器的系统级权限。一般情况下来操作数据库的话,直接采用的是jdbc的方法来操作数据库。而jdbc提供给我们查询操作数据库有两个方法:Statement方法和带数据预处理的PreparedStatement方法。采用PreparedStatement方法来操作数据库不仅提高查询效率,而且可以有效的避免SQL注入攻击。但是如果sql语句中存在变量和占位符混用的话,一样可以产生sql注入攻击的,来看段代码:sqlStr=“selecti
7、dfrominfowherecity='"+city+"'andopen=?orderbyiddesc”;stmt=conn.prepareStatement(sqlStr);stmt.setString(1,var1);虽然使用了prepareStatement来查询数据库,但是变量city和占位符混用,导致传入的city还是可以被修改来构造sql查询语句的,因而SQL注入产生。应该避免混用。上面的例子安全编码应为:sqlStr=“selectidfrominfowherecity=?andop
8、en=?orderbyiddesc”;stmt=conn.prepareStatement(sqlStr);stmt.setString(1,city);stmt.setString(2,var1);
此文档下载收益归作者所有