??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲乱理伦片在线观看中字,亚洲youwu永久无码精品,久久久久亚洲AV成人无码网站http://m.tkk7.com/fidodido/子夜 ~程 代码与我同在zh-cnSun, 11 May 2025 05:04:32 GMTSun, 11 May 2025 05:04:32 GMT60搬家http://m.tkk7.com/fidodido/archive/2008/09/04/227089.html^ Mustang ^^ Mustang ^Thu, 04 Sep 2008 15:18:00 GMThttp://m.tkk7.com/fidodido/archive/2008/09/04/227089.htmlhttp://m.tkk7.com/fidodido/comments/227089.htmlhttp://m.tkk7.com/fidodido/archive/2008/09/04/227089.html#Feedback2http://m.tkk7.com/fidodido/comments/commentRss/227089.htmlhttp://m.tkk7.com/fidodido/services/trackbacks/227089.htmlq里Q各位朋友可以去q里看看


^ Mustang ^ 2008-09-04 23:18 发表评论
]]>
我回来了http://m.tkk7.com/fidodido/archive/2006/06/21/54361.html^ Mustang ^^ Mustang ^Wed, 21 Jun 2006 13:32:00 GMThttp://m.tkk7.com/fidodido/archive/2006/06/21/54361.htmlhttp://m.tkk7.com/fidodido/comments/54361.htmlhttp://m.tkk7.com/fidodido/archive/2006/06/21/54361.html#Feedback0http://m.tkk7.com/fidodido/comments/commentRss/54361.htmlhttp://m.tkk7.com/fidodido/services/trackbacks/54361.html
1、他看了我的blog

2、他发现我的blog的最后更新是在今q?月䆾

好吧Q的开学以后就没怎么写blog了,又是毕设Q又是考试院的目Q虽然对Java不断有新的发玎ͼ有新的积累,但是都没有时间写下来。好在马上就能over了。考试院的目会在今天晚些时候上U(http://zd.bjkaoshi.com.cn/hermes_portal/index.jspQ不知道看我blog的有没有北京市的自考生Q有的话应该会知道我们的目Q有M或发CQ何bug可以直接与我联系Q呵呵)Q毕设下个星期也要答辩,但愿一切顺利?br />
马上p回来写技术blog了,呵呵Q会l大家不有用的l验Q)

^ Mustang ^ 2006-06-21 21:32 发表评论
]]>
“Y件工业奥斯卡”SYS-CON读者选择奖: Java开发(转蝲自CSDNQ?/title><link>http://m.tkk7.com/fidodido/archive/2006/03/13/35027.html</link><dc:creator>^ Mustang ^</dc:creator><author>^ Mustang ^</author><pubDate>Mon, 13 Mar 2006 06:24:00 GMT</pubDate><guid>http://m.tkk7.com/fidodido/archive/2006/03/13/35027.html</guid><wfw:comment>http://m.tkk7.com/fidodido/comments/35027.html</wfw:comment><comments>http://m.tkk7.com/fidodido/archive/2006/03/13/35027.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/fidodido/comments/commentRss/35027.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/fidodido/services/trackbacks/35027.html</trackback:ping><description><![CDATA[     摘要: SYS-CON 媒体Qwww.sys-con.comQ在q日揭晓了一q一度的“读者选择奖”,q个奖项有“Y件工业奥斯卡”之U。今q是W?0届,有超q?.7万的SYS-CON读者参与了投票Q分别评选出了在SOA、Web Services、Java和XML技术等领域的最佳品、工具以及最x名?  I 最佳Java应用服务?莯者:BEA WebLogic Server (BEA ...  <a href='http://m.tkk7.com/fidodido/archive/2006/03/13/35027.html'>阅读全文</a><img src ="http://m.tkk7.com/fidodido/aggbug/35027.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/fidodido/" target="_blank">^ Mustang ^</a> 2006-03-13 14:24 <a href="http://m.tkk7.com/fidodido/archive/2006/03/13/35027.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在Struts中用Validator实现可配|的信息校验Q二Q?/title><link>http://m.tkk7.com/fidodido/archive/2006/03/07/34130.html</link><dc:creator>^ Mustang ^</dc:creator><author>^ Mustang ^</author><pubDate>Tue, 07 Mar 2006 10:38:00 GMT</pubDate><guid>http://m.tkk7.com/fidodido/archive/2006/03/07/34130.html</guid><wfw:comment>http://m.tkk7.com/fidodido/comments/34130.html</wfw:comment><comments>http://m.tkk7.com/fidodido/archive/2006/03/07/34130.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://m.tkk7.com/fidodido/comments/commentRss/34130.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/fidodido/services/trackbacks/34130.html</trackback:ping><description><![CDATA[<H3>三、自定义校验逻辑</H3> <P>毕竟Struts提供的校验逻辑有限Q不可能满所有的开发需要,因此有时必须对其q行扩展。这里D一个实际项目中的例子:校验码检查。现在很多网站ؓ了防止恶意的面hdQ都使用了图片Ş式的校验码,如:</P> <P align=center><IMG alt="" hspace=0 src="http://m.tkk7.com/images/blogjava_net/fidodido/code.jpg" align=baseline border=0></P> <P>表单提交后需要检查校验码Q存在request或session里)和用戯入是否一_代码如下Q?/P> <DIV style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><SPAN style="COLOR: #008080"> 1</SPAN><IMG id=Codehighlighter1_24_647_Open_Image onclick="this.style.display='none'; Codehighlighter1_24_647_Open_Text.style.display='none'; Codehighlighter1_24_647_Closed_Image.style.display='inline'; Codehighlighter1_24_647_Closed_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_24_647_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_24_647_Closed_Text.style.display='none'; Codehighlighter1_24_647_Open_Image.style.display='inline'; Codehighlighter1_24_647_Open_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ContractedBlock.gif" align=top><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">class</SPAN><SPAN style="COLOR: #000000"> MyValidator</SPAN><SPAN id=Codehighlighter1_24_647_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://m.tkk7.com/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_24_647_Open_Text><SPAN style="COLOR: #000000">{<BR></SPAN><SPAN style="COLOR: #008080"> 2</SPAN><SPAN style="COLOR: #000000"><IMG src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top>  </SPAN><SPAN style="COLOR: #0000ff">private</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">static</SPAN><SPAN style="COLOR: #000000"> Logger logger </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> Logger.getLogger(Constants.CON_LOGGER_NAME);<BR></SPAN><SPAN style="COLOR: #008080"> 3</SPAN><SPAN style="COLOR: #000000"><IMG src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top><BR></SPAN><SPAN style="COLOR: #008080"> 4</SPAN><SPAN style="COLOR: #000000"><IMG src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top>  </SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">static</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">boolean</SPAN><SPAN style="COLOR: #000000"> validateCodeInput(Object obj,ValidatorAction action,Field field,<BR></SPAN><SPAN style="COLOR: #008080"> 5</SPAN><SPAN style="COLOR: #000000"><IMG id=Codehighlighter1_245_645_Open_Image onclick="this.style.display='none'; Codehighlighter1_245_645_Open_Text.style.display='none'; Codehighlighter1_245_645_Closed_Image.style.display='inline'; Codehighlighter1_245_645_Closed_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_245_645_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_245_645_Closed_Text.style.display='none'; Codehighlighter1_245_645_Open_Image.style.display='inline'; Codehighlighter1_245_645_Open_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align=top>      ActionMessages errors,HttpServletRequest req)</SPAN><SPAN id=Codehighlighter1_245_645_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://m.tkk7.com/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_245_645_Open_Text><SPAN style="COLOR: #000000">{<BR></SPAN><SPAN style="COLOR: #008080"> 6</SPAN><SPAN style="COLOR: #000000"><IMG src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top>    String code </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> (String)req.getSession().getAttribute(Constants.SESSION_CHECKSUM_CODE);<BR></SPAN><SPAN style="COLOR: #008080"> 7</SPAN><SPAN style="COLOR: #000000"><IMG src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top>    String input </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> ValidatorUtils.getValueAsString(obj,field.getProperty());<BR></SPAN><SPAN style="COLOR: #008080"> 8</SPAN><SPAN style="COLOR: #000000"><IMG src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top><BR></SPAN><SPAN style="COLOR: #008080"> 9</SPAN><SPAN style="COLOR: #000000"><IMG src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top>    logger.debug(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">Code: </SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000"> code </SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">, input: </SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000"> input);<BR></SPAN><SPAN style="COLOR: #008080">10</SPAN><SPAN style="COLOR: #000000"><IMG src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top>    </SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000">(code.equalsIgnoreCase(input))<BR></SPAN><SPAN style="COLOR: #008080">11</SPAN><SPAN style="COLOR: #000000"><IMG src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top>      </SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">true</SPAN><SPAN style="COLOR: #000000">;<BR></SPAN><SPAN style="COLOR: #008080">12</SPAN><SPAN style="COLOR: #000000"><IMG id=Codehighlighter1_536_641_Open_Image onclick="this.style.display='none'; Codehighlighter1_536_641_Open_Text.style.display='none'; Codehighlighter1_536_641_Closed_Image.style.display='inline'; Codehighlighter1_536_641_Closed_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_536_641_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_536_641_Closed_Text.style.display='none'; Codehighlighter1_536_641_Open_Image.style.display='inline'; Codehighlighter1_536_641_Open_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align=top>    </SPAN><SPAN style="COLOR: #0000ff">else</SPAN><SPAN id=Codehighlighter1_536_641_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://m.tkk7.com/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_536_641_Open_Text><SPAN style="COLOR: #000000">{<BR></SPAN><SPAN style="COLOR: #008080">13</SPAN><SPAN style="COLOR: #000000"><IMG src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top>      errors.add(field.getKey(),Resources.getActionMessage(req,action,field));<BR></SPAN><SPAN style="COLOR: #008080">14</SPAN><SPAN style="COLOR: #000000"><IMG src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top>      </SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">false</SPAN><SPAN style="COLOR: #000000">;<BR></SPAN><SPAN style="COLOR: #008080">15</SPAN><SPAN style="COLOR: #000000"><IMG src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>    }</SPAN></SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #008080">16</SPAN><SPAN style="COLOR: #000000"><IMG src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>  }</SPAN></SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #008080">17</SPAN><SPAN style="COLOR: #000000"><IMG src="http://m.tkk7.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</SPAN></SPAN></DIV><BR>注释Q?BR>1、第1行:MyValidator没有M父类Q运行时Validator通过reflection生成对象<BR>2、第4行:校验Ҏ可随意命名,通过reflection调用Q但参数必须按照规范<BR>3、第6行:从session中取出图片中的字W串<BR>4、第7行:得到用户输入的|Struts在这里用Fieldcd表单字段q行了封装,而Field具体装的字D在validation.xml中定义,?A HREF="/fidodido/archive/2006/03/07/34123.html">上篇</A><BR><BR>validator-rules.xml中的定义Q?BR><BR> <DIV style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><SPAN style="COLOR: #008080"> 1</SPAN><IMG src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">validator </SPAN><SPAN style="COLOR: #ff0000">name</SPAN><SPAN style="COLOR: #0000ff">="codeinput"</SPAN><SPAN style="COLOR: #ff0000"><BR></SPAN><SPAN style="COLOR: #008080"> 2</SPAN><SPAN style="COLOR: #ff0000"><IMG src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align=top>            classname</SPAN><SPAN style="COLOR: #0000ff">="consultII.web.utils.MyValidator"</SPAN><SPAN style="COLOR: #ff0000"><BR></SPAN><SPAN style="COLOR: #008080"> 3</SPAN><SPAN style="COLOR: #ff0000"><IMG src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align=top>               method</SPAN><SPAN style="COLOR: #0000ff">="validateCodeInput"</SPAN><SPAN style="COLOR: #ff0000"><BR></SPAN><SPAN style="COLOR: #008080"> 4</SPAN><SPAN style="COLOR: #ff0000"><IMG src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align=top>         methodParams</SPAN><SPAN style="COLOR: #0000ff">="java.lang.Object,<BR></SPAN><SPAN style="COLOR: #008080"> 5</SPAN><SPAN style="COLOR: #0000ff"><IMG src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align=top>                       org.apache.commons.validator.ValidatorAction,<BR></SPAN><SPAN style="COLOR: #008080"> 6</SPAN><SPAN style="COLOR: #0000ff"><IMG src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align=top>                       org.apache.commons.validator.Field,<BR></SPAN><SPAN style="COLOR: #008080"> 7</SPAN><SPAN style="COLOR: #0000ff"><IMG src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align=top>                       org.apache.struts.action.ActionMessages,<BR></SPAN><SPAN style="COLOR: #008080"> 8</SPAN><SPAN style="COLOR: #0000ff"><IMG src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align=top>                       javax.servlet.http.HttpServletRequest"</SPAN><SPAN style="COLOR: #ff0000"><BR></SPAN><SPAN style="COLOR: #008080"> 9</SPAN><SPAN style="COLOR: #ff0000"><IMG src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align=top>                  msg</SPAN><SPAN style="COLOR: #0000ff">="errors.code"</SPAN><SPAN style="COLOR: #0000ff">/></SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #008080">10</SPAN><SPAN style="COLOR: #000000"><IMG src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align=top></SPAN></DIV><BR>validation.xml中的定义Q?BR><BR> <DIV style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><IMG src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">field </SPAN><SPAN style="COLOR: #ff0000">property</SPAN><SPAN style="COLOR: #0000ff">="input"</SPAN><SPAN style="COLOR: #ff0000"> depends</SPAN><SPAN style="COLOR: #0000ff">="required,codeinput"</SPAN><SPAN style="COLOR: #0000ff">/></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align=top><BR><IMG src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">field </SPAN><SPAN style="COLOR: #ff0000">property</SPAN><SPAN style="COLOR: #0000ff">="input"</SPAN><SPAN style="COLOR: #ff0000"> depends</SPAN><SPAN style="COLOR: #0000ff">="required,codeinput"</SPAN><SPAN style="COLOR: #0000ff">/></SPAN></DIV><BR>在servlet中将校验码存入session传递给ValidatorQ?BR><BR> <DIV style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><IMG src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #000000">req.getSession().setAttribute(Constants.SESSION_CHECKSUM_CODE,code);</SPAN></DIV> <P>q样OK了?/P> <H3>四、将校验逻辑转译成JavaScript代码</H3> <P>׃Validator的代码在服务器端被执行,因此如果校验h频繁的话会Ҏ务器端造成不小的性能压力。考虑到这个问题,Struts中提供的校验Ҏ可以被{译成JavaScript代码嵌入面Q这h验将在客Lq行?BR>使用Ӟ只要在页面中嵌入两条Struts html标签库中的标{:</P> <DIV style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><SPAN style="COLOR: #008080">1</SPAN><IMG src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #000000"><</SPAN><SPAN style="COLOR: #000000">html:javascript formName </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">formName</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">/></SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #008080">2</SPAN><SPAN style="COLOR: #000000"><IMG src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #000000"><</SPAN><SPAN style="COLOR: #000000">html:form action </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000"><IMG src="http://m.tkk7.com/images/dot.gif"></SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000"> onsubmit </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">return validateFormName(this);</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">/></SPAN></DIV><BR>其中W一行定义了需要{译的FormBean名,q里是“formName”,W二行在该FormBean装的表单上donsubmuit事gQ而该事g调用的函C在JSPh到客L时由Validator框架自动生成Q命名规则ؓ“validateXXX”,其中“XXX”就是第一行中的formName属性的|q里是“formName”,因此生成的函数名为“validateFormName”?BR>关于定义的ValidatorQ如上文的MyValidatorQ创建JS代码Q我没有实现q,感兴的话可以去Struts官网上找一下相x档?img src ="http://m.tkk7.com/fidodido/aggbug/34130.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/fidodido/" target="_blank">^ Mustang ^</a> 2006-03-07 18:38 <a href="http://m.tkk7.com/fidodido/archive/2006/03/07/34130.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在Struts中用Validator实现可配|的信息校验Q一Q?/title><link>http://m.tkk7.com/fidodido/archive/2006/03/07/34123.html</link><dc:creator>^ Mustang ^</dc:creator><author>^ Mustang ^</author><pubDate>Tue, 07 Mar 2006 09:53:00 GMT</pubDate><guid>http://m.tkk7.com/fidodido/archive/2006/03/07/34123.html</guid><wfw:comment>http://m.tkk7.com/fidodido/comments/34123.html</wfw:comment><comments>http://m.tkk7.com/fidodido/archive/2006/03/07/34123.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/fidodido/comments/commentRss/34123.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/fidodido/services/trackbacks/34123.html</trackback:ping><description><![CDATA[     摘要: 在Struts中对用户输入信息的校验一般在FromBean中进行(除非需要访问数据库q行诸如d信息的校验,因ؓq是Action的工作)Q本文将阐述如何在Struts中实现可配置的信息校验?一、在FormBean中手工实?最单的Ҏ是直接在FormBean中重写ActionFormcȝvalidateҎQvalidateҎ{֐如下Q?public ActionErrors...  <a href='http://m.tkk7.com/fidodido/archive/2006/03/07/34123.html'>阅读全文</a><img src ="http://m.tkk7.com/fidodido/aggbug/34123.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/fidodido/" target="_blank">^ Mustang ^</a> 2006-03-07 17:53 <a href="http://m.tkk7.com/fidodido/archive/2006/03/07/34123.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>不要更新QWindows XP 安全更新E序 (KB913446)http://m.tkk7.com/fidodido/archive/2006/02/24/32334.html^ Mustang ^^ Mustang ^Fri, 24 Feb 2006 11:16:00 GMThttp://m.tkk7.com/fidodido/archive/2006/02/24/32334.htmlhttp://m.tkk7.com/fidodido/comments/32334.htmlhttp://m.tkk7.com/fidodido/archive/2006/02/24/32334.html#Feedback1http://m.tkk7.com/fidodido/comments/commentRss/32334.htmlhttp://m.tkk7.com/fidodido/services/trackbacks/32334.htmlWindows XP 安全更新E序 (KB913446)补丁会修改tcpip.sys文gQ把最大连接数Ҏ10Qƈtcpip.sys版本升Q这样一来市面上所有的tcpipq接数破解工具都无能ؓ力(我已l试?个,都报错)Q所以徏议各位不要运行该升?/P>

^ Mustang ^ 2006-02-24 19:16 发表评论
]]>
OO基本概念http://m.tkk7.com/fidodido/archive/2005/11/21/20824.html^ Mustang ^^ Mustang ^Mon, 21 Nov 2005 12:43:00 GMThttp://m.tkk7.com/fidodido/archive/2005/11/21/20824.htmlhttp://m.tkk7.com/fidodido/comments/20824.htmlhttp://m.tkk7.com/fidodido/archive/2005/11/21/20824.html#Feedback0http://m.tkk7.com/fidodido/comments/commentRss/20824.htmlhttp://m.tkk7.com/fidodido/services/trackbacks/20824.html阅读全文

