??xml version="1.0" encoding="utf-8" standalone="yes"?>一区二区久久久久久,97在线超碰,91亚洲精华国产精华精华液http://www.aygfsteel.com/phoenixtoday/category/25058.html每天q步一点点Q努力做好自?/description>zh-cnWed, 09 Jan 2008 23:09:33 GMTWed, 09 Jan 2008 23:09:33 GMT60一炚w构心(j)?/title><link>http://www.aygfsteel.com/phoenixtoday/archive/2008/01/08/173844.html</link><dc:creator>朱雀</dc:creator><author>朱雀</author><pubDate>Tue, 08 Jan 2008 15:56:00 GMT</pubDate><guid>http://www.aygfsteel.com/phoenixtoday/archive/2008/01/08/173844.html</guid><wfw:comment>http://www.aygfsteel.com/phoenixtoday/comments/173844.html</wfw:comment><comments>http://www.aygfsteel.com/phoenixtoday/archive/2008/01/08/173844.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/phoenixtoday/comments/commentRss/173844.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/phoenixtoday/services/trackbacks/173844.html</trackback:ping><description><![CDATA[昨天Q要写一D늨序完成一个定时Q务,是有关Socket 发送的。胖子给我发?jin)一D늎成的E序Q这D늨序基本上的功能是实现?jin),但是表达的ƈ不是那么清晰Q因此我想重构一下。没惛_重构的过E竟然花?jin)一个多时Q从晚上八点多,一下就写到?jin)十点,但是重构完后Q感觉清晰多?jin)。仔l想x获颇多,因此在这里写写经验进行ȝ?br /> <br /> 重构E序的目的,不是因ؓ(f)E序不能用才要你去重构,重构的目的是因ؓ(f)一、你的代码,被h看的ơ数Q远比它用到的次数多Q二、重构有利于你发现问题,让你的程序结构优化,因此可复用性更强,遵守?jin)知识的唯一性,DRY 原则Q三、如果你要改动这D代码,那么先重构,使得你的代码好改Q这实际是在Z的未来减工作量Q而且一D优U的代码,带给你的价|q比你每ơ都要Ctrl+CQCtrl+V 大得多?br /> <br /> 写代码,要让你的代码W一ơ呈现在别h面前的时候,像读p一般,那么你的代码功底是够了(jin)。你的代码就可以UC你最好的文?jin),其余什么文,大可不必Q?br /> <br /> Z昨天的经验,我新ȝ?jin)两条?x)<br /> 一、经怋用重构方法extract method 的hQ会(x)发现QL可以省掉一些(f)时变量。这是好事,但这可能?x)造成如下的结果:(x)<br /> <br /> <span style="background-color: #b8c2af;">method_one(method_two(method_three(method_four())))</span><br /> <br /> 也就是说Q很可能?x)导致这U长串的嵌套Q导致程序可L的下降Q人看的晕头{向。那么如何解军_Q其实是一个度的问题。我l自己定?jin)一个规矩,临界Ҏ(gu)三个函数q样U联hQ如果超q三个,我就它们拆开。比如说上面q个例子,我会(x)拆成Q?br /> <br /> <span style="background-color: #b8c2af;"> arg = method_three(method(four));</span><br /> <span style="background-color: #b8c2af;">method_one(method_two(arg));</span><br /> <br /> 虽然费?jin)一个(f)时变量,但是q样可以让Z眼看懂我的意思,可读性提升,修改h自然也会(x)Ҏ(gu)些?br /> <br /> 二、写qJava I/O 的hQ肯定看到过q样的程序:(x)<br /> <br /> <span style="background-color: #b8c2af;"> Reader in = null;<br /> Writer out = null;<br /> try<br /> {<br />     in = new InputStreamReader(socket.getInputStream(),"utf8");<br />     out = new OutputStreamWriter(socket.getOutputStream(),"utf8");<br /> <br /> /**<br />  * some TODOs here<br />  *<br /> **/<br /> }catch(IOException ioe)<br /> {<br />     System.err.println("error message");<br />     ioe.printStackTrace();<br /> }<br /> finally<br /> {<br />    try<br />     {<br />         if(in != null)<br />            in.close();<br />         if(out != null)<br />            out.close();<br />     }catch(IOException ioe2)<br />     {<br />        System.err.println("some error message");<br />        ioe2.printStackTrace();<br />     }<br /> }</span><br /> <br /> 怎么说呢Q这D代码看上去Q其实是够好?jin),其实不重构也是可以的。也许我偏执吧,我认为它不够好,因ؓ(f)Q首先,大段的try catch 的确?x)捕获异常,但是q段代码臛_有好几段是会(x)独立抛出异常的,q里包含?jin)四个IO 实例的创建和销毁,q四D代码如果出错都?x)抛出异常,那么你捕L(fng)到底是哪个呢Q其ơ,没有把功能段合理分开Q这D代码的逻辑功能实际上是两个Q一个是读,一个是写,那么合ƈ在一P首先序很ؕQ其ơ容易让阅读的h产生困惑Q从而造成代码可读性差。我是这样做的:(x)<br /> <br /> <span style="background-color: #b8c2af;"> private void writeFile(String fileName, String outStr)<br />         {<br />             Writer writer = null;<br />             try<br />             {<br />                 writer = new OutputStreamWriter(new FileOutputStream(fileName),<br />                         "utf8");<br />             }<br />             catch (UnsupportedEncodingException e)<br />             {<br />                 System.err.println("不支持的~码方式");<br />                 e.printStackTrace();<br />             }<br />             catch (FileNotFoundException e)<br />             {<br />                 System.err.println("初始化文件失败,或\径不存在Q? + fileName);<br />                 e.printStackTrace();<br />             }<br />             try<br />             {<br />                 writer.write(outStr);<br />                 writer.flush();<br />             }<br />             catch (IOException e)<br />             {<br />                 System.err.println("写文件失?);<br />                 e.printStackTrace();<br />             }<br />             finally<br />             {<br />                 try<br />                 {<br />                     if(writer != null)<br />                         writer.close();<br />                 }<br />                 catch (IOException e)<br />                 {<br />                     System.err.println("关闭文gp|");<br />                     e.printStackTrace();<br />                 }<br /> <br />             }<br />         }</span><br /> <br /> cM的,也将ȝ逻辑独立抽出来,虽然Q这不但没代码的量减少Q却增加?jin)很多try catch 模块Q不q逻辑上很完整Q而且发挥?jin)每个try catch 的最?jng)_效。我把它起名曎ͼ我个人的偏执情节吧?br /> <br /> C(jin)Q要睡觉?jin),本来q想代码从最初模P到最后模L(fng)q程复述一遍,改天有机?x)再_(d)_֍都已l说?jin)。嘿?br /> <br /> <img src ="http://www.aygfsteel.com/phoenixtoday/aggbug/173844.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/phoenixtoday/" target="_blank">朱雀</a> 2008-01-08 23:56 <a href="http://www.aygfsteel.com/phoenixtoday/archive/2008/01/08/173844.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>以前很困惑用Java 写的E序如何做成windows 服务Q这里有一讲如何tomact E序做成windows 服务的,可以参考下http://www.aygfsteel.com/phoenixtoday/archive/2007/11/27/163386.html朱雀朱雀Tue, 27 Nov 2007 02:11:00 GMThttp://www.aygfsteel.com/phoenixtoday/archive/2007/11/27/163386.htmlhttp://www.aygfsteel.com/phoenixtoday/comments/163386.htmlhttp://www.aygfsteel.com/phoenixtoday/archive/2007/11/27/163386.html#Feedback0http://www.aygfsteel.com/phoenixtoday/comments/commentRss/163386.htmlhttp://www.aygfsteel.com/phoenixtoday/services/trackbacks/163386.html 2Q设|CLASS_PATH 为CLASS_PATHQ?;C:"java"jdk1.5.0_06"lib"dt.jar;C:"java"jdk1.5.0_06"lib"tools.jar;%CATALINA_HOME%"bin"bootstrap.jar

