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

面试题 相关文章推荐
Java多态性的定义以及类型
Sep 16 面试题
怎样建立和理解非常复杂的声明?例如定义一个包含N 个指向返回 指向字符的指针的函数的指针的数组?
Mar 19 面试题
将"引用"作为函数参数有哪些特点
Apr 05 面试题
在什么时候需要使用"常引用"
Dec 31 面试题
SQL Server数据库笔试题和答案
Feb 04 面试题
数据库什么时候应该被重组
Nov 02 面试题
.NET初级开发工程师面试题(包括Javascript)
Aug 22 面试题
Linux面试经常问的文件系统操作命令
Oct 04 面试题
EJB的基本架构
Sep 22 面试题
介绍一下Python下range()函数的用法
Nov 07 面试题
你在项目中用到了xml技术的哪些方面?如何实现的?
Jan 26 面试题
this关键字的作用
Jan 30 面试题
宝信软件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的一个基础知识 表单提交
2011/07/04 PHP
php 获取今日、昨日、上周、本月的起始时间戳和结束时间戳的方法
2013/09/28 PHP
PHP 使用memcached简单示例分享
2015/03/05 PHP
php实现指定字符串中查找子字符串的方法
2015/03/17 PHP
PhpStorm 如何优雅的调试Hyperf的方法步骤
2019/11/24 PHP
输入密码检测大写是否锁定js实现代码
2012/12/03 Javascript
js实现弹窗插件功能实例代码分享
2013/12/12 Javascript
js使用eval解析json(js中使用json)
2014/01/17 Javascript
javascript实现的一个带下拉框功能的文本框
2014/05/08 Javascript
Node.js中使用事件发射器模式实现事件绑定详解
2014/08/15 Javascript
js拖拽的原型声明和用法总结
2016/04/04 Javascript
JavaScript基础教程——入门必看篇
2016/05/20 Javascript
jQuery1.9+中删除了live以后的替代方法
2016/06/17 Javascript
JavaScript九九乘法口诀表的简单实现
2016/10/04 Javascript
Bootstrap 网格系统布局详解
2017/03/19 Javascript
vue组件之间的数据传递方法详解
2019/04/19 Javascript
js实现全选反选不选功能代码详解
2019/04/24 Javascript
解决node.js含有%百分号时发送get请求时浏览器地址自动编码的问题
2019/11/20 Javascript
[03:37]2015国际邀请赛第四日现场精彩集锦
2015/08/08 DOTA
python求素数示例分享
2014/02/16 Python
Python单例模式实例分析
2015/01/14 Python
python操作ie登陆土豆网的方法
2015/05/09 Python
python操作mongodb根据_id查询数据的实现方法
2015/05/20 Python
详解Python中映射类型(字典)操作符的概念和使用
2015/08/19 Python
Python实现按照指定要求逆序输出一个数字的方法
2018/04/19 Python
利用Python在一个文件的头部插入数据的实例
2018/05/02 Python
python使用turtle库与random库绘制雪花
2018/06/22 Python
Python学习笔记之错误和异常及访问错误消息详解
2019/08/08 Python
详解CSS3伸缩布局盒模型Flex布局
2018/08/20 HTML / CSS
详解canvas drawImage()方法绘制图片不显示的问题
2018/10/08 HTML / CSS
大学生职业生涯规划书范文
2014/01/04 职场文书
置业顾问岗位职责
2014/03/02 职场文书
质量在我心中演讲稿
2014/09/02 职场文书
Java实现多线程聊天室
2021/06/26 Java/Android
Maven学习----Maven安装与环境变量配置教程
2021/06/29 Java/Android
十大最帅动漫男主 碓冰拓海上榜,第一是《灌篮高手》男主角
2022/03/18 日漫