^ Mustang ^ 2005-11-21 20:43 发表评论
]]>
硕W试?/title><link>http://m.tkk7.com/fidodido/archive/2005/11/18/20493.html</link><dc:creator>^ Mustang ^</dc:creator><author>^ Mustang ^</author><pubDate>Fri, 18 Nov 2005 12:36:00 GMT</pubDate><guid>http://m.tkk7.com/fidodido/archive/2005/11/18/20493.html</guid><wfw:comment>http://m.tkk7.com/fidodido/comments/20493.html</wfw:comment><comments>http://m.tkk7.com/fidodido/archive/2005/11/18/20493.html#Feedback</comments><slash:comments>15</slash:comments><wfw:commentRss>http://m.tkk7.com/fidodido/comments/commentRss/20493.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/fidodido/services/trackbacks/20493.html</trackback:ping><description><![CDATA[<DIV>硕的笔试在语言斚w主要是Java和C++Q夹了一道C#题,记忆犹新的时候记下来<IMG src="http://spaces.msn.com/rte/emoticons/rainbow.gif"></DIV> <DIV> </DIV> <DIV>一、给了一二叉树的前序遍历和中序遍历Q要求写出后序遍历?/DIV> <DIV>看一下数据结构就行了Q很easy。提C:前序遍历的第一个节点ؓ根结点,在中序遍历中根结点的左边节点是左子树Q右边节Ҏ叛_树,如此递归?/DIV> <DIV> </DIV> <DIV>二、什么是物理内存和虚拟内存,OS中ؓ什么要使用虚拟内存Q?/DIV> <DIV>看OS的书?/DIV> <DIV> </DIV> <DIV>三、解释一下C#中的“delegate”?/DIV> <DIV>原先不清楚的Q然后在技术面试的时候问了一下面试官Q原来类g一个队列,队列中存的是函数指针Q托函敎ͼQ运行时队列中的函数会在一个线E中被依ơ执行?/DIV> <DIV> </DIV> <DIV>四、与子程序传递参数有哪些ҎQ?/DIV> <DIV>汇编题,我想h三个Q参数压栈、参数存寄存器、参数存数据Dc?/DIV> <DIV> </DIV> <DIV>五、解释一下Java中的String和StringBufferQ什么时候需要用StringBufferQ?/DIV> <DIV>核心是String对象是不变对象,q接、取子串{操作会生成新的对象Q旧对象可能会被回收。StringBuufer则是可变对象Q上q操作将在原对象上进行?/DIV> <DIV> </DIV> <DIV>六、Java中哪些容器的默认布局器(layoutQ是BorderLayoutQ?/DIV> <DIV>q个不是那得很准Q就写了JFrame及其子类QFrame及其子类?/DIV> <DIV> </DIV> <DIV>七、一个C++的函敎ͼ</DIV> <DIV>int operation(int numberA,int numberB){</DIV> <DIV>  return numberA + numberB;</DIV> <DIV>}</DIV> <DIV>然后声明了三个变量:</DIV> <DIV>int a = 2;</DIV> <DIV>int result1 = operation(5, a++);</DIV> <DIV>int result2 = operation(5+a, ++a);</DIV> <DIV>问result1和result2的倹{?/DIV> <DIV>原先以ؓ考得是传倹{传引用的问题,l果仔细一看考得是a++?+a的问题,q就单了?/DIV> <DIV>result1 = 7, result2 = 12</DIV> <DIV> </DIV> <DIV>八、如果父cȝ析构函数没有声明函数的话在父cȝ指针上调用析构函C有什么后果?</DIV> <DIV>屏蔽多态,子类甌的资源将不被释放?/DIV> <DIV> </DIV> <DIV>九、定义了一个类Q?/DIV> <DIV>class Something{</DIV> <DIV>pulic:</DIV> <DIV>  Something();</DIV> <DIV>  void setValue(int val){</DIV> <DIV>    value = val;</DIV> <DIV>  }</DIV> <DIV> </DIV> <DIV>private:</DIV> <DIV>  int value;</DIV> <DIV>}</DIV> <DIV>以及一个函敎ͼ</DIV> <DIV>void doSomething(int val){</DIV> <DIV>  Something* sth = new Something(); // Line 1</DIV> <DIV>  sth->setValue(val); // Line 2</DIV> <DIV>}</DIV> <DIV>问Line 2如果是doSomething()的最后一行的话会有什问题Q?/DIV> <DIV>doSomething执行完后sth没有被销毁,内存泄漏?/DIV> <DIV> </DIV> <DIV>十、写一个程序将输入?6q制转ؓ10q制?/DIV> <DIV>基础</DIV> <DIV> </DIV> <DIV>十一、设计一个微波炉的控制程序(OOQ?/DIV> <DIV>q道题有Ҏ思,我主要用Observer模式设计了一个定时器Q然后把微L炉烹饪的对象抽象为Cookable?/DIV> <DIV> </DIV> <DIV>十二、逻辑题,一列火车以15 mph的速度从北京开往上vQ另一列火车以20 mph的速度从上开往北京Q一只鸟Q比较笨<IMG src="http://spaces.msn.com/rte/emoticons/smile_wink.gif">Q速度25 mphQ在两列火R之间来回飞,盔Rx回。问C列火车相遇这只笨鸟一共飞了多q?</DIV> <DIV>很简单,因ؓ鸟一直在飞,所以一共飞了s/(15 + 20)QsZ到北京之间的距,那么它一共飞了s/(15 + 20) * 25 mile?/DIV> <DIV> </DIV> <DIV>12道题Q除了那道C#题,其它觉得没多地方能扣我分了Q当天晚上就没睡好,很兴奋。果然第二天上午打电话来让我去面试Q效率真的很高,然后果焉利拿Coffer<IMG src="http://spaces.msn.com/rte/emoticons/smile_shades.gif"></DIV><img src ="http://m.tkk7.com/fidodido/aggbug/20493.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/fidodido/" target="_blank">^ Mustang ^</a> 2005-11-18 20:36 <a href="http://m.tkk7.com/fidodido/archive/2005/11/18/20493.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java API中文版[转蝲自Sun技术社区]http://m.tkk7.com/fidodido/archive/2005/11/08/18806.html^ Mustang ^^ Mustang ^Tue, 08 Nov 2005 09:00:00 GMThttp://m.tkk7.com/fidodido/archive/2005/11/08/18806.htmlhttp://m.tkk7.com/fidodido/comments/18806.htmlhttp://m.tkk7.com/fidodido/archive/2005/11/08/18806.html#Feedback0http://m.tkk7.com/fidodido/comments/commentRss/18806.htmlhttp://m.tkk7.com/fidodido/services/trackbacks/18806.html Java API 文档中文?/SPAN>


Sun 公司提供的Java API Docs是学习和使用Java语言中最l常使用的参考资料之一。但是长期以来此文档只有英文版,对于中国地区的Java开发者来说相当的不便。目前Sun 公司正在l织多方力量此文档译成中文,q于q日在Sun 中国技术社区(http://gceclub.sun.com.cn/Q正式发布java.lang和java.utilcdAPI 文档的中文版Q其他类库API文档的中文版也将于今后一D|间内陆箋向中国地区的开发h员提供。在J2SE API文档Q?.0版本Q的汉化工作完成之后QSun 中国技术社开通Java API 文档中文版的打包下蝲服务?BR>
Java API 文档中文版发布计?/SPAN>

发布旉 相关cd 阅读/下蝲
2005/10/31 java.lang
java.util
在线阅读
2005/12/31 java.awt
java.io
java.text

2006/02/28 java.swing
2006/03/31
java.applet
java.beans
java.maths
java.net
java.nio
java.rmi
java.security
java.sql
javax.accessibility
javax.activity
javax.crypto
2006/04/30
javax.imageio
javax.management
javax.net
javax.naming
javax.print
javax.rmi
javax.security
javax.sound
2006/05/31
javax.sql
javax.transaction
javax.xml
org.ietf
org.xml
org.w3c
org.omg




^ Mustang ^ 2005-11-08 17:00 发表评论
]]>
IDEA cracker下蝲http://m.tkk7.com/fidodido/archive/2005/11/05/18269.html^ Mustang ^^ Mustang ^Sat, 05 Nov 2005 03:25:00 GMThttp://m.tkk7.com/fidodido/archive/2005/11/05/18269.htmlhttp://m.tkk7.com/fidodido/comments/18269.htmlhttp://m.tkk7.com/fidodido/archive/2005/11/05/18269.html#Feedback3http://m.tkk7.com/fidodido/comments/commentRss/18269.htmlhttp://m.tkk7.com/fidodido/services/trackbacks/18269.htmlhttp://fidodido.blogjava.net/Files/fidodido/idea_crack.rar

使用说明Q将其中的class文g按\径放?lib/idea.jar中的相应目录下覆盖原文gQ重新生成idea.jar

^ Mustang ^ 2005-11-05 11:25 发表评论
]]>
Alloy Look and Feel下蝲http://m.tkk7.com/fidodido/archive/2005/11/05/18268.html^ Mustang ^^ Mustang ^Sat, 05 Nov 2005 03:24:00 GMThttp://m.tkk7.com/fidodido/archive/2005/11/05/18268.htmlhttp://m.tkk7.com/fidodido/comments/18268.htmlhttp://m.tkk7.com/fidodido/archive/2005/11/05/18268.html#Feedback2http://m.tkk7.com/fidodido/comments/commentRss/18268.htmlhttp://m.tkk7.com/fidodido/services/trackbacks/18268.htmlhttp://fidodido.blogjava.net/Files/fidodido/alloylnf-1_4_4.rar

