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

面试题 相关文章推荐
怎样声明子类
Jul 02 面试题
异常和异常类的概念
Sep 12 面试题
2019年Java 最常见的 面试题
Oct 19 面试题
Sony C++笔试题
Mar 10 面试题
Android面试题及答案
Sep 04 面试题
一套.net面试题及答案
Nov 02 面试题
铭万公司.net面试题笔试题
Jul 20 面试题
linux面试题参考答案(8)
Apr 19 面试题
linux系统都有哪些运行级别
Apr 15 面试题
ShellScript面试题一则-ShellScript编程
Jun 24 面试题
若通过ObjectOutputStream向一个文件中多次以追加方式写入object,为什么用ObjectInputStream读取这些object时会产生StreamCorruptedException?
Oct 17 面试题
精选干货:Java精选笔试题附答案
Jan 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 变量类型的强制转换
2009/10/23 PHP
判断PHP数组是否为空的代码
2011/09/08 PHP
php清空(删除)指定目录下的文件,不删除目录文件夹的实现代码
2014/09/04 PHP
Laravel+jQuery实现AJAX分页效果
2016/09/14 PHP
PHP+MySQL使用mysql_num_rows实现模糊查询图书信息功能
2018/05/31 PHP
[原创]站长必须要知道的javascript广告代码
2007/05/30 Javascript
用dom+xhtml+css制作的一个相册效果代码打包下载
2008/01/24 Javascript
Jquery replace 字符替换实现代码
2010/12/02 Javascript
JavaScript String.replace函数参数实例说明
2013/06/06 Javascript
AngularJs自定义服务之实现签名和加密
2016/08/02 Javascript
Vue.js路由组件vue-router使用方法详解
2016/12/02 Javascript
javascript实现滑动解锁功能
2017/03/22 Javascript
js中json对象和字符串的理解及相互转化操作实现方法
2017/09/22 Javascript
使用ef6创建oracle数据库的实体模型遇到的问题及解决方案
2017/11/09 Javascript
《javascript少儿编程》location术语总结
2018/05/27 Javascript
vue组件之间通信实例总结(点赞功能)
2018/12/05 Javascript
jquery实现上传文件进度条
2020/03/26 jQuery
在react项目中使用antd的form组件,动态设置input框的值
2020/10/24 Javascript
JavaScript实现网页留言板功能
2020/11/23 Javascript
python实现从字符串中找出字符1的位置以及个数的方法
2014/08/25 Python
Python中用字符串调用函数或方法示例代码
2017/08/04 Python
python with提前退出遇到的坑与解决方案
2018/01/05 Python
Flask模拟实现CSRF攻击的方法
2018/07/24 Python
python检测文件夹变化,并拷贝有更新的文件到对应目录的方法
2018/10/17 Python
浅谈Python 递归算法指归
2019/08/22 Python
tensorflow ckpt模型和pb模型获取节点名称,及ckpt转pb模型实例
2020/01/21 Python
django queryset 去重 .distinct()说明
2020/05/19 Python
Python如何在循环内使用list.remove()
2020/06/01 Python
详解用 python-docx 创建浮动图片
2021/01/24 Python
莫斯科购买书籍网站:Book24
2020/01/12 全球购物
网络程序员自荐信
2014/01/25 职场文书
管理失职检讨书范文
2015/05/05 职场文书
中学推普周活动总结
2015/05/07 职场文书
CSS 实现Chrome标签栏的技巧
2021/08/04 HTML / CSS
如何解决goland,idea全局搜索快捷键失效问题
2022/04/03 Golang
python内置模块之上下文管理contextlib
2022/06/14 Python