3Q设|PATH中ؓ(f)C:"java"jdk1.5.0_06"bin;E:"tomcat5.5"bin;

4Q添加服务命令:(x)service.bat install Tomcat5
   q行完命令后可以在服务中看?Apache Tomcat5 然后可以自行改ؓ(f)手动或自动启动?br />    注:(x)如果使用tomcat5.exe安装名字?Tomcat5'的服务可以运行以下命令:(x)
    tomcat5 //IS//Tomcat5 --DisplayName="Apache Tomcat 5"  --Install="C:"Program Files"Tomcat"bin"tomcat5.exe" --Jvm=auto --StartMode=jvm --StopMode=jvm --StartClass=org.apache.catalina.startup.Bootstrap --StartParams=start --StopClass=org.apache.catalina.startup.Bootstrap --StopParams=stop

5Q移除服务命令:(x)tomcat5 //DS//Tomcat5



朱雀 2007-11-27 10:11 发表评论
]]>
Java 历代版本?/title><link>http://www.aygfsteel.com/phoenixtoday/archive/2007/10/03/150250.html</link><dc:creator>朱雀</dc:creator><author>朱雀</author><pubDate>Wed, 03 Oct 2007 03:45:00 GMT</pubDate><guid>http://www.aygfsteel.com/phoenixtoday/archive/2007/10/03/150250.html</guid><wfw:comment>http://www.aygfsteel.com/phoenixtoday/comments/150250.html</wfw:comment><comments>http://www.aygfsteel.com/phoenixtoday/archive/2007/10/03/150250.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/phoenixtoday/comments/commentRss/150250.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/phoenixtoday/services/trackbacks/150250.html</trackback:ping><description><![CDATA[JDK 1.1.4 Sparkler 宝石 1997-09-12 <br /> JDK 1.1.5 Pumpkin 南瓜 1997-12-13 <br /> JDK 1.1.6 Abigail 阿比盖尔--奛_? 1998-04-24 <br /> JDK 1.1.7 Brutus 布鲁?-古罗马政d和将? 1998-09-28 <br /> JDK 1.1.8 Chelsea 切尔?-城市(jng)? 1999-04-08 <br /> <br /> J2SE 1.2 Playground q动? 1998-12-04 <br /> J2SE 1.2.1 none ? 1999-03-30 <br /> J2SE 1.2.2 Cricket 蟋蟀 1999-07-08 <br /> <br /> J2SE 1.3 Kestrel 洲U隼 2000-05-08 <br /> J2SE 1.3.1 Ladybird 瓢虫 2001-05-17 <br /> <br /> J2SE 1.4.0 Merlin 灰背? 2002-02-13 <br /> J2SE 1.4.1 grasshopper p 2002-09-16 <br /> J2SE 1.4.2 Mantis 螌 2003-06-26 <br /> <br /> J2SE 5.0 (1.5.0) Tiger 老虎 2004-10 <br /> <br /> J2SE 6.0 (Beta) Mustang 野马 2006-04 <img src ="http://www.aygfsteel.com/phoenixtoday/aggbug/150250.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/phoenixtoday/" target="_blank">朱雀</a> 2007-10-03 11:45 <a href="http://www.aygfsteel.com/phoenixtoday/archive/2007/10/03/150250.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java ?D游戏开发引?JMEhttp://www.aygfsteel.com/phoenixtoday/archive/2007/08/17/137639.html朱雀朱雀Fri, 17 Aug 2007 09:04:00 GMThttp://www.aygfsteel.com/phoenixtoday/archive/2007/08/17/137639.htmlhttp://www.aygfsteel.com/phoenixtoday/comments/137639.htmlhttp://www.aygfsteel.com/phoenixtoday/archive/2007/08/17/137639.html#Feedback0http://www.aygfsteel.com/phoenixtoday/comments/commentRss/137639.htmlhttp://www.aygfsteel.com/phoenixtoday/services/trackbacks/137639.html JME 一个用Java开发出来的3D 游戏引擎Q呵呵,以后我一定要用它来做?gu)己喜Ƣ的游戏?br /> http://www.jmonkeyengine.com/ q是|址Q我C?