^ Mustang ^ 2005-11-05 11:24 发表评论
]]>
Borland Look and Feel下蝲http://m.tkk7.com/fidodido/archive/2005/11/05/18267.html^ Mustang ^^ Mustang ^Sat, 05 Nov 2005 03:20:00 GMThttp://m.tkk7.com/fidodido/archive/2005/11/05/18267.htmlhttp://m.tkk7.com/fidodido/comments/18267.htmlhttp://m.tkk7.com/fidodido/archive/2005/11/05/18267.html#Feedback2http://m.tkk7.com/fidodido/comments/commentRss/18267.htmlhttp://m.tkk7.com/fidodido/services/trackbacks/18267.htmlhttp://m.tkk7.com/Files/fidodido/Borland%20Look%20and%20Feel.rar

^ Mustang ^ 2005-11-05 11:20 发表评论
]]>
使用FilterServlet寚w面进行{?/title><link>http://m.tkk7.com/fidodido/archive/2005/11/04/18185.html</link><dc:creator>^ Mustang ^</dc:creator><author>^ Mustang ^</author><pubDate>Fri, 04 Nov 2005 11:42:00 GMT</pubDate><guid>http://m.tkk7.com/fidodido/archive/2005/11/04/18185.html</guid><wfw:comment>http://m.tkk7.com/fidodido/comments/18185.html</wfw:comment><comments>http://m.tkk7.com/fidodido/archive/2005/11/04/18185.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/fidodido/comments/commentRss/18185.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/fidodido/services/trackbacks/18185.html</trackback:ping><description><![CDATA[怿很多朋友在用JSP/Servlet{技术进行页面编E的时候都会或多或地遇到q问题。解决的Ҏ有很多,比较常见的是手动Ҏ有可能包含中文的字符串进行{码:<BR><BR> <DIV style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><IMG src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #000000">String latin </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> <IMG src="http://m.tkk7.com/images/dot.gif">;<BR><IMG src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align=top>String gbk </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000"> String(latin.getBytes(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">iso-8859-1</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">),</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">gbk</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);</SPAN></DIV><BR>q个Ҏq去我也比较常用Q的有效,但很累赘Ӟ丝毫没有模式之美Q有没有更优雅的Ҏ呢?如果你和我一h疑虑的话Q可以考虑使用FilterServletQ?BR><BR> <DIV style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><SPAN style="COLOR: #008080"> 1</SPAN><IMG src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #0000ff">import</SPAN><SPAN style="COLOR: #000000"> java.io.</SPAN><SPAN style="COLOR: #000000">*</SPAN><SPAN style="COLOR: #000000">;<BR></SPAN><SPAN style="COLOR: #008080"> 2</SPAN><SPAN style="COLOR: #000000"><IMG src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff">import</SPAN><SPAN style="COLOR: #000000"> javax.servlet.</SPAN><SPAN style="COLOR: #000000">*</SPAN><SPAN style="COLOR: #000000">;<BR></SPAN><SPAN style="COLOR: #008080"> 3</SPAN><SPAN style="COLOR: #000000"><IMG src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff">import</SPAN><SPAN style="COLOR: #000000"> javax.servlet.http.</SPAN><SPAN style="COLOR: #000000">*</SPAN><SPAN style="COLOR: #000000">;<BR></SPAN><SPAN style="COLOR: #008080"> 4</SPAN><SPAN style="COLOR: #000000"><IMG src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align=top><BR></SPAN><SPAN style="COLOR: #008080"> 5</SPAN><SPAN style="COLOR: #000000"><IMG src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff">import</SPAN><SPAN style="COLOR: #000000"> org.apache.log4j.</SPAN><SPAN style="COLOR: #000000">*</SPAN><SPAN style="COLOR: #000000">;<BR></SPAN><SPAN style="COLOR: #008080"> 6</SPAN><SPAN style="COLOR: #000000"><IMG src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align=top><BR></SPAN><SPAN style="COLOR: #008080"> 7</SPAN><SPAN style="COLOR: #000000"><IMG src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">class</SPAN><SPAN style="COLOR: #000000"> CharsetFilter<BR></SPAN><SPAN style="COLOR: #008080"> 8</SPAN><SPAN style="COLOR: #000000"><IMG id=Codehighlighter1_168_917_Open_Image onclick="this.style.display='none'; Codehighlighter1_168_917_Open_Text.style.display='none'; Codehighlighter1_168_917_Closed_Image.style.display='inline'; Codehighlighter1_168_917_Closed_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_168_917_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_168_917_Closed_Text.style.display='none'; Codehighlighter1_168_917_Open_Image.style.display='inline'; Codehighlighter1_168_917_Open_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ContractedBlock.gif" align=top>    </SPAN><SPAN style="COLOR: #0000ff">extends</SPAN><SPAN style="COLOR: #000000"> HttpServlet </SPAN><SPAN style="COLOR: #0000ff">implements</SPAN><SPAN style="COLOR: #000000"> Filter</SPAN><SPAN id=Codehighlighter1_168_917_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://m.tkk7.com/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_168_917_Open_Text><SPAN style="COLOR: #000000">{<BR></SPAN><SPAN style="COLOR: #008080"> 9</SPAN><SPAN style="COLOR: #000000"><IMG src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top>  </SPAN><SPAN style="COLOR: #0000ff">private</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">static</SPAN><SPAN style="COLOR: #000000"> Logger logger </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> Logger.getLogger(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">Filter servlet</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);<BR></SPAN><SPAN style="COLOR: #008080">10</SPAN><SPAN style="COLOR: #000000"><IMG src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top><BR></SPAN><SPAN style="COLOR: #008080">11</SPAN><SPAN style="COLOR: #000000"><IMG src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top>  </SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">void</SPAN><SPAN style="COLOR: #000000"> init(FilterConfig filterConfig)<BR></SPAN><SPAN style="COLOR: #008080">12</SPAN><SPAN style="COLOR: #000000"><IMG id=Codehighlighter1_315_319_Open_Image onclick="this.style.display='none'; Codehighlighter1_315_319_Open_Text.style.display='none'; Codehighlighter1_315_319_Closed_Image.style.display='inline'; Codehighlighter1_315_319_Closed_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_315_319_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_315_319_Closed_Text.style.display='none'; Codehighlighter1_315_319_Open_Image.style.display='inline'; Codehighlighter1_315_319_Open_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align=top>      </SPAN><SPAN style="COLOR: #0000ff">throws</SPAN><SPAN style="COLOR: #000000"> ServletException</SPAN><SPAN id=Codehighlighter1_315_319_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://m.tkk7.com/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_315_319_Open_Text><SPAN style="COLOR: #000000">{<BR></SPAN><SPAN style="COLOR: #008080">13</SPAN><SPAN style="COLOR: #000000"><IMG src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>  }</SPAN></SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #008080">14</SPAN><SPAN style="COLOR: #000000"><IMG src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top><BR></SPAN><SPAN style="COLOR: #008080">15</SPAN><SPAN style="COLOR: #000000"><IMG src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top>  </SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">void</SPAN><SPAN style="COLOR: #000000"> doFilter(ServletRequest request,ServletResponse response,<BR></SPAN><SPAN style="COLOR: #008080">16</SPAN><SPAN style="COLOR: #000000"><IMG id=Codehighlighter1_424_885_Open_Image onclick="this.style.display='none'; Codehighlighter1_424_885_Open_Text.style.display='none'; Codehighlighter1_424_885_Closed_Image.style.display='inline'; Codehighlighter1_424_885_Closed_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_424_885_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_424_885_Closed_Text.style.display='none'; Codehighlighter1_424_885_Open_Image.style.display='inline'; Codehighlighter1_424_885_Open_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align=top>      FilterChain filterChain)</SPAN><SPAN id=Codehighlighter1_424_885_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://m.tkk7.com/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_424_885_Open_Text><SPAN style="COLOR: #000000">{<BR></SPAN><SPAN style="COLOR: #008080">17</SPAN><SPAN style="COLOR: #000000"><IMG id=Codehighlighter1_449_740_Open_Image onclick="this.style.display='none'; Codehighlighter1_449_740_Open_Text.style.display='none'; Codehighlighter1_449_740_Closed_Image.style.display='inline'; Codehighlighter1_449_740_Closed_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_449_740_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_449_740_Closed_Text.style.display='none'; Codehighlighter1_449_740_Open_Image.style.display='inline'; Codehighlighter1_449_740_Open_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align=top>    </SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000">(request </SPAN><SPAN style="COLOR: #000000">!=</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">null</SPAN><SPAN style="COLOR: #000000">)</SPAN><SPAN id=Codehighlighter1_449_740_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://m.tkk7.com/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_449_740_Open_Text><SPAN style="COLOR: #000000">{<BR></SPAN><SPAN style="COLOR: #008080">18</SPAN><SPAN style="COLOR: #000000"><IMG src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top>      String charset </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> request.getCharacterEncoding();<BR></SPAN><SPAN style="COLOR: #008080">19</SPAN><SPAN style="COLOR: #000000"><IMG src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top>      </SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000">(charset </SPAN><SPAN style="COLOR: #000000">==</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">null</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">||</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">!</SPAN><SPAN style="COLOR: #000000">charset.equalsIgnoreCase(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">gbk</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">))<BR></SPAN><SPAN style="COLOR: #008080">20</SPAN><SPAN style="COLOR: #000000"><IMG id=Codehighlighter1_579_636_Open_Image onclick="this.style.display='none'; Codehighlighter1_579_636_Open_Text.style.display='none'; Codehighlighter1_579_636_Closed_Image.style.display='inline'; Codehighlighter1_579_636_Closed_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_579_636_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_579_636_Closed_Text.style.display='none'; Codehighlighter1_579_636_Open_Image.style.display='inline'; Codehighlighter1_579_636_Open_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align=top>        </SPAN><SPAN style="COLOR: #0000ff">try</SPAN><SPAN id=Codehighlighter1_579_636_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://m.tkk7.com/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_579_636_Open_Text><SPAN style="COLOR: #000000">{<BR></SPAN><SPAN style="COLOR: #008080">21</SPAN><SPAN style="COLOR: #000000"><IMG src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top>          request.setCharacterEncoding(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">GBK</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);<BR></SPAN><SPAN style="COLOR: #008080">22</SPAN><SPAN style="COLOR: #000000"><IMG src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>        }</SPAN></SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #008080">23</SPAN><SPAN style="COLOR: #000000"><IMG id=Codehighlighter1_684_734_Open_Image onclick="this.style.display='none'; Codehighlighter1_684_734_Open_Text.style.display='none'; Codehighlighter1_684_734_Closed_Image.style.display='inline'; Codehighlighter1_684_734_Closed_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_684_734_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_684_734_Closed_Text.style.display='none'; Codehighlighter1_684_734_Open_Image.style.display='inline'; Codehighlighter1_684_734_Open_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align=top>        </SPAN><SPAN style="COLOR: #0000ff">catch</SPAN><SPAN style="COLOR: #000000">(UnsupportedEncodingException ex)</SPAN><SPAN id=Codehighlighter1_684_734_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://m.tkk7.com/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_684_734_Open_Text><SPAN style="COLOR: #000000">{<BR></SPAN><SPAN style="COLOR: #008080">24</SPAN><SPAN style="COLOR: #000000"><IMG src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top>          logger.warn(ex.getMessage());<BR></SPAN><SPAN style="COLOR: #008080">25</SPAN><SPAN style="COLOR: #000000"><IMG src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>        }</SPAN></SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #008080">26</SPAN><SPAN style="COLOR: #000000"><IMG src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>    }</SPAN></SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #008080">27</SPAN><SPAN style="COLOR: #000000"><IMG id=Codehighlighter1_749_813_Open_Image onclick="this.style.display='none'; Codehighlighter1_749_813_Open_Text.style.display='none'; Codehighlighter1_749_813_Closed_Image.style.display='inline'; Codehighlighter1_749_813_Closed_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_749_813_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_749_813_Closed_Text.style.display='none'; Codehighlighter1_749_813_Open_Image.style.display='inline'; Codehighlighter1_749_813_Open_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align=top>    </SPAN><SPAN style="COLOR: #0000ff">try</SPAN><SPAN id=Codehighlighter1_749_813_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://m.tkk7.com/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_749_813_Open_Text><SPAN style="COLOR: #000000">{<BR></SPAN><SPAN style="COLOR: #008080">28</SPAN><SPAN style="COLOR: #000000"><IMG src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top>      filterChain.doFilter(request,response); </SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000"> 递交责Q链下一?/SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #008080">29</SPAN><SPAN style="COLOR: #008000"><IMG src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top></SPAN><SPAN style="COLOR: #000000">    }</SPAN></SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #008080">30</SPAN><SPAN style="COLOR: #000000"><IMG id=Codehighlighter1_838_881_Open_Image onclick="this.style.display='none'; Codehighlighter1_838_881_Open_Text.style.display='none'; Codehighlighter1_838_881_Closed_Image.style.display='inline'; Codehighlighter1_838_881_Closed_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_838_881_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_838_881_Closed_Text.style.display='none'; Codehighlighter1_838_881_Open_Image.style.display='inline'; Codehighlighter1_838_881_Open_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align=top>    </SPAN><SPAN style="COLOR: #0000ff">catch</SPAN><SPAN style="COLOR: #000000">(Exception ex)</SPAN><SPAN id=Codehighlighter1_838_881_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://m.tkk7.com/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_838_881_Open_Text><SPAN style="COLOR: #000000">{<BR></SPAN><SPAN style="COLOR: #008080">31</SPAN><SPAN style="COLOR: #000000"><IMG src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top>      logger.error(ex.getMessage());<BR></SPAN><SPAN style="COLOR: #008080">32</SPAN><SPAN style="COLOR: #000000"><IMG src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>    }</SPAN></SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #008080">33</SPAN><SPAN style="COLOR: #000000"><IMG src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>  }</SPAN></SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #008080">34</SPAN><SPAN style="COLOR: #000000"><IMG src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top><BR></SPAN><SPAN style="COLOR: #008080">35</SPAN><SPAN style="COLOR: #000000"><IMG id=Codehighlighter1_911_915_Open_Image onclick="this.style.display='none'; Codehighlighter1_911_915_Open_Text.style.display='none'; Codehighlighter1_911_915_Closed_Image.style.display='inline'; Codehighlighter1_911_915_Closed_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_911_915_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_911_915_Closed_Text.style.display='none'; Codehighlighter1_911_915_Open_Image.style.display='inline'; Codehighlighter1_911_915_Open_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align=top>  </SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">void</SPAN><SPAN style="COLOR: #000000"> destroy()</SPAN><SPAN id=Codehighlighter1_911_915_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://m.tkk7.com/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_911_915_Open_Text><SPAN style="COLOR: #000000">{<BR></SPAN><SPAN style="COLOR: #008080">36</SPAN><SPAN style="COLOR: #000000"><IMG src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>  }</SPAN></SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #008080">37</SPAN><SPAN style="COLOR: #000000"><IMG src="http://m.tkk7.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #008080">38</SPAN><SPAN style="COLOR: #000000"><IMG src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align=top></SPAN></DIV><BR>FilterServlet内部应该使用责Q链(Chain of ResponsibilityQ实玎ͼ在这里我们把对字W串的{码做任链中的一环,从上一环拿到requestQ处理后交给铄下一环。另外需要在web.xml里做些配|:<BR><BR> <DIV style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><IMG src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">filter</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align=top>  </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">filter-name</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000">charsetfilter</SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN style="COLOR: #800000">filter-name</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align=top>  </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">filter-class</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000">pqp.servlet.CharsetFilter</SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN style="COLOR: #800000">filter-class</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN style="COLOR: #800000">filter</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">filter-mapping</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align=top>  </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">filter-name</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000">charsetfilter</SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN style="COLOR: #800000">filter-name</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align=top>  </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">url-pattern</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000">/*</SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN style="COLOR: #800000">url-pattern</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align=top>  </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">dispatcher</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000">REQUEST</SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN style="COLOR: #800000">dispatcher</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN style="COLOR: #800000">filter-mapping</SPAN><SPAN style="COLOR: #0000ff">></SPAN></DIV><BR>其中“REQUEST”指定了filter拦截的类型,有REQUEST、FORWARD、ERROR和INCLUDEQ可l合选择Q一般选REQUEST。全部设|好后重新打包、部|Ԍq样Servlet可以自动把所有的request转换为GBK的字W集了,是不是很方便Q?IMG height=19 src="http://m.tkk7.com/Emoticons/teeth_smile.gif" width=19 border=0>但在q里加了filter后对性能斚w的媄响未知,大家可以讨论一下?img src ="http://m.tkk7.com/fidodido/aggbug/18185.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/fidodido/" target="_blank">^ Mustang ^</a> 2005-11-04 19:42 <a href="http://m.tkk7.com/fidodido/archive/2005/11/04/18185.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java.util.Calendar中的陷阱http://m.tkk7.com/fidodido/archive/2005/10/24/16604.html^ Mustang ^^ Mustang ^Mon, 24 Oct 2005 09:23:00 GMThttp://m.tkk7.com/fidodido/archive/2005/10/24/16604.htmlhttp://m.tkk7.com/fidodido/comments/16604.htmlhttp://m.tkk7.com/fidodido/archive/2005/10/24/16604.html#Feedback2http://m.tkk7.com/fidodido/comments/commentRss/16604.htmlhttp://m.tkk7.com/fidodido/services/trackbacks/16604.html需求:
从输入框得到用户分开输入的年、月、日Q将信息做ؓDatecd插入数据?/P>

解决一Q?/P>

InputBean bean = new InputBean(); // 装用户输入

// 获取用户输入Q封装于bean对象?/SPAN>

Calendar cal 
= Calendar.getInstance();
cal.set(cal.YEAR,bean.getYear()); 
// Year
cal.set(cal.MONTH,bean.getMonth()); // Month
cal.set(cal.DAY_OF_MONTH,bean.getDay()); // Day

// 数据库操?/SPAN>

陷阱Q?BR>Calendar中的MONTH字段和数l下标一P?开始,0代表Calendar.JANUARYQ?代表Calendar.FEBUARY…?2代表ơ年Calendar.JANUARY。因此用戯入的月䆾在置入Calendar对象之前必须q行处理Q即减一?BR>
解决二:

InputBean bean = new InputBean(); // 装用户输入

// 获取用户输入Q封装于bean对象?/SPAN>

Calendar cal 
= Calendar.getInstance();
cal.set(cal.YEAR,bean.getYear()); 
// Year
cal.set(cal.MONTH,bean.getMonth() - 1); // Month
cal.set(cal.DAY_OF_MONTH,bean.getDay()); // Day

// 数据库操?/SPAN>


^ Mustang ^ 2005-10-24 17:23 发表评论
]]>
JBuilder 2006 BTU子http://m.tkk7.com/fidodido/archive/2005/10/20/16182.html^ Mustang ^^ Mustang ^Thu, 20 Oct 2005 13:02:00 GMThttp://m.tkk7.com/fidodido/archive/2005/10/20/16182.htmlhttp://m.tkk7.com/fidodido/comments/16182.htmlhttp://m.tkk7.com/fidodido/archive/2005/10/20/16182.html#Feedback7http://m.tkk7.com/fidodido/comments/commentRss/16182.htmlhttp://m.tkk7.com/fidodido/services/trackbacks/16182.htmlhttp://m.tkk7.com/Files/fidodido/JBuilder%202006.rar

