没有合适的资源?快使用搜索试试~ 我知道了~
初学java时总结的一些经验,对于初学者,可以少走一些弯路,希望对大家有所帮助
资源推荐
资源详情
资源评论
1. “数据库操作、IO 操作等需要使用结束close()的对象必须在try -catch-finally 的finally中close()。”;在使用Statement的批量SQL命令操作的时候,在大规模数据量的情况下,就应该分批将SQL语句添加到命令列表,并在每次调用executeBatch()方法后,调用clearBatch()方法 ,因为大数据量的sql可能导致内存溢出;在使用数据库时,尽量较少与数据库的连接次数,提高性能。
2. 不要硬编码 ‘\n’和‘\r’作为换行符号,因为不同的系统换行符不一样(UNIX、WIN)
3. 每次对于函数进行重载时,详细检查是否与基类定义的方法严格一致,如equal(Object)
4. 在多线程的方法中尽量不要引用全局静态变量;线程太多时,会影响性能,需要变通解决,如积累到一定程度时,启用一个线程,或使用线程池;当程序出现了异常,应该进行合理的处理,不能只是简单的抛出。
5. 尽可能不要用异常来做一般流程处理的方式,不要过多地使用异常,因为通过异常获得相应信息可能导致另外的异常产生;自定义的异常应该是Exception的子类,而不能是Error或RuntimeException的子类,运行时异常如果抛出后不捕获,可能导致线程挂起。
6. 当创建文件句柄和套接字句柄这类非内存资源,要记得手工去清除它。
7.
8. 循环体内每循环一次都要定义一个HashMap或者ArrayList,会很耗费资源;在定义变量时按照真正需要的对象进行初始化,如果现在不能初始化应该赋值为null,否则也会影响性能。
9. 不允许方法局部变量和类变量重名,与其他类进行交互时容易导致出错。
10. 公用的对象引用在传递时应对其clone(),然后传递这个clone过的对象。这样在每个引用到这个对象的地方就会保存各自的特性,不会发生对象内存共享
11. 不管是读取还是写文件的代码都保证在finally块中关闭输入/出流,文件句柄不释放可能导致其他操作失败;一定要确保finally的存在不会改变函数的返回值
12. 子类不要覆盖父类的属性,因为多层结构中,父类的属性就没用了,导致出现不预期的错误。
13. Java中的自动转换类型有时候会出错,如integer 2==2,但150!=150,因为<128时,valueOf会使用IntegerCache,而>128时,会new个新对象。
14. String.trim()不会改变字符串本身,而是生成了另外一个新的字符串。
15. 编程过程中,不应忽略对异常的处理,所有的异常捕获处都需要进行适当的处理。对于不能确定的异常,需要输出调试信息,以便于后续的调试跟踪
16. HttpSession多数情况下需要设置超时时间,否则会长时间的占用系统资源;不要将效率较低的对象放入缓存,比较大的对象一定要及时从缓存中释放,否则可能导致内存溢出;
17. 后台new Date()是服务器所在机器的当前时间;javascript获得的是客户端的机器的当前时间。
18. 使用encodeRedirectURL(“URL”)方法对URL进行重写时,输入参数值一定要是完整的URL地址
19. 当使用StringTokenizer时,其会忽略连续的分隔符,当作一个分隔符处理;如果分隔符出现在字符串的头或尾,头或尾的分隔符会被忽略;当使用String.split时,分隔符出现在字符串尾的时候,会被忽略,而且|有特殊使用
20. 应用包中的过滤器Filter 的配置,应该将设置编码的过滤器放在前面;
21. System.currentTimeMillis()取到的时间不是完全精准。
22. 在精度要求比较高的浮点运算时,最好不要直接运算,要使用BigDecimal(String或 int)。
23. 常量字符串连接直接用+,因为String在编译期就固定了;如果变量连接使用StringBuffer的append()来完成;不管字符串中是否包含中文,buf的长度都以String.getBytes().length为准,这样才能保证长度的正确性,因为在中文编码方式下,String.length()和String.getBytes().length是不一样的。
24. System.arraycopy()可以直接、高效地移动“原始array”的内存内容到“目标array”
25. 获取数组元素前首先要判定数组是否为空、是否超出数组长度,对数组元素进行操作时应先判断此元素是否为空,(因为如String[0][],其可以部位空,但长度为0)否则很容易出现NullPointerException或ArrayIndexOutOfBoundsException
26. Date.getDay()取的是星期,而不是日期;取得日期的是Date.getDate()
27. 到处大数量数据到excel时,要注意虚拟内存溢出,和数据量不能超过65536,否则要分页;
28. 调用尚未初始化的方法时一定要慎重,看看是否调用了尚未初始化的变量。
29. Javac编译时对原始数据类型和String常量,直接编译到class中了,而不再是引用的方式。制作补丁时,尤其要注意这一点,要把需要替换的类考虑周全。
30. Jsp页面在WEB服务器段有可能保存在缓存中,所以如果jsp和相应的class已经删除时,对这个请求可能还会做出原来的回应,所以验证该jsp是否可用时,要使用静态页面。
2. 不要硬编码 ‘\n’和‘\r’作为换行符号,因为不同的系统换行符不一样(UNIX、WIN)
3. 每次对于函数进行重载时,详细检查是否与基类定义的方法严格一致,如equal(Object)
4. 在多线程的方法中尽量不要引用全局静态变量;线程太多时,会影响性能,需要变通解决,如积累到一定程度时,启用一个线程,或使用线程池;当程序出现了异常,应该进行合理的处理,不能只是简单的抛出。
5. 尽可能不要用异常来做一般流程处理的方式,不要过多地使用异常,因为通过异常获得相应信息可能导致另外的异常产生;自定义的异常应该是Exception的子类,而不能是Error或RuntimeException的子类,运行时异常如果抛出后不捕获,可能导致线程挂起。
6. 当创建文件句柄和套接字句柄这类非内存资源,要记得手工去清除它。
7.
8. 循环体内每循环一次都要定义一个HashMap或者ArrayList,会很耗费资源;在定义变量时按照真正需要的对象进行初始化,如果现在不能初始化应该赋值为null,否则也会影响性能。
9. 不允许方法局部变量和类变量重名,与其他类进行交互时容易导致出错。
10. 公用的对象引用在传递时应对其clone(),然后传递这个clone过的对象。这样在每个引用到这个对象的地方就会保存各自的特性,不会发生对象内存共享
11. 不管是读取还是写文件的代码都保证在finally块中关闭输入/出流,文件句柄不释放可能导致其他操作失败;一定要确保finally的存在不会改变函数的返回值
12. 子类不要覆盖父类的属性,因为多层结构中,父类的属性就没用了,导致出现不预期的错误。
13. Java中的自动转换类型有时候会出错,如integer 2==2,但150!=150,因为<128时,valueOf会使用IntegerCache,而>128时,会new个新对象。
14. String.trim()不会改变字符串本身,而是生成了另外一个新的字符串。
15. 编程过程中,不应忽略对异常的处理,所有的异常捕获处都需要进行适当的处理。对于不能确定的异常,需要输出调试信息,以便于后续的调试跟踪
16. HttpSession多数情况下需要设置超时时间,否则会长时间的占用系统资源;不要将效率较低的对象放入缓存,比较大的对象一定要及时从缓存中释放,否则可能导致内存溢出;
17. 后台new Date()是服务器所在机器的当前时间;javascript获得的是客户端的机器的当前时间。
18. 使用encodeRedirectURL(“URL”)方法对URL进行重写时,输入参数值一定要是完整的URL地址
19. 当使用StringTokenizer时,其会忽略连续的分隔符,当作一个分隔符处理;如果分隔符出现在字符串的头或尾,头或尾的分隔符会被忽略;当使用String.split时,分隔符出现在字符串尾的时候,会被忽略,而且|有特殊使用
20. 应用包中的过滤器Filter 的配置,应该将设置编码的过滤器放在前面;
21. System.currentTimeMillis()取到的时间不是完全精准。
22. 在精度要求比较高的浮点运算时,最好不要直接运算,要使用BigDecimal(String或 int)。
23. 常量字符串连接直接用+,因为String在编译期就固定了;如果变量连接使用StringBuffer的append()来完成;不管字符串中是否包含中文,buf的长度都以String.getBytes().length为准,这样才能保证长度的正确性,因为在中文编码方式下,String.length()和String.getBytes().length是不一样的。
24. System.arraycopy()可以直接、高效地移动“原始array”的内存内容到“目标array”
25. 获取数组元素前首先要判定数组是否为空、是否超出数组长度,对数组元素进行操作时应先判断此元素是否为空,(因为如String[0][],其可以部位空,但长度为0)否则很容易出现NullPointerException或ArrayIndexOutOfBoundsException
26. Date.getDay()取的是星期,而不是日期;取得日期的是Date.getDate()
27. 到处大数量数据到excel时,要注意虚拟内存溢出,和数据量不能超过65536,否则要分页;
28. 调用尚未初始化的方法时一定要慎重,看看是否调用了尚未初始化的变量。
29. Javac编译时对原始数据类型和String常量,直接编译到class中了,而不再是引用的方式。制作补丁时,尤其要注意这一点,要把需要替换的类考虑周全。
30. Jsp页面在WEB服务器段有可能保存在缓存中,所以如果jsp和相应的class已经删除时,对这个请求可能还会做出原来的回应,所以验证该jsp是否可用时,要使用静态页面。
资源评论
jxhero
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功