如何写出高性能的JSP和Servlet


Posted in 面试题 onJanuary 22, 2013
最小化servlet中的java 同步。
不要用servlet的单线程模式。
使用servlet的init()方法进行一些昂贵的一次性的初始化。
避免使用System.out.pintln()调用。
避免使用共享的可修改的类变量
在servlet的多线程模式中(缺省情况下),一个应用服务器实例只有一个的servlet实例,这个servlet的所有请求都共享同一个 servlet实例,如果在servlet内有同步代码块的话会造成线程争夺,因为servlet的类变量创建需要同步,所以要避免使用共享的可修改的类 变量。
HTTP Session处理
使用HTTP Session的时候请遵守一下规则:
不要随意创建Session, Session的创建不是免费的。如果不需要就不要创建
如果session不需要了请使用javax.servlet.http.HttpSession.invalidate()来释放session
保证session小型化可以减少反应时间,如果可能的话,请保证session小于7K。
在JSP里面使用指令来避免应用服务器自动在不需要的时候创建session.
避免session中存放大的对象,这样会强制序列化和增加过度计算,通常情况下不要存放大的对象到session里面。
不要缓存事务数据到HttpSession里面,访问HttpSession里面的数据是非事务的,最好把这些数据存放在数据库或者用实体 Bean访问,事务如果失败会恢复到它原来的状态,不过,这些失效的或者不再精确的数据会继续存放在session里面。应用服务器提供了只读的bean 管理器去缓存这些只读的数据。
配置和部署技巧
为了提高类的载入时间,避免在服务器的CLASSPATH里面使用过多的目录,把跟应用有关的类发放到jar文件里面。
HTTP反应时间跟HTTP server调整有很大关系。
如果可能,请缓存servlet的结果。
如果一个应用不含任何JEB,把应用部署成war文件,不要部署成ear文件。
禁用Security Manager
Security manager是非常昂贵的,因为在调用需要的资源的时候必须要调用doPrivileged()方法而且还必须要检测server.policy里面的 资源。如果你确信你的服务器没有恶意的代码而且你也不使用用户认证,你就可以禁用secrity manager.

Tags in this post...

面试题 相关文章推荐
包装类的功能、种类、常用方法
Jan 27 面试题
以下的初始化有什么区别
Dec 16 面试题
经典c++面试题三
Jul 08 面试题
第一范式(1NF)、第二范式(2NF)和第三范式(3NF)之间的区别是什么?
Apr 28 面试题
Oracle性能调优原则
May 03 面试题
简述数据库的设计过程
Jun 22 面试题
介绍一下SQL注入攻击的种类和防范手段
Feb 18 面试题
.NET面试题:什么是值类型和引用类型
Jan 12 面试题
linux比较文件内容的命令是什么
Sep 23 面试题
EJB面试题
Jul 28 面试题
Python中如何定义一个函数
Sep 06 面试题
Java基础类库面试题
Sep 04 面试题
宝信软件JAVA工程师面试经历
Aug 19 #面试题
Linux中如何设置Java环境变量(Ubuntu)
Jul 24 #面试题
线程的基本概念、线程的基本状态以及状态之间的关系
Oct 26 #面试题
用JAVA SOCKET编程,读服务器几个字符,再写入本地显示
Nov 25 #面试题
解释一下ArrayList Vector和LinkedList的实现和区别
Apr 26 #面试题
描述一下JVM加载class文件的原理机制
Dec 08 #面试题
解释一下抽象方法和抽象类
Aug 27 #面试题
You might like
PHILIPS L4X25T电路分析和打理
2021/03/02 无线电
ajax 的post方法实例(带循环)
2011/07/04 PHP
php删除文件夹及其文件夹下所有文件的函数代码
2013/01/23 PHP
关于PHP自动判断字符集并转码的详解
2013/06/26 PHP
php中json_encode处理gbk与gb2312中文乱码问题的解决方法
2014/07/10 PHP
PHP面试题之文件目录操作
2015/10/15 PHP
php验证码生成代码
2015/11/11 PHP
PHP实现原比例生成缩略图的方法
2016/02/03 PHP
Laravel+jQuery实现AJAX分页效果
2016/09/14 PHP
php自定义函数实现汉字转换utf8编码的方法
2016/09/29 PHP
PHP htmlspecialchars() 函数实例代码及用法大全
2018/09/18 PHP
PHP实现支持CURL字符串证书传输的方法
2019/03/23 PHP
关于JavaScript定义类和对象的几种方式
2010/11/09 Javascript
JS读取cookies信息(记录用户名)
2012/01/10 Javascript
Javascript自定义排序 node运行 实例
2013/06/05 Javascript
js实现幻灯片播放图片示例代码
2013/11/07 Javascript
JS实现屏蔽shift,Ctrl,alt等功能键的方法
2015/06/01 Javascript
Jquery1.9.1源码分析系列(十五)动画处理之外篇
2015/12/04 Javascript
基于javascript实现仿百度输入框自动匹配功能
2016/01/03 Javascript
EasyUI学习之Combobox级联下拉列表(2)
2016/12/29 Javascript
老生常谈jquery id选择器和class选择器的区别
2017/02/12 Javascript
React Native 截屏组件的示例代码
2017/12/06 Javascript
vue实现nav导航栏的方法
2017/12/13 Javascript
详解关于Vue2.0路由开启keep-alive时需要注意的地方
2018/09/18 Javascript
[06:42]DOTA2每周TOP10 精彩击杀集锦vol.1
2014/06/25 DOTA
[10:42]Team Liquid Vs Newbee
2018/06/07 DOTA
Python发展史及网络爬虫
2019/06/19 Python
python如何删除文件、目录
2020/06/23 Python
Python使用正则表达式实现爬虫数据抽取
2020/08/17 Python
Python基于locals返回作用域字典
2020/10/17 Python
车队司机自我鉴定
2014/03/02 职场文书
生日宴会主持词
2014/03/20 职场文书
社会公德演讲稿
2014/05/20 职场文书
2015年专项整治工作总结
2015/04/03 职场文书
MySql开发之自动同步表结构
2021/05/28 MySQL
IIS服务器中设置HTTP重定向访问HTTPS
2022/04/29 Servers