^ Mustang ^ 2005-10-20 21:02 发表评论
]]>
奇怪的范型定义http://m.tkk7.com/fidodido/archive/2005/10/19/15971.html^ Mustang ^^ Mustang ^Wed, 19 Oct 2005 10:14:00 GMThttp://m.tkk7.com/fidodido/archive/2005/10/19/15971.htmlhttp://m.tkk7.com/fidodido/comments/15971.htmlhttp://m.tkk7.com/fidodido/archive/2005/10/19/15971.html#Feedback1http://m.tkk7.com/fidodido/comments/commentRss/15971.htmlhttp://m.tkk7.com/fidodido/services/trackbacks/15971.html
public static <T> void sort(List<T> list,  Comparator<? super T> c)
1、既然该Ҏ无返回|voidQ,W一个?lt;T>”有什么作用?
2、?”代表什么含义?
3、“super”v什么作用?
4、基??Q?lt;? super T>”如何理解?

public static <T extends Comparable<? super T>> void sort(List<T> list)
1、“extends”如何理解?
2、其余同?img src ="http://m.tkk7.com/fidodido/aggbug/15971.html" width = "1" height = "1" />

^ Mustang ^ 2005-10-19 18:14 发表评论
]]>
Java Concurrent框架之阻塞队列(Blocking queueQ?/title><link>http://m.tkk7.com/fidodido/archive/2005/10/11/15269.html</link><dc:creator>^ Mustang ^</dc:creator><author>^ Mustang ^</author><pubDate>Tue, 11 Oct 2005 08:56:00 GMT</pubDate><guid>http://m.tkk7.com/fidodido/archive/2005/10/11/15269.html</guid><wfw:comment>http://m.tkk7.com/fidodido/comments/15269.html</wfw:comment><comments>http://m.tkk7.com/fidodido/archive/2005/10/11/15269.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://m.tkk7.com/fidodido/comments/commentRss/15269.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/fidodido/services/trackbacks/15269.html</trackback:ping><description><![CDATA[     摘要: 引子Q大家上q操作系l的都知道“生产者-消费者(Producer-ConsumerQ”模型,主要讨论的是q程Q线E)间的互斥和同步问题,关键是对锁(lockQ的甌、独占和释放Q在q里我就不罗嗦了。原先我写的Java代码如下Q?public class Producer extends Thread{  private Pro...  <a href='http://m.tkk7.com/fidodido/archive/2005/10/11/15269.html'>阅读全文</a><img src ="http://m.tkk7.com/fidodido/aggbug/15269.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/fidodido/" target="_blank">^ Mustang ^</a> 2005-10-11 16:56 <a href="http://m.tkk7.com/fidodido/archive/2005/10/11/15269.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Object Modeling Strategies (IV) http://m.tkk7.com/fidodido/archive/2005/10/11/15268.html^ Mustang ^^ Mustang ^Tue, 11 Oct 2005 08:51:00 GMThttp://m.tkk7.com/fidodido/archive/2005/10/11/15268.htmlhttp://m.tkk7.com/fidodido/comments/15268.htmlhttp://m.tkk7.com/fidodido/archive/2005/10/11/15268.html#Feedback0http://m.tkk7.com/fidodido/comments/commentRss/15268.htmlhttp://m.tkk7.com/fidodido/services/trackbacks/15268.htmlStr#6. "Four Kinds of Features" Strategy // identifying purpose and features

- Be certain to include features that cover the following:

1. Log important information.

2. Conduct business.

3. Analyze business results.

4. Interact with other systems.


Str#6a. "Add Features, Inspired by Patterns" Strategy // identifying purpose and features

- Add features inspired by the stereotypical responsibilities of a participant (in Patt#3, Participant-Transaction), transaction (in Patt#6, Transaction - Transaction Line Item), and place (in Patt#4, Place-Transaction).

- Examples: assess the performance of a participant (how many, how much), calculate the total of a transaction, assess the performance of a place (how many, how much).


Str#6b. "Organize and Prioritize Features" Strategy // identifying purpose and features

- Organize the features into &quotfeature categories" (also known as &quotuse cases").

. Example: maintaining employee info; assigning employees; assessing employee performance

- Prioritize the features.

. Identify the prioritization criteria. For example: normal sequence of business usage; greatest risk; customer interest; management interest; ease of implementation.


Str#7. "Calculation Results and Decision Points" Strategy // identifying purpose and features

- Add features that deliver calculation results.

- Add features that support decision points.


Str#8. "Best and Worst Features" Strategy // identifying purpose and features

- Ask users:

- What are the best features of the current system? Of competitive systems?

- What are the worst problems of the current system? Of competitive systems?

- What are the unneeded features of the current system? Of competitive systems?


Str#9. "Top 10" Strategy // identifying purpose and features

- Build a list of features.

- When you face an abundance of features (or classes, attributes, services), go after the top 10.

- Why: avoid being overwhelmed by a sea of low-level details.


Str#10. "Now and Later" Strategy // identifying purpose and features

- Consider current capabilities--and anticipated future capabilities.

- Ask, "How is it done now? How will it be done later, with the new system?"

- Look at things that people do to objects now, and consider features you can add (your automated objects might be able to do those actions to themselves).


Str#11. "Reengineer on the Boundaries" Strategy // identifying purpose and features

- Look at each organization or automated system boundary.

- Look for duplicate efforts on each side of such a boundary.

- Model the capability one time--and encourage some reengineering improvements for the organization.


Str#12. The "Smarter Devices" Strategy // identifying purpose and features

- Look for opportunities to use smarter devices, simplifying your object model and reducing software development schedule and costs.

- When building an object model in a field with rapidly changing data acquisition and control technology, be sure to take a systems perspective, spanning both hardware and software.



^ Mustang ^ 2005-10-11 16:51 发表评论
]]>
Java code namehttp://m.tkk7.com/fidodido/archive/2005/10/10/15181.html^ Mustang ^^ Mustang ^Mon, 10 Oct 2005 14:54:00 GMThttp://m.tkk7.com/fidodido/archive/2005/10/10/15181.htmlhttp://m.tkk7.com/fidodido/comments/15181.htmlhttp://m.tkk7.com/fidodido/archive/2005/10/10/15181.html#Feedback0http://m.tkk7.com/fidodido/comments/commentRss/15181.htmlhttp://m.tkk7.com/fidodido/services/trackbacks/15181.html VERSION CODE NAME   RELEASE DATE JDK 1.1.4 Sparkler Sept 12, 1997 JDK 1.1.5 Pumpkin Dec 3, 1997 JDK 1.1.6 Abigail April 24, 1998 JDK 1.1.7 Brutus Sept 28, 1998 JDK 1.1.8 Chelsea April 8, 1999 J2SE 1.2 Playground Dec 4, 1998 J2SE 1.2.1 (none) March 30, 1999 J2SE 1.2.2 Cricket July 8, 1999 J2SE 1.3 Kestrel May 8, 2000 J2SE 1.3.1 Ladybird May 17, 2001 J2SE 1.4.0 Merlin Feb 13, 2002 J2SE 1.4.1 Hopper Sept 16, 2002 J2SE 1.4.2 Mantis June 26, 2003 J2SE 5.0 (1.5.0) Tiger Sept 29, 2004
Future Releases J2SE 6.0 (1.6.0) Mustang Not yet released J2SE 7.0 (1.7.0) Dolphin Not yet released