朱雀 2007-08-17 17:04 发表评论
]]>
java.awt.RobotcMl?/title><link>http://www.aygfsteel.com/phoenixtoday/archive/2007/08/17/137636.html</link><dc:creator>朱雀</dc:creator><author>朱雀</author><pubDate>Fri, 17 Aug 2007 09:02:00 GMT</pubDate><guid>http://www.aygfsteel.com/phoenixtoday/archive/2007/08/17/137636.html</guid><wfw:comment>http://www.aygfsteel.com/phoenixtoday/comments/137636.html</wfw:comment><comments>http://www.aygfsteel.com/phoenixtoday/archive/2007/08/17/137636.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/phoenixtoday/comments/commentRss/137636.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/phoenixtoday/services/trackbacks/137636.html</trackback:ping><description><![CDATA[此类用于为测试自动化、自q行演示E序和其他需要控刉标和键盘的应用程序生成本机系l输入事件。Robot 的主要目的是便于 Java q_实现自动试。用该cȝ成输入事件与事件发送到 AWT 事g队列?AWT lg的区别在于:(x)事g是在q_的本入队列中生成的。例如,Robot.mouseMove 实际移动鼠标光标,而不是只生成鼠标Ud事g? 注意Q某些^台需要特定权限或扩展来访问低U输入控件。如果当前^台配|不允许使用输入控gQ那么试图构?Robot 对象时将抛出 <br /> AWTException。例如,如果 X 服务器不支持Q或没有启用QXTEST 2.2 标准扩展Q则 X-Window pȝ?x)抛出异常?<br /> <br /> 发现q个c,来可以模拟试哦,q挺有意? <br /> <img src ="http://www.aygfsteel.com/phoenixtoday/aggbug/137636.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/phoenixtoday/" target="_blank">朱雀</a> 2007-08-17 17:02 <a href="http://www.aygfsteel.com/phoenixtoday/archive/2007/08/17/137636.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> վ֩ģ壺 <a href="http://" target="_blank">Ժ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">½</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">峣</a>| <a href="http://" target="_blank">ɳ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ű</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ƽ</a>| <a href="http://" target="_blank">Խ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ͷ</a>| <a href="http://" target="_blank">˫</a>| <a href="http://" target="_blank">ͷ</a>| <a href="http://" target="_blank">Ȫ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">½</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ů</a>| <a href="http://" target="_blank">̨</a>| <a href="http://" target="_blank">̨</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">䴨</a>| <a href="http://" target="_blank">ͤ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ǿ</a>| <a href="http://" target="_blank"></a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>