如何写出高性能的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...

面试题 相关文章推荐
说说你所熟悉或听说过的j2ee中的几种常用模式?及对设计模式的一些看法
May 24 面试题
说出ArrayList,Vector, LinkedList的存储性能和特性
Jan 04 面试题
构造器Constructor是否可被override?
Aug 06 面试题
Java工程师面试集锦之Spring框架
Jun 16 面试题
数据库笔试题
May 09 面试题
西安众合通用.net笔试题
Mar 18 面试题
什么是.net的Remoting技术
Jul 08 面试题
私有程序集与共享程序集有什么区别
Apr 05 面试题
在子网210.27.48.21/30种有多少个可用地址?分别是什么?
Jul 27 面试题
局域网定义和特性
Jan 23 面试题
网友共享的几个面试题关于Java和Unix等方面的
Sep 08 面试题
String、StringBuffer、StringBuilder有区别
Sep 18 面试题
宝信软件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
php include加载文件两种方式效率比较
2010/08/08 PHP
PHP原理之异常机制深入分析
2010/08/08 PHP
php获取域名的google收录示例
2014/03/24 PHP
PHP数组与对象之间使用递归实现转换的方法
2015/06/24 PHP
php实现数组纵向转横向并过滤重复值的方法分析
2017/05/29 PHP
laravel框架中间件 except 和 only 的用法示例
2019/07/12 PHP
PHP安装扩展mcrypt以及相关依赖项深入讲解
2021/03/04 PHP
JS面向对象、prototype、call()、apply()
2009/05/14 Javascript
jQuery ready函数滥用分析
2011/02/16 Javascript
JS保存、读取、换行、转Json报错处理方法
2013/06/14 Javascript
浅析document.ready和window.onload的区别讲解
2013/12/18 Javascript
NodeJS使用jQuery选择器操作DOM
2015/02/13 NodeJs
JavaScript ES6的新特性使用新方法定义Class
2016/06/28 Javascript
微信小程序上传图片实例
2018/05/28 Javascript
vue-cli3.0使用及部分配置详解
2018/08/29 Javascript
记录vue做微信自定义分享的一些问题
2019/09/12 Javascript
[01:56]无止竞 再出发——中国军团出征2017年DOTA2国际邀请赛
2017/07/05 DOTA
Python的re模块正则表达式操作
2016/05/25 Python
python爬虫入门教程--利用requests构建知乎API(三)
2017/05/25 Python
Python学习之Django的管理界面代码示例
2018/02/10 Python
从运行效率与开发效率比较Python和C++
2018/12/14 Python
Django2.1集成xadmin管理后台所遇到的错误集锦(填坑)
2018/12/20 Python
Python一行代码实现快速排序的方法
2019/04/30 Python
Tensorflow累加的实现案例
2020/02/05 Python
django之导入并执行自定义的函数模块图解
2020/04/01 Python
Django如何在不停机的情况下创建索引
2020/08/02 Python
通过python-pptx模块操作ppt文件的方法
2020/12/26 Python
html特殊符号示例 html特殊字符编码对照表
2014/01/14 HTML / CSS
加拿大购物频道:The Shopping Channel
2016/07/21 全球购物
应届生简历中的自我评价
2014/01/13 职场文书
公务员更新知识培训实施方案
2014/03/31 职场文书
优秀大学生自荐信
2014/06/09 职场文书
基层组织建设年活动总结
2015/05/09 职场文书
个人更名证明
2015/06/23 职场文书
体育部部长竞选稿
2015/11/21 职场文书
mysql事务对效率的影响分析总结
2021/10/24 MySQL