^ Mustang ^ 2005-10-10 22:54 发表评论
]]>
“Y件危机”时ȝ的坏的编E习惯——我们是否依旧守着古风Q?/title><link>http://m.tkk7.com/fidodido/archive/2005/10/09/15050.html</link><dc:creator>^ Mustang ^</dc:creator><author>^ Mustang ^</author><pubDate>Sun, 09 Oct 2005 06:23:00 GMT</pubDate><guid>http://m.tkk7.com/fidodido/archive/2005/10/09/15050.html</guid><wfw:comment>http://m.tkk7.com/fidodido/comments/15050.html</wfw:comment><comments>http://m.tkk7.com/fidodido/archive/2005/10/09/15050.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/fidodido/comments/commentRss/15050.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/fidodido/services/trackbacks/15050.html</trackback:ping><description><![CDATA[<P>1、ؕ用GOTO语句Q上下蟩转看h非常方便Q?</P> <P>2、大量用全局变量Q无法控制它们值的变化Q例如在非预期的子程序的执行中) </P> <P>3、不声明变量cd׃用(隐含cd可以在Fortran中用,例如Q一个实数可以截短ؓ一个整数而没有引L序员的注意) </P> <P>4、非l构化的、组l؜q大块代码用于多个dQ一块可能有上千行代码) </P> <P>5、注释行太少Q由于它们ƈ不被执行Q)</P><img src ="http://m.tkk7.com/fidodido/aggbug/15050.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/fidodido/" target="_blank">^ Mustang ^</a> 2005-10-09 14:23 <a href="http://m.tkk7.com/fidodido/archive/2005/10/09/15050.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tomcat 5.5.9 不支持switch(&lt;enum&gt;)Q?/title><link>http://m.tkk7.com/fidodido/archive/2005/09/19/13439.html</link><dc:creator>^ Mustang ^</dc:creator><author>^ Mustang ^</author><pubDate>Mon, 19 Sep 2005 10:51:00 GMT</pubDate><guid>http://m.tkk7.com/fidodido/archive/2005/09/19/13439.html</guid><wfw:comment>http://m.tkk7.com/fidodido/comments/13439.html</wfw:comment><comments>http://m.tkk7.com/fidodido/archive/2005/09/19/13439.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://m.tkk7.com/fidodido/comments/commentRss/13439.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/fidodido/services/trackbacks/13439.html</trackback:ping><description><![CDATA[ServiceExceptionTypeQ?BR> <DIV style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><IMG src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #0000ff">package</SPAN><SPAN style="COLOR: #000000"> pqp.service;<BR><IMG src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align=top><BR><IMG id=Codehighlighter1_54_125_Open_Image onclick="this.style.display='none'; Codehighlighter1_54_125_Open_Text.style.display='none'; Codehighlighter1_54_125_Closed_Image.style.display='inline'; Codehighlighter1_54_125_Closed_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_54_125_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_54_125_Closed_Text.style.display='none'; Codehighlighter1_54_125_Open_Image.style.display='inline'; Codehighlighter1_54_125_Open_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ContractedBlock.gif" align=top></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">enum</SPAN><SPAN style="COLOR: #000000"> ServiceExceptionType</SPAN><SPAN id=Codehighlighter1_54_125_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://m.tkk7.com/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_54_125_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top>  DB_FAILURE<BR><IMG src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top>      ,USER_EXISTED<BR><IMG src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top>      ,INVALID_USERNAME_OR_PASSWORD<BR><IMG src="http://m.tkk7.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</SPAN></SPAN></DIV><BR>在新用户注册的逻辑Ҏ中会查用户名是否已存在,存在的话抛出ServiceExceptionQƈServiceExceptionType装q去。action的excute不处理ServiceExceptionQ接着往外扔Q最后由error.jsp处理Q?BR> <DIV style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><IMG src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #000000"><%</SPAN><SPAN style="COLOR: #000000">@ page contentType</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">text/html; charset=GBK</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">%></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #000000"><%</SPAN><SPAN style="COLOR: #000000">@ page isErrorPage</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">true</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">%></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #000000"><%</SPAN><SPAN style="COLOR: #000000">@ page </SPAN><SPAN style="COLOR: #0000ff">import</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">pqp.service.*</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">%></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align=top><BR><IMG src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #000000"><%</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align=top>ServiceException ex</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">(ServiceException)exception;<BR><IMG id=Codehighlighter1_188_270_Open_Image onclick="this.style.display='none'; Codehighlighter1_188_270_Open_Text.style.display='none'; Codehighlighter1_188_270_Closed_Image.style.display='inline'; Codehighlighter1_188_270_Closed_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_188_270_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_188_270_Closed_Text.style.display='none'; Codehighlighter1_188_270_Open_Image.style.display='inline'; Codehighlighter1_188_270_Open_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ContractedBlock.gif" align=top></SPAN><SPAN style="COLOR: #0000ff">switch</SPAN><SPAN style="COLOR: #000000">(ex.getType())</SPAN><SPAN id=Codehighlighter1_188_270_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://m.tkk7.com/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_188_270_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top> </SPAN><SPAN style="COLOR: #0000ff">case</SPAN><SPAN style="COLOR: #000000"> USER_EXISTED:<BR><IMG src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top>  out.println(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">无法注册Q用户名?/SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">ex.getMessage()</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">”已存在</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);<BR><IMG src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align=top>  </SPAN><SPAN style="COLOR: #0000ff">break</SPAN><SPAN style="COLOR: #000000">;<BR><IMG src="http://m.tkk7.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #000000">%></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align=top></SPAN></DIV><BR>l果~译的时候报错:<BR><IMG height=610 alt=tomcat.png src="http://m.tkk7.com/images/blogjava_net/fidodido/2598/tomcat.png" width=761 border=0><BR><BR>NTomcat 5.5.9不支持对enumerationq行switch操作Q?img src ="http://m.tkk7.com/fidodido/aggbug/13439.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/fidodido/" target="_blank">^ Mustang ^</a> 2005-09-19 18:51 <a href="http://m.tkk7.com/fidodido/archive/2005/09/19/13439.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Object Modeling Strategies (III)http://m.tkk7.com/fidodido/archive/2005/09/19/13404.html^ Mustang ^^ Mustang ^Mon, 19 Sep 2005 07:26:00 GMThttp://m.tkk7.com/fidodido/archive/2005/09/19/13404.htmlhttp://m.tkk7.com/fidodido/comments/13404.htmlhttp://m.tkk7.com/fidodido/archive/2005/09/19/13404.html#Feedback0http://m.tkk7.com/fidodido/comments/commentRss/13404.htmlhttp://m.tkk7.com/fidodido/services/trackbacks/13404.html Identifying system purpose and features

A purpose is an overall desired result, the aim of one's actions. Features are specific capabilities for the system under consideration.

This section presents &quotpurpose and features" strategies.


Str#2. "System Purpose" Strategy // identifying purpose and features

- Develop an overall purpose statement in 25 words or less. Why this system? Why now?

- Keep the overall goal, the critical success factor, always before you.

- "To support, to help, to facilitate, . . ."


Str#3. "Field Trips, Pictures, and Examples" Strategy // identifying purpose and features

- Work with domain experts, ones well-versed in the business.

- Ask for a guided tour; ask for a picture; ask for lots of examples.


Str#3a. "Multiple Learning Sources" Strategy // identifying purpose and features

- Read about it; try out software for it; listen to domain experts!


Str#3b. "Build A Glossary" Strategy // identifying purpose and features

- Are you finding that people terms differently? Perhaps using different words to convey the same meaning? Or giving different meanings to the same word? Not a surprise!

- Recommendation: build a glossary using a three-column spreadsheet (term, dictionary definition, project definition).


Str#4. "Identify Major Sources of Stress" Strategy // identifying purpose and features

- Ask people about the most pressing problems that they face each day. "What stresses you out the most? What frightens you the most? What's the worst thing that could happen to you while your boss is watching?"

- Look for ways to eliminate or reduce the impact of those problems.


Str#5. "Develop a Features List" Strategy // identifying purpose and features

- Build a list of features.

- Think through each feature: the feature, who it's for, and why it's important.

- Use qualifiers to narrow the scope of the purpose and features statements.

- Prioritize your features list.

- Use the features list for planning and building frequent, tangible, working results.



^ Mustang ^ 2005-09-19 15:26 发表评论
]]>
Object Modeling Strategies (II)http://m.tkk7.com/fidodido/archive/2005/09/19/13403.html^ Mustang ^^ Mustang ^Mon, 19 Sep 2005 07:23:00 GMThttp://m.tkk7.com/fidodido/archive/2005/09/19/13403.htmlhttp://m.tkk7.com/fidodido/comments/13403.htmlhttp://m.tkk7.com/fidodido/archive/2005/09/19/13403.html#Feedback0http://m.tkk7.com/fidodido/comments/commentRss/13403.htmlhttp://m.tkk7.com/fidodido/services/trackbacks/13403.htmlStr#1d. "Invest an Hour" Strategy // activities and model components

- Rather than philosophize endlessly, invest an hour in each of several different ways of modeling a particularly challenging area. Compare your results -- and decide which way to go (based upon actual results, rather than the outcome of a multiweek debate).


Str#1e. "Consider the Domain First, Artifacts After That" Strategy // activities and model components

- Build an object model with a domain expert first. Then add-in content that you can extract from artifacts (existing data models, source code, whatever).

- Reason why: you need the benefit of the former (fresh insights, new ideas) to help you grapple with the latter (what to include, what to exclude).


Str#1f. "Extract Useful Content From An Existing Data Model" Strategy // activities and model components

- Yes, it can be done.

- Best practice: build an initial object model with a domain expert first. Then use that model to help you filter out the classes and attributes (in an previous data model) that are no longer needed. Why: the added domain understanding will help you do a better job leaving unneeded things behind, rather than dragging everything from the past along with you once again.

- For the entities:

. List them. Delete correlation tables. Delete (or revise) names that do not fit the problem domain vocabulary (words that a domain expert uses and understands). Collapse supertypes-subtypes that do not express domain-based generalization-specialization.

- Then, when you work on attributes:

. List them. Delete (or revise) names that do not fit the problem domain vocabulary (words that a domain expert uses and understands). Delete flags, indicators, sequence numbers, and unique keys -- nearly all of which are simply leftover implementation mechanisms from a previous system.



^ Mustang ^ 2005-09-19 15:23 发表评论
]]>
James Goslinghttp://m.tkk7.com/fidodido/archive/2005/09/14/13035.html^ Mustang ^^ Mustang ^Wed, 14 Sep 2005 14:01:00 GMThttp://m.tkk7.com/fidodido/archive/2005/09/14/13035.htmlhttp://m.tkk7.com/fidodido/comments/13035.htmlhttp://m.tkk7.com/fidodido/archive/2005/09/14/13035.html#Feedback4http://m.tkk7.com/fidodido/comments/commentRss/13035.htmlhttp://m.tkk7.com/fidodido/services/trackbacks/13035.html今天是Java China 2005的最后一天,下午没有d个分会场Q而是M长富宫饭店的“Java认证英Ƣ庆会”,目的只有一个:和Java之父James Gosling合媄?/DIV>
…?/DIV>
׃明天要交实习手册Q拍照过E当中用的个中手段先按下不表,M合媄是成功的Q效果是令h满意?IMG src="http://spaces.msn.com/rte/emoticons/smile_shades.gif">

r_james_i.jpg


^ Mustang ^ 2005-09-14 22:01 发表评论
]]>Joshua Bloch咏Tiger诗八?/title><link>http://m.tkk7.com/fidodido/archive/2005/09/08/12445.html</link><dc:creator>^ Mustang ^</dc:creator><author>^ Mustang ^</author><pubDate>Thu, 08 Sep 2005 08:59:00 GMT</pubDate><guid>http://m.tkk7.com/fidodido/archive/2005/09/08/12445.html</guid><wfw:comment>http://m.tkk7.com/fidodido/comments/12445.html</wfw:comment><comments>http://m.tkk7.com/fidodido/archive/2005/09/08/12445.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/fidodido/comments/commentRss/12445.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/fidodido/services/trackbacks/12445.html</trackback:ping><description><![CDATA[<P>“Ease of Development”是J2SE 1.5的主要卖炏Vؓ此,q一版本加入了七U新的语aҎ——Enhanced for Loop、Autoboxing/Auto-Unboxing、Varargs、Static Import、Enumeration、Metadata和Generics。用这些特性,可以让编写出来的E序更简l、更清晰、更不容易出错,从而简化开发的q程?/P> <P>Joshua BlochQ《Effective Java》的作者,J2SE 1.5的主要开发h员之一Q效仿William BlakeQ?757-1827Q英国诗人)的?A >Tiger</A>》一诗,些特性撰写了q样一l诗:</P> <H4 class=major>咏Tiger</H4> <BLOCKQUOTE>Tiger, Tiger burning bright<BR>Like a geek who works all night<BR>What new-fangled bit or byte<BR>Could ease the hacker"s weary plight?<BR></BLOCKQUOTE> <P>q一首是总说Tiger中的能开发变得简单的各种新语aҎ?/P> <H4 class=major>咏Enhanced for Loop</H4> <BLOCKQUOTE>While Iterators have their uses<BR>They sometimes strangle us like nooses<BR>With enhanced-for"s deadly ray<BR>Iterator"s kept at bay<BR></BLOCKQUOTE> <P>q一首单表Enhanced for Loop机制提供了一U更单的遍历数组、Collection和其它实Cjava.lang.Iterable接口的对象的Ҏ?/P> <H4 class=major>咏Autoboxing/Auto-Unboxing</H4> <BLOCKQUOTE>When from the collections ints are drawn<BR>Wrapper classes make us mourn<BR>When Tiger comes, we"ll shed no tears<BR>We"ll autobox them in the ears<BR></BLOCKQUOTE> <P>q一首单表Autoboxing机制/Auto-Unboxing提供了一U更单的整合两套不同的类型系l(基本cd和引用类型)的机制?/P> <H4 class=major>咏Varargs</H4> <BLOCKQUOTE>O joyless nights, o joyless days<BR>Our programs cluttered with arrays<BR>With varargs here, we needn"t whine;<BR>We"ll simply put the args inline<BR></BLOCKQUOTE> <P>q一首单表Varargs机制提供了一U更单的传递个数可变的实参的方法?/P> <H4 class=major>咏Static Import</H4> <BLOCKQUOTE>And from the constant interface<BR>We shall inherit no disgrace<BR>With static import at our side<BR>Our joy will be unqualified<BR></BLOCKQUOTE> <P>q一首单表Static Import机制提供了一U更单的讉K静态成员的机制?/P> <H4 class=major>咏Enumeration</H4> <BLOCKQUOTE>The int-enum will soon be gone<BR>Like a foe we"ve known too long.<BR>With type safe-enum"s mighty power<BR>Our foe will bother us no more<BR></BLOCKQUOTE> <P>q一首单表Enumeration机制提供了一U更单的定义“类型安全的枚DcZ的Ҏ?/P> <H4 class=major>咏Metadata</H4> <BLOCKQUOTE>As for noble metadata<BR>I"ll have to sing its praises later<BR>Its uses are so numerous<BR>To give their due, I"d miss the bus<BR></BLOCKQUOTE> <P>q一首单表Metadata机制提供了一U更单的定义“机器可ȝ说明信息”的机制?/P> <H4 class=major>咏Generics</H4> <BLOCKQUOTE>To the most despised collections" cast<BR>We"ll bid a fond farewell at last<BR>With generics" burning spear<BR>The need for cast will disappear<BR></BLOCKQUOTE> <P>q一首是说用Generics机制Q可以免d多强制类型{化的步骤的事情。Generics机制q有些其它用法,在这里没有提到?/P><img src ="http://m.tkk7.com/fidodido/aggbug/12445.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/fidodido/" target="_blank">^ Mustang ^</a> 2005-09-08 16:59 <a href="http://m.tkk7.com/fidodido/archive/2005/09/08/12445.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Object Modeling Strategies (I)http://m.tkk7.com/fidodido/archive/2005/09/08/12401.html^ Mustang ^^ Mustang ^Thu, 08 Sep 2005 02:12:00 GMThttp://m.tkk7.com/fidodido/archive/2005/09/08/12401.htmlhttp://m.tkk7.com/fidodido/comments/12401.htmlhttp://m.tkk7.com/fidodido/archive/2005/09/08/12401.html#Feedback0http://m.tkk7.com/fidodido/comments/commentRss/12401.htmlhttp://m.tkk7.com/fidodido/services/trackbacks/12401.htmlActivities and model components

