??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲人成在线电影,亚洲夂夂婷婷色拍WW47,亚洲国产天堂在线观看http://www.tkk7.com/fastzch/category/7319.htmlI Love Programming As My Life!zh-cnTue, 01 Apr 2014 14:10:43 GMTTue, 01 Apr 2014 14:10:43 GMT60?USB 讑֤启动 Surfacehttp://www.tkk7.com/fastzch/archive/2014/04/01/411761.htmlRobin's Programming WorldRobin's Programming WorldMon, 31 Mar 2014 16:15:00 GMThttp://www.tkk7.com/fastzch/archive/2014/04/01/411761.htmlhttp://www.tkk7.com/fastzch/comments/411761.htmlhttp://www.tkk7.com/fastzch/archive/2014/04/01/411761.html#Feedback0http://www.tkk7.com/fastzch/comments/commentRss/411761.htmlhttp://www.tkk7.com/fastzch/services/trackbacks/411761.html
?Surface 关闭时从可启?USB 讑֤启动
步骤 1Q?    可启动 USB 讑֤q接?USB 端口?br />步骤 2Q?    按住音量减小 (-) 控制键?br />步骤 3Q?    按下q攄源按钮?br />步骤 4Q?    当显C?Surface 徽标Ӟ释放音量控制键?Surface 启?USB 讑֤上的软g?br />
?Surface 启用时从可启?USB 讑֤启动
步骤 1Q?    可启动 USB 讑֤q接?USB 端口?br />步骤 2Q?    从屏q右边缘向左LQ然后点?#8220;讄”?br />Q如果您使用鼠标Q请指向屏幕的右上角Q将鼠标指针下移q单?#8220;讄”。)
步骤 3Q?    点击或单?#8220;更改电脑讄”?br />步骤 4Q?    点击或单?#8220;更新和恢?#8221;Q然后点L单击“恢复”?br />步骤 5Q?    ?#8220;高启动”下,点击或单?#8220;立即重新启动”?br />步骤 6Q?    ?#8220;选择一个选项”屏幕中,点击或单?#8220;使用讑֤”?br />步骤 7Q?    ?#8220;疑难解答”屏幕中,点击或单?#8220;高选项”?br />步骤 8Q?    ?#8220;高选项”屏幕中,点击或单?USB 讑֤的名U。Surface 重新启动ƈ?USB 讑֤启动?br />
BTW, q是官方文档靠谱Q还是Google靠谱Q!Q?br />原文地址Qhttp://www.microsoft.com/surface/zh-cn/support/storage-files-and-folders/boot-surface-pro-from-usb-recovery-device


Robin's Programming World 2014-04-01 00:15 发表评论
]]>
[转] Objective-C内存理教程和原理剖析口诀与范?/title><link>http://www.tkk7.com/fastzch/archive/2011/12/01/365258.html</link><dc:creator>Robin's Programming World</dc:creator><author>Robin's Programming World</author><pubDate>Thu, 01 Dec 2011 01:25:00 GMT</pubDate><guid>http://www.tkk7.com/fastzch/archive/2011/12/01/365258.html</guid><wfw:comment>http://www.tkk7.com/fastzch/comments/365258.html</wfw:comment><comments>http://www.tkk7.com/fastzch/archive/2011/12/01/365258.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/fastzch/comments/commentRss/365258.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/fastzch/services/trackbacks/365258.html</trackback:ping><description><![CDATA[<span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: normal; "> <table width="100%" class="Framework" cellspacing="0" cellpadding="0" style="background-color: #eeeeee; "> <tbody> <tr> <td class="MainCell" width="100%" style="font-size: 12px; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; background-color: white; vertical-align: top; "> <div class="oao42i4" id="main"> <div id="uqo2yu4" class="post" style="border-left-color: #cccccc; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-bottom: 28px; "> <div id="uccug4w" class="posthead" style="background-color: #eeeeee; background-image: url(http://www.cnblogs.com/Skins/HabaHaba/images/PostHeaderBg.gif); padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; color: #444444; font-size: 9px; background-position: 50% 100%; background-repeat: repeat no-repeat; "> <h2 style="margin-top: 0px; font-size: 13px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><a id="ctl03_TitleUrl" class="singleposttitle" style="color: #223355; text-decoration: none; ">iPhone/Mac Objective-C内存理教程和原理剖??口诀与范?/a></h2> Posted on 2010-03-08 00:35 <a style="color: #223355; text-decoration: none; ">Vince Yuan</a> 阅读(2331) <a style="color: #223355; text-decoration: none; ">评论(1)</a> <a rel="nofollow" style="color: #223355; text-decoration: none; ">~辑</a> <a style="color: #223355; text-decoration: none; ">收藏</a> <img src="http://www.cnblogs.com/VinceYuan/aggbug/1680492.html?type=1&webview=1" width="1px" height="1px" alt="" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-style: initial; border-color: initial; " /></div> <div id="wquyskw" class="postbody" style="padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; margin-bottom: 14px; font-size: 13px; line-height: 1.5; "> <div class="wciswus" id="cnblogs_post_body"> <p class="MsoNormal" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; text-align: left; "><span style="font-size: 13px; font-family: 宋体; ">版权声明</span></p> <p class="MsoNormal" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; text-align: left; "><span style="font-size: 13px; font-family: 宋体; ">此文版权归作?/span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">Vince Yuan (vince.yuan#gmail.com)</font></span><span style="font-size: 13px; font-family: 宋体; ">所有。欢q非营利性{载,转蝲时必d含原始链?/span><span lang="EN-US" style="font-size: 13px; "><a target="_blank" style="color: #1d58d1; text-decoration: none; "><font face="Calibri">http://vinceyuan.cnblogs.com</font></a></span><span style="font-size: 13px; font-family: 宋体; ">Q且必须包含此版权声明的完整内容?/span></p> <p class="MsoNormal" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; text-align: left; "><span style="font-size: 13px; font-family: 宋体; "></span><span style="font-size: 13px; font-family: 宋体; "></span></p> <p class="MsoNormal" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; text-align: left; "><span style="font-size: 13px; font-family: 宋体; "></span> </p> <p class="MsoNormal" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; text-align: left; "><span style="font-size: 13px; font-family: 宋体; ">版本</span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri"> 1.1<span style="font-size: 13px; "> </span></font></span><span style="font-size: 13px; font-family: 宋体; ">发表?/span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">2010-03-08</font></span></p> <p class="MsoNormal" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; text-align: left; "> </p> <p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; "><span style="font-size: 13px; font-family: 宋体; ">?/span><font face="Calibri"> </font><span style="font-size: 13px; font-family: 宋体; ">口诀与范?/span></p> <p class="MsoListParagraph" style="margin-top: 0cm; margin-right: 0cm; margin-left: 21.25pt; margin-bottom: 0pt; text-indent: -21.25pt; "><span lang="EN-US" style="font-size: 13px; "><span style="font-size: 13px; "><font face="Calibri">1</font><span style="font-size: 13px; font: normal normal normal 7pt/normal 'Times New Roman'; ">           </span></span></span><span style="font-size: 13px; font-family: 宋体; ">口诀?/span></p> <p class="MsoListParagraph" style="margin-top: 0cm; margin-right: 0cm; margin-left: 49.6pt; margin-bottom: 0pt; text-indent: -1cm; "><span lang="EN-US" style="font-size: 13px; "><span style="font-size: 13px; "><font face="Calibri">1.1</font><span style="font-size: 13px; font: normal normal normal 7pt/normal 'Times New Roman'; ">          </span></span></span><span style="font-size: 13px; font-family: 宋体; ">谁创建,谁释放(cM?#8220;谁污染,谁治?#8221;Q。如果你通过</span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">alloc</font></span><span style="font-size: 13px; font-family: 宋体; ">?/span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">new</font></span><span style="font-size: 13px; font-family: 宋体; ">?/span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">copy</font></span><span style="font-size: 13px; font-family: 宋体; ">来创Z个对象,那么你必调?/span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">release</font></span><span style="font-size: 13px; font-family: 宋体; ">?/span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">autorelease</font></span><span style="font-size: 13px; font-family: 宋体; ">。换句话_不是你创建的Q就不用你去释放?/span><span lang="EN-US" style="font-size: 13px; "><br /> </span><span style="font-size: 13px; font-family: 宋体; ">例如Q你在一个函C</span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">alloc</font></span><span style="font-size: 13px; font-family: 宋体; ">生成了一个对象,且这个对象只在这个函C被用,那么你必dq个函数中调?/span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">release</font></span><span style="font-size: 13px; font-family: 宋体; ">?/span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">autorelease</font></span><span style="font-size: 13px; font-family: 宋体; ">。如果你在一?/span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">class</font></span><span style="font-size: 13px; font-family: 宋体; ">的某个方法中</span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">alloc</font></span><span style="font-size: 13px; font-family: 宋体; ">一个成员对象,且没有调?/span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">autorelease</font></span><span style="font-size: 13px; font-family: 宋体; ">Q那么你需要在q个cȝ</span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">dealloc</font></span><span style="font-size: 13px; font-family: 宋体; ">Ҏ中调?/span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">release</font></span><span style="font-size: 13px; font-family: 宋体; ">Q如果调用了</span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">autorelease</font></span><span style="font-size: 13px; font-family: 宋体; ">Q那么在</span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">dealloc</font></span><span style="font-size: 13px; font-family: 宋体; ">Ҏ中什么都不需要做?/span></p> <p class="MsoListParagraph" style="margin-top: 0cm; margin-right: 0cm; margin-left: 49.6pt; margin-bottom: 0pt; text-indent: -1cm; "><span lang="EN-US" style="font-size: 13px; "><span style="font-size: 13px; "><font face="Calibri">1.2</font><span style="font-size: 13px; font: normal normal normal 7pt/normal 'Times New Roman'; ">          </span></span></span><span style="font-size: 13px; font-family: 宋体; ">除了</span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">alloc</font></span><span style="font-size: 13px; font-family: 宋体; ">?/span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">new</font></span><span style="font-size: 13px; font-family: 宋体; ">?/span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">copy</font></span><span style="font-size: 13px; font-family: 宋体; ">之外的方法创建的对象都被声明?/span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">autorelease</font></span><span style="font-size: 13px; font-family: 宋体; ">?/span></p> <p class="MsoListParagraph" style="margin-top: 0cm; margin-right: 0cm; margin-left: 49.6pt; margin-bottom: 0pt; text-indent: -1cm; "><span lang="EN-US" style="font-size: 13px; "><span style="font-size: 13px; "><font face="Calibri">1.3</font><span style="font-size: 13px; font: normal normal normal 7pt/normal 'Times New Roman'; ">          </span></span></span><span style="font-size: 13px; font-family: 宋体; ">?/span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">retain</font></span><span style="font-size: 13px; font-family: 宋体; ">Q谁</span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">release</font></span><span style="font-size: 13px; font-family: 宋体; ">。只要你调用?/span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">retain</font></span><span style="font-size: 13px; font-family: 宋体; ">Q无个对象是如何生成的,你都要调?/span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">release</font></span><span style="font-size: 13px; font-family: 宋体; ">。有时候你的代码中明明没有</span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">retain</font></span><span style="font-size: 13px; font-family: 宋体; ">Q可是系l会在默认实C加入</span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">retain</font></span><span style="font-size: 13px; font-family: 宋体; ">。不知道Z么苹果公司的文没有q个非常重要的一点,请参考范?/span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">2.7</font></span><span style="font-size: 13px; font-family: 宋体; ">和第三章?/span></p> <p class="MsoListParagraph" style="margin-top: 0cm; margin-right: 0cm; margin-left: 21.25pt; margin-bottom: 0pt; text-indent: -21.25pt; "><span lang="EN-US" style="font-size: 13px; "><span style="font-size: 13px; "><font face="Calibri">2</font><span style="font-size: 13px; font: normal normal normal 7pt/normal 'Times New Roman'; ">           </span></span></span><span style="font-size: 13px; font-family: 宋体; ">范式?/span><span lang="EN-US" style="font-size: 13px; "><br /> </span><span style="font-size: 13px; font-family: 宋体; ">范式是模板Q就是依葫芦ȝ。由于不同h有不同的理解和习惯,我ȝ的范式不一定适合所有hQ但我能保证照着q样做不会出问题?/span></p> <p class="MsoListParagraph" style="margin-top: 0cm; margin-right: 0cm; margin-left: 49.6pt; margin-bottom: 0pt; text-indent: -1cm; "><span lang="EN-US" style="font-size: 13px; "><span style="font-size: 13px; "><font face="Calibri">2.1</font><span style="font-size: 13px; font: normal normal normal 7pt/normal 'Times New Roman'; ">          </span></span></span><span style="font-size: 13px; font-family: 宋体; ">创徏一个对象?/span></p> <p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63.2pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">ClassA *obj1 = [[ClassA alloc] init];</font></span></p> <p class="MsoListParagraph" style="margin-top: 0cm; margin-right: 0cm; margin-left: 49.6pt; margin-bottom: 0pt; text-indent: -1cm; "><span lang="EN-US" style="font-size: 13px; "><span style="font-size: 13px; "><font face="Calibri">2.2</font><span style="font-size: 13px; font: normal normal normal 7pt/normal 'Times New Roman'; ">          </span></span></span><span style="font-size: 13px; font-family: 宋体; ">创徏一?/span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">autorelease</font></span><span style="font-size: 13px; font-family: 宋体; ">的对象?/span></p> <p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63.2pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">ClassA *obj1 = [[[ClassA alloc] init] autorelease];</font></span></p> <p class="MsoListParagraph" style="margin-top: 0cm; margin-right: 0cm; margin-left: 49.6pt; margin-bottom: 0pt; text-indent: -1cm; "><span lang="EN-US" style="font-size: 13px; "><span style="font-size: 13px; "><font face="Calibri">2.3</font><span style="font-size: 13px; font: normal normal normal 7pt/normal 'Times New Roman'; ">          </span></span></span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">Release</font></span><span style="font-size: 13px; font-family: 宋体; ">一个对象后Q立x指针清空。(Z说一句,</span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">release</font></span><span style="font-size: 13px; font-family: 宋体; ">一个空指针是合法的Q但不会发生M事情Q?/span></p> <p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63.2pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">[obj1 release];</font></span></p> <p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63.2pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">obj1 = nil;</font></span></p> <p class="MsoListParagraph" style="margin-top: 0cm; margin-right: 0cm; margin-left: 49.6pt; margin-bottom: 0pt; text-indent: -1cm; "><span lang="EN-US" style="font-size: 13px; "><span style="font-size: 13px; "><font face="Calibri">2.4</font><span style="font-size: 13px; font: normal normal normal 7pt/normal 'Times New Roman'; ">          </span></span></span><span style="font-size: 13px; font-family: 宋体; ">指针赋值给另一个指针?/span></p> <p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63.2pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">ClassA *obj2 = obj1;</font></span></p> <p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63.2pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">[obj2 retain];</font></span></p> <p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63.2pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">//do something</font></span></p> <p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63.2pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">[obj2 release];</font></span></p> <p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63.2pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">obj2 = nil;</font></span></p> <p class="MsoListParagraph" style="margin-top: 0cm; margin-right: 0cm; margin-left: 49.6pt; margin-bottom: 0pt; text-indent: -1cm; "><span lang="EN-US" style="font-size: 13px; "><span style="font-size: 13px; "><font face="Calibri">2.5</font><span style="font-size: 13px; font: normal normal normal 7pt/normal 'Times New Roman'; ">          </span></span></span><span style="font-size: 13px; font-family: 宋体; ">在一个函C创徏q返回对象,需要把q个对象讄?/span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">autorelease</font></span></p> <p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63.2pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">ClassA *Func1()</font></span></p> <p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63.2pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">{</font></span></p> <p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63.2pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri"><span style="font-size: 13px; ">  </span>ClassA *obj = [[[ClassA alloc]init]autorelease];</font></span></p> <p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63.2pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri"><span style="font-size: 13px; ">  </span>return obj;</font></span></p> <p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63.2pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">}</font></span></p> <p class="MsoListParagraph" style="margin-top: 0cm; margin-right: 0cm; margin-left: 49.6pt; margin-bottom: 0pt; text-indent: -1cm; "><span lang="EN-US" style="font-size: 13px; "><span style="font-size: 13px; "><font face="Calibri">2.6</font><span style="font-size: 13px; font: normal normal normal 7pt/normal 'Times New Roman'; ">          </span></span></span><span style="font-size: 13px; font-family: 宋体; ">在子cȝ</span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">dealloc</font></span><span style="font-size: 13px; font-family: 宋体; ">Ҏ中调用基cȝ</span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">dealloc</font></span><span style="font-size: 13px; font-family: 宋体; ">Ҏ</span></p> <p class="MsoNormal" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; text-align: left; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">-(void) dealloc</font></span></p> <p class="MsoNormal" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; text-align: left; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">{</font></span></p> <p class="MsoNormal" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; text-align: left; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri"><span style="font-size: 13px; ">         </span>…</font></span></p> <p class="MsoNormal" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; text-align: left; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri"><span style="font-size: 13px; ">         </span>[super dealloc];</font></span></p> <p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">}</font></span></p> <p class="MsoListParagraph" style="margin-top: 0cm; margin-right: 0cm; margin-left: 49.6pt; margin-bottom: 0pt; text-indent: -1cm; "><span lang="EN-US" style="font-size: 13px; "><span style="font-size: 13px; "><font face="Calibri">2.7</font><span style="font-size: 13px; font: normal normal normal 7pt/normal 'Times New Roman'; ">          </span></span></span><span style="font-size: 13px; font-family: 宋体; ">在一?/span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">class</font></span><span style="font-size: 13px; font-family: 宋体; ">中创建和使用</span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">property</font></span><span style="font-size: 13px; font-family: 宋体; ">?/span></p> <p class="MsoListParagraph" style="margin-top: 0cm; margin-right: 0cm; margin-left: 70.9pt; margin-bottom: 0pt; text-indent: -1cm; "><span lang="EN-US" style="font-size: 13px; "><span style="font-size: 13px; "><font face="Calibri">2.7.1</font><span style="font-size: 13px; font: normal normal normal 7pt/normal 'Times New Roman'; ">     </span></span></span><span style="font-size: 13px; font-family: 宋体; ">声明一个成员变量?/span></p> <p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63.5pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">ClassB *objB;</font></span></p> <p class="MsoListParagraph" style="margin-top: 0cm; margin-right: 0cm; margin-left: 70.9pt; margin-bottom: 0pt; text-indent: -1cm; "><span lang="EN-US" style="font-size: 13px; "><span style="font-size: 13px; "><font face="Calibri">2.7.2</font><span style="font-size: 13px; font: normal normal normal 7pt/normal 'Times New Roman'; ">     </span></span></span><span style="font-size: 13px; font-family: 宋体; ">声明</span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">property</font></span><span style="font-size: 13px; font-family: 宋体; ">Q加?/span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">retain</font></span><span style="font-size: 13px; font-family: 宋体; ">参数?/span></p> <p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63.2pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">@property (retain) ClassB* objB;</font></span></p> <p class="MsoListParagraph" style="margin-top: 0cm; margin-right: 0cm; margin-left: 70.9pt; margin-bottom: 0pt; text-indent: -1cm; "><span lang="EN-US" style="font-size: 13px; "><span style="font-size: 13px; "><font face="Calibri">2.7.3</font><span style="font-size: 13px; font: normal normal normal 7pt/normal 'Times New Roman'; ">     </span></span></span><span style="font-size: 13px; font-family: 宋体; ">定义</span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">property</font></span><span style="font-size: 13px; font-family: 宋体; ">。(</span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">property</font></span><span style="font-size: 13px; font-family: 宋体; ">的默认实现请看第三章Q?/span></p> <p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63.2pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">@synthesize objB;</font></span></p> <p class="MsoListParagraph" style="margin-top: 0cm; margin-right: 0cm; margin-left: 70.9pt; margin-bottom: 0pt; text-indent: -1cm; "><span lang="EN-US" style="font-size: 13px; "><span style="font-size: 13px; "><font face="Calibri">2.7.4</font><span style="font-size: 13px; font: normal normal normal 7pt/normal 'Times New Roman'; ">     </span></span></span><span style="font-size: 13px; font-family: 宋体; ">除了</span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">dealloc</font></span><span style="font-size: 13px; font-family: 宋体; ">Ҏ以外Q始l用</span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">.</font></span><span style="font-size: 13px; font-family: 宋体; ">操作W的方式来调?/span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">property</font></span><span style="font-size: 13px; font-family: 宋体; ">?/span></p> <p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63.5pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">self.objB </font></span><span style="font-size: 13px; font-family: 宋体; ">或?/span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">objA.objB</font></span></p> <p class="MsoListParagraph" style="margin-top: 0cm; margin-right: 0cm; margin-left: 70.9pt; margin-bottom: 0pt; text-indent: -1cm; "><span lang="EN-US" style="font-size: 13px; "><span style="font-size: 13px; "><font face="Calibri">2.7.5</font><span style="font-size: 13px; font: normal normal normal 7pt/normal 'Times New Roman'; ">     </span></span></span><span style="font-size: 13px; font-family: 宋体; ">?/span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">dealloc</font></span><span style="font-size: 13px; font-family: 宋体; ">Ҏ?/span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">release</font></span><span style="font-size: 13px; font-family: 宋体; ">q个成员变量?/span></p> <p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63.5pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">[objB release];</font></span></p> <p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; "><span style="font-size: 13px; font-family: 宋体; ">CZ代码如下Q详l代码请参考附件中?/span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">memman-property.m</font></span><span style="font-size: 13px; font-family: 宋体; ">Q你需要特别留意对象是在何时被销毁的。)Q?/span></p> <p class="MsoNormal" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; text-align: left; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">@interface ClassA : NSObject</font></span></p> <p class="MsoNormal" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; text-align: left; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">{</font></span></p> <p class="MsoNormal" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; text-align: left; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri"><span style="font-size: 13px; ">         </span>ClassB* objB;</font></span></p> <p class="MsoNormal" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; text-align: left; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">}</font></span></p> <p class="MsoNormal" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; text-align: left; "><span lang="EN-US" style="font-size: 13px; "><o:p><font face="Calibri"> </font></o:p></span></p> <p class="MsoNormal" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; text-align: left; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">@property (retain) ClassB* objB;</font></span></p> <p class="MsoNormal" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; text-align: left; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">@end</font></span></p> <p class="MsoNormal" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; text-align: left; "><span lang="EN-US" style="font-size: 13px; "><o:p><font face="Calibri"> </font></o:p></span></p> <p class="MsoNormal" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; text-align: left; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">@implementation ClassA</font></span></p> <p class="MsoNormal" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; text-align: left; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">@synthesize objB;</font></span></p> <p class="MsoNormal" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; text-align: left; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">-(void) dealloc</font></span></p> <p class="MsoNormal" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; text-align: left; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">{</font></span></p> <p class="MsoNormal" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; text-align: left; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri"><span style="font-size: 13px; ">         </span>[objB release];</font></span></p> <p class="MsoNormal" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; text-align: left; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri"><span style="font-size: 13px; ">         </span>[super dealloc];</font></span></p> <p class="MsoNormal" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; text-align: left; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">}</font></span></p> <p class="MsoNormal" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; text-align: left; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">@end</font></span></p> <p class="MsoListParagraph" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 70.9pt; margin-bottom: 0pt; text-indent: -1cm; text-align: left; "><span lang="EN-US" style="font-size: 13px; "><span style="font-size: 13px; "><font face="Calibri">2.7.6</font><span style="font-size: 13px; font: normal normal normal 7pt/normal 'Times New Roman'; ">     </span></span></span><span style="font-size: 13px; font-family: 宋体; ">l这?/span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">property</font></span><span style="font-size: 13px; font-family: 宋体; ">赋值时Q有手动</span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">release</font></span><span style="font-size: 13px; font-family: 宋体; ">?/span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">autorelease</font></span><span style="font-size: 13px; font-family: 宋体; ">两种方式?/span></p> <p class="MsoNormal" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; text-align: left; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">void funcNoAutorelease()</font></span></p> <p class="MsoNormal" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; text-align: left; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">{</font></span></p> <p class="MsoNormal" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; text-align: left; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri"><span style="font-size: 13px; ">         </span>ClassB *objB1 = [[ClassB alloc]init];</font></span></p> <p class="MsoNormal" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; text-align: left; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri"><span style="font-size: 13px; ">         </span>ClassA *objA = [[ClassA alloc]init];</font></span></p> <p class="MsoNormal" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; text-align: left; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri"><span style="font-size: 13px; ">         </span>objA.objB = objB1;</font></span></p> <p class="MsoNormal" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; text-align: left; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri"><span style="font-size: 13px; ">         </span>[objB1 release];</font></span></p> <p class="MsoNormal" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; text-align: left; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri"><span style="font-size: 13px; ">         </span>[objA release];</font></span></p> <p class="MsoNormal" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; text-align: left; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">}</font></span></p> <p class="MsoNormal" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; text-align: left; "><span lang="EN-US" style="font-size: 13px; "><o:p><font face="Calibri"> </font></o:p></span></p> <p class="MsoNormal" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; text-align: left; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">void funcAutorelease()</font></span></p> <p class="MsoNormal" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; text-align: left; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">{</font></span></p> <p class="MsoNormal" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; text-align: left; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri"><span style="font-size: 13px; ">         </span>ClassB *objB1 = [[[ClassB alloc]init] autorelease];</font></span></p> <p class="MsoNormal" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; text-align: left; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri"><span style="font-size: 13px; ">         </span>ClassA *objA = [[[ClassA alloc]init] autorelease];</font></span></p> <p class="MsoNormal" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; text-align: left; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri"><span style="font-size: 13px; ">         </span>objA.objB = objB1;</font></span></p> <p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">}</font></span></p> <p class="MsoNormal" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; text-align: left; "> </p> <p class="MsoNormal" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; text-align: left; "> </p> <p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; "><span style="font-size: 13px; font-family: 宋体; ">CZ代码文g链接Q?/span><span lang="EN-US" style="font-size: 13px; "><a target="_blank" style="color: #1d58d1; text-decoration: none; "><font face="Calibri">http://files.cnblogs.com/VinceYuan/objective-c-memman.zip</font></a></span></p> </div> </div> </div> </div> </td> </tr> </tbody> </table> </span> @import url(http://www.tkk7.com/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);<img src ="http://www.tkk7.com/fastzch/aggbug/365258.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/fastzch/" target="_blank">Robin's Programming World</a> 2011-12-01 09:25 <a href="http://www.tkk7.com/fastzch/archive/2011/12/01/365258.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>解决Android模拟器不能上|的问题http://www.tkk7.com/fastzch/archive/2011/08/04/355771.htmlRobin's Programming WorldRobin's Programming WorldThu, 04 Aug 2011 06:54:00 GMThttp://www.tkk7.com/fastzch/archive/2011/08/04/355771.htmlhttp://www.tkk7.com/fastzch/comments/355771.htmlhttp://www.tkk7.com/fastzch/archive/2011/08/04/355771.html#Feedback0http://www.tkk7.com/fastzch/comments/commentRss/355771.htmlhttp://www.tkk7.com/fastzch/services/trackbacks/355771.html

