java自学网VIP

Java自学网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 3700|回复: 1

性能和弹性双赢的JSP与Servlet优化

[复制链接]
  • TA的每日心情
    开心
    2021-5-25 00:00
  • 签到天数: 1917 天

    [LV.Master]出神入化

    2025

    主题

    3683

    帖子

    6万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    66093

    宣传达人突出贡献优秀版主荣誉管理论坛元老

    发表于 2014-11-18 15:07:44 | 显示全部楼层 |阅读模式
    曾起何时,你的web项目运行是不是很慢、很卡?在大量并发访问的情况下是否能够不down?这里主要围绕jspservlet的性能与弹性来进行分析。主要意图是能够让web项目尽快的响应,并且满足大量并发用户的访问请求。9 M4 M+ v3 G8 O9 j- l, O5 D! {
      要点1HttpServlet init()的初始化方法中缓存一定量的数据
    % J( V! ~/ o5 F; Z; {/ E; D  web服务器在创建servlet实例之后和servlet处理所有的请求之前调用servlet中的init()方法进行初始化。Init()方法在servlet的整个生命周期中会调用一次,且仅调用一次。为了大大提高servlet的性能,在init()方法中中缓存一部分静态数据或者加入要在初始化期间需要完成的长时间和高性能的操作。For example,最佳案例就是使用实现了javax.sql.DataSource接口的JDBC的连接池的样例。DataSourceJNDI中获得连接。每次仅仅调用一次SQL语句就要使用JNDI查找DataSource是很消耗负载的工作,而且严重的影响了web项目的性能。因此,采用Servletinit()方法就可以用于获得DataSource的数据并将他缓存起来便稍后的重复使用:
    9 z$ m6 J' V+ T% r
    , |% O! p- F$ [( }7 K
    以下就是样例的片段:
    9 M2 u3 _) ~. E3 v  public class ControllerServlet extends HttpServlet
    & `$ ?2 U! W" X7 T4 l2 {  {, n3 |% {$ V- ]1 l0 \! X
      private javax.sql.DataSource testDS = null;% G" c6 h2 _: b; w& D( l+ q  s/ q
      public void init(ServletConfig config) throws ServletException; i. z+ ^4 [' z3 U& c6 P2 n# b
      {, k. A  r, m: ]4 ^5 h
      super.init(config);
    ; G' i( @1 M+ R1 Y% S  Context ctx = null;
    * I' y4 N2 d' o  try
    4 g0 k2 s9 K0 m  Q  {
    1 ]* e1 e( l+ y7 W  ctx = new InitialContext();6 y. b6 M$ Z; L8 k
      testDS = (javax.sql.DataSource)ctx.lookup("jdbc/testDS");
    7 H2 S2 s1 `- B$ m  }
    ( I! @- l" K! z& F# q9 U  catch(NamingException ne); p3 ?; [4 O6 K) Z# O
      {% j, t! }/ C% c
      ne.printStackTrace();
    # ~4 y9 y6 Y+ z  }
    0 J% j  c1 {& F0 f5 L& P( H/ {. v  catch(Exception e)( r' ^/ U0 k9 ?3 \
      {
    ! L- `) ]! g! G2 t& J  e.printStackTrace();2 j( x8 ~* r. P2 ]- o2 }1 `
      }
    4 q# `  i4 ]9 k7 M* r4 {  }
    ( v9 I+ z+ f/ I! _- B) ~. S  public javax.sql.DataSource getTestDS()+ I; G/ [4 t2 A4 c  P; t
      {
    * A1 N8 n3 |. H* C  return testDS;
    - Y# P0 |! C! A# T% j1 \  }7 P0 ~7 \6 R* e1 y5 b& w+ @0 O
      
    6 m. _4 e3 l6 G" |( F/ y' A8 d  }

    4 g8 }7 \6 V' X; y  要点2:禁用掉servletJsp自动装载(自动装配)等影响性能的功能4 k/ M. b! L3 ^. D' @2 @9 _! U
      每当修改了ServletJSP之后,你都要重新启动你的服务器tomcatweblogic...因为自动装载功能可以为我们减少开发所需要的时间,说以此功能在开发过程中是非常重要的。但是,他的运行过程却是非常的消耗资源的;servletJSP由于诸多的不必要装载程序,大大加剧了类装载器的负载从而使性能变得很差。与此同时这也会使你的web应用服务由于已被各种的类装载器装载的类不能够和目前的类装载器装载的类不能够相互的协作而呈现出各种的异常的现象。所以,在应用运行时为了得到更佳的性能与弹性,关闭servletJSP的自动装载功能是很有必要的,它能够带给你更好的体验。7 O$ e& Y( o8 I) q) l: l7 W  u7 A

    % k1 S) q% M9 @  N
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2016-11-20 16:20
  • 签到天数: 1 天

    [LV.1]初学乍练

    0

    主题

    27

    帖子

    63

    积分

    普通会员

    Rank: 2

    积分
    63
    发表于 2016-11-20 16:25:22 | 显示全部楼层
    Web前端开发工程师,主要职责是利用HTML、XHTML、CSS、JAVAScript、FLASH等各种Web前端技术进行客户端产品的开发。完成客户端程序(也就是浏览器端)的开发,开发JavaScript以及Flash模块,同时结合后台开发技术模拟整体效果,进行丰富互联网的Web前端开发,致力于通过技术改善用户体验。! Y/ B/ H0 q1 @2 W8 S+ o, T, M6 t8 t

    2 l" ^/ \. c  q  C0 O第一阶段:页面制作基础+ o* u% q+ C, Y( b7 v! U% g
    从这一基础阶段开始,正式学习Web前端开发需要的编程语言HTML,CSS和JavaScript。HTML和CSS用于Web静态内容的展示,JavaScript用于Web动态交互。完成这一阶段前端开发的学习,你就可以独立实现一个动静结合的Web前端项目啦!
    6 O8 @$ n/ A3 n* H, u # c& V# w+ N' ^
    第二阶段:主流框架应用2 E. W- O9 e9 Z6 V
    优秀的Web前端开发工程师一定都是追求高效率的”懒人“。这一框架阶段就是教你如何使用当今流行的Web前端框架,包括bootstrap、Angularjs等,来提高前端开发效率。在学习前端框架本身的同时,也希望你能掌握任意一种快速上手的web前端框架的方法!?4 k" k; J5 Y' k
    % r9 k4 V* J% _
    第三阶段:前端技术进阶
    ! B% d% X. l* g' O5 oweb前端开发进阶阶段的学习,主要是让大家快速掌握当今流行、实用、最新的技术,比如:less、sass、json、ajax等,并将这些前端技术快速用于实践,开发出更加符合客户体验度的web前端页面。. l$ f) y) @* q6 g
    . v$ a: _) W, H0 d1 [& n' K) x
    第四阶段:前端技术拓展
    0 T# a1 [# r5 o4 W" ^0 z- i) _) }5 wweb前端技术发展日新月异,因此前端技术的拓展学习及实践对于web前端工程师来说非常重要。本阶段就是基于、Backbone、bootstrap等技术的拓展学习和web前端项目的实战开发演练。  V8 M7 G4 B. Y
    4 S- Z5 ^8 {  z8 S2 A+ J& \, @! Q
    课程包含部分:. k3 u/ G; n( o) p

    6 E- D7 Q6 h* B2 r第一部分 html与css入门 共100课时
    - P$ B  b, `* a课时 名称4 ?" t9 x! N2 V8 I1 p: ]
    1 html简介
    " }* \" g) Q. z2 html骨架" O* Q+ ~" Z8 J3 }1 c; J6 S7 G/ l
    3 元标签-编码
    4 j) H- z, F7 J( F9 N( u! d8 ]- u4 元标签-关键字与描述
    / C1 g$ x5 H& L: _5 标签空白符: n: I3 m  t1 K# N2 E( O" o
    6 标题标签6 [2 ?( `  T5 {- C# U8 W6 f! X
    7 段落标签- Q( z/ H) }+ ]  _5 \
    8 注释
    8 ^: A7 x; c& I/ c& N) T7 `7 \9 块元素与行内元素
      ]- M: o. T0 f10 超链接
      t$ `2 l/ u( W6 N11 图片标签% c+ \. k0 s9 X" L) x+ f; C
    12 绝对路径与相对路径8 ?/ ?" F9 X) x: h0 p
    13 无序列表
    - d, A1 f3 x8 i* r: C14 有序列表$ h5 G/ s. o/ z/ j( b: `
    15 列表嵌套! l: o6 z/ e& ?$ [3 t" L
    16 定义列表, x, r6 @$ M! M7 M3 Z
    17 表格6 A( v; K/ r0 E
    18 单元格拆分与合并
    9 g' Y- R, v2 {3 }' V4 H19 表格头尾+ G& y/ z' e; _2 j
    20 表单元素# B6 _0 J# b! R9 o0 T9 Q/ s( S+ F
    21 下拉框与文本输入框
    * J. g$ N" |; L6 _% _) p22 表单分组) C+ Y6 w* @/ C0 ~" ]: _7 t8 Y
    23 常见字符实体
    % p- I( B) ]/ f: Z# h: ]/ s24 文字标签* z& ^$ H, G/ U" V1 G. U6 j  q' c
    25 语义化标签
      R  Q4 y& z2 O26 废弃标签
    ! O0 Z  G; g; b3 E$ f: U1 F27 css简介
    : W5 s# D9 C- c6 _28 css三种书写方式; E! ]1 c* \" {: g( }  v* t
    29 css常见选择器! C2 ?) @8 e0 A# h) U0 b) t
    30 id选择器与类选择器注意事项9 h2 D/ m4 A3 a/ x# N
    31 选择器组合
      G, o+ u. @4 H- g& B2 _1 t6 J32 后代选择器$ K0 c0 C8 M/ Q8 {( h6 H3 j
    33 交集选择器与并集选择器2 j! K' Z# t' f  v1 r( N
    34 选择器通配符
    ' c7 S% f! O; \; y& ~8 u35 腾讯新闻列表) X! Q6 D  k) h
    36 选择器权重
    6 x8 T2 M" ], k- g3 ?, \6 M% t37 就近原则& ^- [% J2 e& |  _# B
    38 样式引入方式权重比较
      U7 f& s. Y# y" l5 w39 权重计算练习. [2 M6 Y) d% z* q
    40 important提升权重
    / v6 n+ B; F; t# m+ e2 }41 盒模型
    , A& g1 Y1 t. d: b4 ~" [42 IE盒模型
    + Z3 ^2 F: j! R( o) s43 内边距与外边距& E: k* m. d* ^( N
    44 边框属性
    / I* S& }* Q- t! E% n8 y45 盒子居中
    5 W8 I! B6 T+ l: r- I46 外边距重计算盒子宽度
    4 F6 Z7 w( F: @" s( B7 G0 p47 文字属性2 ~8 }. p1 e, B0 d# j
    48 css常见单位$ A& l6 w/ n( @- n2 C4 J( S: S7 v
    49 文字修饰属性
    - F8 W, X- y7 i  g3 o7 b, v0 `6 s8 ^7 E50 文字属性继承性' O& G# R/ x$ B
    51 文字水平居中与垂直居中& |+ l, P) X# B5 \# I4 N3 G% z3 Z
    52 图片元素排版& N# a, F8 |) C
    53 超链接标签默认样式
    , N/ r0 z) @8 ]4 F$ p54 腾讯体育
    ) Q2 ^3 Z* o6 e1 r4 _55 超链接标签伪类4 r$ ]: M! Z+ ]1 I7 Y
    56 伪元素
    7 E% q) g3 z) B$ J  W57 背景样式与图片  r' q! N  W& t$ x+ X1 |) [% H
    58 背景平铺与背景位置
    ! b. [' j0 [2 Q" W' S59 背景在SEO中的应用
    ( Q4 K4 m# {' |' |8 f: I* `0 Q% D( s60 块元素设置背景
    . p! z7 ]3 |! [$ j% D0 A61 行内元素设置背景
    : B9 j$ a+ X$ E, _8 S/ m8 ~2 }62 伪元素设置背景
    % D/ _+ L" i) ~" p, A9 M/ q( T63 水平精灵图- P2 P! t4 b, C/ P, [2 l- u- v
    64 垂直精灵图; Q/ M5 F( [; C8 p1 y6 n$ b. a
    65 定点精灵图$ [. D% ^1 N/ |* U! j9 K
    66 hao123+ U  W" R# q; j5 i8 h
    67 四种箭头
    + D. ^/ {; {" l68 hao123箭头& c# U; U. r* t4 Z" ~
    69 css绘制集合图形3 G: C9 _- ^5 ~1 e/ j8 c
    70 块元素与行内元素特性
    9 v* p1 y; O5 ?$ v8 a71 块元素与行内元素转化
    8 j# }2 L$ h0 |3 D72 浮动元素
    1 X+ c) U& r0 U& A) j- v5 O: F73 浮动元素与文档流
    8 ]1 m* z; @- G7 s* a3 m74 浮动元素特性! U# w2 v0 U7 j% c2 L7 ?
    75 浮动元素与边距
    - ?9 p" U6 Y/ ?& a76 浮动元素父元素高度丢失
    8 \1 u; }; b1 t7 L- X) c' A0 N77 清除浮动
    # p$ P5 x. ?4 y% z! }' X78 清除浮动的7中方式
    7 k' {* |9 D* T* Y79 新浪布局
    $ s- N1 X- I7 y- w80 列表布局
    / g  f, C" L+ j4 M$ g4 b81 双飞翼布局( r4 A$ O) s) t9 D+ A0 _
    82 圣杯布局0 j* C- c9 j" [2 r( N. G- j- Y8 l
    83 排查错误2 {5 N. }0 [+ I& X1 v* _9 x
    84 相对定位
    0 b- X4 }) Z6 B. Q) L; A2 R& s85 表单对齐
    - {/ U& h1 x' u# T/ p% \( ?86 新浪tab栏
    ; i5 F3 O( l* c87 绝对定位
    - X" R5 M/ t( M1 K9 h2 d7 e# b; A88 子绝父相7 @2 [0 g0 t6 g
    89 jd轮播图1 `$ k* h# t5 _7 q. P$ h( Z5 _
    90 文本居中,行内元素居中与块元素居中
    & w* f) u4 n9 H1 Z' t) H3 M1 d2 h91 优酷
    0 ^- c- d8 t) {$ W& R/ Q& V92 固定定位: a7 c5 A' Z7 S2 S0 F
    93 遮盖
    - _8 K( f( s3 o& @0 v# v6 e94 拼爹
    ( B  U: s- j1 H* i95 html 注释 hack
    3 I1 v2 h; v4 B& k" L: N5 y* C96 css属性hack
    6 ?7 _: \9 f1 H; W% t9 X3 o97 IE6-交集选择器与DTD内减盒模型
    & P5 Y" |. M3 X98 IE6-最小高度与盒子位置
    ) y5 l# G, K0 w2 l+ K99 IE6-overflow与透明度7 A. h+ \2 F; S5 u, L5 H% E
    100 IE6-双倍margin与3像素bug
    , [1 C" E5 p4 h+ _+ A # x% A! e3 s3 Z- w; I9 \6 u
    6 d( [6 H  d7 Y: B- I8 ?0 f; N
    6 ]6 N5 V( @6 `
    $ B7 I! E5 H+ ~3 L' x4 t
    第二部分 源生javascript 共150课时  ( ~/ G* v  s) u4 s* N

    ; ?) I* g" v# W* T7 k# ?第三部分 jquery与bootstrap 共60课时
    : S1 o4 B5 z/ |" T- m 8 z; L# }  X8 [$ {+ Q/ \
    第四部分 HTML5 CSS3与移动端开发 共50课时  " N, }2 r  @. o& o

    2 v6 `  W, I1 M( A1 N$ u* h第五部分 canvas游戏开发 共30课时 + c2 u/ c3 a& L5 f4 ?# Z+ Z3 b
    0 e% ~! ~7 `+ C% ?
    第六部分 微信与百度地图 共30课时
    , m9 M1 O' d- ^6 A0 c" h ( T( f4 {5 ^# g/ S
    第七部分 nodejs 共80课时    z1 V% d" ~4 B0 T
    . i/ X, A' A$ E0 c9 j3 O3 D9 U
    第八部分 设计模式 共80课时 9 ?& ~  Z& q# `6 n$ ^8 O2 E0 D' ]

    / V$ x7 ^- a0 b) f+ c第九部分 模块化开发 共20课时 ( m. z& A7 n; s3 E

    . D  D2 T& g) E* B第十部分 大数据可视化 共15课时 - ]' S2 a7 ?. m: X( p  Z3 x

    7 P8 \, p7 E/ }第十一部分 Backbone 共60课时
    7 X0 y* ~- K) E# a4 `* M6 a8 ] ; v  ~, g' V2 ~$ H# c0 R
    第十二部分 vue 共40课时
    * G% |& `% z3 H# N
    $ w! ]8 h' }* _2 n/ i: O7 S& |  ^第十三部分 angular 共70课时
    6 f/ _, ^7 V) }3 }( _- V, K ! t: g. X: f- {1 z: R. y
    第十四部分 前端工程化 共30课时
    7 k4 _. n0 R0 o# p6 I6 \+ q# V9 i: u) P2 l: S2 S* l
    课程更新网盘
    0 Q0 y7 }6 W; S; Y' C' r2016年前端开发Angular.JS从入门到上手企业开发视频
    ! n, }; [" l5 W7 i' Y9 k) ]   r2 ]' `' P4 C$ e9 l: l8 i( }
    链接: https://pan.baidu.com/s/1dF2vBzV 密码: 3hbk! J; @5 R3 C6 ?

    1 M9 w+ m& {" t$ j" {4 y$ K0 j2016年最新前端技术react视频入门
    : T3 e9 a) U6 v  v+ Q链接: http://pan.baidu.com/s/1i46by8t 密码: 48tt
    1 m5 e: s$ r" P$ i
    5 U4 @* |/ i3 ^) x2016年CSS实体班同步教程
    1 d! _/ f9 @! Q) j$ C: i链接: https://pan.baidu.com/s/1qXWRbCK 密码: a725
    ! X! |7 C' h9 V; @
    : J/ n; O0 F- ~* _4 K2016年JS视频教程实体班同步教程* D; Z" o3 w1 k( D" g) ]/ _( d
    链接: https://pan.baidu.com/s/1jHIkxLG 密码: hpyb( p% r; T, _3 \5 D7 e& z% _* U
    : v5 A: R$ y* ~* P+ o( G/ `" N
    $ o# J+ F+ n2 q, c
    不定时更新web前端学习免费教程领取请加QQ  2079576908/ P; ~% N0 x0 T- Z& G) C
    " V+ ]# D: k4 b% V4 F, k

    , u- a* ?' E  U5 p目前爱创课程web前端培训的学员就业薪资一般在10K-17K8 _3 x9 X$ j; O: }" `+ s
      Q1 q/ q* ~3 ?; X. j
    官方网站:http://www.icketang.com/3 u0 U' W9 R8 @- @( m1 {: G
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|手机版|小黑屋|Java自学网

    GMT+8, 2024-4-24 20:46 , Processed in 0.099417 second(s), 27 queries .

    Powered by Javazx

    Copyright © 2012-2022, Javazx Cloud.

    快速回复 返回顶部 返回列表