Str#1. "Four Major Activities, Four Major Components" Strategy // activities and model components

- Organize your work around four major activities, within four major components:

- Four major activities:

. Standard: Identify purpose and features, select objects, establish responsibilities, work out dynamics with scenarios.

. Variation 1: You may find it helpful to focus on working out dynamics with scenarios, establishing responsibilities along the way. This is especially suitable for real-time applications.

. Variation 2: You may find it helpful to select transaction, aggregate, and plan objects, then use the corresponding patterns to guide you through selecting additional objects, establishing responsibilities, and working out dynamics with scenarios.

- Four major components:

. Standard: Problem domain, human interaction, data management, system interaction.

. Variation 1: You may find it helpful to begin with human interaction, followed by problem domain, data management, and system interaction. This is especially suitable when your domain experts want to talk in terms of human interaction from the very start.

. Variation 2: You may find it helpful to begin with problem domain and system interaction, followed by human interaction and data management. This is especially suitable for real-time applications, when your domain experts are keenly interested in the data acquisition and control aspects of the system under consideration.


Str#1a. "Build an Initial Object Model, then Proceed Feature-by-Feature" Strategy // activities and model components

- Here is a very helpful path for building object models.

- Identify purpose and features.

. Purpose statement. Prioritized list of features.

- Build an initial object model, working with domain experts.

. Select initial objects (using strategies; include participants, transactions, places, items, specific items).

. Establish initial responsibilities (using strategy #86 and the stereotypical responsibilities expressed by object-model patterns).

- Work out dynamics with scenarios, feature-by-feature.

a. Develop a scenario view for the feature.

b. Add objects and responsibilities that you need for the scenario.


Str#1b. "Use Feature Milestones" Strategy // activities and model components

- Use your prioritized features list to plan, build, and measure.

- Early in the development effort, use your prioritized features list day-by-day, while developing an initial object model and scenario views (one scenario view for each feature).

- For the rest of the development effort, use your prioritized features list to plan, build, and measure what you produce -- namely, the frequent, tangible, working results.

- Some notes:

. How frequent is "frequent"?

. . Each week, each month, or each quarter -- depends upon the size of the project and the amount of added effort required to make working results available to others.

- Why use features milestones -- and measure features completed, using frequent, tangible, working results?

. In two words: risk reduction.

- How do you estimate percent completion?

. Take the features list, assign a weight to each feature (based upon level of difficulty, relative number of lines of code, and level of skill of the person who will do the work), and then make your estimates.

. Your estimates will improve over time, as you deliver more and more tangible results along the way.


Str#1c. "Take Multiple Paths" Strategy // activities and model components

- For each outcome, consider multiple paths for reaching that goal. Travel down one of those paths. When your progress slows somewhat, move to another path, for awhile.

- "All features, all classes, then the top ten classes"

. features -> classes -> top 10 classes -> responsibilities, scenarios for the top 10

- "One feature at a time"

. feature -> small object model -> scenario view

- "Key players first"

. 1-2 participants + 1-2 transactions + line items, items -> responsibilities, scenarios

- "Key transactions first"

. transaction - subsequent transaction - subsequent transaction -> participants, line items, items -> attributes, services



^ Mustang ^ 2005-09-08 10:12 发表评论
]]>
~省适配器模式(Default AdapterQ?/title><link>http://m.tkk7.com/fidodido/archive/2005/09/06/12197.html</link><dc:creator>^ Mustang ^</dc:creator><author>^ Mustang ^</author><pubDate>Tue, 06 Sep 2005 04:01:00 GMT</pubDate><guid>http://m.tkk7.com/fidodido/archive/2005/09/06/12197.html</guid><wfw:comment>http://m.tkk7.com/fidodido/comments/12197.html</wfw:comment><comments>http://m.tkk7.com/fidodido/archive/2005/09/06/12197.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/fidodido/comments/commentRss/12197.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/fidodido/services/trackbacks/12197.html</trackback:ping><description><![CDATA[<H4>一、概q?/H4> <P>当不需要全部实现适配器接口提供的ҎӞ可先设计一个抽象类实现适配器接口,qؓ接口中每个方法提供一个默认实玎ͼI方法)。那么该抽象cȝ子类可有选择地覆盖父cȝ某些Ҏ来实现需求?/P> <H4>二、结?/H4> <P align=center><IMG height=243 alt=defaultadapter.png src="http://m.tkk7.com/images/blogjava_net/fidodido/2507/defaultadapter.png" width=138 border=0></P> <H4> </H4> <H4>三、动?/H4> <P>对于一个接口不想用其所有的Ҏ时?/P><img src ="http://m.tkk7.com/fidodido/aggbug/12197.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/fidodido/" target="_blank">^ Mustang ^</a> 2005-09-06 12:01 <a href="http://m.tkk7.com/fidodido/archive/2005/09/06/12197.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>接受E序设计语言的再教育[转蝲自dearbook书评]http://m.tkk7.com/fidodido/archive/2005/08/31/11683.html^ Mustang ^^ Mustang ^Wed, 31 Aug 2005 15:09:00 GMThttp://m.tkk7.com/fidodido/archive/2005/08/31/11683.htmlhttp://m.tkk7.com/fidodido/comments/11683.htmlhttp://m.tkk7.com/fidodido/archive/2005/08/31/11683.html#Feedback2http://m.tkk7.com/fidodido/comments/commentRss/11683.htmlhttp://m.tkk7.com/fidodido/services/trackbacks/11683.html再教Ԍ没错。依个h愚见Q大多数中国E序员都需要接受一ơ有关程序设计语a的再教育Q而Michael L.Scott所著的《程序设计语a——实践之路》则可以成ؓq次再教育中的最好读本之一?BR>
在现代汉语中Q没有什么词比“急功q利”更能体现当代程序员对于E序设计语言的期望和要求了——我见过太多太多只学会了“Hello,World ”就打算独立~写企业U应用的速成者,我也见过太多太多刚掌握了一门面向对象语a的语法就宣称自己是OO专家的神仙人物Q在他们gQ一本名为《某某语a入门》的教科书应以取代《数据结构》、《编译原理》、《离散数学》等所有“高深”而“无用”的评Q而一名能熟练使用Hibernate或Spring的JavaE序员就以成ؓ一家小型企业的J2EE首席架构师了?BR>
更ؓ有趣的是Q这些急功q利的“语a万能论”者一斚w会把某种最行的语a或类库当作克敌制胜的惟一法宝Q另一斚w却又丝毫不理会那些经q数十年的积淀才成为现代程序设计语a_֍的,贯穿于语法、语义和语用{三个层面的基本理念和基本特征;q种做法像是把一部夏利引擎、麦凯u外壳的赛车开上了F1赛道Q难免会在残L现实面前落得个E青脸肿的l局?BR>很显Ӟ如果你对自己在实际工作中L无法提高~码效率、无法改qY件质量的事实困惑不已Q如果你在试用了28U开源框架和69Ueclipse插g后仍不清楚自q前的垃圾代码该如何“重构”,那么Q你也许需要抽Z些时_补习一下你曄极度蔑视的、看h没有M“用处”的基础知识了。对于那些没旉重温大学评的上班族来说Q这U补习最好从《程序设计语a——实践之路》开始。即便不能把q本八九N的“大部头”全部读完,你也臛_能在阅读q程中明白三个看似浅显、实则微妙的“大道理”:

  其一Q语a必须与环境相l合Q才能发挥出最大的功用。这里所说的“环境”通常包括~译环境、运行环境和应用环境三个斚w。D例来_如果你打仿照着某些开源框架的做法Q用控制反转和依赖注入技术消除代码中某些让h生厌的依赖关p,你一定会认真研习实现cM技术的语法特征Q但你未必会d思考以下几个问题:在编译层面,使用了这些语法特征的代码是否会媄响到最l生成的目标代码质量Q在q行层面Q该如何l织q些语法特征Q才能让使用了相x术的可执行程序在支持废料攉的ƈ发环境下有不俗的表现Q在应用层面Q这些旨在消除依赖关pȝ技术会不会破坏新、旧模块间的q关系Q以至于我们必须׃大量旉改写原有的代码或接口才能保证pȝ的^滑升U?全面思考这些与环境相关的问题ƈ不一定会改变你的抉择Q但它却可以帮助你找到效率、可靠性和可用性之间的最佛_^衡点。在此方面,《程序设计语a——实践之路》一书所使用的,程序设计语a与编译原理、面向对象等知识l合h、融会诏通的做法不但可以节省我们分类学习的大量时_q可以训l我们从整体出发、多角度思维的方式与ҎQ其价ga而喻?BR>
其二Q程序设计语a本n所h的多h可以成为我们提高Y件开发水q的最x南。说到这里,我又惌v了那些充斥在各大技术网站的Q题为“某某语a比某某语a更强大”或“某某语a已死Q某某语a必胜”的帖子。发表这些帖子的帖主也许q不懂得Q程序设计语a的世界本来就是一个多样化的、五彩缤UL世界Q每一U成功进入应用、教学或U研领域的程序设计语a都有它值得学习和借鉴的地斏V如果仅仅根据个人的喜好或是响应时尚的号召,q目地Ҏ某一U语aq贬低其他所有语aQ这L帖子和那些频J出现在Fans|站上的“爱L某某Q恨L某某”的帖子有什么本质的不同Q更为重要的是,如果我们能够在《程序设计语a——实践之路》的指下Q真正懂得了函数式语a、数据流语言、逻辑式语a、冯·ZDa、面向对象语a{不同的语言cd在语法设计、编译器设计和运行环境设计方面的异同Q我们就会惊讶地发现QScheme语言的lambda表达式可以在C 语言中优雅、高效地解决诸如面向契约设计之类的复杂问题;Ada95语言中提供的同步和保护机制可以ؓ那些使用Java~写的多U程应用提供重要的参考;Smalltalk语言与编译和q行环境的紧密结合则可以为我们设计可扩展的JavaScript宿主提供最好的借鉴……从q个意义上说Q学习一U语a的意义绝不在于ؓ自己增添一U求职和谋生的手D——真正善于学习的人总能从每U语a的设计和实现中找到许多可用于提高~程水^的关键特征?BR>
其三Q用特定语a~写出来的代码是否优雅、可靠,q主要取决于E序员对各种基本理念和基本原则的认知E度Q而不取决于程序员C了多复杂的语法特征或学会了多少行cd的用法。正如《程序设计语a——实践之路》所说的那样Q“典型的C E序员都极少使用联合、多重ѝ变动个数的参数Q或? q算W”,但是Q如果你了解了隐藏在q些复杂语法特征背后的东襎쀔—如内存I间的分配和d方式Q复本式l承和共享式l承之间的关p,参数传递和求值顺序,动态方法约束和成员查找Q等{——你可以在需要用这些语法特征的时候满怀信心地告诉自己:“嘿Q这不过是某某原则或某某技术在C 语言中的表现形式|了Q我能搞定它Q”反之,如果你不晓得与数据结构和法相关的代码在~译、运行时必然存在的各U均衡与折中问题Q即便你把C 语言的标准文档背得滚瓜烂熟,即便你可以默写出System.Collections命名I间中的所有属性和ҎQ你也会在体验过自己开发的软g与成熟Y件之间的差别后大发感慨:“同h使用C 语言Qؓ什么我写的E序M从头到脚散发着‘业余’的气味儿呢Q?BR>
关于E序设计语言的本质,Michael L.Scott是这栯的:“就像自然语a限制着Z解释和论q的方式一PE序设计语言也限定了什么可以表达,什么不能表达,q对E序员能够怎样思考问题有着深刻而微妙的影响。”既然如此,我们q犹豫什么呢Q与其后悔在学校中虚度了光阴Q还不如马上捧v《程序设计语a——实践之路》这本书Q接受一ơ有关程序设计语a的再教育呢!



^ Mustang ^ 2005-08-31 23:09 发表评论
]]>
接口与Objectcȝ关系Q?/title><link>http://m.tkk7.com/fidodido/archive/2005/08/19/10506.html</link><dc:creator>^ Mustang ^</dc:creator><author>^ Mustang ^</author><pubDate>Fri, 19 Aug 2005 05:53:00 GMT</pubDate><guid>http://m.tkk7.com/fidodido/archive/2005/08/19/10506.html</guid><wfw:comment>http://m.tkk7.com/fidodido/comments/10506.html</wfw:comment><comments>http://m.tkk7.com/fidodido/archive/2005/08/19/10506.html#Feedback</comments><slash:comments>9</slash:comments><wfw:commentRss>http://m.tkk7.com/fidodido/comments/commentRss/10506.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/fidodido/services/trackbacks/10506.html</trackback:ping><description><![CDATA[今天凌晨coding的时候发C个很有趣的现象。“ObjectcLJava体系的单根父节点Q所有Javac都从Objectcȝѝ”这句话是大部分green hand都知道的Java金句Q毋庸置疑。那如果我问你接口和Objectcȝ关系呢?{案是“没有关pZ。请看下面的代码Q?BR><BR> <DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"> <DIV><SPAN style="COLOR: #008080">1</SPAN><IMG src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #000000">Map map </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000"> HashMap();<BR></SPAN><SPAN style="COLOR: #008080">2</SPAN><SPAN style="COLOR: #000000"><IMG src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align=top>map.clone();</SPAN></DIV></DIV><BR>Map是一个接口,HashMap是一个类。clone()Ҏ在ObjectcM定义Q因此我下意识认为第二行可以q么写。结果编译器报错Qclone()Ҏ未定义。这个错误让我很郁闷Q看了半天doc才发原来Map是一个接口,而接口和ObjectcL有Q何关p,所以Map也就没有l承clone()。于是把代码Ҏ下面的样子:<BR><BR> <DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"> <DIV><SPAN style="COLOR: #008080">1</SPAN><IMG src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #000000">HashMap map </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000"> HashMap();<BR></SPAN><SPAN style="COLOR: #008080">2</SPAN><SPAN style="COLOR: #000000"><IMG src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align=top>map.clone();</SPAN></DIV></DIV><BR>q样可以了?img src ="http://m.tkk7.com/fidodido/aggbug/10506.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/fidodido/" target="_blank">^ Mustang ^</a> 2005-08-19 13:53 <a href="http://m.tkk7.com/fidodido/archive/2005/08/19/10506.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Alloy破解q程http://m.tkk7.com/fidodido/archive/2005/08/09/9663.html^ Mustang ^^ Mustang ^Tue, 09 Aug 2005 07:42:00 GMThttp://m.tkk7.com/fidodido/archive/2005/08/09/9663.htmlhttp://m.tkk7.com/fidodido/comments/9663.htmlhttp://m.tkk7.com/fidodido/archive/2005/08/09/9663.html#Feedback2http://m.tkk7.com/fidodido/comments/commentRss/9663.htmlhttp://m.tkk7.com/fidodido/services/trackbacks/9663.html阅读全文

^ Mustang ^ 2005-08-09 15:42 发表评论
]]>
Java生日快乐http://m.tkk7.com/fidodido/archive/2005/08/09/9660.html^ Mustang ^^ Mustang ^Tue, 09 Aug 2005 07:07:00 GMThttp://m.tkk7.com/fidodido/archive/2005/08/09/9660.htmlhttp://m.tkk7.com/fidodido/comments/9660.htmlhttp://m.tkk7.com/fidodido/archive/2005/08/09/9660.html#Feedback0http://m.tkk7.com/fidodido/comments/commentRss/9660.htmlhttp://m.tkk7.com/fidodido/services/trackbacks/9660.htmlJava今年10岁了Q虽然我接触他只有短短的5q_但是q?q我“矢志不渝”地扛着Java的大旗,包括到处鼓吹“Compile once, run anywhere”;包括“怂恿”同学学习JavaQ包括和.net阵营的fans面红而C论;包括对CPP的鄙?IMG height=19 src="http://m.tkk7.com/Emoticons/shades_smile.gif" width=19 border=0>Q包括对《Thinking in Java》的作者Bruce Eckel的顶CD拜(虽然他先写了《Thinking in C++》,但我“不记前嫌?IMG height=19 src="http://m.tkk7.com/Emoticons/regular_smile.gif" width=19 border=0>Q;包括对GoF的抱怨,只因Z们的《Design Patterns》用CPP写示例(那时q没有JavaQ;包括床头不下20本Java相关书籍Q包括写blog指责学院一位资q教授Q只因ؓ他教“面向对象技术”时讲授的Java知识错误癑ևQ包括因为Javaȝ《Java与模式》(16开Q?024)、《Object-Oriented Software Construction》(1254,E文)Q包括这ơ花250大洋参加Java 10周年大会………?/P>

