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

面试题 相关文章推荐
PHP开发工程师面试问题集锦
Nov 01 面试题
C语言面试题
May 19 面试题
腾讯技术类校园招聘笔试试题
May 06 面试题
类成员函数的重载、覆盖和隐藏区别
Jan 27 面试题
阿里巴巴的Oracle DBA笔试题答案-SQL tuning类
Apr 03 面试题
如何在.net Winform里面显示PDF文档
Sep 11 面试题
什么是网络协议
Apr 07 面试题
sort命令的作用和用法
Nov 04 面试题
linux面试题参考答案(10)
Oct 26 面试题
介绍一下MYSQL常用的优化技巧
Oct 25 面试题
swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
Mar 30 面试题
Java程序员面试题
Jul 15 面试题
宝信软件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
解析CI的AJAX分页 另类实现方法
2013/06/27 PHP
php绘制一条直线的方法
2015/01/24 PHP
Swoole 5将移除自动添加Event::wait()特性详解
2019/07/10 PHP
解决windows上php xdebug 无法调试的问题
2020/02/19 PHP
php + ajax 实现的写入数据库操作简单示例
2020/05/16 PHP
一个关于javascript匿名函数的问题分析
2012/03/30 Javascript
js如何实现设计模式中的模板方法
2013/07/23 Javascript
jquery处理json数据实例分析
2014/06/03 Javascript
jQuery中delegate()方法用法实例
2015/01/19 Javascript
JavaScript检查数字是否为整数或浮点数的方法
2015/06/09 Javascript
jQuery动画效果实现图片无缝连续滚动
2016/01/12 Javascript
JS判断form内所有表单是否为空的简单实例
2016/09/09 Javascript
jquery无法为动态生成的元素添加点击事件的解决方法(推荐)
2016/12/26 Javascript
基于jQuery选择器之表单对象属性筛选选择器的实例
2017/09/19 jQuery
node.js多个异步过程中判断执行是否完成的解决方案
2017/12/10 Javascript
微信小程序获取地理位置及经纬度授权代码实例
2019/09/18 Javascript
JavaScript 双向链表操作实例分析【创建、增加、查找、删除等】
2020/04/28 Javascript
微信小程序实现watch监听
2020/06/04 Javascript
javascript实现前端分页效果
2020/06/24 Javascript
vant中的toast层级改变操作
2020/11/04 Javascript
python 线程的暂停, 恢复, 退出详解及实例
2016/12/06 Python
python的socket编程入门
2018/01/29 Python
Python字符串大小写转换拼接删除空白
2019/09/19 Python
Python实现报警信息实时发送至邮箱功能(实例代码)
2019/11/11 Python
python3.6使用SMTP协议发送邮件
2020/05/20 Python
英国首屈一指的票务公司:See Tickets
2019/05/11 全球购物
德国在线香料制造商:Gewürzland
2020/03/10 全球购物
团员个人的自我评价
2013/12/02 职场文书
单位消防安全制度
2014/01/12 职场文书
《去年的树》教学反思
2014/04/11 职场文书
企业仓管员岗位职责
2014/06/15 职场文书
公司员工活动策划方案
2014/08/20 职场文书
2014年药房工作总结
2014/11/22 职场文书
道德模范事迹材料
2014/12/20 职场文书
幼儿园安全教育随笔
2015/08/14 职场文书
慰问信(范文3篇)
2019/10/23 职场文书