如何写出高性能的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面试问题考卷
Jul 15 面试题
请说出你所知道的线程同步的方法
Apr 19 面试题
Weblogic的布署方式
Aug 23 面试题
一份Java笔试题
Feb 21 面试题
C语言编程练习
Apr 02 面试题
计算 s=(x*y)1/2,用两个宏定义来实现
Aug 11 面试题
关于递归的一道.NET面试题
May 12 面试题
What's the difference between an interface and abstract class? (接口与抽象类有什么区别)
Oct 29 面试题
C#可否对内存进行直接的操作
Feb 26 面试题
nohup的用法
Nov 26 面试题
飞利信loadrunner和软件测试笔试题
Sep 22 面试题
Vector, ArrayList, HashTable, HashMap哪些是线程安全的,哪些不是
Oct 12 面试题
宝信软件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
在数据量大(超过10万)的情况下
2007/01/15 PHP
php 数组使用详解 推荐
2011/06/02 PHP
浅析PHP Socket技术
2013/08/02 PHP
PHP生成唯一订单号
2015/07/05 PHP
document.write()及其输出内容的样式、位置控制
2013/08/12 Javascript
多种方法实现360浏览器下禁止自动填写用户名密码
2014/06/16 Javascript
javascript ajax的5种状态介绍
2014/08/18 Javascript
吐槽一下我所了解的Node.js
2014/10/08 Javascript
JS动态修改iframe内嵌网页地址的方法
2015/04/01 Javascript
jquery.form.js实现将form提交转为ajax方式提交的方法
2015/04/07 Javascript
EasyUI为Numberbox添加blur事件的方法
2017/03/05 Javascript
小程序图片剪裁加旋转的示例代码
2018/07/10 Javascript
JS前端知识点offset,scroll,client,冒泡,事件对象的应用整理总结
2019/06/27 Javascript
layui默认选中table的CheckBox复选框方法
2019/09/19 Javascript
详解Vue 项目中的几个实用组件(ts)
2019/10/29 Javascript
微信小程序云函数添加数据到数据库的方法
2020/03/04 Javascript
详解微信小程序工程化探索之webpack实战
2020/04/20 Javascript
vue中使用vue-pdf的方法详解
2020/09/05 Javascript
Python类的定义、继承及类对象使用方法简明教程
2015/05/08 Python
详细解析Python中的变量的数据类型
2015/05/13 Python
基于Django contrib Comments 评论模块(详解)
2017/12/08 Python
Python paramiko模块的使用示例
2018/04/11 Python
开普敦通行证:Cape Town Pass
2019/07/18 全球购物
面向游戏玩家和书呆子的极客订阅盒:Loot Crate
2020/11/25 全球购物
Woods官网:加拿大最古老、最受尊敬的户外品牌之一
2020/09/12 全球购物
银行财务部实习生的自我鉴定
2013/11/27 职场文书
超市5.1促销活动
2014/01/15 职场文书
公安局负责人查摆问题及整改方案
2014/09/27 职场文书
2014年车间工作总结
2014/11/21 职场文书
骨干教师事迹材料
2014/12/17 职场文书
食品质检员岗位职责
2015/04/08 职场文书
校友会致辞
2015/07/30 职场文书
年会邀请函的格式及范文五篇
2019/11/02 职场文书
MySQL update set 和 and的区别
2021/05/08 MySQL
Redis 持久化 RDB 与 AOF的执行过程
2021/11/07 Redis
js面向对象编程OOP及函数式编程FP区别
2022/07/07 Javascript