一直关注Java的成长,一直关注Java技术的发展?0q对人类来说可能很短暂,但对于一门计机技术来_10q兴盛的发展本n是一个奇qV我是幸q的Q因为我亲眼目睹q且亲nl历了Sun创造的q个奇迹。再q?0q_我会很自豪地Ҏ儿子说“小子,q就是JavaQ老爸是看着他长大的?/P>

^ Mustang ^ 2005-08-09 15:07 发表评论
]]>
A beginners guide to Dependency Injection [转蝲自TSS]http://m.tkk7.com/fidodido/archive/2005/08/08/9610.html^ Mustang ^^ Mustang ^Mon, 08 Aug 2005 14:30:00 GMThttp://m.tkk7.com/fidodido/archive/2005/08/08/9610.htmlhttp://m.tkk7.com/fidodido/comments/9610.htmlhttp://m.tkk7.com/fidodido/archive/2005/08/08/9610.html#Feedback0http://m.tkk7.com/fidodido/comments/commentRss/9610.htmlhttp://m.tkk7.com/fidodido/services/trackbacks/9610.html阅读全文

^ Mustang ^ 2005-08-08 22:30 发表评论
]]>
适配器模式(AdapterQ?/title><link>http://m.tkk7.com/fidodido/archive/2005/08/06/9484.html</link><dc:creator>^ Mustang ^</dc:creator><author>^ Mustang ^</author><pubDate>Sat, 06 Aug 2005 11:39:00 GMT</pubDate><guid>http://m.tkk7.com/fidodido/archive/2005/08/06/9484.html</guid><wfw:comment>http://m.tkk7.com/fidodido/comments/9484.html</wfw:comment><comments>http://m.tkk7.com/fidodido/archive/2005/08/06/9484.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/fidodido/comments/commentRss/9484.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/fidodido/services/trackbacks/9484.html</trackback:ping><description><![CDATA[<H3>一、概q?/H3> <P>cȝ适配器模式把被适配的类的API转换成ؓ目标cȝAPI</P> <P></P> <H3>二、结?/H3> <H4>1、类的适配器模?/H4> <P align=center><IMG height=187 alt=o_adapter1.gif src="http://m.tkk7.com/images/blogjava_net/fidodido/2507/o_adapter1.gif" width=257 border=0></P> <P>TargetQ所期待得到的接?/P> <P>AdapteeQ现有需要适配的类</P> <P>AdapterQ把源接口{化成目标接口的核心类</P> <P></P> <H4>2、对象的适配器模?/H4> <P align=center><IMG height=199 alt=o_adapter2.gif src="http://m.tkk7.com/images/blogjava_net/fidodido/2507/o_adapter2.gif" width=257 border=0></P> <P>i、同一个适配器可以把源和其子c都适配到目标接?/P> <P>ii、与cȝ适配器相比,要覆盖源cȝҎ不很ҎQ除非做一个源cȝ子类Q然后对子类适配</P> <P>iii、可以很方便地添加一个方?/P> <P></P> <H3>三、动?/H3> <P>1、系l需要用现有的c,而该cȝ接口不符合系l新的需?/P> <P>2、需要徏立一个可复用的类用于使一些彼此之间没有太大关pȝcM同工?/P> <P>3、需要改变多个已有的子类的接?/P><img src ="http://m.tkk7.com/fidodido/aggbug/9484.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/fidodido/" target="_blank">^ Mustang ^</a> 2005-08-06 19:39 <a href="http://m.tkk7.com/fidodido/archive/2005/08/06/9484.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>IDEA破解q程http://m.tkk7.com/fidodido/archive/2005/08/05/9423.html^ Mustang ^^ Mustang ^Fri, 05 Aug 2005 11:11:00 GMThttp://m.tkk7.com/fidodido/archive/2005/08/05/9423.htmlhttp://m.tkk7.com/fidodido/comments/9423.htmlhttp://m.tkk7.com/fidodido/archive/2005/08/05/9423.html#Feedback13http://m.tkk7.com/fidodido/comments/commentRss/9423.htmlhttp://m.tkk7.com/fidodido/services/trackbacks/9423.html阅读全文

^ Mustang ^ 2005-08-05 19:11 发表评论
]]>
腾讯七宗|?[转蝲自PCHome]http://m.tkk7.com/fidodido/archive/2005/08/05/9378.html^ Mustang ^^ Mustang ^Fri, 05 Aug 2005 03:15:00 GMThttp://m.tkk7.com/fidodido/archive/2005/08/05/9378.htmlhttp://m.tkk7.com/fidodido/comments/9378.htmlhttp://m.tkk7.com/fidodido/archive/2005/08/05/9378.html#Feedback5http://m.tkk7.com/fidodido/comments/commentRss/9378.htmlhttp://m.tkk7.com/fidodido/services/trackbacks/9378.html

开言

  zQ.jpg

腾讯Q作Z国最大的x消息软gq营商,拥有同时在线用户高达3000万,其主力品腾?/SPAN>QQ甚至已经影响C很多q轻一代的生活交流方式。这样一个企业,在业界被千万光环所W罩Q但是它真的值得用户信赖和尊敬吗Q在q些q_腾讯到底是如何对待自q产品Q如何对待自pq?/SPAN>3亿的庞大用户呢?让我们一h看一个真实的腾讯?/SPAN>

抄袭Q永无止?/SPAN>

o_xtc11.jpg

 之所以把“抄袭”作讯的W一个关键词Q原因很单,回顾一下自腾讯发布QQ2003到现在的QQ2005Q我们又能看到多是腾讯原创的技术或者是功能Q恐怕是屈指可数了。作讯的L产品Q?/SPAN>QQ理应受到腾讯_的重视,也凝聚了腾讯最多的心血Q可是q么一个支׃品,抄袭却伴随着它的每一ơ更新?BR>
