﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-自写自看-随笔分类-其他</title><link>http://www.blogjava.net/mphome/category/17138.html</link><description /><language>zh-cn</language><lastBuildDate>Thu, 29 May 2008 09:18:21 GMT</lastBuildDate><pubDate>Thu, 29 May 2008 09:18:21 GMT</pubDate><ttl>60</ttl><item><title>今天真激动</title><link>http://www.blogjava.net/mphome/archive/2008/05/27/203335.html</link><dc:creator>昨夜人生</dc:creator><author>昨夜人生</author><pubDate>Tue, 27 May 2008 13:50:00 GMT</pubDate><guid>http://www.blogjava.net/mphome/archive/2008/05/27/203335.html</guid><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;只有注册用户登录后才能阅读该文。<a href='http://www.blogjava.net/mphome/archive/2008/05/27/203335.html'>阅读全文</a><img src ="http://www.blogjava.net/mphome/aggbug/203335.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mphome/" target="_blank">昨夜人生</a> 2008-05-27 21:50 <a href="http://www.blogjava.net/mphome/archive/2008/05/27/203335.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>利用方法名称执行方法行为的源代码</title><link>http://www.blogjava.net/mphome/archive/2008/02/25/181951.html</link><dc:creator>昨夜人生</dc:creator><author>昨夜人生</author><pubDate>Mon, 25 Feb 2008 03:48:00 GMT</pubDate><guid>http://www.blogjava.net/mphome/archive/2008/02/25/181951.html</guid><wfw:comment>http://www.blogjava.net/mphome/comments/181951.html</wfw:comment><comments>http://www.blogjava.net/mphome/archive/2008/02/25/181951.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mphome/comments/commentRss/181951.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mphome/services/trackbacks/181951.html</trackback:ping><description><![CDATA[public class TestReflectCommand {<br /><br /><br />public static void main(String[] args){<br /><br />CommandLoader cl=new DefaultCommandLoader(new DefaultShowCommand());<br />cl.excute("executeShowList",null);<br />}<br />}<br /><br />public interface CommandLoader {<br /><br />void excute(String commandName,Object[] argument);<br />}<br /><br /><br />public class DefaultCommandLoader implements CommandLoader {<br /><br /><br />private ShowCommand showCommand;<br /><br />private HashMap subCommandMap=new HashMap();<br /><br />public DefaultCommandLoader(ShowCommand showCommand){<br />this.showCommand=showCommand;<br />init();<br />}<br /><br /><br />private void init() {<br /><br />Method[] allMethod=this.showCommand.getClass().getMethods();<br />for(int i=0;i&lt;allMethod.length;i++){<br />Method m=allMethod<i>;<br />if(m.getName().startsWith("execute")){<br />subCommandMap.put(m.getName(), m);<br />}<br />}<br />}<br /><br /><br />public void excute(String commandName, Object[] argument) {<br /><br />Method m=(Method) this.subCommandMap.get(commandName);<br /><br />if(m==null){<br />throw new NullPointerException("not found command");<br />}<br />try{<br />m.invoke(this.showCommand,argument);<br />}<br />catch(Exception e){<br />throw new RuntimeException("Load command["+m.getName()+"error");<br />}<br />}<br />}<br /><br />public interface ShowCommand {<br /><br /><br />public void executeShowList();<br /><br />public void excuteShowString();<br /><br />public void executeShowInteger();<br /><br />public void executeShowLong();<br />}<br /><br />public class DefaultShowCommand implements ShowCommand {<br /><br />public void excuteShowString() {<br />System.out.println(String.class.getName());<br />}<br /><br />public void executeShowInteger() {<br />System.out.println(Integer.class.getName());<br />}<br /><br />public void executeShowList() {<br />System.out.println(List.class.getName());<br />}<br /><br />public void executeShowLong() {<br />System.out.println(Long.class.getName());<br />}<br /><br />}</i><img src ="http://www.blogjava.net/mphome/aggbug/181951.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mphome/" target="_blank">昨夜人生</a> 2008-02-25 11:48 <a href="http://www.blogjava.net/mphome/archive/2008/02/25/181951.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>你还在用if else吗？(转载)</title><link>http://www.blogjava.net/mphome/archive/2008/02/25/181927.html</link><dc:creator>昨夜人生</dc:creator><author>昨夜人生</author><pubDate>Mon, 25 Feb 2008 02:57:00 GMT</pubDate><guid>http://www.blogjava.net/mphome/archive/2008/02/25/181927.html</guid><wfw:comment>http://www.blogjava.net/mphome/comments/181927.html</wfw:comment><comments>http://www.blogjava.net/mphome/archive/2008/02/25/181927.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mphome/comments/commentRss/181927.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mphome/services/trackbacks/181927.html</trackback:ping><description><![CDATA[　面向过程设计和面向对象设计的主要区别是：是否在业务逻辑层使用冗长的if else判断。如果你还在大量使用if else，当然，界面表现层除外，即使你使用Java/C#这样完全面向对象的语言，也只能说明你的思维停留在传统的面向过程语言上。
<p><strong>传统思维习惯分析</strong></p><p>　　为什么会业务逻辑层使用if else，其实使用者的目的也是为了重用，但是这是面向过程编程的重用，程序员只看到代码重用，因为他看到if else几种情况下大部分代码都是重复的，只有个别不同，因此使用if else可以避免重复代码，并且认为这是模板Template模式。</p><p>　　他范的错误是：程序员只从代码运行顺序这个方向来看待它的代码，这种思维类似水管或串行电路，水沿着水管流动（代码运行次序），当遇到几个分管（子管），就分到这几个分管子在流动，这里就相当于碰到代码的if else处了。</p><p>　　而使用OO，则首先打破这个代码由上向下顺序等同于运行时的先后循序这个规律，代码结构不由执行循序决定，由什么决定呢？由OO设计；设计模式会取代这些if else，但是最后总是由一个Service等总类按照运行顺序组装这些OO模块，只有一处，这处可包含事务，一般就是Service，EJB中是Session bean。</p><p>　　一旦需求变化，我们更多的可能是Service中各个OO模块，甚至是只改动Service中的OO模块执行顺序就能符合需求。</p><p>　　这里我们也看到OO分离的思路，将以前过程语言的一个Main函数彻底分解，将运行顺序与代码其他逻辑分离开来，而不是象面向过程那样混乱在一起。所以有人感慨，OO也是要顺序的，这是肯定的，关键是运行顺序要单独分离出来。</p><p>　　是否有if else可以看出你有没有将运行顺序分离到家。</p><p><strong>设计模式的切入口</strong></p><p>　　经常有人反映，设计模式是不错，但是我很难用到，其实如果你使用if else来写代码时（除显示控制以外），就是在写业务逻辑，只不过使用简单的判断语句来作为现实情况的替代者。</p><p>　　 还是以大家熟悉的论坛帖子为例子，如ForumMessage是一个模型，但是实际中帖子分两种性质：主题贴（第一个根贴）和回帖（回以前帖子的帖子），这里有一个朴素的解决方案：<br />建立一个ForumMessage，然后在ForumMessage加入isTopic这样判断语句，注意，你这里一个简单属性的判断引入，可能导致你的程序其他地方到处存在if else 的判断。</p><p>　　如果我们改用另外一种分析实现思路，以对象化概念看待，实际中有主题贴和回帖，就是两种对象，但是这两种对象大部分是一致的，因此，我将ForumMessage设为表达主题贴；然后创建一个继承ForumMessage的子类ForumMessageReply作为回帖，这样，我在程序地方，如Service中，我已经确定这个Model是回帖了，我就直接下溯为ForumMessageReply即可，这个有点类似向Collection放入对象和取出时的强制类型转换。通过这个手段我消灭了以后程序中if else的判断语句出现可能。</p><p>　　从这里体现了，如果分析方向错误，也会导致误用模式。</p><p>　　讨论设计模式举例，不能没有业务上下文场景的案例，否则无法决定是否该用模式，下面举两个对比的例子：</p><p>　　第一.<a href="http://www.jdon.com/jive/thread.jsp?forum=91&amp;thread=24681" target="_blank"> 这个帖子</a>中举例的第一个代码案例是没有上下文的，文中只说明有一段代码：</p><table cellspacing="1" cellpadding="1" width="100%" bgcolor="#cccccc" border="0"><tbody><tr><td>main() { 
<p>if（case A）{ </p><p>//do with strategy A </p><p>}else(case B){</p><p>//do with strategy B </p><p>}else(case C){ </p><p>//do with strategy C </p><p>}</p><p>} </p></td><td> </td></tr></tbody></table><p>　　这段代码只是纯粹的代码，没有业务功能，所以，在这种情况下，我们就很难确定使用什么模式，就是一定用策略模式等，也逃不过还是使用if else的命运，设计模式不是魔法，不能将一段毫无意义的代码变得简单了，只能将其体现的业务功能更加容易可拓展了。</p><p>　　第二.在<a href="http://www.jdon.com/jive/thread.jsp?forum=91&amp;thread=24333&amp;message=14484871#14484871" target="_blank">这个帖子</a>中，作者举了一个PacketParser业务案例，这段代码是体现业务功能的，是一个数据包的分析，作者也比较了各种模式使用的不同，所以我们还是使用动态代理模式或Command模式来消灭那些可能存在的if else</p><p>　　由以上两个案例表明：业务逻辑是我们使用设计模式的切入点，而在分解业务逻辑时，我们习惯则可能使用if else来实现，当你有这种企图或者已经实现代码了，那么就应该考虑是否需要重构Refactoring了。<br /></p><p><strong>if else替代者</strong></p><p>　　那么实战中，哪些设计模式可以替代if else呢？其实GoF设计模式都可以用来替代if else，我们分别描述如下：</p><li>状态模式　<br />　　当数据对象存在各种可能性的状态，而且这种状态将会影响到不同业务结果时，那么我们就应该考虑是否使用状态模式，当然，使用状态模式之前，你必须首先有内存状态这个概念，而不是数据库概念，因为在传统的面向过程的/面向数据库的系统中，你很难发现状态的，从数据库中读取某个值，然后根据这个值进行代码运行分流，这是很多初学者常干的事情。参考文章:<a href="http://www.jdon.com/artichect/state.htm" target="_blank">状态对象：数据库的替代者</a><br />　　使用传统语言思维的情况还有：使用一个类整数变量标识状态：<br /><table cellspacing="1" cellpadding="1" width="100%" bgcolor="#cccccc" border="0"><tbody><tr><td><p> </p><p>public class Order{</p><p>private int status;</p><p>//说明： </p><p>//status=1 表示订货但为查看 ；</p><p>//status=2 表示已经查看未处理；</p><p>//status=3 表示已经处理未付款</p><p>//status=4 表示已经付款未发货</p><p>//status=5 表示已经发货</p><p>} </p></td></tr></tbody></table><br />　　上述类设计，无疑是将类作为传统语言的函数来使用，这样导致程序代码中存在大量的if else。<br /><br /></li><li>策略模式　<br />　　当你面临几种算法或者公式选择时，可以考虑策略模式，传统过程语言情况是：从数据库中读取算法数值，数值1表示策略1，例如保存到数据库；数值为2表示策略2，例如保存到XMl文件中。这里使用if else作为策略选择的开关。 <br /><br /></li><li>command模式　<br />　　传统过程的思维情况是：如果客户端发出代号是1或"A"，那么我调用A.java这个对象来处理；如果代号是2或"B"，我就调用B.java来处理，通过if else来判断客户端发送过来的代码，然后按事先约定的对应表，调用相应的类来处理。<br /><br /></li><li>MVC模式　<br />　　MVC模式的传统语言误用和Command模式类似，在一个Action类中，使用if else进行前后台调度，如果客户端传送什么命令；我就调用后台什么结果；如果后台处理什么结构，再决定推什么页面，不过，现在我们使用Struts/JSF这样MVC模式的框架实现者就不必范这种低级错误。<br /><br /></li><li>职责链模式　<br />　　职责链模式和Command模式是可选的，如果你实在不知道客户端会发出什么代号；也没有一个事先定义好的对照表，那么你只能编写一个个类去碰运气一样打开这个包看一下就可以。与Command是不同在<a href="http://www.jdon.com/AOPdesign/decorator.htm" target="_blank">AOP vs Decorator</a>一文中有分析。<br /><br /></li><li>代理或动态代理模式　<br />　　代理对象可以是符合某种条件的代表者，比如，权限检验，传统面向过程思维是：当一个用户登陆后，访问某资源时，使用if else进行判断，只有某种条件符合时，才能允许访问，这样权限判断和业务数据逻辑混乱在一起，使用代理模式可以清晰分离，如果嫌不太好，使用动态代理，或者下面AOP等方式。<br /><br /></li><li>AOP或Decorator模式<br />　　<br />　　其实使用filter过滤器也可以替代我们业务中的if else，过滤器起到一种过滤和筛选作用，将符合本过滤器条件的对象拦截下来做某件事情，这就是一个过滤器的功能，多个过滤器组合在一起实际就是if else的组合。<br />　　所以，如果你实在想不出什么办法，可以使用过滤器，将过滤器看成防火墙就比较好理解，当客户端有一个请求时，经过不同性质的防火墙，这个防火墙是拦截端口的；那个防火墙是安全检查拦截等等。过滤器也如同红蓝白各种光滤镜；红色滤镜只能将通过光线中的红色拦截了；蓝色滤镜将光线中的蓝色拦截下来，这实际上是对光线使用if else进行分解。<br /><br /><img height="182" src="http://www.jdon.com/artichect/images/ifelse.gif" width="285" p="100" h="182" w="285" /><br />　　如图，通过一个个条件过滤器我们立体地实现了对信号的分离，如果你使用if else，说明你是将图中的条件1/2/3/4合并在一起，在同一个地方实现条件判断。<br />　　需要深入了解过滤器的实现细节和微小区别，请参考文章：<a href="http://www.jdon.com/AOPdesign/decorator.htm" target="_blank">AOP vs Decorator</a><br /><p><strong>OO设计的总结</strong>　　 </p><p>　　还有一种伪模式，虽然使用了状态等模式，但是在模式内部实质还是使用if else或switch进行状态切换或重要条件判断，那么无疑说明还需要进一步努力。更重要的是，不能以模式自居，而且出书示人。</p><p>　　真正掌握面向对象这些思想是一件困难的事情，目前有各种属于揪着自己头发向上拔的解说，都是误人子弟的，所以我觉得初学者读Thinking in Java（Java编程思想）是没有用，它试图从语言层次来讲OO编程思想，非常失败，作为语言参考书可以，但是作为Java体现的OO思想的学习资料，就错了。</p><p>　　OO编程思想是一种方法论，方法论如果没有应用比较，是无法体会这个方法论的特点的，禅是古代一个方法论，悟禅是靠挑水砍柴这些应用才能体会。</p><p>　　那么OO思想靠什么应用能够体会到了？是GoF设计模式，GoF设计模式是等于软件人员的挑水砍柴等基本活，所以，如果一个程序员连基本活都不会，他何以自居OO程序员？从事OO专业设计编程这个工作，如果不掌握设计模式基本功，就象一个做和尚的人不愿意挑水砍柴，他何以立足这个行业？早就被师傅赶下山。</p><p>　　最后总结：将if else用在小地方还可以，如简单的数值判断；但是如果按照你的传统习惯思维，在实现业务功能时也使用if else，那么说明你的思维可能需要重塑，你的编程经验越丰富，传统过程思维模式就容易根深蒂固，想靠自己改变很困难；建议接受<a href="http://www.jdon.com/trainning/j2eearchitect.htm" target="_blank">专业头脑风暴培训</a>。</p><p>　　用一句话总结：如果你做了不少系统，很久没有使用if else了，那么说明你可能真正进入OO设计的境地了。（这是本人自己发明的实战性的衡量考核标准）。</p></li><img src ="http://www.blogjava.net/mphome/aggbug/181927.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mphome/" target="_blank">昨夜人生</a> 2008-02-25 10:57 <a href="http://www.blogjava.net/mphome/archive/2008/02/25/181927.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jetty Servlet 技术</title><link>http://www.blogjava.net/mphome/archive/2007/12/24/170153.html</link><dc:creator>昨夜人生</dc:creator><author>昨夜人生</author><pubDate>Mon, 24 Dec 2007 13:00:00 GMT</pubDate><guid>http://www.blogjava.net/mphome/archive/2007/12/24/170153.html</guid><wfw:comment>http://www.blogjava.net/mphome/comments/170153.html</wfw:comment><comments>http://www.blogjava.net/mphome/archive/2007/12/24/170153.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mphome/comments/commentRss/170153.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mphome/services/trackbacks/170153.html</trackback:ping><description><![CDATA[            jetty开源服务器对serlvet的并发处理添加了比较好的技术，总的来说可以分4大改进点：<br />             1.将NIO概念加入到servlet中，（具体的技术还是不太）<br />             2.引入了continuation 机制。说白了就是将每个连接connection从servlet的suspend换到container的suspend，不在占用servlet的资源，此处需要考虑换入继续执行的问题。用通俗的话来讲就是给serlvet加入了记忆功能。<br />             3.Split buffers：使用改技术的前提是采用continuation，也就是在读写的时候加入缓存块<br />             4.Delayed dispatch：好像这方面的改进作用不大，只是对那些request的请求一起到，在将其发送到servlet去处理。<br /><br /><br /><br />              暂时看懂的就这么多<img src ="http://www.blogjava.net/mphome/aggbug/170153.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mphome/" target="_blank">昨夜人生</a> 2007-12-24 21:00 <a href="http://www.blogjava.net/mphome/archive/2007/12/24/170153.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>12.21 开题报告</title><link>http://www.blogjava.net/mphome/archive/2007/12/21/169419.html</link><dc:creator>昨夜人生</dc:creator><author>昨夜人生</author><pubDate>Fri, 21 Dec 2007 10:28:00 GMT</pubDate><guid>http://www.blogjava.net/mphome/archive/2007/12/21/169419.html</guid><wfw:comment>http://www.blogjava.net/mphome/comments/169419.html</wfw:comment><comments>http://www.blogjava.net/mphome/archive/2007/12/21/169419.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mphome/comments/commentRss/169419.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mphome/services/trackbacks/169419.html</trackback:ping><description><![CDATA[    需注意的技术：Cache：JBOSSCache<br />                                JGroup<br />                                XMPP COMETD<img src ="http://www.blogjava.net/mphome/aggbug/169419.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mphome/" target="_blank">昨夜人生</a> 2007-12-21 18:28 <a href="http://www.blogjava.net/mphome/archive/2007/12/21/169419.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>数据库master/slave模式</title><link>http://www.blogjava.net/mphome/archive/2007/12/12/167327.html</link><dc:creator>昨夜人生</dc:creator><author>昨夜人生</author><pubDate>Wed, 12 Dec 2007 12:40:00 GMT</pubDate><guid>http://www.blogjava.net/mphome/archive/2007/12/12/167327.html</guid><wfw:comment>http://www.blogjava.net/mphome/comments/167327.html</wfw:comment><comments>http://www.blogjava.net/mphome/archive/2007/12/12/167327.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mphome/comments/commentRss/167327.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mphome/services/trackbacks/167327.html</trackback:ping><description><![CDATA[mysql的master/slave模式：<br />采用ReplicationConnection链接后，设置Connection.setReadOnly(true)时，读写可以从master,slave中任意读写。<br />设置Connection.setReadOnly(false)只能从master中读取。<br />采用此方法可以做到只在master上更新数据，利用slave来读取数据。<br />详细介绍<br /><a href="http://dev.mysql.com/doc/refman/5.1/en/connector-j-reference-replication-connection.html">http://dev.mysql.com/doc/refman/5.1/en/connector-j-reference-replication-connection.html</a><br /><br /><br /><img src ="http://www.blogjava.net/mphome/aggbug/167327.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mphome/" target="_blank">昨夜人生</a> 2007-12-12 20:40 <a href="http://www.blogjava.net/mphome/archive/2007/12/12/167327.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>eclipse快捷键大全</title><link>http://www.blogjava.net/mphome/archive/2007/12/03/165021.html</link><dc:creator>昨夜人生</dc:creator><author>昨夜人生</author><pubDate>Mon, 03 Dec 2007 14:05:00 GMT</pubDate><guid>http://www.blogjava.net/mphome/archive/2007/12/03/165021.html</guid><wfw:comment>http://www.blogjava.net/mphome/comments/165021.html</wfw:comment><comments>http://www.blogjava.net/mphome/archive/2007/12/03/165021.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mphome/comments/commentRss/165021.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mphome/services/trackbacks/165021.html</trackback:ping><description><![CDATA[
		<h2 class="diaryTitle">eclipse快捷键大全</h2>                                       
<p></p><div class="pgtitle"><a name="1153126290226"></a><strong>eclipse快捷键大全</strong></div><div class="pgcontent"><p>1. 常用快捷键<br />(1)Ctrl+Space<br />说明:内容助理。提供对方法,变量,参数,javadoc等得提示,应运在多种场合,总之需要提示的时候可先按此快捷键。<br />注:避免输入法的切换设置与此设置冲突</p><p>(2)Ctrl+Shift+Space<br />说明:变量提示<br />(3)Ctrl+/<br />说明:添加/消除//注释,在eclipse2.0中,消除注释为Ctrl+\</p><p>(4)Ctrl+Shift+/<br />说明:添加/* */注释</p><p>(5)Ctrl+Shift+\<br />说明:消除/* */注释</p><p>(6)Ctrl+Shift+F<br />说明:自动格式化代码</p><p>(7)Ctrl+1<br />说明:批量修改源代码中的变量名,此外还可用在catch块上.</p><p>(8)Ctril+F6<br />说明:界面切换</p><p>(9)Ctril+Shift+M<br />说明:查找所需要得包</p><p>(10)Ctril+Shift+O<br />说明:自动引入所需要得包</p><p>(11)Ctrl+Alt+S<br />说明:源代码得快捷菜单。其中的Generate getters and setters 和 Surround with try/catch<br />block比较常用.建议把它们添加为快捷键.快捷键设置在windows-&gt;preferences-&gt;Workbench-&gt;Keys</p><p>2. 快捷键列表</p><p>编辑<br />作用域 功能 快捷键<br />全局 查找并替换 Ctrl+F<br />文本编辑器 查找上一个 Ctrl+Shift+K<br />文本编辑器 查找下一个 Ctrl+K<br />全局 撤销 Ctrl+Z<br />全局 复制 Ctrl+C<br />全局 恢复上一个选择 Alt+Shift+↓<br />全局 剪切 Ctrl+X<br />全局 快速修正 Ctrl1+1<br />全局 内容辅助 Alt+/<br />全局 全部选中 Ctrl+A<br />全局 删除 Delete<br />全局 上下文信息 Alt+？Alt+Shift+?Ctrl+Shift+Space<br />Java编辑器 显示工具提示描述 F2<br />Java编辑器 选择封装元素 Alt+Shift+↑<br />Java编辑器 选择上一个元素 Alt+Shift+←<br />Java编辑器 选择下一个元素 Alt+Shift+→<br />文本编辑器 增量查找 Ctrl+J<br />文本编辑器 增量逆向查找 Ctrl+Shift+J<br />全局 粘贴 Ctrl+V<br />全局 重做 Ctrl+Y</p><p>查看<br />作用域 功能 快捷键<br />全局 放大 Ctrl+=<br />全局 缩小 Ctrl+-</p><p>窗口<br />作用域 功能 快捷键<br />全局 激活编辑器 <span class="caps">F12</span><br />全局 切换编辑器 Ctrl+Shift+W<br />全局 上一个编辑器 Ctrl+Shift+F6<br />全局 上一个视图 Ctrl+Shift+F7<br />全局 上一个透视图 Ctrl+Shift+F8<br />全局 下一个编辑器 Ctrl+F6<br />全局 下一个视图 Ctrl+F7<br />全局 下一个透视图 Ctrl+F8<br />文本编辑器 显示标尺上下文菜单 Ctrl+W<br />全局 显示视图菜单 Ctrl+F10<br />全局 显示系统菜单 Alt+-</p><p>导航<br />作用域 功能 快捷键<br />Java编辑器 打开结构 Ctrl+F3<br />全局 打开类型 Ctrl+Shift+T<br />全局 打开类型层次结构 F4<br />全局 打开声明 F3<br />全局 打开外部javadoc Shift+F2<br />全局 打开资源 Ctrl+Shift+R<br />全局 后退历史记录 Alt+←<br />全局 前进历史记录 Alt+→<br />全局 上一个 Ctrl+,<br />全局 下一个 Ctrl+.<br />Java编辑器 显示大纲 Ctrl+O<br />全局 在层次结构中打开类型 Ctrl+Shift+H<br />全局 转至匹配的括号 Ctrl+Shift+P<br />全局 转至上一个编辑位置 Ctrl+Q<br />Java编辑器 转至上一个成员 Ctrl+Shift+↑<br />Java编辑器 转至下一个成员 Ctrl+Shift+↓<br />文本编辑器 转至行 Ctrl+L</p><p>搜索<br />作用域 功能 快捷键<br />全局 出现在文件中 Ctrl+Shift+U<br />全局 打开搜索对话框 Ctrl+H<br />全局 工作区中的声明 Ctrl+G<br />全局 工作区中的引用 Ctrl+Shift+G</p><p>文本编辑<br />作用域 功能 快捷键<br />文本编辑器 改写切换 Insert<br />文本编辑器 上滚行 Ctrl+↑<br />文本编辑器 下滚行 Ctrl+↓</p><p>文件<br />作用域 功能 快捷键<br />全局 保存 Ctrl+X Ctrl+S<br />全局 打印 Ctrl+P<br />全局 关闭 Ctrl+F4<br />全局 全部保存 Ctrl+Shift+S<br />全局 全部关闭 Ctrl+Shift+F4<br />全局 属性 Alt+Enter<br />全局 新建 Ctrl+N</p><p>项目<br />作用域 功能 快捷键<br />全局 全部构建 Ctrl+B</p><p>源代码<br />作用域 功能 快捷键<br />Java编辑器 格式化 Ctrl+Shift+F<br />Java编辑器 取消注释 Ctrl+\<br />Java编辑器 注释 Ctrl+/<br />Java编辑器 添加导入 Ctrl+Shift+M<br />Java编辑器 组织导入 Ctrl+Shift+O<br />Java编辑器 使用try/catch块来包围 未设置，太常用了，所以在这里列出,建议自己设置。也可以使用Ctrl+1自动修正。</p><p>运行<br />作用域 功能 快捷键<br />全局 单步返回 F7<br />全局 单步跳过 F6<br />全局 单步跳入 F5<br />全局 单步跳入选择 Ctrl+F5<br />全局 调试上次启动 <span class="caps">F11</span><br />全局 继续 F8<br />全局 使用过滤器单步执行 Shift+F5<br />全局 添加/去除断点 Ctrl+Shift+B<br />全局 显示 Ctrl+D<br />全局 运行上次启动 Ctrl+F11<br />全局 运行至行 Ctrl+R<br />全局 执行 Ctrl+U</p><p>重构<br />作用域 功能 快捷键<br />全局 撤销重构 Alt+Shift+Z<br />全局 抽取方法 Alt+Shift+M<br />全局 抽取局部变量 Alt+Shift+L<br />全局 内联 Alt+Shift+I<br />全局 移动 Alt+Shift+V<br />全局 重命名 Alt+Shift+R<br />全局 重做 Alt+Shift+Y</p></div><img src ="http://www.blogjava.net/mphome/aggbug/165021.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mphome/" target="_blank">昨夜人生</a> 2007-12-03 22:05 <a href="http://www.blogjava.net/mphome/archive/2007/12/03/165021.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>11月12日</title><link>http://www.blogjava.net/mphome/archive/2007/11/13/160072.html</link><dc:creator>昨夜人生</dc:creator><author>昨夜人生</author><pubDate>Mon, 12 Nov 2007 16:08:00 GMT</pubDate><guid>http://www.blogjava.net/mphome/archive/2007/11/13/160072.html</guid><wfw:comment>http://www.blogjava.net/mphome/comments/160072.html</wfw:comment><comments>http://www.blogjava.net/mphome/archive/2007/11/13/160072.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mphome/comments/commentRss/160072.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mphome/services/trackbacks/160072.html</trackback:ping><description><![CDATA[         今天总算是静下心来做事啦，因为股票跌的实在是惨不忍睹，看来大半年是白忙啦。现在最好也就是不做任何操作，虽然可能会更惨！但这样也不是没有好处，做事的效率提高啦，以前是想着靠股票发财，现在有打算好好学习找个好工作，呵呵我真是善变。<br />         晚上使用apache的ad压力测试竟然把公司的网站给搞瘫了，出乎意料.学了一招以后看谁不顺眼，给他来一下。这个星期要请别人去吃大餐，，唉可怜的我的那点工资还有我的张学友演唱会门票。<br />         <img src ="http://www.blogjava.net/mphome/aggbug/160072.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mphome/" target="_blank">昨夜人生</a> 2007-11-13 00:08 <a href="http://www.blogjava.net/mphome/archive/2007/11/13/160072.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>菩提本无树，明镜亦非台，本来无一物，何处惹尘埃</title><link>http://www.blogjava.net/mphome/archive/2007/09/03/142464.html</link><dc:creator>昨夜人生</dc:creator><author>昨夜人生</author><pubDate>Mon, 03 Sep 2007 15:00:00 GMT</pubDate><guid>http://www.blogjava.net/mphome/archive/2007/09/03/142464.html</guid><wfw:comment>http://www.blogjava.net/mphome/comments/142464.html</wfw:comment><comments>http://www.blogjava.net/mphome/archive/2007/09/03/142464.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mphome/comments/commentRss/142464.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mphome/services/trackbacks/142464.html</trackback:ping><description><![CDATA[今天终于可以跟写文档说byby啦，呵呵还好投标不要我去，明天公司没人可以尽情的炒股啦。说起来最近行情还真是挺不错，经过我的努力（虽然爸妈说我在瞎搞）资金总额回到了5.30号之前的高点。下面可要小心了，不能在满仓操作，又来个一夜回到革命前。<br />     9月3日是开学的第一天，很多新生都开始上课啦，怎么感觉现在的大一新生长得都比较成熟啊，看上去和大四的学生精神面貌，个头都差不多。看着他们还真挺怀念都大学的时候，读大学和读研究生还真是区别很大。主要还是人开始考虑现实的东西比较多了。我还真挺佩服那些自由职业者，需要钱的时候就找分工作干两个月，挣够了钱继续开始旅游或干自己想做的事，这还真不是普通人能做到的。<br />     <img src ="http://www.blogjava.net/mphome/aggbug/142464.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mphome/" target="_blank">昨夜人生</a> 2007-09-03 23:00 <a href="http://www.blogjava.net/mphome/archive/2007/09/03/142464.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>无聊的一天</title><link>http://www.blogjava.net/mphome/archive/2007/08/26/139634.html</link><dc:creator>昨夜人生</dc:creator><author>昨夜人生</author><pubDate>Sun, 26 Aug 2007 14:08:00 GMT</pubDate><guid>http://www.blogjava.net/mphome/archive/2007/08/26/139634.html</guid><wfw:comment>http://www.blogjava.net/mphome/comments/139634.html</wfw:comment><comments>http://www.blogjava.net/mphome/archive/2007/08/26/139634.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mphome/comments/commentRss/139634.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mphome/services/trackbacks/139634.html</trackback:ping><description><![CDATA[          又过了一个没有活动的周末，还真的挺无聊的。快没钱啦，为什么公司发钱要到12号，弄得我现在搞信用卡透支，苦闷。<br />          明天又开始上班，听说移动的需求又加了不少，妈的又要修改标书，什么时候才能搞完啊 。老大，我是实习生不要叫我老写文档好 不好啊。<br />           为什么我老是对某件事不能专注下去，即时是玩游戏也很难有非常强的耐心通关，但在没有开始却兴趣非常的强。我很怀疑是不是  很少人会这样。<br />          公司要进新人啦，好像有女的哦，暗喜！！！要知道我们公司连做美工的都是男的，老总可能是看不过去啦，调节一下男女比例，虽然我也只是想看看，养眼而已。<br />          <img src ="http://www.blogjava.net/mphome/aggbug/139634.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mphome/" target="_blank">昨夜人生</a> 2007-08-26 22:08 <a href="http://www.blogjava.net/mphome/archive/2007/08/26/139634.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>死灰复燃8.24</title><link>http://www.blogjava.net/mphome/archive/2007/08/24/139129.html</link><dc:creator>昨夜人生</dc:creator><author>昨夜人生</author><pubDate>Fri, 24 Aug 2007 08:36:00 GMT</pubDate><guid>http://www.blogjava.net/mphome/archive/2007/08/24/139129.html</guid><wfw:comment>http://www.blogjava.net/mphome/comments/139129.html</wfw:comment><comments>http://www.blogjava.net/mphome/archive/2007/08/24/139129.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mphome/comments/commentRss/139129.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mphome/services/trackbacks/139129.html</trackback:ping><description><![CDATA[              哦，看一下上次留言的日期已经是2006年，人真懒，好今天重新开始。<br />             8月24日，上班也有一个月啦，本以为刚来实习就可以立马做项目，哪知道刚来开始就看文档，看了一个星期后，又来写投标书，大失所望啊。每天只好之间看看教程啦。<br />            今天主要将WAP程序设计看了一遍，毕竟下一个项目是有关WAP的，临时抱佛脚吧。感觉WAP还是挺简单的，只不过和HTML在标签上有说区别。而且在给变量赋值在=前后竟然不能有空格，不知道那个傻子设计的，怪不得WAP发展的不是很好。<br />            最近正在看JBOSS和MySee，关于JBOSS还真不知道从那里下手，整体的设计理念是了解，但具体如何应用挺费解的。要好好象师兄请教一下。Mysee开源的东东，也已经看看很久啦 ，同志要加紧啊 。<br />            提醒：公司空调很冷，以后要记得带长袖衣服。    <br />                2007.8.24<img src ="http://www.blogjava.net/mphome/aggbug/139129.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mphome/" target="_blank">昨夜人生</a> 2007-08-24 16:36 <a href="http://www.blogjava.net/mphome/archive/2007/08/24/139129.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>