Windows下,配置好Adroid环境变量?如将d:android-sdk-windows-1.0_r1 ools加入pȝ变量PATH)Q在命o行窗口输入:

  emulator

  启动Android 模拟器后Q 输入Q?/p>

  adb shell

  q入adb shell模式Q?/p>

  网l连接代理设|写入配|数据库Q假如你的上|代理IP?0.193.xx.xxQ?/p>

  sqlite3 /data/data/com.android.providers.settings/databases/settings.db "INSERT INTO system VALUES(99,'http_proxy','10.193.xx.xx:1080')"

  查询一下是否成功更改了pȝ讄Q?/p>

  sqlite3 /data/data/com.android.providers.settings/databases/settings.db "SELECT * FROM system"

  l果中应有:99|http_proxy|10.193.xx.xx:1080

  重启模拟器,应该可以使用Browser?Internet?

  删除刚刚写入的配|信息方法:

  sqlite3 /data/data/com.android.providers.settings/databases/settings.db "DELETE FROM system WHERE _id=99"

Android模拟器默认的地址?0.0.2.3Q默认的DNS也是10.0.2.3Q对于在安上网学习Android的hQ像我)来讲Q一般电脑的IP都是192.168.1.100之类的,不在同一个网Dc所以就会出现电脑可以上|但是模拟器不能上网的情c其实设|方法很单,只要把模拟器的默认DNS讄成电脑的DNS地址卛_?/p>

W一步:用系l的命oq入Android开发包的tools目录

 cd X:\...\android-sdk-windows\tool

W二布:使用adb的shellQ确认系l的各项属?/p>

adb shell

getprop

getprop会列出系l当前的各项属?/p>

W三步:得到模拟器的DNS地址

在结果里可以看到Q?/p>

[net.dns1]: [10.0.2.3]
[net.dns2]: [10.0.2.4]
[net.dns3]: [10.0.2.5]
[net.dns4]: [10.0.2.6]

W四步:把dnsҎ我们自己的DNS

setprop net.dns1 192.168.1.1

注:一般TP-LINK及D-LINK的DNS都是192.168.1.1Q如果不是请使用ipcnofig /all命o认?/p>

大功告成Q再M用模拟器的浏览器的话Q你可以发C已经可以上网了?/p>

 

 

我在|上查了一下,发现有以下四U方式: 
一Q将|络q接代理讄写入配置数据?nbsp;
1、通过命o行或者通过双击emulatoer可执行文Ӟ打开模拟?nbsp;
2、在命o行执行adb shell 打开android的控制台 Q确保环境变量设|正,卛_l把Android_SDK/tools dCPATH(Linux)/path(Windows)Q?nbsp;
3、执?ls -l /data/data/com.android.providers.settings/databases/settings.db Q查看系l设|数据库文g是否存在 
4、如果数据库文g存在Q执?sqlite3 /data/data/com.android.providers.settings/databases/settings.dbQ以settings.db为当前scheme启动SQLITE3 
5、执?INSERT INTO system VALUES(99,’http_proxy’, ‘192.168.0.245:8080′); 语句插入数据Q其?92.168.0.245是我用的代理服务器IPQ?080是端口,h据具体情冉|?nbsp;
6、执?SELECT * FROM system; 来查看刚才插入的数据 
7、重启模拟器Q以使代理服务器讄生效 
8、可以?DELETE FROM system WHERE _id=99; 语句来删除代理设|,或者?UPDATE system SET value = ‘192.168.0.245:8070′ WHERE _id=99; 来修改代理服务器讄 

二:可能是DNS的问?nbsp;
1、用pȝ的命令进入Android开发包的tools目录 
cd E:\android-sdk-windows\tools 
2、用adb的shellQ确认系l的各项属?nbsp;
adb shell 
getprop 
getprop会列出系l当前的各项属?nbsp;
3、得到模拟器的DNS地址 
在结果里可以看到Q?nbsp;
[net.dns1]: [10.0.2.3] 
[net.dns2]: [10.0.2.4] 
4、把dnsҎ我们自己的DNS 
setprop net.dns1 192.168.1.1 
注:一般TP-LINK及D-LINK的DNS都是192.168.1.1Q如果不是请使用ipcnofig /all命o认?nbsp;

三:直接带参数启动模拟器 
emulator @default -http-proxy 10.16.xx.xx:8080 
其中default是模拟器的名U?nbsp;

四:在模拟器中设|?nbsp;
启动模拟器,然后q入 Settings->Wireless & networks->Mobile networks->Access Point Names   
然后打开出现在列表中的access point; 
然后下面q样讄Q?nbsp;
- Proxy : your proxy address   
- Port : your proxy port 
- Username : your username if needed, or <Not set> 
- Password : your password if needed, or <Not set> 


@import url(http://www.tkk7.com/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);

Robin's Programming World 2011-08-04 14:54 发表评论
]]>
[转蝲]如何在Windows q_获得WASv5.x/6.x?Java HeapDump和JavaCore 诊断文g?http://www.tkk7.com/fastzch/archive/2008/09/10/228085.htmlRobin's Programming WorldRobin's Programming WorldWed, 10 Sep 2008 02:51:00 GMThttp://www.tkk7.com/fastzch/archive/2008/09/10/228085.htmlhttp://www.tkk7.com/fastzch/comments/228085.htmlhttp://www.tkk7.com/fastzch/archive/2008/09/10/228085.html#Feedback0http://www.tkk7.com/fastzch/comments/commentRss/228085.htmlhttp://www.tkk7.com/fastzch/services/trackbacks/228085.html W者注Q其实在Unix或Linuxpȝ中照样可以。因是通过WSADMINL作的Q所以不分^台?/font>

很不错的文章Q不敢独享,特{载来分nl大?br />原文出处Q?a >http://www.itpub.net/731657.html

具体步骤如下Q?br />1?讄Windows的环境变量,使WAS JVM在生javacore的同时生HeapDump文gQ缺省只会?javacore)。点击windows桌面Q?gt;鼠标右键Q属性-q入pȝ属性对话框Q进入高U页面-点击环境变量Q在pȝ变量中-分别加入以下变量名和变量?br />变量?变量?br />IBM_HEAPDUMP true
IBM_HEAP_DUMP true
IBM_HEAPDUMPDIR c:\

2?注销当前用户Q重新登?br />
3?可以通过手工或windows 服务的方式启动WASQ如果用手工方式,如下Q?br />===For WAS5.x====
cd c:\WebSphere\AppServer\bin
startServer.bat server1
===For WAS6.x====
cd c:\WebSphere\AppServer\profiles\default\bin
startServer.bat server1

4?WAS启动正常后,在C:\WebSphere\AppServer\bin或C:\WebSphere\AppServer\profiles\default\bin目录中通过以下命o让JVM产生JavaCore和HeapDump文g
键入wsadmin.bat命oQ进入wsadmin理命o行,键入如下代码Q?br />set jvm [$AdminControl completeObjectName type=JVM,process=server1,*]

$AdminControl invoke $jvm dumpThreads

javacore.TIMESTAMP.NUMBER.txt  文g会自动在C:\WebSphere\AppServer或C:\WebSphere\AppServer\default\或您指定的目录中产生?br />
$AdminControl invoke $jvm generateHeapDump
生成文gcd名ؓ.phd的文Ӟq个文g是完整的堆的dump(此命令ؓ我添加的Q这个更有用)