一个Y件给用户的第一印象是软g界面Q就?/SPAN>QQ2005中一个重要的界面“改q”——菜单来说吧Q被腾讯UCؓ“时流畅的界面设计”,N大家不觉得它很眼熟吗Q没错,我们现在最常用?/SPAN>Windows XP的开始菜单不是q个样子的嘛。?/SPAN>QQ的聊天窗口,更是早在QQ2004推出之时开始模?/SPAN>MSN Messenger了。这q仅仅是软g界面上的抄袭Q在功能上腾?/SPAN>QQ对其他竞争对手的抄袭更是举不胜D。比如自定义表情、自定义头像、多天、个性签名?/SPAN>QQ法书?/SPAN>Q-Zone{等都是抄袭?/SPAN>MSN Messenger。其?/SPAN>Q-Zone的抄袭更是拙劣之作,q程序的文g名都抄袭?/SPAN>QQSpace.dllQ难道腾讯连Space?/SPAN>Spaces的区别都分不清楚吗?腾讯不光无休止的抄袭?/SPAN>MSN Messengerq样的国际大牌,甚至q国内的竞争ҎQ他们也一样不放过Q其中腾?/SPAN>QQ的校友录、文件共享和多h聊天抄袭自后v之秀UC?BR>
现在Q腾讯甚臛_l到了连抄都懒得抄的地步Q直接花钱去买竞争对手的优秀技术。最q腾讯大肆造势?/SPAN>QQ语音Q就是向国外一家Y件技术公怹来的Q而用这个语x术最早的代表软gQ我惛_多国内的电脑用户也都知道Q那是Skype。腾讯这样做的目的无非就是大压由Skype?/SPAN>TOM在线合作推出?/SPAN>Tom-Skype体中文版?BR>

我不要问,q样一?/SPAN>IT界的知名企业Q如果自׃品的大部分功能都只能抄袭自竞争对手,那他除了抄袭Q还会做别的吗?

技术落后,不思进?/SPAN>

o_xtc12.jpg

如果抄袭q可以美化成为“借鉴”,那么软g开发技术上的落后,又能怪谁呢?腾讯?/SPAN>1998q发?/SPAN>Oicq至今Q已l走q了6个年_期间软g行业的技术发展突飞猛q。但腾讯的Y件开发技术却q步~慢Q甚臛_以说是毫无改q。如果你是一个腾?/SPAN>QQ的老用P那么你一定非常怀忉|l的QQ吧,y的体U、出色的性能Q当时让多少ZICQ转投腾讯QQ的怀抱,而这也奠定了腾讯作ؓ中国最大即时消息Y件运营商不可撼动的地位。从QQ2000?/SPAN>7?/SPAN>8兆,?/SPAN>QQ2003?/SPAN>20多兆Q再?/SPAN>QQ2004?/SPAN>40多兆Q时 至今日,QQ2005所占用的硬盘空间已l突破了70兆,对于一个聊天YӞq样臃肿庞大的Y件体U,很显然是太过分了。所以网上才会不断有各种各样?/SPAN>QQ减肥的“良方”出玎ͼ用户也不断希望腾讯可以出一?/SPAN>QQ_版。真不知道未来会不会Z安装QQ而需要升U硬盘。另外,q还不包括那些被安装q用L脑里面的腾讯览器和QQ游戏所占的I间?BR>
造成
QQ庞大w躯的症l,在于腾讯Y件开发技术上的落后。粗略统计了一下,一个完整安装好?/SPAN>QQQ里面所含有的程序文件一共有q?/SPAN>2000个。用2000多个文g来构成一个聊天YӞ实在是Y件开发技术上的失败和无能了。要知道Q其他同cY仉要比腾讯QQ_的多Q?/SPAN>MSN Messenger仅有19个文Ӟ但是功能丝毫不比腾讯?/SPAN>QQ差,甚至更强大?BR>

׃软g落后的编E技术和臃肿的体态,腾讯
QQ现在对用戯机的性能要求也越来越高,大有计算机硬件杀手的势。正常情况下Q一个仅?/SPAN>10个好友的QQq行Ӟ它所耗去的计机内存大致?/SPAN>30-40兆,而随着好友数量的增加内存的使用q会l箋攀升。这对现在电脑标?/SPAN>256兆的内存来说Q实在是太大了,甚至有些用户q行?/SPAN>QQ之后Q就不能用电脑做其他的工作了?BR>

对于一般用P如果上面q些弊端q不易察觉的话,那么׃q些弊端所带来的Y件运行不E_Q用户可以说是最有发a权的了。腾?/SPAN>QQ出现非法操作已经不是什么稀|事Q谁没出现过非法操作那才E|。在腾讯官方的用L区里Q抱怨腾?/SPAN>QQq行不稳定的用户之声更是此vg?/SPAN>

安全与我无关

 o_xtc13.jpg

现在软g开发厂商都非常重视产品的安全性,q不断致力于改善和修补品存在的安全漏洞及隐患。作Z息沟通和资讯传播的即时消息Y件来_软g的安全可靠就昑־更加重要。那腾讯在Y件的安全性上Q又做得如何呢?

用过QQ的hQ谁没收到过诸如?/SPAN>QQַ”这L病毒呢?对于q个通过QQ肆虐全国的病毒,腾讯至今也没有拿ZQ何行之有效的应对措施Q腾讯的漠视俨然是病毒传播的工具和帮Ӟ而这U漠视实际上也是与中华h民共和国公安部在2000q颁布的《计机病毒?/SPAN> ȝ理办法》中的精相q背的?BR>
如果病毒的传播不是腾讯所能控制的Q那么腾讯品自w多ơ爆出的安全漏洞Q腾讯d该重视了吧?可是Q在每次安全漏洞被公开后,腾讯L在推诿自己应该承担的责QQ把q些安全漏洞产生的原因全部归咎于微Y视窗pȝ。直到现在,腾讯产品中依然存在着很多众h皆知的安全漏z,比如著名的“本地消息漏z”,q些漏洞已经长期存在于腾讯的
QQ?/SPAN>TM软g之中Q而没有得CQ何的解决。这h疑是把用LUh信息暴露在光天化日之下,而用户却丝毫没有办法。不知道是腾讯没有这个技术实力还是根本就不在乎用h否安全,Ҏ׃愿意去解册些安全隐患,l用h供一个安全的交流q_?/SPAN>

版本混ؕQ错误低U?/SPAN>

o_xtc14.jpg

要是现在有一个名为“Y件版本号最佛_意奖”的话,那么q个奖项非腾讯莫属了。从
QQ2003到最新的QQ2005Q历l的版本号高?/SPAN>20多个。从Preview?/SPAN>BetaQ再C么正式版、稳定版Q最后还有奥林匹克版、贺岁版Q用户已l在腾讯众多的?/SPAN> 版本面前昑־茫然无措了。腾讯在拿用户当免费的测试员Q让用户来替腾讯试一些毫不成熟的产品Q承担由于Y件不E_所带来的用风险?BR>

不仅仅是软g产品版本的؜乱,甚至qY件的发布工作都一h؜乱。就拿最q一?/SPAN>QQ2005 Beta1的发布来说。原本已l确定ƈ公布的发布日期,因ؓ腾讯自己的原因出现蟩,而到了最后的发布时刻Q竟然出C整个软g行业都极其罕见的低错误Q而导致品发布又l箋延期。到底在发布的那一刻,出现了什么样的低U错误呢Q腾?/SPAN>QQ的Y件用许?/SPAN> 协议里,竟然?/SPAN>Skype的协议内容,要您_q算不算是天下奇观了Q很多h当时q不怿Q以是愚的恶作剧Q可是当我们把两ơ发布的版本安装后一看,我们不得不相信了。也许是因ؓ腾讯已经抄习惯了Q所以连人家的Y件用许可协议也都抄了过来吧。看 来我们不得不佩服腾讯一直吹嘘的专业_了?BR>

一个企业对于自q产品是如此一U不专业的态度Q那么它q能够凭借什么在q个行业里立_Q难道用谎言和欺骗?

藏污U_Q毒害青年

o_wei1.jpg 

据腾讯统计,其品的主要使用用户q_q龄不超q?/SPAN>24岁,而且占绝大部分。对于这些青年用户Q他们通过腾讯产品所能接触的到底是一个什么样的世界呢Q?BR>
׃腾讯的管理不善,青少q所接触到的
QQ环境已经充斥了色情、金p些严重危害青年健康的信息。我们随便打开一个腾讯聊天室Q都会看C些h在发布色情交易广告,而这些信息根本没有得到腾讯的有效qo。而能在腾讯上扑ֈ的唯一一个对于青年上网行ؓ?/SPAN> 出提C的文章便是安装QQ时名为《青年上网安全指引》了。难道说Q有了这样一个根本就没有真看q的提示Q腾讯就寚w年的上|行为毫无责M吗?

q还仅仅是冰׃角,有些人更是在发布q法q告信息以及传播危害国家利益的邪教信息,很明显,
QQ已经成ؓ一些不法分子的工具。被媒体公开报道的,通过腾讯QQq行q法犯罪zd的案例已l有q很多了Q国家也有关于聊天室的相关管理规定,但是Z么至今腾讯的理q是如此懈怠呢Q难道说Q作些有害信息传播蝲体的腾讯Q就一点责任都没有吗?腾讯明知道自q多数用户为青年Q可是却疏于对其提供的网l交环境的理Q这实在是难逃其咎?BR>

情况不止如此。在腾讯
QQ门户|站上,更是充斥着暗藏挑逗的有害信息。如果说有些有害信息是一些不法分子利?/SPAN>QQq行传播的话Q那么这些ؓ了吸引眼球,而故意设|的h暗示、挑逗的有害信息Q又怪谁呢?作ؓ一个负责Q的企业,理应为用h供一个安全、洁净 的沟通环境,而不是这U到处藏污纳垢的环境?/SPAN>

低质量的客户服务

 o_xtc17.jpg

作ؓ一个面向全国的服务性企业,竟然q一?/SPAN>800免费热线电话都没有。如果腾讯是一家普通的公司也情有可原,但是腾讯每年从用戗广告商那里收到的钱Q真的让他们q一个免费电话的成本都支付不起吗Q按照腾?/SPAN>2004q的业Wq报数字Q腾?/SPAN>2004q全q盈 ?/SPAN>4.467亿h民币Q很昄Q腾讯根本就没有从用L利益出发Q本着为更好的客户服务的态度对待q些问题?BR>

在腾讯的官方产品C֌中,用户关于产品质量的问题几乎很看到有腾讯的工作h员进行及时地解答。而用户在遇到问题Ӟ更多的是M些第三方的技术社区寻求帮助。很难想象,腾讯的客h务h员,对于自己的品了解程度如此不I又如何更好的为用h供技术上
的帮助呢Q难道用户需要的仅仅是话务员吗?

而除了无法帮助用戯决问题外Q客h务h员对问题的推托也C让用h奈的地步。如果你想知道ؓ什么自q
QQ会非法操作,那么腾讯l你的答案就Q你的电脑有病毒了。反正,不管怎么P是用户的电脑不够好Q与腾讯无关。真不知道,q样的态度Q如何可以让用户信赖你?BR>

ȝ讯的q些问题Q也怹是现在中?/SPAN>IT行业中各个厂商所面的通病Q急功q利、唯利是图、p信,q些已经成ؓ了中国很多Y件厂商的标志Q又何止一个腾讯呢Q只不过腾讯作ؓ中国IT业一个成功的典型Q更加具有代表性。而它所暴露出来的问题,对用?/SPAN> 利益的损׃更大、更多。我们真诚的希望Q作Z?/SPAN>IT业支q厂商们,可以引以为戒Q多做有益于产业发展、有益于用户的事情,而不要把ƺ骗当作能耐,不要把无d作光荣?/SPAN>



^ Mustang ^ 2005-08-05 11:15 发表评论
]]>
原型模式QPrototypeQ?/title><link>http://m.tkk7.com/fidodido/archive/2005/08/05/9376.html</link><dc:creator>^ Mustang ^</dc:creator><author>^ Mustang ^</author><pubDate>Fri, 05 Aug 2005 02:54:00 GMT</pubDate><guid>http://m.tkk7.com/fidodido/archive/2005/08/05/9376.html</guid><wfw:comment>http://m.tkk7.com/fidodido/comments/9376.html</wfw:comment><comments>http://m.tkk7.com/fidodido/archive/2005/08/05/9376.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/fidodido/comments/commentRss/9376.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/fidodido/services/trackbacks/9376.html</trackback:ping><description><![CDATA[<H3>一、概q?/H3> <P><FONT size=2>原型模式属于对象创徏模式Q通过l出一个原型对象来指明所要创建的对象cdQ然后用复制q个对象的方法创建出更多同类型的对象?BR></FONT></P> <P></P> <H4> </H4> <H3>二、结?/H3> <H4>1、简单Ş?/H4> <P align=center><IMG height=168 alt=o_prototype1.gif src="http://m.tkk7.com/images/blogjava_net/fidodido/2507/o_prototype1.gif" width=314 border=0></P> <P><FONT size=2>ClientQ提出创建对象的h</FONT></P> <P><FONT size=2>PrototypeQ抽象角Ԍl出所有具体原型类所需的接?/FONT></P> <P><FONT size=2>ConcretePrototypeQ被复制的对?BR></FONT></P> <P></P> <H4><BR>2、登记Ş?/H4> <P align=center><IMG height=227 alt=o_prototype2.gif src="http://m.tkk7.com/images/blogjava_net/fidodido/2507/o_prototype2.gif" width=326 border=0></P> <P><FONT size=2>PrototypeManagerQ创建ƈ记录具体对象<BR></FONT></P> <P></P> <H4> </H4> <H3>三、浅克隆与深克隆</H3> <P><FONT size=2>克隆:仅做refrence一U的克隆Qrefrence所指的对象不被克隆</FONT></P> <P><FONT size=2>深克隆:refrence所指的对象q行递归克隆Q需考虑克隆深度及@环克隆问?/FONT></P> <P></P> <H3><BR>四、动?/H3> <P><FONT size=2>替换较复杂的{l构的工厂方?/FONT></P> <P></P> <H3><BR>五、优~点</H3> <P><FONT color=#000000 size=2><FONT color=#9acd32>1?/FONT>允许动态地增加或减品类Q且Ҏ个现有的产品l构没有影响</FONT></P> <P><FONT color=#000000 size=2><FONT color=#9acd32>2?/FONT>提供化的创徏l构</FONT></P> <P><FONT color=#000000 size=2><FONT color=#9acd32>3?/FONT>h动态加载新功能的能?/FONT></P> <P><FONT color=#000000 size=2><FONT color=#9acd32>4?/FONT>产品cM需要有定的等U结?/FONT></P> <P><FONT color=#000000 size=2><FONT color=#ffa500>I?/FONT>每一个类必须配备一个克隆方?/FONT></P><img src ="http://m.tkk7.com/fidodido/aggbug/9376.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/fidodido/" target="_blank">^ Mustang ^</a> 2005-08-05 10:54 <a href="http://m.tkk7.com/fidodido/archive/2005/08/05/9376.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>搬家?/title><link>http://m.tkk7.com/fidodido/archive/2005/08/04/9317.html</link><dc:creator>^ Mustang ^</dc:creator><author>^ Mustang ^</author><pubDate>Thu, 04 Aug 2005 13:48:00 GMT</pubDate><guid>http://m.tkk7.com/fidodido/archive/2005/08/04/9317.html</guid><wfw:comment>http://m.tkk7.com/fidodido/comments/9317.html</wfw:comment><comments>http://m.tkk7.com/fidodido/archive/2005/08/04/9317.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://m.tkk7.com/fidodido/comments/commentRss/9317.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/fidodido/services/trackbacks/9317.html</trackback:ping><description><![CDATA[<P>׃不堪忍受CSDN.net差劲的服务,今天׃一个中午的旉把CSDN上的blog搬到Blog Java上来Q初来乍刎ͼ请大家捧个场<IMG height=20 src="http://m.tkk7.com/Emoticons/QQ/45.gif" width=20 border=0></P><img src ="http://m.tkk7.com/fidodido/aggbug/9317.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/fidodido/" target="_blank">^ Mustang ^</a> 2005-08-04 21:48 <a href="http://m.tkk7.com/fidodido/archive/2005/08/04/9317.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>IDEAhttp://m.tkk7.com/fidodido/archive/2005/08/04/9196.html^ Mustang ^^ Mustang ^Thu, 04 Aug 2005 05:11:00 GMThttp://m.tkk7.com/fidodido/archive/2005/08/04/9196.htmlhttp://m.tkk7.com/fidodido/comments/9196.htmlhttp://m.tkk7.com/fidodido/archive/2005/08/04/9196.html#Feedback3http://m.tkk7.com/fidodido/comments/commentRss/9196.htmlhttp://m.tkk7.com/fidodido/services/trackbacks/9196.html今天在TSS上看到IntelliJ?A >IDEA 5.0l于release了,于是马上当了一个,q申请了一?0天的评估受要知道IDEA可是个hE序员非帔RqIDEQ界面很漂亮Q用Alloy的Look and FeelQ而且功能也相当强大,个h认ؓ在中国这片没有license概念的土C可以和JBuilder抗衡。但是上|站一看h|竟然?499Q看来自p׃license是不可能的了。于是又扑ևJava反编译利器DJQ打破解IDEA?

׃有了alloy的破解经验,q一ơ很快找C关键代码Q稍做修改后Q评估版30天的限制被我破掉了,以后可以在一个“舒适”的IDE上开发了



^ Mustang ^ 2005-08-04 13:11 发表评论
]]>
Alloyhttp://m.tkk7.com/fidodido/archive/2005/08/04/9195.html^ Mustang ^^ Mustang ^Thu, 04 Aug 2005 05:09:00 GMThttp://m.tkk7.com/fidodido/archive/2005/08/04/9195.htmlhttp://m.tkk7.com/fidodido/comments/9195.htmlhttp://m.tkk7.com/fidodido/archive/2005/08/04/9195.html#Feedback26http://m.tkk7.com/fidodido/comments/commentRss/9195.htmlhttp://m.tkk7.com/fidodido/services/trackbacks/9195.html

Alloy look and feelQ?A >http://www.incors.com/lookandfeel/index.phpQ是一个非常漂亮的Java的look and feelQ但是它是收费的Q免费的只能使用30天。经q一个晚上和一个白天的努力Q我l于成功破解了alloyQ?005Q?Q?0Q,心里那叫一个高兴啊Q以后再做ui可以有很漂亮的界面了。等两天有空作一个算号器?/P>



^ Mustang ^ 2005-08-04 13:09 发表评论
]]>
class文g中的U密http://m.tkk7.com/fidodido/archive/2005/08/04/9184.html^ Mustang ^^ Mustang ^Thu, 04 Aug 2005 04:50:00 GMThttp://m.tkk7.com/fidodido/archive/2005/08/04/9184.htmlhttp://m.tkk7.com/fidodido/comments/9184.htmlhttp://m.tkk7.com/fidodido/archive/2005/08/04/9184.html#Feedback1http://m.tkk7.com/fidodido/comments/commentRss/9184.htmlhttp://m.tkk7.com/fidodido/services/trackbacks/9184.html你知道class文g?6q制方式查看?个字节是什么数据吗Q“CAFEBABE”。没错,Cafe Baby。不信?用UltraEdit打开M一个class文g自己看看?/P>

^ Mustang ^ 2005-08-04 12:50 发表评论
]]>
վ֩ģ壺 ߹ۿƵ| ˳ӰԺ밴Ħ| һƷһavһˬˬ| AVƬվ| ޹˾þþƷapp| ޳avƬ| ޹˳ɾƷ| պƵ| ձƷѴȫ| 91ѹۿ| ɫվapp߹ۿ| ůůձ| ۺһ| ձɱ˹ۿ| ձ޾ƷɫӰԺ| þþþAVվ| ޾ƷҹҹҹŮ| ۺϾƷվ| | պƵۿ| Ƭ51˿Ӱ| ĻmvѸƵ7| Ƭ߹ۿѴȫ| ձƵһ߹ۿ| ԻȫƵվ | ؼAƬëƬ69| ĻƵ| ɫAAVѲ| ѳƵۿ| þֻƷ10| þѹƷһ| žƷƵվ | AV˵| ޹պۺ| ҹƷһ8050| ۺ| ҹƷһ8050| ݺۺɫ| ¹AVר| 츾avһ | ߹ۿ|