Java代码零件化 java软件代码( 四 )


}
用移位操作替代乘法操作可以极大地提高性能 。下面是修改后的代码:
for (val = 0; val100000; val += 5) {
alterX = val3; myResult = val1;
}
修改后的代码不再做乘以8的操作 , 而是改用等价的左移3位操作 , 每左移1位相当于乘以2 。相应地,右移1位操作相当于除以2 。值得一提的是,虽然移位操作速度快 , 但可能使代码比较难于理解,所以最好加上一些注释 。
19、在JSP页面中关闭无用的会话 。
一个常见的误解是以为session在有客户端访问时就被创建,然而事实是直到某server端程序调用HttpServletRequest.getSession(true)这样的语句时才被创建 , 注意如果JSP没有显示的使用 %@pagesession="false"% 关闭session,则JSP文件在编译成Servlet时将会自动加上这样一条语句HttpSession
session = HttpServletRequest.getSession(true);这也是JSP中隐含的session对象的来历 。由于session会消耗内存资源,因此,如果不打算使用session,应该在所有的JSP中关闭它 。
对于那些无需跟踪会话状态的页面,关闭自动创建的会话可以节省一些资源 。使用如下page指令:%@ page session="false"%
20、JDBC与I/O
如果应用程序需要访问一个规模很大的数据集 , 则应当考虑使用块提取方式 。默认情况下 , JDBC每次提取32行数据 。举例来说 , 假设我们要遍历一个5000行的记录集,JDBC必须调用数据库157次才能提取到全部数据 。如果把块大小改成512,则调用数据库的次数将减少到10次 。
[p][/p]21、Servlet与内存使用
许多开发者随意地把大量信息保存到用户会话之中 。一些时候,保存在会话中的对象没有及时地被垃圾回收机制回收 。从性能上看 , 典型的症状是用户感到系统周期性地变慢,却又不能把原因归于任何一个具体的组件 。如果监视JVM的堆空间 , 它的表现是内存占用不正常地大起大落 。
解决这类内存问题主要有二种办法 。第一种办法是,在所有作用范围为会话的Bean中实现HttpSessionBindingListener接口 。这样,只要实现valueUnbound()方法,就可以显式地释放Bean使用的资源 。另外一种办法就是尽快地把会话作废 。大多数应用服务器都有设置会话作废间隔时间的选项 。另外,也可以用编程的方式调用会话的setMaxInactiveInterval()方法,该方法用来设定在作废会话之前 , Servlet容器允许的客户请求的最大间隔时间,以秒计 。
22、使用缓冲标记
一些应用服务器加入了面向JSP的缓冲标记功能 。例如,BEA的WebLogic Server从6.0版本开始支持这个功能,Open
Symphony工程也同样支持这个功能 。JSP缓冲标记既能够缓冲页面片断,也能够缓冲整个页面 。当JSP页面执行时,如果目标片断已经在缓冲之中,则生成该片断的代码就不用再执行 。页面级缓冲捕获对指定URL的请求,并缓冲整个结果页面 。对于购物篮、目录以及门户网站的主页来说,这个功能极其有用 。对于这类应用,页面级缓冲能够保存页面执行的结果,供后继请求使用 。
23、选择合适的引用机制
在典型的JSP应用系统中,页头、页脚部分往往被抽取出来,然后根据需要引入页头、页脚 。当前,在JSP页面中引入外部资源的方法主要有两种:include指令,以及include动作 。
include指令:例如%@ include file="copyright.html"
% 。该指令在编译时引入指定的资源 。在编译之前 , 带有include指令的页面和指定的资源被合并成一个文件 。被引用的外部资源在编译时就确定 , 比运行时才确定资源更高效 。
include动作:例如jsp:include page="copyright.jsp"

推荐阅读