补充Q?br />IBM_HEAPDUMP_OUTOFMEMORY true
IBM_JAVADUMP_OUTOFMEMORY true
WAS在以上两环境变量的讄下,一旦JVM出现内存甌p|抛出Out of Memory错误ӞJVM会自动产生JavaCore和HeapDump?br />
在生产环境下Q}慎用此两项环境变量的设|,以防把文件系l撑爆?br />



]]>
女教我们打领带http://www.tkk7.com/fastzch/archive/2008/08/26/224886.htmlRobin's Programming WorldRobin's Programming WorldTue, 26 Aug 2008 15:23:00 GMThttp://www.tkk7.com/fastzch/archive/2008/08/26/224886.htmlhttp://www.tkk7.com/fastzch/comments/224886.htmlhttp://www.tkk7.com/fastzch/archive/2008/08/26/224886.html#Feedback2http://www.tkk7.com/fastzch/comments/commentRss/224886.htmlhttp://www.tkk7.com/fastzch/services/trackbacks/224886.html

]]>
QL集]qMM与JAVA?3U设计模?/title><link>http://www.tkk7.com/fastzch/archive/2007/10/26/156179.html</link><dc:creator>Robin's Programming World</dc:creator><author>Robin's Programming World</author><pubDate>Fri, 26 Oct 2007 08:25:00 GMT</pubDate><guid>http://www.tkk7.com/fastzch/archive/2007/10/26/156179.html</guid><wfw:comment>http://www.tkk7.com/fastzch/comments/156179.html</wfw:comment><comments>http://www.tkk7.com/fastzch/archive/2007/10/26/156179.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/fastzch/comments/commentRss/156179.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/fastzch/services/trackbacks/156179.html</trackback:ping><description><![CDATA[ <p> <font style="BACKGROUND-COLOR: #ffffff" color="#008000"> 看完q篇文章Q觉得实在太l典了,收藏Q?/font> <br /> <br />         1、FACTORY?qMM不了请吃饭了,麦当劳的鸡翅和肯德基的鸡都是MM爱吃的东西,虽然口味有所不同Q但不管你带MM去麦当劳或肯德基Q只向服务员说“来四个鸡翅”就行了。麦当劳和肯德基是生鸡翅的Factory </p> <p>  工厂模式Q客L和工厂类分开。消费者Q何时候需要某U品,只需向工厂请求即可。消费者无M改就可以接纳C品。缺Ҏ当品修ҎQ工厂类也要做相应的修改。如Q如何创建及如何向客L提供?</p> <p>  2、BUILDER?MM最爱听的就是“我׃”这句话了,见到不同地方的MM,要能够用她们的方a跟她说这句话哦,我有一个多U语a译机,上面每种语言都有一个按键,见到MM我只要按对应的键Q它p够用相应的语a说出“我׃”这句话了,国外的MM也可以轻松搞掂,q就是我的“我׃”builder。(q一定比军在伊拉克用的译机好卖) </p> <p>  建造模式:品的内部表象和品的生成q程分割开来,从而一个徏造过E生成具有不同的内部表象的品对象。徏造模式得品内部表象可以独立的变化Q客户不必知道品内部组成的l节。徏造模式可以强制实行一U分步骤q行的徏造过E?</p> <p>  3、FACTORY METHOD?请MM去麦当劳吃汉堡,不同的MM有不同的口味Q要每个都记住是一件烦人的事情Q我一般采用Factory Method模式Q带着MM到服务员那儿Q说“要一个汉堡”,具体要什么样的汉堡呢Q让MM直接跟服务员说就行了?</p> <p>  工厂Ҏ模式Q核心工厂类不再负责所有品的创徏Q而是具体创建的工作交给子类dQ成Z个抽象工厂角Ԍ仅负责给出具体工厂类必须实现的接口,而不接触哪一个品类应当被实例化q种l节?</p> <p>  4、PROTOTYPE?跟MM用QQ聊天Q一定要说些深情的话语了Q我搜集了好多肉ȝ情话Q需要时只要copy出来攑ֈQQ里面p了,q就是我的情话prototype了。(100块钱一份,你要不要Q?</p> <p>  原始模型模式Q通过l出一个原型对象来指明所要创建的对象的类型,然后用复制这个原型对象的Ҏ创徏出更多同cd的对象。原始模型模式允许动态的增加或减品类Q品类不需要非得有M事先定的等U结构,原始模型模式适用于Q何的{l构。缺Ҏ每一个类都必配备一个克隆方法?</p> <p>  5、SINGLETON?俺有6个漂亮的老婆Q她们的老公都是我,我就是我们家里的老公SigletonQ她们只要说道“老公”,都是指的同一个hQ那是?刚才做了个梦啦,哪有q么好的? </p> <p>  单例模式Q单例模式确保某一个类只有一个实例,而且自行实例化ƈ向整个系l提供这个实例单例模式。单例模式只应在有真正的“单一实例”的需求时才可使用?</p> <p> <strong>l构型模?/strong> <br /> <br />  6、ADAPTER?在朋友聚会上到了一个美女SarahQ从香港来的Q可我不会说_语Q她不会说普通话Q只好于我的朋友kent了,他作为我和Sarah之间的AdapterQ让我和Sarah可以怺交谈?也不知道他会不会耍我) </p> <p>  适配器(变压器)模式Q把一个类的接口变换成客户端所期待的另一U接口,从而原本因接口原因不匚w而无法一起工作的两个c能够一起工作。适配cd以根据参数返q一个合适的实例l客L?</p> <p>  7、BRIDGE?早上到MMQ要说早上好Q晚上碰到MMQ要说晚上好Q碰到MMI了件新衣服Q要说你的服好漂亮哦,到MM新做的发型,要说你的头发好漂亮哦。不要问我“早上碰到MM新做了个发型怎么说”这U问题,自己用BRIDGEl合一下不p?</p> <p>  桥梁模式Q将抽象化与实现化脱耦,使得二者可以独立的变化Q也是说将他们之间的强兌变成弱关联,也就是指在一个Y件系l的抽象化和实现化之间用组?聚合关系而不是承关p,从而两者可以独立的变化?</p> <p>  8、COMPOSITE?Mary今天q生日。“我q生日,你要送我一件礼物。”“嗯Q好吧,d店,你自己挑。”“这件T恤挺漂亮Q买Q这条裙子好看,乎ͼq个包也不错Q买。”“喂Q买了三件了呀Q我只答应送一件礼物的哦。”“什么呀QT恤加裙子加包包,正好配成一套呀Q小姐,ȝ你包h。”“……”,MM都会用Composite模式了,你会了没有? </p> <p>  合成模式Q合成模式将对象l织到树l构中,可以用来描述整体与部分的关系。合成模式就是一个处理对象的树结构的模式。合成模式把部分与整体的关系用树l构表示出来。合成模式得客L把一个个单独的成分对象和׃们复合而成的合成对象同{看待?</p> <p>  9、DECORATOR?Maryq完轮到Sarlyq生日,q是不要叫她自己挑了Q不然这个月伙食费肯定玩完,拿出我去q在华山上照的照片Q在背面写上“最好的的礼物,是׃的Fita”,再到街上C品店买了个像框Q卖C品的MM也很漂亮哦)Q再N壁搞术设计的Mike设计了一个漂亮的盒子装v来……,我们都是DecoratorQ最l都在修饰我q个人呀Q怎么P看懂了吗Q?</p> <p>  装饰模式Q装饰模式以对客L透明的方式扩展对象的功能Q是l承关系的一个替代方案,提供比承更多的灉|性。动态给一个对象增加功能,q些功能可以再动态的撤消。增加由一些基本功能的排列l合而生的非常大量的功能?</p> <p>  10、FACADE?我有一个专业的Nikon相机Q我喜Ƣ自己手动调光圈、快门,q样照出来的照片才专业,但MM可不懂这些,教了半天也不会。幸好相机有Facade设计模式Q把相机调整到自动档Q只要对准目标按快门p了,一切由相机自动调整Q这样MM也可以用q个相机l我拍张照片了?</p> <p>  门面模式Q外部与一个子pȝ的通信必须通过一个统一的门面对象进行。门面模式提供一个高层次的接口,使得子系l更易于使用。每一个子pȝ只有一个门面类Q而且此门面类只有一个实例,也就是说它是一个单例模式。但整个pȝ可以有多个门面类?</p> <p>  11、FLYWEIGHT?每天跟MM发短信,手指都篏MQ最q买了个新手机,可以把一些常用的句子存在手机里,要用的时候,直接拿出来,在前面加上MM的名字就可以发送了Q再不用一个字一个字敲了。共享的句子是FlyweightQMM的名字就是提取出来的外部特征Q根据上下文情况使用?</p> <p>  享元模式QFLYWEIGHT在拳L赛中指最轻量U。n元模式以׃n的方式高效的支持大量的细_度对象。n元模式能做到׃n的关键是区分内蕴状态和外蕴状态。内蕴状态存储在享元内部Q不会随环境的改变而有所不同。外蕴状态是随环境的改变而改变的。外蕴状态不能媄响内蕴状态,它们是相互独立的。将可以׃n的状态和不可以共享的状态从常规cM区分开来,不可以׃n的状态从c里剔除出去。客L不可以直接创׃n的对象,而应当用一个工厂对象负责创׃n的对象。n元模式大q度的降低内存中对象的数量?</p> <p>  12、PROXY?跟MM在网上聊天,一开头L“hi,你好?“你从哪儿来呀Q”“你多大了?”“n高多呀Q”这些话Q真烦hQ写个程序做为我的Proxy吧,凡是接收到这些话都设|好了自动的回答Q接收到其他的话时再通知我回{,怎么P酷吧?</p> <p>  代理模式Q代理模式给某一个对象提供一个代理对象,q由代理对象控制Ҏ对象的引用。代理就是一个h或一个机构代表另一个h或者一个机构采取行动。某些情况下Q客户不x者不能够直接引用一个对象,代理对象可以在客户和目标对象直接起到中介的作用。客L分L不出代理主题对象与真实主题对象。代理模式可以ƈ不知道真正的被代理对象,而仅仅持有一个被代理对象的接口,q时候代理对象不能够创徏被代理对象,被代理对象必Lpȝ的其他角色代为创建ƈ传入?</p> <p> <strong>行ؓ模式</strong> </p> <p>  13、CHAIN OF RESPONSIBLEITY?晚上Mp课,Z好开溜坐C最后一排,哇,前面坐了好几个漂亮的MM哎,扑ּU条Q写上“Hi,可以做我的女朋友吗?如果不愿意请向前传”,U条׃个接一个的传上MQ糟p,传到W一排的MM把纸条传l老师了,听说是个老处奛_Q快? </p> <p>  责Q链模式:在责任链模式中,很多对象由每一个对象对其下家的引用而接 </p> <p>  h形成一条链。请求在q个链上传递,直到链上的某一个对象决定处理此h。客户ƈ不知道链上的哪一个对象最l处理这个请求,pȝ可以在不影响客户端的情况下动态的重新l织铑֒分配责Q。处理者有两个选择Q承担责L者把责Q推给下家。一个请求可以最l不被Q何接收端对象所接受?</p> <p>  14、COMMAND?俺有一个MM安得特别严,没法见面Q只好借助于她弟弟在我们俩之间传送信息,她对我有什么指C,写一张纸条让她弟弟带l我。这不,她弟弟又传送过来一个COMMANDQؓ了感谢他Q我请他吃了杂酱面Q哪知道他说Q“我同时l我姐姐三个h友送COMMANDQ就C最气Q才h吃面。”, </p> <p>  命o模式Q命令模式把一个请求或者操作封装到一个对象中。命令模式把发出命o的责d执行命o的责d割开Q委z不同的对象。命令模式允许请求的一方和发送的一方独立开来,使得h的一方不必知道接收请求的一方的接口Q更不必知道h是怎么被接Ӟ以及操作是否执行Q何时被执行以及是怎么被执行的。系l支持命令的撤消?</p> <p>  15、INTERPRETER?俺有一个《MM真经》,上面有各UMM的攻略,比如说去吃西的步骤、去看电qҎ{等Q跟MMU会Ӟ只要做一个InterpreterQ照着上面的脚本执行就可以了?</p> <p>  解释器模式:l定一个语a后,解释器模式可以定义出其文法的一U表C,q同时提供一个解释器。客L可以使用q个解释器来解释q个语言中的句子。解释器模式描q怎样在有了一个简单的文法后,使用模式设计解释q些语句。在解释器模式里面提到的语言是指M解释器对象能够解释的Ml合。在解释器模式中需要定义一个代表文法的命ocȝ{l构Q也是一pd的组合规则。每一个命令对象都有一个解释方法,代表对命令对象的解释。命令对象的{l构中的对象的Q何排列组合都是一个语a?</p> <p>  16、ITERATOR?我爱上了MaryQ不一切的向她求婚?</p> <p>  MaryQ“想要我跟你l婚Q得{应我的条g?</p> <p>  我:“什么条件我都答应,你说吧?</p> <p>  MaryQ“我看上了那个一克拉的钻石?</p> <p>  我:“我乎ͼ我买Q还有吗Q?</p> <p>  MaryQ“我看上了湖边的那栋别墅?</p> <p>  我:“我乎ͼ我买Q还有吗Q?</p> <p>  MaryQ“我看上那辆法拉利跑车?</p> <p>  我脑袋嗡的一壎ͼ坐在椅子上,一咬牙Q“我乎ͼ我买Q还有吗Q?</p> <p>  …?</p> <p>  q代子模式:q代子模式可以顺序访问一个聚集中的元素而不必暴露聚集的内部表象。多个对象聚在一起Ş成的MUC集,聚集对象是能够包容一l对象的容器对象。P代子模式P代逻辑装C个独立的子对象中Q从而与聚集本n隔开。P代子模式化了聚集的界面。每一个聚集对象都可以有一个或一个以上的q代子对象,每一个P代子的P代状态可以是彼此独立的。P代算法可以独立于聚集角色变化?</p> <p>  17、MEDIATOR?四个MM打麻,怺之间谁应该给谁多钱不清楚了,q怺当时我在旁边Q按照各自的{码数算钱,赚了q从我q里拿,赔了q也付l我Q一切就OK啦,俺得C四个MM的电话?</p> <p>  调停者模式:调停者模式包装了一pd对象怺作用的方式,使得q些对象不必怺明显作用。从而他们可以松散偶合。当某些对象之间的作用发生改变时Q不会立卛_响其他的一些对象之间的作用。保证这些作用可以彼此独立的变化。调停者模式将多对多的怺作用转化Z对多的相互作用。调停者模式将对象的行为和协作抽象化,把对象在尺度的行ؓ上与其他对象的相互作用分开处理?</p> <p>  18、MEMENTO?同时跟几个MM聊天Ӟ一定要记清楚刚才跟MM说了些什么话Q不然MM发现了会不高兴的哦,q怺我有个备忘录Q刚才与哪个MM说了什么话我都拯一份放到备忘录里面保存Q这样可以随时察看以前的记录啦?</p> <p>  备忘录模式:备忘录对象是一个用来存储另外一个对象内部状态的快照的对象。备忘录模式的用意是在不破坏装的条件下Q将一个对象的状态捉住,q外部化Q存储v来,从而可以在来合适的时候把q个对象q原到存储v来的状态?</p> <p>  19、OBSERVER?想知道咱们公司最新MM情报吗?加入公司的MM情报邮gl就行了Qtom负责搜集情报Q他发现的新情报不用一个一个通知我们Q直接发布给邮gl,我们作ؓ订阅者(观察者)可以及时收到情报啦 </p> <p>  观察者模式:观察者模式定义了一U一队多的依赖关p,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化Ӟ会通知所有观察者对象,使他们能够自动更新自己?</p> <p>  20、STATE?跟MM交往Ӟ一定要注意她的状态哦Q在不同的状态时她的行ؓ会有不同Q比如你U她今天晚上ȝ电媄Q对你没兴趣的MM׃说“有事情啦”,对你不讨厌但q没喜欢上的MM׃说“好啊,不过可以带上我同事么Q”,已经喜欢上你的MM׃说“几炚wQ看完电影再L吧怎么P”,当然你看电媄q程中表现良好的话,也可以把MM的状态从不讨厌不喜欢变成喜欢哦?</p> <p>  状态模式:状态模式允怸个对象在其内部状态改变的时候改变行为。这个对象看上去象是改变了它的类一栗状态模式把所研究的对象的行ؓ包装在不同的状态对象里Q每一个状态对象都属于一个抽象状态类的一个子cR状态模式的意图是让一个对象在其内部状态改变的时候,其行Z随之改变。状态模式需要对每一个系l可能取得的状态创立一个状态类的子cR当pȝ的状态变化时Q系l便改变所选的子类?</p> <p>  21、STRATEGY?跟不同类型的MMU会Q要用不同的{略Q有的请电媄比较好,有的则去吃小吃效果不错,有的LvҎ漫最合适,单目的都是ؓ了得到MM的芳心,我的qMM锦囊中有好多Strategy哦?</p> <p>  {略模式Q策略模式针对一l算法,每一个算法封装到h共同接口的独立的cMQ从而得它们可以相互替换。策略模式得算法可以在不媄响到客户端的情况下发生变化。策略模式把行ؓ和环境分开。环境类负责l持和查询行为类Q各U算法在具体的策略类中提供。由于算法和环境独立开来,法的增减,修改都不会媄响到环境和客L?</p> <p>  22、TEMPLATE METHOD??看过《如何说服女生上床》这部经典文章吗Q女生从认识C床的不变的步骤分为y遇、打破僵局、展开q求、接吅R前戏、动手、爱抚、进d大步?Template method)Q但每个步骤针对不同的情况,都有不一L做法Q这p看你随机应变?具体实现)Q?</p> <p>  模板Ҏ模式Q模板方法模式准备一个抽象类Q将部分逻辑以具体方法以及具体构造子的Ş式实玎ͼ然后声明一些抽象方法来q子类实现剩余的逻辑。不同的子类可以以不同的方式实现q些抽象ҎQ从而对剩余的逻辑有不同的实现。先制定一个顶U逻辑框架Q而将逻辑的细节留l具体的子类d现?</p> <p>  23、VISITOR?情h节到了,要给每个MM送一束鲜花和一张卡片,可是每个MM送的花都要针对她个h的特点,每张卡片也要Ҏ个h的特Ҏ挑,我一个h哪搞得清楚,q是找花店老板和礼品店老板做一下VisitorQ让花店老板ҎMM的特炚w一束花Q让C品店老板也根据每个h特点选一张卡Q这样就L多了Q?</p> <p>  讉K者模式:讉K者模式的目的是封装一些施加于某种数据l构元素之上的操作。一旦这些操作需要修改的话,接受q个操作的数据结构可以保持不变。访问者模式适用于数据结构相Ҏ定的pȝQ它把数据结构和作用于结构上的操作之间的耦合解脱开Q得操作集合可以相对自q演化。访问者模式得增加新的操作变的很ҎQ就是增加一个新的访问者类。访问者模式将有关的行为集中到一个访问者对象中Q而不是分散到一个个的节点类中。当使用讉K者模式时Q要尽可能多的对象览逻辑攑֜讉K者类中,而不是放到它的子cM。访问者模式可以跨q几个类的等U结构访问属于不同的{l构的成员类 <br /> <br /></p> <img src ="http://www.tkk7.com/fastzch/aggbug/156179.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/fastzch/" target="_blank">Robin's Programming World</a> 2007-10-26 16:25 <a href="http://www.tkk7.com/fastzch/archive/2007/10/26/156179.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>QL集]目理q程l?/title><link>http://www.tkk7.com/fastzch/archive/2007/08/30/141433.html</link><dc:creator>Robin's Programming World</dc:creator><author>Robin's Programming World</author><pubDate>Thu, 30 Aug 2007 08:42:00 GMT</pubDate><guid>http://www.tkk7.com/fastzch/archive/2007/08/30/141433.html</guid><wfw:comment>http://www.tkk7.com/fastzch/comments/141433.html</wfw:comment><comments>http://www.tkk7.com/fastzch/archive/2007/08/30/141433.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/fastzch/comments/commentRss/141433.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/fastzch/services/trackbacks/141433.html</trackback:ping><description><![CDATA[q记得在2006q的PMBOK培训Ӟ每次N会问一个问题,是我们讲的那些q程属于哪一个过E组Q今天在|上H然看到有作了整理,收集过来了Q分享给大家?br /><br />出处Q?a >http://blog.csdn.net/iright/archive/2007/06/20/1659338.aspx</a><br /><br />无论采用什么方法论和体p,一个项目管理的q程往往涉及了如下这些过E组。把提纲列一下有助于我们查项目管理的遗漏Q? <div></div><div><strong>启动q程l?/strong>Q?/div><div>1制定目章程</div><div>2制定初步范围说明?/div><div><strong>规划q程l?/strong>Q?/div><div>1制定目理计划</div><div>2范围规划</div><div>3范围定义</div><div>4制作工作分解l构</div><div>5zd定义</div><div>6zd排序</div><div>7zd资源估算</div><div>8zd持箋旉估算</div><div>9q度表制?/div><div>10费用估算</div><div>11费用预算</div><div>12质量规划</div><div>13人力资源规划</div><div>14沟通规?/div><div>15风险理规划</div><div>16风险识别</div><div>17定性风险分?/div><div>18定量风险分析</div><div>19风险应对规划</div><div>20采购规划</div><div>21发包规划</div><div><strong>执行q程l?/strong></div><div>1指导与管理项目执?/div><div>2实施质量保证</div><div>3目团队l徏</div><div>4目团队</div><div>5信息发布</div><div>6询h</div><div>7卖方选择</div><div><strong>监控q程l?/strong></div><div>1监控目工作</div><div>2整体变更控制</div><div>3范围核实</div><div>4范围控制</div><div>5q度控制</div><div>6费用控制</div><div>7实施质量控制</div><div>8目团队理</div><div>9l效报告</div><div>10利害关系者管?/div><div>11风险控制</div><div>12合同理</div><div><strong>收尾q程l?/strong></div><div>1目收尾</div><div>2合同收尾</div><img src ="http://www.tkk7.com/fastzch/aggbug/141433.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/fastzch/" target="_blank">Robin's Programming World</a> 2007-08-30 16:42 <a href="http://www.tkk7.com/fastzch/archive/2007/08/30/141433.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Q{载]RUP7 之key principles http://www.tkk7.com/fastzch/archive/2007/08/30/141429.htmlRobin's Programming WorldRobin's Programming WorldThu, 30 Aug 2007 08:36:00 GMThttp://www.tkk7.com/fastzch/archive/2007/08/30/141429.htmlhttp://www.tkk7.com/fastzch/comments/141429.htmlhttp://www.tkk7.com/fastzch/archive/2007/08/30/141429.html#Feedback0http://www.tkk7.com/fastzch/comments/commentRss/141429.htmlhttp://www.tkk7.com/fastzch/services/trackbacks/141429.html    出处Q?a >http://blog.csdn.net/iright/archive/2007/01/09/1478153.aspx

首先让我们来重温一?/span> best practices Q?/span>
l         Develop Iteratively
l         Manage Requirement
l         Use Component Architectures
l         Model Visually(UML)
l         Continuously Verify Quality
l         Manage Change
做ؓ RUP 工具和过E的基础Q?/span> best practices 的媄响了业界臛_有十q。但是,时过境迁Q如今,软g开发已l成Z个关键的业务能力或者说是商业能力。因此也p发的 business-driven development 。在q样的背景下Q发布不久的 RUP7.0 当中对于 best practices q行了重新阐qͼ代之?/span> key principles Q这h适应日益发展的系l和软g开发?/span>
那么让我们来看看 key principles 都有哪些Q?/span>
l         Adapt The Process
l         Balance Competing Stakeholder Priorities
l         Collaborate Across Teams
l         Demonstrate Value Iteratively
l         Elevate Level Of Abstraction
l         Focus Continuously On Quality
那么每一key principles都是什么含意呢Q?/div>
Adapt The Process Q?/strong>
目应该有适当的过E,太大的过E和q于化的q程都是不好的。要Ҏ目的活动、控制程度、大、所处于的阶Dc团队的分布{等一pd因素来进行过E剪裁以侉K用合适的q程?/div>
q多的过E有的时候ƈ不是好事情,需要因地制宜,因ؓ它意味着更多的文档、要同步更多的模型、更多正式的评审{等Q对于一些小型的目l,成员Ҏ术非常熟悉,人员而且都坐在一起工作,q时候往往考虑使用轻量化的q程Q比如比较流行的敏捷q程。当焉着目逐步增大Q对于过E的U律性要求也会逐步升高。另外,q程需要被持箋的改q,q且q需要根据未知项的别和多少来^衡计划与估计?/div>
Balance Competing Stakeholder Priorities Q?/strong>
我没有查到这个key principle的本源,不知q利益相关方的优先U是否也从咱们中国文化中的^衡哲学中Q阴阻I有所借鉴。在目中我们常常见到的是业务需要与各个相关方可能发生的冲突Q以及客户化的开发与软g资复用所产生的矛盾?/div>
另外Q还需要不断的更新优先U列表,因ؓ随着寚w目理解的深入Q这是一个动态的q程?/div>
因此Q要做好q个法则Q进行有效的需求管理是基础。真正做好需求分析和理才可以有效的识别和排列各个需求的优先U,q好业务和客户的需求。对于开发来讲就要有一定的技术内功作为基Q具有一定的架构和封装能力,理好已有的软g资Qƈ充分了解其商业h|以便在恰当的旉和地方进行复用,既照了客户需求又复用了已有资产降低了成本?/div>
Collaborate Across Teams Q?/strong>
q个法则主要是强调整个项目范围内的沟通、协作,要通过恰当的团队组l以及有效的合作大环境徏立而生协作的土壤。最lŞ成有战斗力的团队?/div>
要实现良好的团队协作Q需要激发团队成员的斗志Q让大家都表现出自己的最佳状态。要建立起一个能够“自理”的团队Q要鼓励团队成员跨职责的协作Q当Ӟ要有一个有效的协作环境作ؓ基础Q比如工具^台、通讯q_、组l氛_Q通过对工件和dq行理来加强协作、过E和质量。另外,不要忘记ҎQ项目是需要盈利的Q这需要将商业团队、Y件团队、和执行团队q行有机的集成?/div>
Demonstrate Value Iteratively Q?/strong>
q代仍然是一个关键问题,软g开发需要采用P代的q程来更好的适应变更、得到反馈、加入新的条件、更早的降低风险q动态的调整所采用的Y件过E?/div>
q代是一个老生常谈的问题,关键的不是Ş式而是内容Q好的P代需要明进入和l束准则Q应该增量的实现用户价|q实时的攉反馈Q根据项目各方的动态状况作整。U仅仅将目从Ş式上划分成几个阶D|者release的方式其实只是加入了查点QcheckpointQ,q不是真正意义上的P代?/div>
Elevate Level Of Abstraction Q?/strong>
提升抽象层次。如果说是技术的发展使我们提升了抽象层次Q到不如说是复杂度的增加q我们不得不发展技术来提升抽象层次Q以便解军_杂的开发设计问题。现在Y仉目的复杂度越来越要求我们在早期能够Ş成一个稳定的架构Q以之成为应对变更、复用、甚x减少文化工作的基础。一个好的架构必L有弹性的、高质量的、易懂的、ƈ且是复杂度可控的。另外一点就是一个架构应该在早期q行试Q而不是在实现后才去验证?/div>
我们可以回首看看中间件、SOA{的发展Q无不是在抽象层ơ上做了大量文章。对了,q有大家q泛使用的UMLQ例子D不胜举?/div>
Focus Continuously On Quality Q?/strong>
q一条非常像best practices里面的Continuously Verify Quality。作P代的软gq程来说Q它可以提供更多的机会来度量和验证?/div>
质量的保证是需要从两个斚w努力Q一个是q程质量Q这需要徏立一个良好的Q适用的过E;另一个是软gq程产物质量Q这需要尽早的持箋的进行集成和试?/div>

]]>[攉]web.xml的细?/title><link>http://www.tkk7.com/fastzch/archive/2007/08/28/140607.html</link><dc:creator>Robin's Programming World</dc:creator><author>Robin's Programming World</author><pubDate>Tue, 28 Aug 2007 10:00:00 GMT</pubDate><guid>http://www.tkk7.com/fastzch/archive/2007/08/28/140607.html</guid><wfw:comment>http://www.tkk7.com/fastzch/comments/140607.html</wfw:comment><comments>http://www.tkk7.com/fastzch/archive/2007/08/28/140607.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/fastzch/comments/commentRss/140607.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/fastzch/services/trackbacks/140607.html</trackback:ping><description><![CDATA[ <p>web.xml的元?<br />首先注意 xml是大写敏感?/p> <p>1?web.xml的头和根元素<br />必须以一个XML头开始。这个头声明可以使用的XML版本q给出文件的字符~码?<br />DOCYTPE声明必须立即出现在此头之后。这个声明告诉服务器适用的servlet规范的版本(?.2?.3Qƈ指定理此文件其余部分内容的语法的DTD(Document Type DefinitionQ文类型定??<br />所有部|描q符文g的顶层(根)元素为web-app?br />例(U色部分是可选项Q:<br />--------------------------------------------------------------------------------------------------------------------------<br /><?xml version="1.0" encoding="UTF-8"?><br /><!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "<a ><br />   <web-app id="WebApp"><br />   </web-app><br />--------------------------------------------------------------------------------------------------------------------------<br /> 2、元?<br />以下元素几乎都是可选项Q不q要注意它们是有序的。虽然有些服务器要求宽松些,但某些服务器会拒l执行顺序不正确的web应用。所以还是按序写好</p> <p>--------------------------------------------------------------------------------------------------------------------------<br />· icon icon元素指出IDE和GUI工具用来表示Web应用的一个和两个囑փ文g的位|?<br />· display-name display-name元素提供GUI工具可能会用来标记这个特定的Web应用的一个名U?<br />· description description元素l出与此有关的说明性文本?<br />· context-param context-param元素声明应用范围内的初始化参数?<br />· filter qo器元素将一个名字与一个实现javax.servlet.Filter接口的类相关联?<br />· filter-mapping 一旦命名了一个过滤器Q就要利用filter-mapping元素把它与一个或多个servlet或JSP面相关联?<br />· listener servlet API的版?.3增加了对事g监听E序的支持,事g监听E序在徏立、修改和删除会话或servlet环境时得到通知。Listener元素指出事g监听E序cR?<br />· servlet 在向servlet或JSP面制定初始化参数或定制URLӞ必须首先命名servlet或JSP面。Servlet元素是用来完成此项d的?<br />· servlet-mapping服务器一般ؓservlet提供一个缺省的URLQ?a href="http://host/webAppPrefix/servlet/ServletName">http://host/webAppPrefix/servlet/ServletName</a>。但是,常常会更改这个URLQ以便servlet可以讉K初始化参数或更容易地处理相对URL。在更改~省URLӞ使用servlet-mapping元素?br />·session-config如果某个会话在一定时间内未被讉KQ服务器可以抛弃它以节省内存。可通过使用HttpSession的setMaxInactiveIntervalҎ明确讄单个会话对象的超时|或者可利用session-config元素制定~省时倹{?<br />· mime-mapping 如果Web应用h惛_Ҏ的文Ӟ希望能保证给他们分配特定的MIMEcdQ则mime-mapping元素提供q种保证?<br />· welcom-file-list welcome-file-list元素指示服务器在收到引用一个目录名而不是文件名的URLӞ使用哪个文g?<br />· error-page error-page元素使得在返回特定HTTP状态代码时Q或者特定类型的异常被抛出时Q能够制定将要显C的面?<br />· taglib taglib元素Ҏ记库描述W文ӞTag Libraryu Descriptor fileQ指定别名。此功能使你能够更改TLD文g的位|,而不用编辑用这些文件的JSP面?<br />· resource-env-ref resource-env-ref元素声明与资源相关的一个管理对象?<br />· resource-ref resource-ref元素声明一个资源工厂用的外部资源?<br />· security-constraint security-constraint元素制定应该保护的URL。它与login-config元素联合使用 <br />· login-config 用login-config元素来指定服务器应该怎样l试图访问受保护面的用h权。它与sercurity-constraint元素联合使用?<br />· security-role security-role元素l出安全角色的一个列表,q些角色出现在servlet元素内的security-role-ref元素的role-name子元素中。分别地声明角色可高IDE处理安全信息更ؓҎ?<br />· env-entry env-entry元素声明Web应用的环境项?<br />· ejb-ref ejb-ref元素声明一个EJB的主目录的引用?<br />· ejb-local-ref ejb-local-ref元素声明一个EJB的本C目录的应用?</p> <img src ="http://www.tkk7.com/fastzch/aggbug/140607.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/fastzch/" target="_blank">Robin's Programming World</a> 2007-08-28 18:00 <a href="http://www.tkk7.com/fastzch/archive/2007/08/28/140607.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[轉載]在IHS上配|SSLhttp://www.tkk7.com/fastzch/archive/2007/08/03/134292.htmlRobin's Programming WorldRobin's Programming WorldFri, 03 Aug 2007 09:38:00 GMThttp://www.tkk7.com/fastzch/archive/2007/08/03/134292.htmlhttp://www.tkk7.com/fastzch/comments/134292.htmlhttp://www.tkk7.com/fastzch/archive/2007/08/03/134292.html#Feedback0http://www.tkk7.com/fastzch/comments/commentRss/134292.htmlhttp://www.tkk7.com/fastzch/services/trackbacks/134292.html在網上看到兩不錯的手記,覺得有用,轉來,有需要的朋友們可以n?

在IHS上配|SSL
原文地址: http://cdalong.spaces.live.com/blog/cns!127ab823c1bd7f1f!168.entry

之前一直都没做q这斚w的配|,但是觉得说不定什么时候用得着Q就问了配过的同事,自己也在|上找了些资料了解了大概的过E。但是大部分都没有写明是在IHS的哪个版本上作的Q于是想试试在IHS61上面是不是也是同L做法。参考的资料包括Q?br />1.IHS User's Guide中的Chapter 5中的securing communications
2.WebSphere Application Server V6.1 Security Handbook(sg246316).pdf中的7.2?.3
其中7.2介绍了Browser和IHS的SSL配置Q也是我试验的内容;7.3讲的是IHS plugin和WAS的SSL配置?br />3.WebSphere Security Fundamentals(redp3944).pdf
W记本上本来有一个WAS61的环境,于是装上IHS和plugin开始试验。可能是太久没有用IHS了,都忘C怎样IHS加到DM的console中进行管理。一开始以为就是把webserver的定义徏h可以了Q一启动׃生了一个FFDCQ打开一看说是没扑ֈwebserver1的定义,详细信息如下Q?br />------Start of DE processing------ = [07-1-26 15:48:29:228 CST] , key = javax.management.MBeanException com.ibm.ws.management.AdminServiceImpl.invoke 679
Exception = javax.management.MBeanException
Source = com.ibm.ws.management.AdminServiceImpl.invoke
probeid = 679
Stack Dump = javax.management.MBeanException: Exception thrown in RequiredModelMBean while trying to invoke operation launchProcess
 at javax.management.modelmbean.RequiredModelMBean.invokeMethod(RequiredModelMBean.java:1116)
 。。?br />Caused by: com.ibm.websphere.management.exception.AdminException: Server, webserver1, not found.
 。。?br />H然记v以前做的时候好像是要运行一个IHS安装q程中自q成的脚本的,试试看。在PLUGIN_HOME\bin扑ֈconfigurewebserver1.bat拯至DM_PROFILE\bin直接执行Qwebserver1的启动停止都OK了?br />接下来开始在本次试验的主要工作:
1、用ikeyman生成CMS key database fileQ虽然好像除了CMS外还有其他的cd但是好像看到某本redbook上说了IHS只能使用CMS的。创Zmykey.kdb后再l运行IHS的机器发一个证书,直接在ikeyman中新{v证书可以了Q创建的证书会出现在个h证书列表中,最后不要忘了{储密码(Stash the password to a fileQ?
ihs_610.pdf中描q如下:
Create a new key database as follows:
1. Start the IKEYMAN user interface. Refer to Starting the Key Management utility for platform-specific instructions.
2. Click key database file from the main user interface, then click New. Select CMS for the Key database type. IBM HTTP Server does not support database types other than CMS.
3. Enter your password in the Password Prompt dialog box, and confirm the password. Select Stash the password to a file. Click OK. The new key database should display in the IKEYMAN utility with default signer certificates. Ensure that there is a functional, non-expiring signer certificate for each of your personal certificates.
Creating a self-signed certificate
It usually takes two to three weeks to get a certificate from a well known certificate authority (CA). While waiting for a certificate to be issued, use IKEYMAN to create a self-signed server certificate to enable SSL sessions between clients and the server. Use this procedure if you act as your own CA for a private Web network. Complete the following steps to create a self-signed certificate:
1. If you have not created the key database, see Creating a new key database for instructions.
2. Start the IKEYMAN user interface.
3. Click Key Database File from the main UI, and then click Open.
4. Enter your key database name in the Open dialog box, or click the key.kdb file, if you use the default. Click OK.
5. In the Password Prompt dialog box, enter your correct password and click OK.
6. Click Personal Certificates in the Key Database content frame, and click the New Self-Signed radio button.
7. Enter the following information in the Password Prompt dialog box: v Key label: Enter a descriptive comment to identify the key and certificate in the database.
v Key size: Choose your level of encryptions from the drop-down menu.
v Common Name: Enter the fully qualified host name of the Web server as the common name. Example: www.myserver.com.
v Organization Name: Enter your organization name.
v Optional: Organization Unit v Optional: Locality
v Optional: State/Province
v Optional: Zip code
v Country: Enter a country code. Specify at least two characters. Example: US Certificate request file name, or use the default name.
v Validity Period
8. Click OK.
其实在生产环境中应该是创建完key database后将CA发的证书Q如*.cerQ导入,自己做试验的话自{一个就可以了,q不影响配置和实现?br />2、修改http.conf?br />以下是我在http.conf中增加的Q?br /># SSL config
LoadModule ibm_ssl_module modules/mod_ibm_ssl.so
<IfModule mod_ibm_ssl.c>
 Listen 443
 <VirtualHost *:443>
  SSLEnable
 </VirtualHost>
</IfModule>
SSLDisable
KeyFile "C:/IBM/HTTPServer/bin/mykey.kdb"
一开始看到IBM中国的论坛上说NT环境的话load一个XXX.dllQ但是打开IHS_HOME\modules看到了一大堆的soQ而且原来的http.conf中也load了不soQ找redbook上写的应该没错。改完保存重新启动IHSQ一切OK?br />下面开始验证,拿snoop来试一试吧。打开http://...:9080/snoopQ显C正常。试?a href="http://.../snoop">http://.../snoopQ等了半天没出来。troubleshooting的时间到了,很明显request没有被plugin转发lWASQ重新生成插件看看。在DM console中找到“环?-更新全局 Web 服务器插仉|”,更新完之后原来http.conf中的WebSpherePluginConfig指向的文件ƈ没有更新Q难道是插g位置不对Q修改ؓDM_HOME\config\cells\plugin-cfg.xmlQ这回IHSd新的插g了,但是老觉得“更新全局 Web 服务器插仉|”中的全局好像大对劌Ӏ搞了半天没扑֯地方Q更新webserver1的插件应该是在“服务器--Web服务器”中的这回应该没错了Q再试还是老样子。突然想h之前做过的另一个试验给server1加上?0侦听Q动手把IHSҎ81。修改了Listen 0.0.0.0:81和ServerName szd610-286.boshi.com.cn:81两行。奇怪的是原来IHS占着80Qserver1启动时也不会报错。重起webserver1和server1?0?1都正常启动了Qhttp://...:81/snoop和http://.../snoop讉K正常Q访问https://.../snoop出来两个安全警报Q确定后l于看到了snoop?br />

IHS虚拟LSSL配置
原文地址: http://blog.csdn.net/panda0083/archive/2007/06/06/1640890.aspx

׃websphere 的经典模式是静态页面,囄与动态页?分离Q所以经怼遇到虚拟L配置的问题?/p>

常规的虚拟主机配|与apache的虚拟主机配|一样只需配置virual host标签Q但是如果遇C个虚拟主机都需要SSL通讯该如何配|呢Q?/p>

下面l出配置Ҏ

其实没有大家惛_那么复杂Q只需要针Ҏ个虚拟主机对应得域名配置一?43的虚拟主机即可?/p>

1Q用ikeyman生成密钥

2Q在httpd.conf中加?/p>

NameVirtualHost 10.4.33.1:80
 <VirtualHost 10.4.33.1:80>
    DocumentRoot path1  
    ServerName domain1.cn
 </VirtualHost>
<VirtualHost 10.4.33.51:80>
    DocumentRoot  path2

    ServerName domain2.cn
    </VirtualHost>

<IfModule mod_ibm_ssl.c>
 Listen 443
 NameVirtualHost 10.4.33.51:443
 <VirtualHost 10.4.33.51:443>
 DocumentRoot path1
  ServerName domain1.cn
 SSLEnable
 </VirtualHost>
 <VirtualHost 10.4.33.51:443>
 DocumentRoot path2
  ServerName domain2.cn
 SSLEnable
 </VirtualHost>

 </IfModule>
 SSLDisable
 KeyFile "/opt/IBMIHS/bin/key.kdb"



]]>[轉載]session详解http://www.tkk7.com/fastzch/archive/2007/01/16/94308.htmlRobin's Programming WorldRobin's Programming WorldTue, 16 Jan 2007 13:44:00 GMThttp://www.tkk7.com/fastzch/archive/2007/01/16/94308.htmlhttp://www.tkk7.com/fastzch/comments/94308.htmlhttp://www.tkk7.com/fastzch/archive/2007/01/16/94308.html#Feedback3http://www.tkk7.com/fastzch/comments/commentRss/94308.htmlhttp://www.tkk7.com/fastzch/services/trackbacks/94308.html 這篇文章Session的講解可以說是十分到位,怿看過的h肯定會受益匪淺,轉來與大家共享?/em>

 

一、术语session

 
在我的经验里Qsessionq个词被滥用的程度大概仅ơ于transactionQ更加有的是transaction与session在某些语境下的含义是相同的?

    sessionQ中文经常翻译ؓ会话Q其本来的含义是指有始有l的一pd动作/消息Q比如打电话时从拿v电话拨号到挂断电话这中间的一pdq程可以UCZ?session.有时候我们可以看到这L话“在一个浏览器会话期间Q……”,q里的会话一词用的就是其本义Q是指从一个浏览器H口打开到关闭这个期?①。最混ؕ的是“用P客户端)在一ơ会话期间”这样一句话Q它可能指用L一pd动作Q一般情况下是同某个具体目的相关的一pd动作Q比如从d到选购商品到结账登样一个网上购物的q程Q有时候也被称Z个transactionQ,然而有时候也可能仅仅是指一ơ连接,也有可能是指含义①,其中的差别只能靠上下文来推断②?/p>

    然而当session一词与|络协议相关联时Q它又往往隐含了“面向连接”和/或“保持状态”这样两个含义, “面向连接”指的是在通信双方在通信之前要先建立一个通信的渠道,比如打电话,直到Ҏ接了电话通信才能开始,与此相对的是写信Q在你把信发出去的时候你q不能确认对方的地址是否正确Q通信渠道不一定能建立Q但对发信h来说Q通信已经开始了。“保持状态”则是指通信的一方能够把一pd的消息关联v来,使得消息之间可以互相依赖Q比如一个服务员能够认出再次光的老顾客ƈ且记得上ơ这个顾客还Ơ店里一块钱。这一cȝ例子有“一个TCP session”或?“一个POP3 session”③?/p>

    而到了web服务器蓬勃发展的时代Qsession在web开发语境下的语义又有了新的扩展Q它的含义是指一cȝ来在客户端与服务器之间保持状态的解决Ҏ④。有时候session也用来指q种解决Ҏ的存储结构,如“把xxx保存在session 里”⑤。由于各U用于web开发的语言在一定程度上都提供了对这U解x案的支持Q所以在某种特定语言的语境下Qsession也被用来指代该语a的解x案,比如l常把Java里提供的javax.servlet.http.HttpSessionUCؓsession⑥?/p>

    鉴于q种混ؕ已不可改变,本文中session一词的q用也会Ҏ上下文有不同的含义,请大家注意分辨?/p>

    在本文中Q用中文“浏览器会话期间”来表达含义①,使用“session机制”来表达含义④,使用“session”表辑֐义⑤Q用具体的“HttpSession”来表达含义?/p>

    二、HTTP协议与状?br />
 
保持HTTP 协议本n是无状态的Q这与HTTP协议本来的目的是相符的,客户端只需要简单的向服务器h下蝲某些文gQ无论是客户端还是服务器都没有必要纪录彼此过ȝ行ؓQ每一ơ请求之间都是独立的Q好比一个顾客和一个自动售货机或者一个普通的Q非会员Ӟ大卖Z间的关系一栗?/p>

    然而聪明(或者贪心?Q的Z很快发现如果能够提供一些按需生成的动态信息会使web变得更加有用Q就像给有线电视加上Ҏ功能一栗这U需求一斚wqHTML逐步d了表单、脚本、DOM{客L行ؓQ另一斚w在服务器端则出现了CGI规范以响应客L的动态请求,作ؓ传输载体的HTTP协议也添加了文g上蝲?cookieq些Ҏ。其中cookie的作用就是ؓ了解决HTTP协议无状态的~陷所作出的努力。至于后来出现的session机制则是又一U在客户端与服务器之间保持状态的解决Ҏ?/p>

    让我们用几个例子来描qC下cookie和session机制之间的区别与联系。笔者曾l常ȝ一家咖啡店有喝5杯咖啡免费赠一杯咖啡的优惠Q然而一ơ性消?杯咖啡的Z微乎其微Q这时就需要某U方式来U录某位֮的消Ҏ量。想象一下其实也无外乎下面的几种ҎQ?、该店的店员很厉宻I能记住每位顾客的消费数量Q只要顾客一走进咖啡店,店员q道该怎么对待了。这U做法就是协议本w支持状态?/p>

    2、发l顾客一张卡片,上面记录着消费的数量,一般还有个有效期限。每ơ消ҎQ如果顾客出C张卡片,则此ơ消费就会与以前或以后的消费相联pv来。这U做法就是在客户端保持状态?/p>

    3、发l顾客一张会员卡Q除了卡号之外什么信息也不纪录,每次消费Ӟ如果֮出示该卡片,则店员在店里的纪录本上找到这个卡号对应的U录d一些消费信息。这U做法就是在服务器端保持状态?/p>

    ׃HTTP协议是无状态的Q而出于种U考虑也不希望使之成ؓ有状态的Q因此,后面两种Ҏ成为现实的选择。具体来说cookie机制采用的是在客L保持状态的ҎQ而session机制采用的是在服务器端保持状态的Ҏ。同时我们也看到Q由于采用服务器端保持状态的Ҏ在客L也需要保存一个标识,所以session机制可能需要借助于cookie机制来达C存标识的目的Q但实际上它q有其他选择?/p>

    三、理解cookie机制

 
cookie机制的基本原理就如上面的例子一L单,但是q有几个问题需要解冻I“会员卡”如何分发:“会员卡”的内容Q以及客户如何用“会员卡”?/p>

    正统的cookie分发是通过扩展HTTP协议来实现的Q服务器通过在HTTP的响应头中加上一行特D的指示以提C浏览器按照指示生成相应的cookie.然而纯_的客户端脚本如JavaScript或者VBScript也可以生成cookie.

    而cookie 的用是由浏览器按照一定的原则在后台自动发送给服务器的。浏览器查所有存储的cookieQ如果某个cookie所声明的作用范围大于等于将要请求的资源所在的位置Q则把该cookie附在h资源的HTTPh头上发送给服务器。意思是麦当劳的会员卡只能在麦当劳的店里出示Q如果某家分店还发行了自q会员卡,那么q这家店的时候除了要出示麦当劳的会员卡,q要出示q家店的会员卡?/p>

    cookie的内容主要包括:名字Q|q期旉Q\径和域?/p>

    其中域可以指定某一个域比如。google.comQ相当于d招牌Q比如宝z公司,也可以指定一个域下的具体某台机器比如www.google.com或者froogle.google.comQ可以用飘柔来做比?/p>

    路径是跟在域名后面的URL路径Q比?或?foo{等Q可以用某飘柔专柜做比?/p>

    路径与域合在一起就构成了cookie的作用范围?/p>

    如果不设|过期时_则表C个cookie的生命期为浏览器会话期间Q只要关闭浏览器H口Qcookie消׃。这U生命期为浏览器会话期的 cookie被称Z话cookie.会话cookie一般不存储在硬盘上而是保存在内存里Q当然这U行为ƈ不是规范规定的。如果设|了q期旉Q浏览器׃把cookie保存到硬盘上Q关闭后再次打开览器,q些cookie仍然有效直到过讑֮的过期时间?/p>

    存储在硬盘上的cookie 可以在不同的览器进E间׃nQ比如两个IEH口。而对于保存在内存里的cookieQ不同的览器有不同的处理方式。对于IEQ在一个打开的窗口上?Ctrl-NQ或者从文g菜单Q打开的窗口可以与原窗口共享,而用其他方式新开的IEq程则不能共享已l打开的窗口的内存cookieQ对?Mozilla Firefox0.8Q所有的q程和标{N都可以共享同Lcookie.一般来说是用javascript的window.open打开的窗口会与原H口׃n内存cookie.览器对于会话cookie的这U只认cookie不认人的处理方式l常l采用session机制的web应用E序开发者造成很大的困扰?/p>

    下面是一个goolge讄cookie的响应头的例子HTTP/1.1 302 FoundLocationQ?http://www.google.com/intl/zh-CN/Set-CookieQ?PREF=ID=0565f77e132de138QNW=1QTM=1098082649QLM=1098082649QS=KaeaCFPo49RiA_d8Q?expires=SunQ?17-Jan-2038 19Q?4Q?7 GMTQ?path=/Q?domain=.google.comContent-TypeQ?text/html

    q是使用HTTPLookq个HTTP Sniffer软g来俘LHTTP通讯U录的一部分

    览器在再次讉Kgoolge的资源时自动向外发送cookie

    用Firefox可以很容易的观察现有的cookie的g用HTTPLook配合Firefox可以很容易的理解cookie的工作原理?/p>

    IE也可以设|在接受cookie前询?/p>

    四、理解session机制

    session机制是一U服务器端的机制Q服务器使用一U类g散列表的l构Q也可能是使用散列表)来保存信息?/p>

    当程序需要ؓ某个客户端的h创徏一个session的时候,服务器首先检查这个客L的请求里是否已包含了一个session标识 - UCؓ session idQ如果已包含一个session id则说明以前已lؓ此客L创徏qsessionQ服务器按照session id把这?session索出来用(如果索不刎ͼ可能会新Z个)Q如果客Lh不包含session idQ则为此客户端创Z个sessionq且生成一个与此session相关联的session idQsession id的值应该是一个既不会重复Q又不容易被扑ֈ规律以仿造的字符Ԍq个 session id被在本ơ响应中q回l客L保存?/p>

    保存q个session id的方式可以采用cookieQ这样在交互q程中浏览器可以自动的按照规则把q个标识发挥l服务器。一般这个cookie的名字都是类gSEEESIONIDQ而。比如weblogic对于web应用E序生成的cookieQJSESSIONID= ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBngQ?145788764Q它的名字就?JSESSIONID.

    ׃cookie可以被h为的止Q必L其他机制以便在cookie被禁止时仍然能够把session id传递回服务器。经常被使用的一U技术叫做URL重写Q就是把session id直接附加在URL路径的后面,附加方式也有两种Q一U是作ؓURL路径的附加信息,表现形式?a href="http://…?xxx">http://…?xxxQjsessionid= ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBngQ?145788764另一U是作ؓ查询字符串附加在URL后面Q表现Ş式ؓhttp://…?xxxQjsessionid=ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBngQ?145788764q两U方式对于用h说是没有区别的,只是服务器在解析的时候处理的方式不同Q采用第一U方式也有利于把session id的信息和正常E序参数区分开来?/p>

    Z在整个交互过E中始终保持状态,必d每个客户端可能请求的路径后面都包含这个session id.

    另一U技术叫做表单隐藏字Dc就是服务器会自动修改表单,d一个隐藏字D,以便在表单提交时能够把session id传递回服务器。比如下面的表单<form name="testform" action="/xxx"><input type="text"></form>

    在被传递给客户端之前将被改写成<form name="testform" action="/xxx"><input type="hidden" name="jsessionid" value="ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBngQ?145788764"><input type="text"></form>

    q种技术现在已较少应用Q笔者接触过的很古老的iPlanet6QSunONE应用服务器的前nQ就使用了这U技术?/p>

    实际上这U技术可以简单的用对action应用URL重写来代ѝ?/p>

    在谈论session机制的时候,常常听到q样一U误解“只要关闭浏览器Qsession消׃”。其实可以想象一下会员卡的例子,除非֮d对店家提出销卡,否则店家l对不会L删除֮的资料。对session来说也是一LQ除非程序通知服务器删除一个sessionQ否则服务器会一直保留,E序一般都是在用户做log off的时候发个指令去删除session.然而浏览器从来不会d在关闭之前通知服务器它要关闭Q因此服务器Ҏ不会有机会知道浏览器已经关闭Q之所以会有这U错觉,是大部分session机制都用会话cookie来保存session idQ而关闭浏览器后这?session id消׃Q再ơ连接服务器时也无法找到原来的session.如果服务器设|的cookie被保存到盘上,或者用某U手D|写浏览器发出的HTTPh_把原来的session id发送给服务器,则再ơ打开览器仍然能够找到原来的session.

    恰恰是由于关闭浏览器不会Dsession被删除,q服务器ؓseesion讄了一个失效时_当距dL上一ơ用session的时间超q这个失效时间时Q服务器可以认为客L已经停止了活动,才会把session删除以节省存储空间?/p>

    五、理解javax.servlet.http.HttpSession

 
HttpSession是Javaq_对session机制的实现规范,因ؓ它仅仅是个接口,具体到每个web应用服务器的提供商,除了对规范支持之外,仍然会有一些规范里没有规定的细微差异。这里我们以BEA的Weblogic Server8.1作ؓ例子来演C?/p>

    首先QWeblogic Server提供了一pd的参数来控制它的HttpSession的实玎ͼ包括使用cookie的开关选项Q用URL重写的开关选项Qsession持久化的讄Qsession失效旉的设|,以及针对cookie的各U设|,比如讄cookie的名字、\径、域Q?cookie的生存时间等?/p>

    一般情况下Qsession都是存储在内存里Q当服务器进E被停止或者重启的时候,内存里的session也会被清I,如果讄了session的持久化Ҏ,服务器就会把session保存到硬盘上Q当服务器进E重新启动或q些信息能够被再次使用Q?Weblogic Server支持的持久性方式包括文件、数据库、客Lcookie保存和复制?/p>

    复制严格说来不算持久化保存,因ؓsession实际上还是保存在内存里,不过同样的信息被复制到各个cluster内的服务器进E中Q这样即使某个服务器q程停止工作也仍然可以从其他q程中取得session.

    cookie生存旉的设|则会媄响浏览器生成的cookie是否是一个会话cookie.默认是用会话cookie.有兴的可以用它来试验我们在W四节里提到的那个误解?/p>

    cookie的\径对于web应用E序来说是一个非帔R要的选项QWeblogic Server对这个选项的默认处理方式得它与其他服务器有明昄区别。后面我们会专题讨论?/p>

    关于session的设|参考[5] http://e-docs.bea.com/wls/docs70/webapp/weblogic_xml.html#1036869

    六、HttpSession常见问题Q在本小节中session的含义ؓ⑤和⑥的混合Q?/p>

    1、session在何时被创徏一个常见的误解是以为session在有客户端访问时p创徏Q然而事实是直到某server端程序调?HttpServletRequest.getSessionQtrueQ这L语句时才被创建,注意如果JSP没有昄的?<% @page session="false"%> 关闭sessionQ则JSP文g在编译成Servlet时将会自动加上这样一条语?HttpSession session = HttpServletRequest.getSessionQtrueQ;q也是JSP中隐含的 session对象的来历?/p>

    ׃session会消耗内存资源,因此Q如果不打算使用sessionQ应该在所有的JSP中关闭它?/p>

    2、session何时被删除综合前面的讨论Qsession在下列情况下被删除a.E序调用HttpSession.invalidateQ)Q或b.距离上一ơ收到客L发送的session id旉间隔过了session的超时设|;或c.服务器进E被停止Q非持久sessionQ?/p>

    3、如何做到在览器关闭时删除session严格的讲Q做不到q一炏V可以做一点努力的办法是在所有的客户端页面里使用javascript代码window.oncolose来监视浏览器的关闭动作,然后向服务器发送一个请求来删除session.但是对于览器崩溃或者强行杀死进E这些非常规手段仍然无能为力?/p>

    4、有个HttpSessionListener是怎么回事你可以创Llistenerȝ控session的创建和销毁事Ӟ使得在发生这L事g时你可以做一些相应的工作。注意是session的创建和销毁动作触发listenerQ而不是相反。类似的与HttpSession有关的listenerq有 HttpSessionBindingListenerQHttpSessionActivationListener?HttpSessionAttributeListener.

    5、存攑֜session中的对象必须是可序列化的吗不是必需的。要求对象可序列化只是ؓ了session能够在集中被复制或者能够持久保存或者在必要时server能够暂时把session交换出内存。在 Weblogic Server的session中放|一个不可序列化的对象在控制C会收C个警告。我所用过的某个iPlanet版本如果 session中有不可序列化的对象Q在session销毁时会有一个ExceptionQ很奇怪?/p>

    6、如何才能正的应付客户端禁止cookie的可能性对所有的URL使用URL重写Q包括超链接Qform的actionQ和重定向的URLQ具体做法参见[6] http://e-docs.bea.com/wls/docs70/webapp/sessions.html#100770

    7、开两个览器窗口访问应用程序会使用同一个sessionq是不同的session参见W三节对cookie的讨论,对session来说是只认id不认人,因此不同的浏览器Q不同的H口打开方式以及不同的cookie存储方式都会对这个问题的{案有媄响?/p>

    8、如何防止用h开两个览器窗口操作导致的session混ؕq个问题与防止表单多ơ提交是cM的,可以通过讄客户端的令牌来解冟뀂就是在服务器每ơ生成一个不同的idq回l客LQ同时保存在session里,客户端提交表单时必须把这个id也返回服务器Q程序首先比较返回的id与保存在session里的值是否一_如果不一致则说明本次操作已经被提交过了。可以参看《J2EE核心模式》关于表C层模式的部分。需要注意的是对于用javascript window.open打开的窗口,一般不讄q个idQ或者用单独的idQ以防主H口无法操作Q徏议不要再window.open打开的窗口里做修Ҏ作,q样可以不用设|?/p>

    9、ؓ什么在Weblogic Server中改变session的值后要重新调用一ơsession.setValue做这个动作主要是Z在集环境中提示Weblogic Server session中的值发生了改变Q需要向其他服务器进E复制新的session倹{?/p>

    10、ؓ什么session不见了排除session正常失效的因素之外,服务器本w的可能性应该是微乎其微的,虽然W者在iPlanet6SP1加若q补丁的Solaris版本上倒也遇到q;览器插件的可能性次之,W者也遇到q?721插g造成的问题;理论上防火墙或者代理服务器在cookie处理上也有可能会出现问题?/p>

    出现q一问题的大部分原因都是E序的错误,最常见的就是在一个应用程序中去访问另外一个应用程序。我们在下一节讨个问题?/p>

    七、跨应用E序的session׃n

    常常有这L情况Q一个大目被分割成若干项目开发,Z能够互不q扰Q要求每个小目作ؓ一个单独的web应用E序开发,可是C最后突然发现某几个项目之间需要共享一些信息,或者想使用session来实现SSOQsingle sign onQ,在session中保存login的用户信息,最自然的要求是应用E序间能够访问彼此的session.

    然而按照Servlet规范Qsession的作用范围应该仅仅限于当前应用程序下Q不同的应用E序之间是不能够互相讉KҎ的session的。各个应用服务器从实际效果上都遵守了q一规范Q但是实现的l节却可能各有不同,因此解决跨应用程序session׃n的方法也各不相同?/p>

    首先来看一下Tomcat是如何实现web应用E序之间session的隔ȝQ从 Tomcat讄的cookie路径来看Q它对不同的应用E序讄的cookie路径是不同的Q这样不同的应用E序所用的session id是不同的Q因此即使在同一个浏览器H口里访问不同的应用E序Q发送给服务器的session id也可以是不同的?/p>

    Ҏq个Ҏ,我们可以推测Tomcat中session的内存结构大致如下?/p>

    W者以前用q的iPlanet也采用的是同L方式Q估计SunONE与iPlanet之间不会有太大的差别。对于这U方式的服务器,解决的思\很简单,实际实行h也不难。要么让所有的应用E序׃n一个session idQ要么让应用E序能够获得其他应用E序的session id.

    iPlanet中有一U很单的Ҏ来实现共享一个session idQ那是把各个应用程序的cookie路径都设?Q实际上应该?NASAppQ对于应用程序来讲它的作用相当于根)?/p>

    <session-info><path>/NASApp</path></session-info>

    需要注意的是,操作׃n的session应该遵@一些编E约定,比如在session attribute名字的前面加上应用程序的前缀Q?setAttributeQ?name"Q?"neo"Q变成setAttributeQ?app1.name"Q?"neo"Q,以防止命名空间冲H,D互相覆盖?/p>

    在Tomcat中则没有q么方便的选择。在Tomcat版本3上,我们q可以有一些手D|׃nsession.对于版本4以上的TomcatQ目前笔者尚未发现简单的办法。只能借助于第三方的力量,比如使用文g、数据库、JMS或者客LcookieQURL参数或者隐藏字D늭手段?/p>

    我们再看一下Weblogic Server是如何处理session的?/p>

    从截屏画面上可以看到Weblogic ServerҎ有的应用E序讄的cookie的\径都?Q这是不是意味着在Weblogic Server中默认的可以共享session了呢Q然而一个小实验卛_证明即不同的应用程序用的是同一个sessionQ各个应用程序仍然只能访问自己所讄的那些属性。这说明Weblogic Server中的session的内存结构可能如?/p>

    对于q样一U结构,?session机制本n上来解决session׃n的问题应该是不可能的了。除了借助于第三方的力量,比如使用文g、数据库、JMS或者客L cookieQURL参数或者隐藏字D늭手段Q还有一U较为方便的做法Q就是把一个应用程序的session攑ֈServletContext中,q样另外一个应用程序就可以从ServletContext中取得前一个应用程序的引用。示例代码如下,

    应用E序A context.setAttributeQ?appA"Q?sessionQ;

    应用E序B contextA = context.getContextQ?/appA"Q;HttpSession sessionA = QHttpSessionQcontextA.getAttributeQ?appA"Q;

    值得注意的是q种用法不可ULQ因为根据ServletContext的JavaDocQ应用服务器可以处于安全的原因对于context.getContextQ?/appA"Q;q回I|以上做法在Weblogic Server 8.1中通过?/p>

    那么Weblogic ServerZ么要把所有的应用E序的cookie路径都设?呢?原来是ؓ了SSOQ凡是共享这个session的应用程序都可以׃n认证的信息。一个简单的实验可以证明这一点,修改首先d的那个应用程序的描述Wweblogic.xmlQ把cookie路径修改?appA 讉K另外一个应用程序会重新要求dQ即使是反过来,先访问cookie路径?的应用程序,再访问修改过路径的这个,虽然不再提示dQ但是登录的用户信息也会丢失。注意做q个实验时认证方式应该用FORMQ因为浏览器和web服务器对basic认证方式有其他的处理方式Q第二次h的认证不是通过 session来实现的。具体请参看[7] secion 14.8 AuthorizationQ你可以修改所附的CZE序来做q些试验?/p>

    八、ȝ

 
session机制本nq不复杂Q然而其实现和配|上的灵zL却使得具体情况复杂多变。这也要求我们不能把仅仅某一ơ的l验或者某一个浏览器Q服务器的经验当作普遍适用的经验,而是始终需要具体情况具体分析?/p>

    摘要Q虽然session机制在web应用E序中被采用已经很长旉了,但是仍然有很多h不清楚session机制的本质,以至不能正确的应用这一技术。本文将详细讨论session的工作机制ƈ且对在Java web application中应用session机制时常见的问题作出解答?/p>



]]>
[轉載]Eclipse 3.0 RC2 热键?(中英对照解说版,Default)http://www.tkk7.com/fastzch/archive/2006/12/04/85430.htmlRobin's Programming WorldRobin's Programming WorldMon, 04 Dec 2006 10:00:00 GMThttp://www.tkk7.com/fastzch/archive/2006/12/04/85430.htmlhttp://www.tkk7.com/fastzch/comments/85430.htmlhttp://www.tkk7.com/fastzch/archive/2006/12/04/85430.html#Feedback0http://www.tkk7.com/fastzch/comments/commentRss/85430.htmlhttp://www.tkk7.com/fastzch/services/trackbacks/85430.html蓝色标注热键为Eclipse预设的标准热键,I?br />白即表示Eclipseq未对该目讄键;U色标注选项表示常用或重要热
键;teal色标注选项表示可以启动该热键的范围?br />◎热键修改处Q?br />Window->Preference->Workbench->Keys
◎FAQQ如果没讄键的功能要如何启动?
Ҏ一.自己增设热键?br />Ҏ?热键讑֮里的选项Q其实菜单大部分都有Q可以由菜单中直接点选?br />◎给所有在看这文章的朋友Q?br />T55555ZJavaWorld周年庆把DG2拿出来了Qؓ了效法他的精,所以我军_?br />我的W一ơ也贡献出来Q加入JavaWorldq半q来我第一ơ打q么长的文章...XD
。本来打?.0 Release出来后再整理热键表,?.0 RCpd架构已经于q稳Q?br />Release出来也不会有多大的变动,所以就先整理了。热键表所列的功能Q只要您
全部实际操作q一遍,会为您在操作Eclipse上,带来莫大的帮助?br />
-------------------------------------------------------------------------------------------------------------

Compare - 比较Copy All from Left to Right (由左向右复制全部)
Copy All from Right to Left (由右向左复制全部)
Copy from Left to Right (由左向右复制)
Copy from Right to Left (由右向左复制)
Select Next Change (选取下一个变?
Select Previous Change (选取上一个变?

CVS - Concurrent Versions System (版本控制pȝ)
Checkout from CVS (由CVS?

Edit - ~辑Add Bookmark (新增书签)
Add Task (新增作业)
Collapse (E序代码折P) Q?Ctrl+键盘x数字区的'-'
Content Assist (内容辅助 - Code Templetes启动)Q?/font>Alt+/ ?Ctrl+Space
Context Information (内容信息) Q?Alt+Q??ALT+Shift+Q或 Ctrl+Shift+Space
Copy (复制选取文字到OS剪脓? Q?font color="#0000ff"> Ctrl+C

Custom Encoding (自订~码)
Cut (剪下选取文字q加至OS剪脓? Q?Ctrl+X
Default Encoding (使用预设~码)
Delete (删除选取的文? Q?font color="#0000ff"> Delete

Expand (E序代码展开) Q?Ctrl+键盘x数字区的'+'
Expand All (E序代码全部展开) Q?Ctrl+键盘x数字区的'*'
Find and Replace (Lq取代文? Q?Ctrl+F
Find Next (L下一个项? Q?Ctrl+K
Find Previous (L上一个项? Q?Ctrl+Shift+K
Incremental Find (渐进式寻? Q?Ctrl+J
Incremental Find Reverse (逆向渐进式寻? Q?Ctrl+Shift+J
ISO-8859-1 Encoding (编码变更ؓ ISO-8859-1)
Paste (从OS剪脓脓上文? Q?font color="#0000ff"> Ctrl+V
Quick Diff Toggle (QuickDiff 开?关闭) Q?Ctrl+Shift+Q
Quick Fix (快速套件修? Q?Ctrl+1
Redo (重做上一ơ作? Q?Ctrl+Y
Restore Last Selection (恢复最后选取) Q?font color="#0000ff"> Alt+Shift+方向??
Revert to Saved (回复臛_储存)
Select All (选择全部文字) Q?Ctrl+A
Select Enclosing Element Q?
(选取含括的元? Alt+Shift+方向??
Select Next Element (选取下一个元? Q?Alt+Shift+方向??
Select Previous Element (选取上一个元? Q?Alt+Shift+方向??
Shift Left (该行文字往左移动一个羃?
Shift Right (该行文字往右移动一个羃?
Show Tooltip Description (在光标位|显C元素的工具提示说明) Q?font color="#0000ff"> F2
System Encoding (编码变更ؓpȝ~码)
Toggle Folding (E序代码折P、展开功能 开?关闭) Q?/font>Ctrl+键盘x数字区的'/'
Toggle Insert Model (Smart Insert模式 开?关闭) Q?font color="#0000ff"> Ctrl+Shift+Insert

Undo (复原前次作业) Q?/font>Ctrl+Z
US ASCII Encoding (编码变更ؓ ASCII)
UTF-16BE Encoding (编码变更ؓ UTF-16BE)
UTF-16 Encoding (编码变更ؓ UTF-16)
UTF-16LE Encoding (编码变更ؓ UTF-16LE)
UTF-8 Encoding (编码变更ؓ UTF-8)

File - 档案Close (关闭案) Q?Ctrl+W ?Ctrl+F4
Close All (关闭全部案) Q?font color="#0000ff"> Ctrl+Shift+W ?Ctrl+Shift+F4

Exit (关闭屏幕最上层H口) Q?Alt+F4 <In Dialogs and Windows>
(注:3.0RC2q没预设q组热键Q但仍然可以使用?

Export (开启汇?
Import (开启汇入菜?
Move (Ud案)
New (开启案徏立精灵Wizard) Q?Ctrl+N
New menu (昄File->New选单) Q?ALT+Shift+N
Open External File (开启外部档?
Open Workspace (开启Workspace讑֮H口)
Print (打印档案) Q?Ctrl+P
Properties (org.eclipse.ui.file.properties) (昄案内容) Q?Alt+Enter
Refresh (重新整理) Q?font color="#0000ff"> F5
Rename (重新命名) Q?F2
Revert (回复臛_储存)
Save (储存案) Q?/font>Ctrl+S
Save All (储存全部案) Q?Ctrl+Shift+S
Save As (另存新檔)
Help - 说明About (开启关于对话框)
Help Contents (开启Eclipse说明文g)Tips and Tricks (开启要诀和技巧说明页?
Weclome (开启欢q用页?

Navigate - DBack (向后D)
Backward History (在编辑器D历程中向后移? Q?Alt+方向??
Forward (向前D)
Forward History (在编辑器D历程中向前移? Q?font color="#0000ff"> Alt+方向??

Go Into (q入选取的目录内)
Go to Line (U至某一行文? Q?Ctrl+L
Go to Matching Bracket (游标移臛_U的Ҏ? Q?font color="#0000ff"> Ctrl+Shift+P
Go to Next Member (U至下一个Member) Q?Ctrl+Shift+方向??
Go to Package (U至套gQ用于Package Explorer)
Go to Previous Member (U至上一个Member) Q?Ctrl+Shift+方向??
Go to Resource (U至资源)
Go to Type (U至cdQ用于Package Explorer)
Last Edit Loaction (U至前次~辑位置) Q?font color="#0000ff"> Ctrl+Q
Next (U至下一个标C元? Q?font color="#0000ff"> Ctrl+.
(注:元素cd可由Toolbar的Next Annotation倒三角图C定?

Open Call Hierarchy (开启Call HierarchyH口) Q?Ctrl+Alt+H
Open Declaration (览所选取的Java元素) Q?font color="#0000ff"> F3 (注:效果{于Ctrl+鼠标左键炚w?
Open External Javadoc (开启外部Javadoc) Q?/font>Shift+F2
Open Resource (开启资源选取对话? Q?font color="#0000ff"> Ctrl+Shift+R

Open Structure (昄所选元素的l构) Q?Ctrl+F3
Open Super Implementation (开启supercd中的实作)
Open Type (开启类? Q?Ctrl+Shift+T
Open Type Hierarchy (开启类别阶层显C窗? Q?F4
Open Type in Hierarchy (在类别阶层的视图中开启类? Q?Ctrl+Shift+H
Previous (U至上一个标C元? Q?font color="#0000ff"> Ctrl+,
(注:元素cd可由Toolbar的Previous Annotation倒三角图C定?
Quick Hierarchy (以Q动方式将cd阶层H口昄在编辑器? Q?font color="#0000ff"> Ctrl+T
Quick Outline (以Q动方式将概要H口昄在编辑器? Q?Ctrl+O
Show In menu (昄当前Show In菜单可用的选项) Q?font color="#0000ff"> Alt+Shift+W
Show in Package Explorer (在套件浏览器中显C所选元?
Up (D上一?

Project - 专案Build All (建置所有项? Q?Ctrl+B
Build Clean (清除目)
Build Project (建置专案)
Close Project (关闭专案)
Generate Javadoc (产生Javadoc)
Open Project (开启专?
Properties (org.eclipse.ui.project.properties) (开启项目属性设定窗?Rebuild All (重新建置所有项?
Rebuild Project (重新建置目)
Repeat Working Set Build (重复建置所讑֮的项? (注:Build Automatically 关闭时才可用?
Refactor - Java (重构 - Java)
Change Method Signature (变更Ҏ{) Q?/font>Alt+Shift+C
Convert Anonymous Class to Nested (匿名类别{换成巢状cd)
Convert Local Variable to Field (区域变量{换成字段) Q?font color="#0000ff"> Alt+Shift+F

Encapsulate Field (装字段Qؓ字段建立getting和settingҎQƈ只用q些Ҏ来存取字D?
Extract Constant (撷取成常敎ͼ数字撷取至新的Static字段Qƈ使用新的Static字段)

注:<-START->

如下D늨序代码经由Extract Constant重构数字10?..
public class Test { 
public static void main(String[] args) {
int x = 10;
}
}
会变成下列程序代码:(常数字段名称Q在重构时可以自p定?
public class Test { 
public static final int TEN = 10;
public static void main(String[] args) {
int x = TEN;
}
}
注:<-END->

Extract Interface (撷取成界面:原cd内的Ҏ撷取x接口中,原类别将实作该接?
(注:新界面会存成一个新?.java檔。若是在interface中执行此功能Q旧接口则会l承新接口?
Extract Local Variable (撷取成区域变量:数字撷取ؓ新的区域变量) Q?Alt+Shift+L
Extract Method (撷取成方法:选取的表C式撷取成一个新Ҏ) Q?Alt+Shift+M
Generalize Type (reference的类别型态更改可以取代的Superclass)
Inline (列入常数、区域变量或Ҏ) Q?Alt+Shift+I
Introduce Factory (采用代理Q利用方法来取得建构?

注:<-START->

如下D늨序代码经由Introduce Factory重构Test建构子后...

public class Test { 
private int number;
Test(int x) {
number = x;
}
public static void main(String[] args) {
System.out.println(new Test(5).number);
}
}
会变成下列程序代码:
public class Test { 
private int number;
public Test(int x) {
number = x;
}
public static void main(String[] args) {
System.out.println(createTest(5).number);
}
public static Test createTest(int x) {
return new Test(x);
}
}


注:<-END->

Introduce Parameter (采用参数Q将区域变量Ҏ参数方式传?

注:<-START->

如下D늨序代码经由Introduce Parameter重构数字5?..

public class Test { 
public static void main(String[] args) {
int x = 5;
}
}
会变成下列程序代码:
public class Test { 
public static void main(String[] args, int five) {
int x = five;
}
}
注:<-END->
Move Member Type to New File (类别成员移至一个新?
Move - Refactoring (Ud - 重构Q将所选取的元素移x位置) Q?Alt+Shift+V
Pull Up (类别成?lt;字段与方?gt;上推到类别的父类别中)
Push Down (类别成?字段与方?下推到类别的子类别中)
Redo - Refactoring (重做 - 重构Q重做前ơ的重构) Q?Alt+Shift+Y
Refactor Quick Menu (在编辑区昄重构的快速菜? Q?Alt+Shift+T
Rename - Refactoring (更名 - 重构Q将所选取的元素重新命名,cd名称、区域变量名U等...) Q?font color="#0000ff">Alt+Shift+R
Undo - Refactoring (复原 - 重构Q复原前ơ的重构) Q?font color="#0000ff"> Alt+Shift+Z
Use Supertype Where Possible (启动「适当时用父cd」重构对话框?

◎补充命名规则:(重构时不照此规则命名ӞEclipse会警示Q?br />虽然可以不管警示Q但q是个好风格?
1.接口(interface)名称Q开头大写?br />2.区域变量(Local Variable)名称Q开头小??br />3.常数字段(public static final int...)名称Q全部大写?br />
Run/Debug - 执行/除错
Add Class Load Breakpoint (新增一个类别加载断?)
Add Java Exception Breakpoint (新增一个Java异常状况断点)
Debug... (开启除错启动配|对话框)
Debug Last Launched (开启最q一ơ启动作业的除错模式) Q?font color="#0000ff"> F11
Display (org.eclipse.jdt.debug.ui.commands.Display) (昄) Q?Ctrl+Shift+D
(注:当执行A暂停Ӟ此指令会使用「显C」检视画面,昄在该执行l之堆栈框或变量的环境定义下
Q评估所选表C式的结果?

Execute (执行Q开启执行启动配|对话框) Q?Ctrl+U
Inspect (观察)Q?Ctrl+Shift+I
(注:当执行A暂停Ӟ此指令会使用「表C式」检视画面,昄在该执行l之堆栈框或变量的环境定?br />下,视察所选表C式或变量的l果?
Profile Last Launched (最q一ơ作业的概况)
Resume (l箋执行l的执行) Q?F8
Run Last Launched (在执行模式下q速执行最q一ơ的启动作业)Q?font color="#0000ff"> Ctrl+F11
Run Last Launched External Tool (执行前一ơ启动的外部工具)
Run to Line (执行x定行Q可在没有设定断点之处暂停执? Q?Ctrl+R
Skip All Breakpoints (在不清除断点的情况下Q执行时跌所有的断点)
Step Into (q入副程? Q?F5
Step Into Selection (q入目前所选的陈述式进行副E序除错) Q?Ctrl+F5
Step Over (跌副程? Q?F6
Step Return (跛_副程?Q?F7
Suspend (暂停执行l?
Terminate (l止执行l?
Toggle Breakpoint (新增/U除Q断? Q?/font>Ctrl+Shift+B
Toggle Method Breakpoint (新增/U除Q方法断?
Toggle Step Filters (以过滤条仉步除错) Q?Shift+F5
Toggle Watchpoint (新增/U除Q字D늚监视?

Search - 搜烦Declaration in Hierarchy (在它的阶层中搜寻所选元素的宣告)
Declaration in Project (在项目中搜寻所选元素的宣告)
Declaration in Working Set (在工作集中搜L选元素的宣告)
Declaration in Workspace (在工作区中搜L选元素的宣告) Q?Ctrl+G
Exception Occurrences (搜烦例外事g)
File Search (开启搜d话框的档案搜寻页?
Implementors in Project (在项目中搜寻所选接口的实作?
Implementors in Working Set (在工作集中搜L选接口的实作?
Implementors in Workspace (在工作区中搜L选接口的实作?
Occurrences in File (在它的宣告档案中搜寻所选元素的所有出现处) Q?font color="#0000ff"> Ctrl+Shift+U

Open Search Dialog (开启搜d话框) Q?font color="#0000ff"> Ctrl+H
Read Access in Hierarchy (在它的阶层中搜寻所选元素的d参?
Read Access in Project (在项目中搜寻所选元素的d参?
Read Access in Working Set (在工作集中搜L选元素的d参?
Read Access in Workspace (在工作区中搜L选元素的d参?
References in Hierarchy (在它的阶层中搜寻所选元素的参?
References in Project (在项目中搜寻所选元素的参?
References in Working Set (在工作集中搜L选元素的参?
References in Workspace (在工作区中搜L选元素的参? Q?Ctrl+Shift+G
Referring Tests (查询试)
Write Access in Hierarchy (在它的阶层中搜寻所选元素的写入参?
Write Access in Project (在项目中搜寻所选元素的写入参?
Write Access in Working Set (在工作集中搜L选元素的写入参?
Write Access in Workspace (在工作区中搜L选元素的写入参?

Source - E序代码
Add Block Comment (选取的字行以多行Ҏ/**/包v? Q?Ctrl+Shift+/
Add Constructors from Superclass (从父cd增加一个徏构子)
Add Import (为目前所选的cd参考徏立一Ҏ入宣? Q?font color="#0000ff"> Ctrl+Shift+M
Add Javadoc Comment (新增JavadocҎ) Q?/font>Alt+Shift+J
Comment (Ҏ)
Externalize Strings (开启「外部化字符丌Ӏ精?
Find Strings to Externalize (L要外部化的字W串)
Format (E序代码自动排版) Q?/font> Ctrl+Shift+F
Format Element (格式化元?
Generate Constructor using Fields (使用字段来生徏构子)

注:<-START->

如下D늨序代码,选取字段名称moneyq经由Generate Constructor using Fields指o?..
public class Test { 
int money;
public static void main(String[] args) {
}
}
会变成下列程序代码:
public class Test { 
int money;
public Test(int money) {
this.money = money;
}
public static void main(String[] args) {
}
}
注:<-END->

Generate Delegate Methods (开启「生委z方法」对话框Q可新增cd字段的委z方?
Generate Getters and Setters (开启「生Getter与Setter」对话框Q可以ؓ字段自动
建立Getter和SetterҎ)
Indent Line (单行~排Q其会遵照Formatter讑֮的格? Q?Ctrl+I
Mark Occurrences (标注事g)Q?Alt+Shift+O
Organize Imports (l织汇入) Q?Ctrl+Shift+O
(注:q是个很方便的功能,易说明一下用时机:假设我们在程序中打,JFrame src;而ƈ?br />importMswingcdQ此时Eclipse便会出现错误警示Q用U底U将JFrame标v来,此时只要?br />下Ctrl+Shift+OQEclipse便会自动:import javax.swing.JFrame;加到E序代码中了?
Override/Implement Methods (开启「覆?实作Ҏ」对话框Q可覆写或实作现行类别中的方?
Remove Block Comment (U除多行Ҏ/**/) Q?Ctrl+Shift+
Remove Occurrence Annotations (U除事g书签)Q?Alt+Shift+U
Sort Members (排序成员)
Source Quick Menu (在编辑区昄Source的快速菜? Q?Alt+Shift+S
Surround with try/catch Block (以try/catch区块包覆所选文?
Toggle Comment (加上单行Ҏ/取消单行Ҏ) Q?font color="#0000ff"> Ctrl+/ ?Ctrl+7 ?Ctrl+Shift+C

Uncomment (取消Ҏ)

◎补充,Source 隐藏热键Q?br />1.Shift Right (向右UMQ增加目前所选字行的内羃层次) Q?Tab
2.Shift Left (向左UMQ减目前所选字行的内羃层次) Q?Shift+Tab

Team - 团队Synchronize (同步?

Text Editing - 文字~辑
Claer Mark (清除标记)
Copy Lines (选取的文字,复制成新? Q?Ctrl+Alt+方向??
Cut Line (剪下单行文字)
Cut to Beginning of Line (剪下文字Q范围ؓ选取处至单行开?
Cut to End of Line (剪下文字Q范围ؓ选取处至单行)
Delete Line (删除单行文字) Q?Ctrl+D
Delete Next (删除下一?
Delete Next Word (删除下一个字l? Q?Ctrl+Delete
Delete Previous (删除前一?
Delete Previous Word (删除前一个字l? Q?Ctrl+Backspace
Delete to Beginning of Line (删除文字Q范围ؓ选取处至单行开?
Delete to End of Line (删除文字Q范围ؓ选取处至单行)
Duplicate Lines (选取的文字,复制成新? Q?Ctrl+Alt+方向??
Insert Line Above Current Line (在光标处的该行上Ҏ入新? Q?Ctrl+Shift+Enter
Insert Line Below Current Line (在光标处的该行下Ҏ入新? Q?Shift+Enter
Line Down (游标往下移一?
Line End (游标U至该行)
Line Start (游标U至该行开?
Line Up (游标往上移一?
Move Lines Down (该行文字往下移? Q?Alt+方向??
Move Lines Up (该行文字往上移? Q?Alt+方向??
Next Column (游标U至下一?
Next Word (游标U至下一个字l? Q?font color="#0000ff"> Ctrl+方向??

Page Down (U至下一?
Page Up (U至上一?
Previous Column (游标U至上一?
Previous Word (游标U至上一个字l? Q?font color="#0000ff"> Ctrl+方向??
Scroll Line Down (向下卷动) Q?font color="#0000ff"> Ctrl+方向??
Scroll Line Up (向上卷动) Q?Ctrl+方向??
Select Line Down (选取下一?
Select Line End (选取x字尾?
Select Line Start (选取x字开?
Select Line Up (选取上一?
Select Next Column (选取下一?
Select Next Word (选取下一个字l?Q?font color="#0000ff"> Ctrl+Shift+方向??
Select Page Down (选取下一?
Select Page Up (选取上一?
Select Previous Column (选取上一?
Select Previous Word (选取前一个字l? Q?font color="#0000ff"> Ctrl+Shift+方向??
Select Text End (选取x字编辑器)
Select Text Start (选取x字编辑器开?
Select Window End (选取至窗口尾?
Select Window Start (选取至窗口开?
Set Mark (讑֮标记)
Swap Mark (交换标记)
Text End (光标U至文字~辑器最底端)
Text Start (光标U至文字~辑器最端)
Toggle Overwrite (覆写/插入 模式选择) Q?Insert
To Lower Case (选取的英文字转ؓ写) Q?Ctrl+Shift+Y
To Upper Case (选取的英文字转ؓ大写) Q?font color="#0000ff"> Ctrl+Shift+X
Window End (光标移至窗口尾?
Window Start (光标移至窗口开?

Views - ?/b>
Ant (开启Ant视窗?
Bookmarks (开启书{检视窗?
Breakpoints (开启断Ҏ视窗?
Classic Search (开启传l的搜烦视窗?
Console (开启主控台视窗?
CVS Annotate (开启CVS Annotate视窗?
CVS Editors (开启CVS Editor视窗?
CVS Repositories (开启CVS Repositories视窗?
CVS Resource History (开启CVS Resource History视窗?
Debug (开启除错检视窗?
Display (org.eclipse.jdt.debug.ui.DisplayView) (开启除?昄视窗?
Error Log (开启错误记录检视窗?
Expressions (开启除?表示式检视窗?
Java Call Hierarchy (开启Call Hierarchy视窗?
Java Declaration (开启宣告检视窗?
Javadoc (开启Javadoc视窗?
Java Members (开启类别成员检视窗?
Java Package Explorer (开启套件浏览器) Q?Alt+Shift+Q,P
Java Packages (开启Java套g视窗?
Java Projects (开启Java目视窗?
Java Type Hierarchy (开启类别阶层检视窗? Q?font color="#0000ff"> Alt+Shift+Q,T
Java Types (开启Javacd视窗?
JUnit (开启JUnit视窗?
Memory (开启除?内存视窗?
Navigator (开启导览器)
Outline (开启概要检视窗? Q?Alt+Shift+Q,O
Plug-in Dependencies (开启Plug-in Dependencies视窗?
Plug-in Registry (开启Plug-in Registry视窗?
Plug-ins (开启Plug-ins视窗?
Problems (开启问题检视窗? Q?Alt+Shift+Q,X
Progress (开启执行进度检视窗?
Properties (org.eclipse.ui.views.Property/Sheet) (开启属性检视窗?
Registers (开启除?~存器检视窗?
Search (开启搜索检视窗? Q?Alt+Shift+Q,S
Synchronize (开启同步化视窗? Q?font color="#0000ff"> Alt+Shift+Q,Y
Tasks (开启作业检视窗?
Threads and Monitors (开启除?执行l检视窗?
Variables (开启除?变量视窗?

◎补充:Views 视窗口的开启处Q?/font>
Window->Show View->Other?br />
Window - H口
Activate Editor (启动~辑? Q?F12
Close All Perspectives (关闭全部视景)
Close Perspective (关闭视景)
Customize Perspective (自订视景)
Hide Editors (隐藏~辑?
Lock the Toolbars (锁定工具?
Maximize Active View or Editor (~辑区最大化) Q?Ctrl+M
Next Editor (切换至下一个编辑器) Q?Ctrl+F6
Next Perspective (切换至下一个视? Q?Ctrl+F8
Next View (切换至下一个视? Q?Ctrl+F7
Open Editor Drop Down (以Q动的方式在编辑区Q显C快速切换编辑器菜单) Q?Ctrl+E
Pin Editor (固定~辑?
Preferences (开启偏p?
Previous Editor (切换至上一个编辑器) Q?font color="#0000ff"> Ctrl+Shift+F6


Previous Perspective (切换至上一个视? Q?Ctrl+Shift+F8
Previous View (切换至上一个视? Q?font color="#0000ff"> Ctrl+Shift+F7
Reset Perspective (重新讑֮视景)
Save Perspective As (储存为新视景)
Show Ruler Context Menu (昄标尺的内容菜? Q?Ctrl+F10

Show Selected Element Only
(仅显C所选元素的E序代码)
Show System Menu (昄pȝ菜单) Q?font color="#0000ff"> Alt+-

Show View Menu (昄视图菜单) Q?font color="#0000ff"> Ctrl+F10

Switch to Editor (切换至编辑器) Q?Ctrl+Shift+E

]]>Q{载]cvs相关工具下蝲地址ȝhttp://www.tkk7.com/fastzch/archive/2006/04/26/43392.htmlRobin's Programming WorldRobin's Programming WorldWed, 26 Apr 2006 10:48:00 GMThttp://www.tkk7.com/fastzch/archive/2006/04/26/43392.htmlhttp://www.tkk7.com/fastzch/comments/43392.htmlhttp://www.tkk7.com/fastzch/archive/2006/04/26/43392.html#Feedback0http://www.tkk7.com/fastzch/comments/commentRss/43392.htmlhttp://www.tkk7.com/fastzch/services/trackbacks/43392.htmlCVS工具很重要,所以{q来了,出处不详?/em>

cvs相关工具下蝲地址ȝQ还有什么我没有写到的欢q补?br />CVS服务器端Q?br />CVS 下蝲地址Q?a target="_blank">http://www.cvshome.org/ (最新版本:hp:1.12.11,Linux and win32:1.11.17)
cvsnt 下蝲地址Q?/font>http://www.cvsnt.com/cvspro/ (最新版本:2.0.58d)

CVS客户端:
TortoiseCVS 下蝲地址Q?a target="_blank">http://www.tortoisecvs.org/ (最新版本:1.8.11)
wincvs 下蝲地址Q?a target="_blank">http://cvsgui.sourceforge.net/download.html (最新版本:1.3.20.3)
Python 下蝲地址Q?a target="_blank">http://www.python.org/download/ (最新版本:2.4)
TCL 下蝲地址Q?a target="_blank">http://www.activestate.com/Products/ActiveTCL/ (最新版本:8.4.9.0)
SmartCVS 下蝲地址Q?a target="_blank">http://www.regnis.de/download.html (最新版本:3.0.6)

CVSWEB 下蝲地址Q?a target="_blank">http://www.freebsd.org/projects/cvsweb.html (最新版本:3.0.5)
viewcvs 下蝲地址Q?a target="_blank">http://viewcvs.sourceforge.net/(最新版本:0.9.2)
CvsGraph 下蝲地址Q?a target="_blank">http://www.akhphd.au.dk/~bertho/cvsgraph/(最新版?1.5.1)

~陷跟踪Q?br />CVSTrac 下蝲地址Q?a target="_blank">http://www.cnpack.org/ (http://www.cvstrac.org/)(最新版本:1.1.5)


ZCVS的代码统计工P按代码量Q按开发者的l计表等Q?br />StatCVS 下蝲地址Q?a target="_blank">http://sourceforge.net/projects/statcvs (最新版本:0.2.2)


CVS权限理QCVSACL is a patch for CVSQ:
cvsacl 下蝲地址Q?a target="_blank">http://cvsacl.sourceforge.net/(最新版本:1.2.2)

subversion服务器端Q?br />subversion 下蝲地址Q?a target="_blank">http://subversion.tigris.org/project_packages.html#binary-packages (最新版本:1.1.3)

subversion客户端:
tortoisesvn 下蝲地址Q?a target="_blank">http://tortoisesvn.tigris.org/ (最新版本:1.1.3)
rapidsvn 下蝲地址Q?a target="_blank">http://rapidsvn.tigris.org/ (最新版本:0.7.0)



]]>
Q{载]对着电脑W了20分钟的笑?/title><link>http://www.tkk7.com/fastzch/archive/2006/04/25/42995.html</link><dc:creator>Robin's Programming World</dc:creator><author>Robin's Programming World</author><pubDate>Tue, 25 Apr 2006 05:36:00 GMT</pubDate><guid>http://www.tkk7.com/fastzch/archive/2006/04/25/42995.html</guid><wfw:comment>http://www.tkk7.com/fastzch/comments/42995.html</wfw:comment><comments>http://www.tkk7.com/fastzch/archive/2006/04/25/42995.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/fastzch/comments/commentRss/42995.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/fastzch/services/trackbacks/42995.html</trackback:ping><description><![CDATA[ <font face="Arial"><em><font color="#000000">q些W话实在好笑Q所以就转来了?/font><br /></em></font><br />1?掉下来Q天大个?<br />2、一ơ文艺晚会,LZ台报q:下面h赏:新疆歌舞Q掀起你的头盖骨Q毛骨悚ӞQ!Q! <br />3、老虎不发猫,你当我是病危呀Q?<br />4、上高中Ӟ译֠U律混ؕQ老师一怒之下揪起XXXQ说QXXX,你给我站墙上去!~~全班暴寒Q?<br />5、一ơ我开车,坐我旁边的女同事H然问:“你怎么开车不pd全套的??<br />6、我Q那是我们物理老师。。?<br />  同学Q教什么的阿? <br />  我:化学。。?<br />7、在|吧Q一同学H然举手Q大喊:“老师Q?<br />8、我们宿舍一个h喝多了要d然后带Z句冷话:喝多了Q酒q别多Q?<br />9、买子Q老板Q一块五一斤。我Q太贵了Q五块钱三斤吧。老板Q不行不行?<br />10、朋友问我电脑配|,我说昄器是彩屏的。(本来是想说液晶的Q?<br />11、初中文艺晚会,抢答题环节?<br />   女主持:“大家注意了Q不要抢的太快。等我说完开始在举手?<br />   然后开始念题目Q说Q“现在开。。。?<br />   q时候,一个选手抢{了?<br />   L人就说“这位同学太着急了一炏V我‘始’(屎)q在口里Q你怎么抢 了?<br />12、听q一MM在食堂喊“给我一viper~Q?<br />13、上学的时?<br />   有一天一个电话找? 同学接完递给我说Q“你?*。?<br />   我一Ҏq电话一侉K口说刎ͼ“男的女的?<br />   大家狂笑 我被W了4q?<br />14、同学的高中同学Q一LQ走q面馆很h头发一甩:“老板Q?两葱不要c线Q”完了还加一句:“多下点c线啊!”老板Q“。。。。你到底是要c线q是要葱Q??<br />15、有一ơ寝室里同学的老妈打电话过?<br />   我习惯说“他不在”,但是q一ơ我惌的的是“已l出M?<br />   l果说出来是Q“他已经…不在了?<br />16、gg递给我一根冰p,我咬一口大叫:“烫L了!?<br />17、和我姐姐去李宁买鞋Q我姐一开口:“小姐,q鞋多少׃斤??<br />18、有一ơ我拍我宿舍同学的肚子,她大声说Q“别拍,我肚子里有小ѝ?<br />19?高中时每人发个胸牌。。一ơ来查前Q班MQ跑到教室大声喊,大家快把胸罩戴v来,来查拉。。 全场鸦雀无声。。?<br />20、上学时周末回家Q晚饭后烟瘾犯了Q打借口L步。在门口换鞋Ӟ老爸问我q吗去?我随口说了句Q“去散个烟!”结果老爸从我w上搜出一?55Q狠狠K了我一ѝ?<br />21、一ơ教育局领导视察N操,l束后,本应׃育老师宣布“解散”,但一时情急,忘词了,憋了半天Q大喊:“撤退Q?<br />22、高中有一老师姓江Q酷似罗家英Q演大话西游唐僧的)Q我去问他问题,脱口而出Q“唐老师Q这题……?<br />23、有一同事Q有天我开车在路上车胎没气了,问哪里有充气的,同事_“街上到处都是打胎的啊!?<br />24、有一老师大概通宵dQ见黑板没擦Q大怒:“今天谁做庄啊?黑板都不擦!?<br />25、有一ơ我大叔见我姑在搽大宝Q突然大叫一壎ͼ“你皮肤q么好,q用护舒宝啊Q?<br />26、老师留下作业Q我不会做就抄别人的Q然后去办公室交作业Q看见老师_“我抄完了!?<br />27、有一ơ,我们去黄山旅游,导游刚好介绍刎ͼ百步云梯是当q刘庆<<花>>的景炏V突然我们团里一个男口而出Q“导?.......“众人晕?<br />28、那ơ几个女同学来我家玩Q我L水了Q她们打开q机看片子Q我在里屋听到是_语Q然后我大喊调下音道Q音道错了,时哑口无言Q我怸虹一紫~~差Ҏ了过去~?<br />29、偶高中Q放学和偶MM一起回Ӟ校门口看C卖烧烤的QMM说要吃牛杂,因ؓ烤架前h比较多,偶怕老板听不见,于是偶大声喊道:“老板Q?串牛鞭”然后一片寂静,三秒钟后所有h一hW。偶巨尴。。。最尬的是MM接着问偶“牛鞭是什么”偶只好?帔R常小声地回答MMQ“牛鞭就是牛ַ啊”。?<br />30、我和我的mm电话吉|Q她把电视音量开得很大,我心里烦Q就大声_“把电话l我xQ”现在想hQ那个寒啊! <br /><br />31、早上和同学d早餐 其中一个只吃包子馅Q另外一个只吃皮。我们正在说他们两个费的时候吃馅的同学来了一句“行?以后你吃我的包皮好了”在场的所有喝_?的全部喷出来了?<br />32、说个真事,上班的厂车上QMM问我Q我的电脑不行了Q老是歅R我_那你回去查查病毒看,记得要升U杀毒Y件。MMQ哦。第二天一大早QR上又见MMQ偶随口问了句:查过了没Q怎样Q然后。。。。。。。。。MM大声的说了句Q气L了,查了半天Q说 是没Q梅Q毒。你说怎么办好啊?Q?当时那个寒啊。。。。现在还记忆新 <br />33、我宿舍一个同学的高中同学打电话来Q他说找谁,我说不在Q接着说了谢谢 <br />34、以前别人来我阿姨家作客Q刚q门的。刚好我阿姨要去上厕所。她q忙招呼客h_“你们坐哈坐哈,我去厕所l你们倒点茶喝Q?<br />35、以前我们有个政ȝ学老师Q特别喜Ƣ侃Q有ơ谈到美圆强ѝ他q么 <br />_“你们知道ؓ什么只有美圆才被叫做‘美金’,却从来没有听说过有叫‘英 <br />金’、‘法金’??<br />36、大学军训时,教官大吼一声说:用你们的旁光Q余光)寚w~~~~偶们想笑又不敢笑,那个难过呀.... <br />37、女同学和她的表妹请我吃饭,席间让我多吃点,我不知道怎么会犯如下的错 <br />误:“谢谢,最q没性欲Q你们多吃点吧!”当时大安喷饭了。?<br />38、我们单位早上上班有车子接送的Q因R子不大,有一ơ,一mm上R后没?<br />位,坐我旁边的一男同事忙站v来,热情的和Ҏ招呼说到Q“某某,你坐我屁股上吧!” 我当时一直狂W到下R~Q?<br />39、以前痴qLl游戏,l常在网吧杀的؜天暗地的Q学期结束后Q和一帮哥们回Ӟ火R快要开了,我们却还没找到站収ͼ一时语急说道:“MDQ这里怎么q个坐标Q其实要找指C牌Q也没有啊!~”哥们听后爆W~~ <br />40、以前住校的时候,上下铺。一ơA手机要充c可是一个床铺就一个插座,插了台灯看书׃能充电了Q于是乎QA把充电器插在B上面。B晚上要听音乐Q看见A的充电器大吼Q“哎Q我说你怎么老插我上面吖Q你怎么不插你下面?”完后一阵骚动,汗~~ <br />41、大学时候,一同学和我争论问题Q一时处于下风,情急中一拍桌子vw大叫:你胡_我又不是不傻Q?<br />42、我一哥们ȝԌ回来大家问他怎么P哥们Ԍq个奛_真糙。中午到了饭点,2个hq了一家牛肉拉面馆Q女孩对师傅大声说道Q嘿Q给?~~~拉面的师傅说Q你吃吗Q吃我就拉?<br />43、小时候冰雪p的一般都是推着自行车叫卖,有一ơ,在屋子里听一阿姨喊:新来的雪p,热乎的。(估计阿姨以前是卖沚wҎ的) <br />44、室友用热得快烧_水开后那厮却悠哉游哉地看书不动弹Q实在看不下M于是开口说Q“该拔了吧?叫得好大声。。”没反应。十五秒后补充:“那里很热哎Q就q么一直插着很容易插坏的啊。。”没动静。过半分钟水d沸腾Q哗啦啦地溅了来。“那什么,出 来了。喷出好多东西叫C来大再插着恐怕会弄坏人家哎。。你定不拔Q”。。。一本厚厚的书朝偶的头飞q来!!!~ <br />45、高3时我们班MQ是教数学?..他给我们复习时~每到d?dU时~~大声说~~`同学们看好了啊~~我射了啊 <br /><br />46.上大学的时候去衡山?当时爬山爬了一?累的正想歇会的时候看到\Ҏ个买U念品的Ƨ巴?上去开口就?"老婆........" <br /><br />47.上自习的时候,大家都在看复习,GG对MM_“我刚背了单词,帮忙默写一下。?MM不想默,GG求她,你(摸)默我吧,Q摸Q我吧!Q结果MM实在忍受不了Q大喊,老师你看我不惻I摸)默他Q他非要我(摸)默~~~Q!Q?<br /><br />48.有一天去同学家吃饭,喝了炚wQ她爸爸忽然q来了,本来是想喊叔叔的Q结果说错了Q说Q“爸Q来座!”~~寒!大帮同学W得要死 <br /><br />49.我同事跟Z执,急了张口来了句“你以ؓ我吃饭长大的啊?”我一直纳闷他到底吃什么长大的? <br /><br />50.学时一个很讨厌的男生找我借橡皮,我不借,他就ȝ烂打Q之后我用尽全n的力气狂g一句“我不嫁Q借)l你”当时同学们立马安静下来了,Q,?<br /><br />51.一ơktv,ҎQ一mm大声喊:l我点一首周截棍的“双Cu?..... <br /><img src ="http://www.tkk7.com/fastzch/aggbug/42995.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/fastzch/" target="_blank">Robin's Programming World</a> 2006-04-25 13:36 <a href="http://www.tkk7.com/fastzch/archive/2006/04/25/42995.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一些爱情的准则Q{载]http://www.tkk7.com/fastzch/archive/2006/04/11/40453.htmlRobin's Programming WorldRobin's Programming WorldTue, 11 Apr 2006 05:33:00 GMThttp://www.tkk7.com/fastzch/archive/2006/04/11/40453.htmlhttp://www.tkk7.com/fastzch/comments/40453.htmlhttp://www.tkk7.com/fastzch/archive/2006/04/11/40453.html#Feedback2http://www.tkk7.com/fastzch/comments/commentRss/40453.htmlhttp://www.tkk7.com/fastzch/services/trackbacks/40453.html
2.不要Z负责而去l婚。要知道Q不爱对方却和对方结婚是最不负责的。即使当时让Ҏ很伤心,但是L让他几年甚至一辈子伤心强?br />
3.不管多大多老,不管家h朋友怎么催,都不要随便对待婚姻,婚姻不是打牌Q重新洗牌要付出巨大代h?br />
4.感情的事基本上没有谁对谁错,他(她)要离开你,L你有什么地方不能o他满I回头xq去在一L日子QL好的。当Ӟ卑劣的感情骗子也有,他们的花a巧语完全是ؓ了骗取对方和自己上床Q这L是极数?br />
5.和一个生zM惯有很多差异的h恋爱不要紧,l婚要慎重,x你是否可以长久忍受彼此的不同?br />
6.有h说恋p找自己喜Ƣ的人,l婚要找喜欢自己的hQ都是片面的。恋Z喜欢自己有什么可恋的Q老婆自己不喜Ƣ怎么q一辈子Q?br />
7.真爱一个hQ就要尽量让他开心,他开心了你就会开心,那么双方有Ȁ情了?br />
8. 不要因ؓ自己长相不如Ҏ而放弃追求的打算Q长相只是一时的印象Q真正决定能否结合主要取决于双方的性格。我见过的帅哥配丑女Q丑女配帅哥的太多了?br />
9. 女h要学会扮靓自己,不要拿朴素来做挡牌Q不要拿家务做借口Q不懂时,你就不是一个完整的女h?br />
10. 恋爱的时间能长尽量长。这最有两点好处Q一Q充分,可能长的n受恋q愉悦Q婚d恋爱的感觉是很不同的。二Q两人相处时间越长,能验彼此是否真心,能看出两h性格是否合得来。这样婚后的感情׃牢固得多?br />
11. 男h不坏Q女Z爱,q坏不是指心肠狠毒,自私无情什么的。而是指a嘴滑舌,p巧语。一般的好男Z情话是a嘴滑舌,LQ肉麻的表玎ͼ所以不愿去做。对别hq样说是不对Q可是对自己老婆Q就要a嘴滑舌一炏Vؓ什么不能做个心好嘴滑的男h呢?

12. 都说婚姻是爱情的坟墓Q那是因为婚前已l往d墓的路上走着。就不l婚也会在坟墓前分手。ؓ什么不先分手就一头钻q坟墓呢Q?br />
13. 只会M的女人是一本字典,再好Z也只会在需要的时候去ȝ一下,只会扮靓的女人只是一兯Ӟ看久了也那栗服饰美Ҏ做好一个女人的必要条gQ不是充要条件。你q需要多看书。这样你会发现生zL加美好?br />
14. q_^淡E才是真,没错Q可那应该是Ȁ情过后的qxEQ然后再h情,再有qxE。激情^淡应呈LŞ交替出现。光有^淡无Ȁ情的生活有什么意思?只要你真心爱他,到死你也会有Ȁ情的?br />
15. 你爱他吗Q爱告诉他Q何必把思念之苦藏在心底深处。怕样子,CQn份不盔RQ别怕,׃个h是美好的?br />
16. 老婆和老妈掉进了河里,我先救老妈Q因为是老妈l了我生命,我找不到M理由丢下她不。老婆如果没救上来Q我可以再给奚w葬,在墓里l我们的爱情?br />
17. 草率地结了婚已经是错了,再也不要草率地去d。先试试看,真的不行再离也不q?br />
18. l常听说男h呛_人味Q你知道男hx一U什么味道,女h呛_是一U什么味道吗Q男人味是豁达勇敢Q女人味是温柔体脓?br />
19. 力是什么?力不是漂亮Q漂亮的女h不一定能吸引我,端庄q雅的女人我才喜Ƣ。所以你不用担心自己不够漂亮?br />
20. 初恋都让人难忘,觉得好。ؓ什么?不是因ؓ他(她)很漂亮或很帅Q也不是因ؓ得不到的是好的Q而是因ؓ人初涉爱x心里异常U真Q绝无私心杂念,只知道們ַ所有去爱对斏V而以后的爱情都没有这么纯z无瑕了。纯真是Z间最为可늚东西。我们求的是奏V?br />
21. 初恋的h大多都不懂爱Q所以初恋失败的多。成功的。结婚应该找个未婚的Q因都喜Ƣ原装。而恋爱,q是找个恋爱q的人才好。因为经历过恋爱的h才知道什么是爱,怎么ȝ?br />
22. 男h有钱变坏,是的Q很多男P不过Q一有钱变坏的男hq没钱Q也好不到哪里去?br />
23. 一个男不能l你安全感,完全不取决于他的w高Q而取决于他的心高。高大而窝囊的 男h我见q不。矮而昂扬的男h我也见过。一个男心高气傲Q这h像男人。当Ӟ前提是要有才华?br />
24. 天长C有没有?当然有!Z么大多数Z怿有?因ؓ他们没有扑ֈ人生旅途中最适合自己的那一个。也是冥冥中注定的那一个。ؓ什么找不到Q茫茫hP人生如露Q要扑ֈ最合适自q那一个谈何容易?你或许可以在40岁时扑ֈ上天注定的那一个,可是你能{到40岁吗Q在20多岁时找不到Q却不得不结婚,在三四十岁时扑ֈ却不得不攑ּ。这是人生的悲哀?br />
25. Z么生zM很少见到传说中天长地久,可歌可泣的爱情故事?因ؓq样的感情非常可贵,可贵的东西是那么好见到的吗?金子ȝҎ见到吗?

26. 从前失恋之时Q我都会恨她Q恨她ؓ什么这么薄情寡义,听到有关她的不好的消息,我都会偷着乐,现在不了Q现在即使失dQ我也会福她,衷心希望她能q得很好。她q得不好我会很难q。这也是喜欢和爱的一个区别?br />
27. 和聪明的人恋׃很快乐,因ؓ他们q默Q会说话Q但也时时存在着危机Q因L人很Ҏ变心。和老实的h恋爱会很攑ֿQ但生活却也非常得乏呟?br />
28. 女h不要太好强,有的女h自尊心过强。是别h的错Ҏ度很强,是自q错她同样态度很强。她M为去求别人是下贱的表玎ͼҎ永远不会求男人的。这L女h很o人头疹{聪明的女h会知道什么时候该坚强Q什么时候该C弱。好强应该对外hQ对q么好Zq要不要他呵护你啊?

29. 要看一个h有没有内涵,内看谈吐Q外看着装。还可以看写字。谈吐可以看Z个h的学识和修养。着装可以看Z个h的品位,写字可以看出一个h的性格?br />
30. 想知道一个h׃׃Q就看他和你在一h没有zdQ开不开心,有就是爱Q没有就是不爱?br />
31. 有的是抱怨找不好人,一两次不要紧,多了有问题了,首先你要讨自己本w有没有问题Q如果没有,那你p审视一下自q眼光了,Z么每ơ坏人总被你碰刎ͼ

32. 有h说男Z旦变心,九头牛也拉不回,N女h变心Q九头牛拉得回来吗Q男女之间只在生理上有差异,心理斚w大同异?br />
33. 爱情与h品没多大关系Q从前有个女同事跟我说她喜欢雕里的杨康Q不喜欢郭靖Q我很惊奇,爱坏厌好Q后来想惻I也没什么,杨康认贼作父Q卖国求荣是不对。可他对爱情却很执着Q这LZؓ什么不能n有爱Q现实生zM有这L例子Q古惑仔也有古惑仔的爱情?br />
34. 有h说没有面包的爱情l究会夭折。我说说q话的h不懂什么是爱情。从前恋爱我很反感别xq条件好那条件好。我不管你什么出w,什么学历,什么地位,如果我爱你,你擦皮鞋甚至做妓x也无所谓。大我幼E,没有钱怎么q日子?我说有钱没爱q的是什么日子?和自q的h在一P喝水吃腌菜我也是高兴的?br />
35. 如果真爱一个hQ就会心甘情愿ؓ他而改变。如果一个h在你面前我行素,|你不喜Ƣ的行ؓ而不,那么他就是不׃。所以如果你不够兛_他或是他不够兛_你,那么你就不爱他或他不׃Q而不要以为是自己本来很_心或相信他是一个粗心的人。遇见自qq人,懦夫也会变勇敢,同理Q粗心鬼也会变得l心?br />
36. 彼此都有意而不说出来是爱情的最高境界。因个时候两人都在尽情的享受媚眼Q尽情的享受目光相对时的火热心理Q尽情的享受手指相碰时的惊心动魄。一旦说出来Q味道会淡许多,因ؓ两h同意以后Q所有的行ؓ都是已被许可Q已有心理准备的了,到最后渐渐会变得L?br />
37. 一个萝卜一个坑Q说的是婚姻情况。事实上对于爱情来说Q是不成立的Q优U的hQ不男奻I都会是一个萝卜好几个坑。所以这个世界天天上演着悲欢d的故事?br />
38. 有两U女人很可爱Q一U是妈妈型的Q很体脓人,很会照顾人,会把男h照顾的非常周到。和q样的女人在一P会感觉到强烈的被爱。还有一U是妹妹型的。很胆小Q很害羞Q非常的依赖男hQ和q样的女人在一P会激发自q人的个性的昄。比如打老鼠扛重物什么的。会常常惛_M护自q女人。还有一U女人既不知道关心体贴hQ又从不向男Z头示弱,q样的女人最让男人无可奈何?br />
39. 吝啬是男人的大忌Q就穷也不要做Z副穷栗有人抱怨女人只q人的钱,其实也ƈ不一定就是这P有的女h喜欢男h为她花钱Q有时候也是ؓ了证实自己在男h心目中的位置Q男人如果喜Ƣ一个女人,一定愿意ؓ她花q?br />
40. 男女搭配Q干zM累。因为在异性面前,男hdƢ表现自己很男h的一面。这样也才像个男人,所以大男子M有时候是必须有的?br />
41. q求爱慕的异性是很常见的说法。其实对方不喜欢你,你再怎么q也没用Q对方喜Ƣ你Q根本不需要挖I心思去q。或许真有一天他被你的诚意所打动Q可最l大多还是会分手的。因为爱情不是感动,你不是他心目中的理想伴GQ即使一时接受你Q将来碰上他心A的那一位,一样会d你。当Ӟ对于喜欢你的人,你还是需要花点心思去讨好他的Q因h像拍拖,才浪漫?br />
42. l常有h问在朋友和恋Z间叫你选择Q你会选择哪一个?其实q个问题是多余的。真正懂你的朋友或恋人,他们会体谅你的行为,如果不体谅你Q因此失M不必太在意。朋友或恋h是要互相帮助的,而不是硬性迁?br />
43. 曄沧v难ؓ_除却巫山不是云。可是如果我q没lh是刚到h了个转就回来Q而且也没到过巫山׃头钻q了围城怎么办啊

44. O是什么?是送花Q雨中O步?楼前伫立不去Q如果两人彼此們ֿ相爱Q什么事都不做,静静相对都会感觉是浪漫的。否则,即两h坐到月亮上拍拖,也是感觉不到O的?br />
45. 是否门当户对不要紧,最重要应该是兴当趣对,不然没有共同语言Q即使在一P仍然会感觉到孤独?br />
46. 学会用理解的Q欣赏的眼光ȝҎQ而不是以自以为是的关心去对斏V?br />
47. q稚的h和幼E的人在一h什么问题,成熟的h和成熟的人在一起也没什么问题,成熟的h和幼E的人在一起问题就多了?br />
48. 有的女h恋爱时让男友宠着自己Q结婚后仍然要老公百般宠着自己Q却忘记做ؓ一个女人应该做的䆾内之事。这L女h是不懂得爱情的?br />
49. 持久的爱情源于彼此发自内心的真爱Q徏立在q等的基之上。Q何只儡狂爱不自己有否被爱,或是只顾享受被爱而不知真心爱人的人都不会有好的结局?


]]>
选择JSF不选Struts的十大理由E转蝲Q?/title><link>http://www.tkk7.com/fastzch/archive/2006/02/09/30003.html</link><dc:creator>Robin's Programming World</dc:creator><author>Robin's Programming World</author><pubDate>Thu, 09 Feb 2006 02:52:00 GMT</pubDate><guid>http://www.tkk7.com/fastzch/archive/2006/02/09/30003.html</guid><wfw:comment>http://www.tkk7.com/fastzch/comments/30003.html</wfw:comment><comments>http://www.tkk7.com/fastzch/archive/2006/02/09/30003.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/fastzch/comments/commentRss/30003.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/fastzch/services/trackbacks/30003.html</trackback:ping><description><![CDATA[    一个客户不知道该选用Strutsq是JSF。就像你预料的那P我通常会问Q这2中框架之间有什么区别?当然Q除了我的这个客户外很多人都面͘q样的选择? <p class="main">    ȝ来说Q我在新目中优先考虑JSF。虽然常常有一些商业上的因素迫使我们ؓ现有的项目选择了StrutsQ而且那些解决Ҏq有待考验Q但是,让我们面对一个事实:JSF比Struts好多了?</p> <p class="main">    下面是我选择JSF而不选Struts的十大理由: </p> <ul> <li>1.Components(lg) </li><li>2.Render Kits </li><li>3.Renderers </li><li>4.Value Binding ExpressionsQ值绑定表辑ּQ? </li><li>5.Event ModelQ事件模型) </li><li>6.Extensibility(可扩展? </li><li>7.Managed Beans(Dependency Injection 依赖注入) </li><li>8.POJO Action Methods </li><li>9.JSF is the standard Java-based web app framework (JSF是java web应用E序的标准框? </li><li>10.There's only one Struts(只有一个Struts) </li></ul> <p class="main">    10.There's only one Struts(只有一个Struts) Struts 是一个开源品,然而JSF是一个标准。这个细节常常被新的JSF学习者忽略,其实q是显而易见的Q因为我们有多个JSF的实现。虽然JSFq很不成熟,但是我们已经有了2个优U的JSF实现可以选择QSun的参考实现和Apache的MyFaces。另一斚wQ我们只有一个Struts?</p> <p class="main">    9.JSF is the standard(JSF是标? JEE 5.0要提供一个JSF的实玎ͼq表明JSF不久会无处不在。这可能与你无关Q但是和工具供应商密切相兟뀂现在大概有50个java web应用E序框架Q工具供应商不会情愿L持一个特别的框架Q但是他们会毫不犹U的去支持一个标准。而且不止供应商,开源项目也会迅速的聚集在JSF的四周,争先恐后的去实现相同的功能。比如说Q直到我们去实现本质上和Shale的Tapestry差不多的视图的时候,我才知道Facalets。(从长q来看,我相信这U冗余是件好事,会给我们带来好处Q?</p> <p class="main">    8.POJO Action Methods Struts的行为是?Struts的APIl定在一LQ但是JSF的行为方法可以在POJPO中实现。这意味着你不用在表单和模型对象之间实C个多余的行ؓ层。顺便说一下,在JSF里面没有行ؓ对象Q行为在模型对象中实现。但是也h意一点:如果你愿意你也可以生成与JSF独立的行为对象。在Struts里面Q你?Form Bean和Action Bean。Form Bean包含数据而Action Bean包含逻辑。OO狂会惛_合ƈ?者,在Struts你办不到。但是在JSF中,你可以分开数据和逻辑Q也可以合ƈC个对象中Q一切由你决定?</p> <p class="main">    7.Managed Beans(Dependency Injection 依赖注入) 和Spring一PJSF也用了依赖注入QDJQ(或控制反转(IoCQ)d例化和初始化Bean。Struts的确Z生成了Form Bean和Action BeanQ但是JSF可以Z生成各种各样的Managed Bean?</p> <p class="main">    6.Extensibility(可扩展? q个很重要。JSF?个对象实Cq个框架的大部分功能Q而且你可以很Ҏ的用你自q实现代替原有实现。比如你惛_一个自定义参数在JSF表达式语a里面Q或是添加一个自q视图控制器以便于区分lg和HTML。事实上Shale实现了上面的功能。如果你q没有满IJSF提供了几个地方你可以L的控制JSF的生命周期。Shalel你的会更多?/p> <p class="main">    5.Event ModelQ事件模型) JSF的事件模型你可以对值改变,动作QJSF生命周期阶段变换{作出反应。在JSF1.1中,那些事g都是在服务器端处理的Q这肯定是一个缺P好在JSF2.0计划支持客户端事Ӟ拭目以待吧?</p> <p class="main">    4.Value Binding ExpressionsQ值绑定表辑ּQ?在Struts 中,你负责把数据从Form传递到模型对象。你实现的Action的executeҎ是把Form作ؓ一个参数。然后你再手动的把数据从Form Bean里面取出攑ֈ模型对象里面。你要ؓ应用里面的每个Form做这些事情,然而在JSF里面Q你只需像这P#{model.property} 够了,其他的交lJSF来处理?</p> <p class="main">    3.Renderers 你有看过Struts的标{源代码吗Q它直接生成HTML。JSFlg标签什么都不生成,它和服务器上的一对component-renderer对应。Componentl护lg状态,rendered负责获得视图。重Ҏrenderers是可插拔的,即你可以Ҏ自己需求实现然后替代掉默认实现。比如说我在NFJS上面的Felix谈话中D例说明了怎么dC个自定义的label renderer。你只需要配|你的rendererQJSF׃自动在你的应用程序里面用他?</p> <p class="main">    2.Render Kits 在几q前我曾l有份Struts咨询工作Q我们必d时支持浏览器和无U设备,非常痛苦。但是用JSF来完成那个Q务非常容易,因ؓ你可以生成你自己的render kitQؓ一U特定显C技术的renderers的集合-然后配置到JSF里面?</p> <p class="main">    1.Components(lg) lg是Struts和JSF之间最大的区别。就像Swing一PJSF提供丰富的底层构件去开发组件然后添加到标准的组仉。那些底层构件让你很Ҏ的生成自qlgq且和别人共享。现在我们到处都能看到自定义lg跛_来,比如说Oracle的ADF和MyFacesQ两者都提供了丰富的lg集,像 javascript日历Qtree{等。当Ӟlg只是一部分。典型的是,lg都和一个独立的renderer对应Q这l我们带来了真正的好处(看第3 条)。但是和JSF中的很多东西一P你不一定要墨守成规。只要你愿意Q你可以实现render自己的组Ӟ虽然q样你会失去l组件加入别?renderer的能力?</p><img src ="http://www.tkk7.com/fastzch/aggbug/30003.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/fastzch/" target="_blank">Robin's Programming World</a> 2006-02-09 10:52 <a href="http://www.tkk7.com/fastzch/archive/2006/02/09/30003.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>лǵվܻԴȤ</p> <a href="http://www.tkk7.com/" title="亚洲av成人片在线观看">亚洲av成人片在线观看</a> <div class="friend-links"> </div> </div> </footer> վ֩ģ壺 <a href="http://626632.com" target="_blank">պƷһ</a>| <a href="http://cnlawedu.com" target="_blank">wwwѸƵ</a>| <a href="http://shzzhsy.com" target="_blank">ѸƵ</a>| <a href="http://0595laser.com" target="_blank">޾Ʒվ</a>| <a href="http://acccx.com" target="_blank">øƵ</a>| <a href="http://57798b.com" target="_blank">ۺϼƵ</a>| <a href="http://99880524.com" target="_blank">޳˵Ӱվwww</a>| <a href="http://liulaogendawutai.com" target="_blank">þۺպ޾Ʒɫ</a>| <a href="http://lijieedu.com" target="_blank">޹Ʒþþϼ2</a>| <a href="http://wwwzs88.com" target="_blank">޾Ʒɫ</a>| <a href="http://carsmp.com" target="_blank">¹AVר</a>| <a href="http://bjowj.com" target="_blank">ŷAVӰ߹ۿ</a>| <a href="http://szyxfhm.com" target="_blank">˳ɫ777777߹ۿ</a>| <a href="http://www96008.com" target="_blank">޾ƷƵ߹ۿ㶮 </a>| <a href="http://yzddcpj.com" target="_blank">xxxձ18</a>| <a href="http://xxx2222.com" target="_blank">޾Ʒ˿þ</a>| <a href="http://ydstbj.com" target="_blank">޳ۺӰԺԺ</a>| <a href="http://1212777.com" target="_blank">˳ۺ߲</a>| <a href="http://sdsupuchem.com" target="_blank">ĻƷ</a>| <a href="http://2xpp.com" target="_blank">6080yyþԹ</a>| <a href="http://bjowj.com" target="_blank">Ʒһ</a>| <a href="http://bisilover.com" target="_blank">һһdvd߹ۿƵ</a>| <a href="http://minliusoft.com" target="_blank">þùƷ</a>| <a href="http://dw168cn.com" target="_blank">ƵĻȫ</a>| <a href="http://www8x5188x.com" target="_blank">A߹ۿվȫ</a>| <a href="http://gnebs.com" target="_blank">avavavëƬ</a>| <a href="http://kppp4.com" target="_blank">ۺɫ</a>| <a href="http://kmyake.com" target="_blank">aaŮ˴ƬˮƵ</a>| <a href="http://88bgbg.com" target="_blank">ѹۿ˾þѹۿ</a>| <a href="http://guoyit.com" target="_blank">91þó</a>| <a href="http://www04ggg.com" target="_blank">ղƵ߹ۿ</a>| <a href="http://988938.com" target="_blank">޾Ʒרþͬ</a>| <a href="http://airou08.com" target="_blank">AVרӰ߹ۿ</a>| <a href="http://mtripmall.com" target="_blank">˾Ʒ</a>| <a href="http://beidemei.com" target="_blank">Ƶ</a>| <a href="http://yuejiju.com" target="_blank">þþƷ</a>| <a href="http://bjlfggcm.com" target="_blank">67194</a>| <a href="http://qimiaodh.com" target="_blank">鵺̳Ʒ</a>| <a href="http://9981tv.com" target="_blank">˳ӰԺ</a>| <a href="http://jmzc888.com" target="_blank">avպۺһ</a>| <a href="http://wxyz2.com" target="_blank">aëƬ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>