﻿<?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/vcycyv/</link><description /><language>zh-cn</language><lastBuildDate>Fri, 01 May 2026 10:21:49 GMT</lastBuildDate><pubDate>Fri, 01 May 2026 10:21:49 GMT</pubDate><ttl>60</ttl><item><title>一个基于react redux typescript saga webpack springboot和jpa的示例程序</title><link>http://www.blogjava.net/vcycyv/archive/2018/02/03/433036.html</link><dc:creator>人在江湖</dc:creator><author>人在江湖</author><pubDate>Fri, 02 Feb 2018 21:59:00 GMT</pubDate><guid>http://www.blogjava.net/vcycyv/archive/2018/02/03/433036.html</guid><wfw:comment>http://www.blogjava.net/vcycyv/comments/433036.html</wfw:comment><comments>http://www.blogjava.net/vcycyv/archive/2018/02/03/433036.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/vcycyv/comments/commentRss/433036.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/vcycyv/services/trackbacks/433036.html</trackback:ping><description><![CDATA[<p style="box-sizing: border-box; margin: 0px 0px 25px; color: #2f2f2f; font-family: -apple-system, &quot;SF UI Text&quot;, Arial, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, sans-serif; font-size: 16px; background-color: #ffffff; word-break: break-word !important;">分享自己做的一个小应用，这是一个典型的web应用程序的技术栈，可以在这个项目的基础上开发你想做的应用。前端的开发有开发和产品两种模式，开发模式主要是为了Hot code reloading.</p><p style="box-sizing: border-box; margin: 0px 0px 25px; color: #2f2f2f; font-family: -apple-system, &quot;SF UI Text&quot;, Arial, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, sans-serif; font-size: 16px; background-color: #ffffff; word-break: break-word !important;">代码在这里：https://github.com/vcycyv/react-redux-typescript-saga-webpack-springboot-jpa-pomotodo&nbsp;</p><p style="box-sizing: border-box; margin: 0px 0px 25px; color: #2f2f2f; font-family: -apple-system, &quot;SF UI Text&quot;, Arial, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, sans-serif; font-size: 16px; background-color: #ffffff; word-break: break-word !important;">使用方法：</p><p style="box-sizing: border-box; margin: 0px 0px 25px; color: #2f2f2f; font-family: -apple-system, &quot;SF UI Text&quot;, Arial, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, sans-serif; font-size: 16px; background-color: #ffffff; word-break: break-word !important;">1. clone/download the project</p><p style="box-sizing: border-box; margin: 0px 0px 25px; color: #2f2f2f; font-family: -apple-system, &quot;SF UI Text&quot;, Arial, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, sans-serif; font-size: 16px; background-color: #ffffff; word-break: break-word !important;">2. run "gradle wrapper"</p><p style="box-sizing: border-box; margin: 0px 0px 25px; color: #2f2f2f; font-family: -apple-system, &quot;SF UI Text&quot;, Arial, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, sans-serif; font-size: 16px; background-color: #ffffff; word-break: break-word !important;">3. run "gradle build" (It will download jar files and js modules dependency)</p><p style="box-sizing: border-box; margin: 0px 0px 25px; color: #2f2f2f; font-family: -apple-system, &quot;SF UI Text&quot;, Arial, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, sans-serif; font-size: 16px; background-color: #ffffff; word-break: break-word !important;">4. Before importing the project into IDE, comment out "//include 'src:main:frontend" from settings.gradle</p><p style="box-sizing: border-box; margin: 0px 0px 25px; color: #2f2f2f; font-family: -apple-system, &quot;SF UI Text&quot;, Arial, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, sans-serif; font-size: 16px; background-color: #ffffff; word-break: break-word !important;">5. Import gradle project to IDE. (I use eclipse)</p><p style="box-sizing: border-box; margin: 0px 0px 25px; color: #2f2f2f; font-family: -apple-system, &quot;SF UI Text&quot;, Arial, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, sans-serif; font-size: 16px; background-color: #ffffff; word-break: break-word !important;">6. create a postgre db named "pomotodo"</p><p style="box-sizing: border-box; margin: 0px 0px 25px; color: #2f2f2f; font-family: -apple-system, &quot;SF UI Text&quot;, Arial, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, sans-serif; font-size: 16px; background-color: #ffffff; word-break: break-word !important;">7. Start the mid-tier by running Application.java</p><p style="box-sizing: border-box; margin: 0px 0px 25px; color: #2f2f2f; font-family: -apple-system, &quot;SF UI Text&quot;, Arial, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, sans-serif; font-size: 16px; background-color: #ffffff; word-break: break-word !important;">8. UI development&nbsp;</p><p style="box-sizing: border-box; margin: 0px 0px 25px; color: #2f2f2f; font-family: -apple-system, &quot;SF UI Text&quot;, Arial, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, sans-serif; font-size: 16px; background-color: #ffffff; word-break: break-word !important;">&nbsp; &nbsp;8.1 For projection, navigate to /src/main/frontend and run "npm run build", and go to localhost:8080/pomotodo&nbsp;</p><p style="box-sizing: border-box; margin: 0px 0px 25px; color: #2f2f2f; font-family: -apple-system, &quot;SF UI Text&quot;, Arial, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, sans-serif; font-size: 16px; background-color: #ffffff; word-break: break-word !important;">&nbsp; &nbsp;8.2 For development (hot reloading), navigate to /src/main/frontend and run "npm start", and go to localhost:9090&nbsp;</p><p style="box-sizing: border-box; margin: 0px 0px 25px; color: #2f2f2f; font-family: -apple-system, &quot;SF UI Text&quot;, Arial, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, sans-serif; font-size: 16px; background-color: #ffffff; word-break: break-word !important;"><br style="box-sizing: border-box;" /></p><p style="box-sizing: border-box; margin: 0px 0px 25px; color: #2f2f2f; font-family: -apple-system, &quot;SF UI Text&quot;, Arial, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, sans-serif; font-size: 16px; background-color: #ffffff; word-break: break-word !important;">使用redux-saga的好处是为了side-effect, 比如下面代码中，const tasks = yield call(ApiTasks.listTasks); 调用后端服务，&nbsp;</p><p style="box-sizing: border-box; margin: 0px 0px 25px; color: #2f2f2f; font-family: -apple-system, &quot;SF UI Text&quot;, Arial, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, sans-serif; font-size: 16px; background-color: #ffffff; word-break: break-word !important;">export function* listTasks() {</p><p style="box-sizing: border-box; margin: 0px 0px 25px; color: #2f2f2f; font-family: -apple-system, &quot;SF UI Text&quot;, Arial, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, sans-serif; font-size: 16px; background-color: #ffffff; word-break: break-word !important;">&nbsp; &nbsp; const tasks = yield call(ApiTasks.listTasks);</p><p style="box-sizing: border-box; margin: 0px 0px 25px; color: #2f2f2f; font-family: -apple-system, &quot;SF UI Text&quot;, Arial, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, sans-serif; font-size: 16px; background-color: #ffffff; word-break: break-word !important;">&nbsp; &nbsp; yield put({</p><p style="box-sizing: border-box; margin: 0px 0px 25px; color: #2f2f2f; font-family: -apple-system, &quot;SF UI Text&quot;, Arial, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, sans-serif; font-size: 16px; background-color: #ffffff; word-break: break-word !important;">&nbsp; &nbsp; &nbsp; &nbsp; type: LIST_TASK_SUCCESS,</p><p style="box-sizing: border-box; margin: 0px 0px 25px; color: #2f2f2f; font-family: -apple-system, &quot;SF UI Text&quot;, Arial, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, sans-serif; font-size: 16px; background-color: #ffffff; word-break: break-word !important;">&nbsp; &nbsp; &nbsp; &nbsp; tasks</p><p style="box-sizing: border-box; margin: 0px 0px 25px; color: #2f2f2f; font-family: -apple-system, &quot;SF UI Text&quot;, Arial, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, sans-serif; font-size: 16px; background-color: #ffffff; word-break: break-word !important;">&nbsp; &nbsp; })</p><p style="box-sizing: border-box; margin: 0px 0px 25px; color: #2f2f2f; font-family: -apple-system, &quot;SF UI Text&quot;, Arial, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, sans-serif; font-size: 16px; background-color: #ffffff; word-break: break-word !important;">}</p><p style="box-sizing: border-box; margin: 0px 0px 25px; color: #2f2f2f; font-family: -apple-system, &quot;SF UI Text&quot;, Arial, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, sans-serif; font-size: 16px; background-color: #ffffff; word-break: break-word !important;">再下面一行的yield put语句dispatch了LIST_TASK_SUCCESS这个action，payload就是REST API 返回的数据tasks.</p><p style="box-sizing: border-box; margin: 0px 0px 25px; color: #2f2f2f; font-family: -apple-system, &quot;SF UI Text&quot;, Arial, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, sans-serif; font-size: 16px; background-color: #ffffff; word-break: break-word !important;">计划继续开发这个项目，最终做一个番茄时间管理的工具。感兴趣的朋友可以在github上star 这个项目，下次可以随时在&#8220;your star&#8221;中找到它。</p><img src ="http://www.blogjava.net/vcycyv/aggbug/433036.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/vcycyv/" target="_blank">人在江湖</a> 2018-02-03 05:59 <a href="http://www.blogjava.net/vcycyv/archive/2018/02/03/433036.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>为什么一线开发经理要尽量全栈</title><link>http://www.blogjava.net/vcycyv/archive/2016/07/15/431199.html</link><dc:creator>人在江湖</dc:creator><author>人在江湖</author><pubDate>Thu, 14 Jul 2016 22:53:00 GMT</pubDate><guid>http://www.blogjava.net/vcycyv/archive/2016/07/15/431199.html</guid><wfw:comment>http://www.blogjava.net/vcycyv/comments/431199.html</wfw:comment><comments>http://www.blogjava.net/vcycyv/archive/2016/07/15/431199.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/vcycyv/comments/commentRss/431199.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/vcycyv/services/trackbacks/431199.html</trackback:ping><description><![CDATA[<p>在外企工作十年，从程序员做到一线开发经理，再后来转到公司美国总部，又做回程序员。工作角色的变化促使自己思考，分别站在程序员和开发经理的角度看，怎样的程序员是出色的程序员，怎样的开发经理是好经理。经历团队发展过程里种种好的、坏的变迁，再加上看到、听到其他团队的经验教训，就越来越有感触，掌握全栈技术对一线开发经理很重要。</p><p><br /></p><p>开发经理的职责是<strong>确保软件产品按时保质发布</strong>。流程也为这个目标服务， 但流程本身的作用很有限。软件开发流程理论经历瀑布式，迭代式（RUP, 又称统一软件过程）以及现在的敏捷开发（敏捷在现实中几乎就是scrum），理论越来越成熟完善，但落地执行又不简单。&nbsp;大量文章都在分析为什么敏捷流程在很多开发团队不起作用。比如最近看到&nbsp;<a data-cke-saved-href="http://www.infoq.com/cn/news/2016/06/agile-asia" href="http://www.infoq.com/cn/news/2016/06/agile-asia">为什么敏捷开发在亚洲实行不了</a>&nbsp;里说， &#8220;敏捷开发需要大家当面直言问题所在，而这有悖于亚洲文化，因为亚洲人特别注意对别人表示尊重、给别人留面子，这一点与西方文化特别不同，而西方正是敏捷思想的发源地。&#8221; 从自己的亲身经历看，这纯属扯淡。讲到留面子，和稀泥，打太极拳，老美一点儿也不输给中国人。流程只是个工具，能否因地制宜执行得好，开发经理起到决定性作用。没有普适的流程，针对一个特定的团队，只有合适的流程。&nbsp;全栈型的经理比较容易领导团队<strong>做正确的事情并做得够快</strong>。&nbsp;<strong>&nbsp;</strong>能做到这一点，是不是scrum都不重要。他不必在各个方面都是专家，但至少需要能预见技术上重要的风险才能及时采取措施处理。一些技术决定对项目成败有关键性的影响，比如技术选型，搭建软件应用的架构，包括分层, 模块化，secruity, transaction, exception, audit，自动化测试等等。开发经理不必把这些工作都承担了，但至少需要把关，保证这些核心的工作没有明显疏漏。因为最终为产品发布负责的还是开发经理自己，而不是某个犯了错的程序员。不全栈，把关自然就不全面。</p><p><br /></p><p>开发经理的各项工作中，我认为最重要的就是面试招聘。招对了人，工作中即使遇到棘手的问题，技术好素质高的队员自己就解决了。<strong>团队不怕小但要精</strong>，队员必须能独当一面。不论前台后端，经理至少应该具备足够好的技术品味过滤掉不合格的应聘者。乔布斯有个观点，一旦招了庸才，两年后，就会轮到庸才做面试招聘，很可能再招进来的还是庸才。如果开发经理不全栈，面试就要靠运气了。反过来说，资历好而水平差的程序员，也可以靠运气进好公司的。</p><p><br /></p><p>程序员为story估时间（story point）的时候，会不会虚报呢？如果认为scrum的打牌可以避免虚报的话，可以看看上面关于留面子的讨论。即使把story的分配放在scrum打牌之后，经常大家心里已经知道哪个人做哪个story, 比如feature enhancement的story自然是这个feature之前的owner来做。打牌的人很容易会&#8220;做好人&#8221;倾向于多估时间。（再说一次，这不是中国特色，是人性）心理学有个有趣的关于撒谎的讨论，<strong>撒谎的前提是1. 我知道&nbsp;2.你不知道&nbsp;3.我知道你不知道。</strong>如果经理在产品某项技术上是小白，就容易出现估时间虚报的问题&#8212;&#8212;这样的事情我亲见过很多次了。全栈的经理自然不会被糊弄。</p><p><br /></p><p>程序员经常会在一个技术问题上产生不同的意见，这很正常，技术上很多事情本来就要做取舍。这时候经常需要开发经理介入做决定。经理做合理的决定不但对项目重要，对队员的个人感受也重要。决定不能是随机的选A或选B, 需要有决定的依据。程序员往往都有点小骄傲，经理技术上捉襟见肘的时候，程序员就容易想，&#8220;你还不如我呢，凭什么做决定。&#8221;</p><p><br /></p><p>开发经理需要做coding的工作么？我认为是需要的。 英语里有句谚语， He that would command must serve。至少也要做比较多code review的工作。评价队员工作效果是开发经理的重要职责之一。技术不全面的经理经常依靠听队员自我评价（吹牛），数代码行数等这种不靠谱的方式评价工作。错误地认同或不认同严重影响团队氛围。身先士卒的经理容易长期保持住团队良好的氛围。我没有能力定义什么样的氛围才算是好的，起码，我带团队时，<strong>成员互相之间心存善意</strong>。</p><p><br /></p><p>澄清一下自己观点：经理一定要全栈或技术精湛才能带好团队么？不是，但是很多管理的难题在全栈的经理眼里都不是问题， 比如上面提到的评价队员工作。带不好团队就无法好好职业发展么? 不是， 我见过太多靠吹牛，人事等各种非技术技巧成功哄骗二线三线经理的了。管理的路越往上走，技术越不重要，而政治越重要。问题是，作为程序员或开发经理，<strong>你的目标是把项目做好还是获得上级认可？</strong>我觉得这是职业价值观最根本的分歧， 但， 不想讨论。</p><p><br /></p><p><br /></p><br data-cke-eol="1" /><img src ="http://www.blogjava.net/vcycyv/aggbug/431199.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/vcycyv/" target="_blank">人在江湖</a> 2016-07-15 06:53 <a href="http://www.blogjava.net/vcycyv/archive/2016/07/15/431199.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>  开发过程的失败</title><link>http://www.blogjava.net/vcycyv/archive/2016/01/17/429082.html</link><dc:creator>人在江湖</dc:creator><author>人在江湖</author><pubDate>Sun, 17 Jan 2016 04:34:00 GMT</pubDate><guid>http://www.blogjava.net/vcycyv/archive/2016/01/17/429082.html</guid><wfw:comment>http://www.blogjava.net/vcycyv/comments/429082.html</wfw:comment><comments>http://www.blogjava.net/vcycyv/archive/2016/01/17/429082.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/vcycyv/comments/commentRss/429082.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/vcycyv/services/trackbacks/429082.html</trackback:ping><description><![CDATA[今天突然有了一个感悟， 开发需要避免的事情，并不是什么什么事情没做好， 而是投入了时间和精力之后，事情还没做好。因为不投入资源没把事情做完善可以是一种策略，省下来资源做更重要的事情，这是一种取舍。只有投入时间精力之后的失败才是真正的失败。<img src ="http://www.blogjava.net/vcycyv/aggbug/429082.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/vcycyv/" target="_blank">人在江湖</a> 2016-01-17 12:34 <a href="http://www.blogjava.net/vcycyv/archive/2016/01/17/429082.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Encountered an exception that google doesn't know: NoSuchMethodError: findMergedAnnotationAttributes(Ljava/lang/reflect/AnnotatedElement;Ljava/lang/String;ZZ)Lorg/springframework/core/annotation/AnnotationAttributes;</title><link>http://www.blogjava.net/vcycyv/archive/2015/06/21/425810.html</link><dc:creator>人在江湖</dc:creator><author>人在江湖</author><pubDate>Sun, 21 Jun 2015 01:08:00 GMT</pubDate><guid>http://www.blogjava.net/vcycyv/archive/2015/06/21/425810.html</guid><wfw:comment>http://www.blogjava.net/vcycyv/comments/425810.html</wfw:comment><comments>http://www.blogjava.net/vcycyv/archive/2015/06/21/425810.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/vcycyv/comments/commentRss/425810.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/vcycyv/services/trackbacks/425810.html</trackback:ping><description><![CDATA[维基百科的创始人说过一个理论，如果一个事物在google上查不到，那基本上就说明这世界上没这个事物。我今天偏偏需要了一个google都搜不到的exception.&nbsp;<br />我在写一个用spring boot的应用，需要了这个exception:<br /><div>NoSuchMethodError: findMergedAnnotationAttributes(Ljava/lang/reflect/AnnotatedElement;Ljava/lang/String;ZZ)Lorg/springframework/core/annotation/AnnotationAttributes;</div><div><span style="white-space:pre">	</span>at org.springframework.test.util.MetaAnnotationUtils$AnnotationDescriptor.&lt;init&gt;(MetaAnnotationUtils.java:290)</div><div><span style="white-space:pre">	</span>at org.springframework.test.util.MetaAnnotationUtils$UntypedAnnotationDescriptor.&lt;init&gt;(MetaAnnotationUtils.java:365)</div><div><span style="white-space:pre">	</span>at org.springframework.test.util.MetaAnnotationUtils$UntypedAnnotationDescriptor.&lt;init&gt;(MetaAnnotationUtils.java:360)</div><div><span style="white-space:pre">	</span>at org.springframework.test.util.MetaAnnotationUtils.findAnnotationDescriptorForTypes(MetaAnnotationUtils.java:191)</div><div><span style="white-space:pre">	</span>at org.springframework.test.util.MetaAnnotationUtils.findAnnotationDescriptorForTypes(MetaAnnotationUtils.java:208)</div><div><span style="white-space:pre">	</span>at org.springframework.test.util.MetaAnnotationUtils.findAnnotationDescriptorForTypes(MetaAnnotationUtils.java:166)</div><div><span style="white-space:pre">	</span>at org.springframework.test.context.support.AbstractTestContextBootstrapper.buildMergedContextConfiguration(AbstractTestContextBootstrapper.java:274)</div><div><span style="white-space:pre">	</span>at org.springframework.test.context.support.AbstractTestContextBootstrapper.buildTestContext(AbstractTestContextBootstrapper.java:110)</div><div><span style="white-space:pre">	</span>at org.springframework.test.context.TestContextManager.&lt;init&gt;(TestContextManager.java:120)</div><div><span style="white-space:pre">	</span>at org.springframework.test.context.TestContextManager.&lt;init&gt;(TestContextManager.java:105)</div><div><span style="white-space:pre">	</span>at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTestContextManager(SpringJUnit4ClassRunner.java:143)</div><div><span style="white-space:pre">	</span>at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.&lt;init&gt;(SpringJUnit4ClassRunner.java:134)</div><div><span style="white-space:pre">	</span>at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)</div><div><span style="white-space:pre">	</span>at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)</div><div><span style="white-space:pre">	</span>at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)</div><div><span style="white-space:pre">	</span>at java.lang.reflect.Constructor.newInstance(Unknown Source)</div><div><span style="white-space:pre">	</span>at org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:104)</div><div><span style="white-space:pre">	</span>at org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:86)</div><div><span style="white-space:pre">	</span>at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)</div><div><span style="white-space:pre">	</span>at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:26)</div><div><span style="white-space:pre">	</span>at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)</div><div><span style="white-space:pre">	</span>at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:33)</div><div><span style="white-space:pre">	</span>at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.&lt;init&gt;(JUnit4TestReference.java:33)</div><div><span style="white-space:pre">	</span>at org.eclipse.jdt.internal.junit4.runner.JUnit4TestClassReference.&lt;init&gt;(JUnit4TestClassReference.java:25)</div><div><span style="white-space:pre">	</span>at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:48)</div><div><span style="white-space:pre">	</span>at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:38)</div><div><span style="white-space:pre">	</span>at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:444)</div><div><span style="white-space:pre">	</span>at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675)</div><div><span style="white-space:pre">	</span>at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)</div><div><span style="white-space:pre">	</span>at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)<br /><br />The solution is: in the pom.xml, instead of using&nbsp;<br /><div>&lt;parent&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &lt;artifactId&gt;spring-boot-starter-parent&lt;/artifactId&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &lt;version&gt;1.3.0.BUILD-SNAPSHOT&lt;/version&gt;</div><div>&lt;/parent&gt;<br /><br />Use a specific version:</div><div>&nbsp; &nbsp; &lt;parent&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &lt;artifactId&gt;spring-boot-starter-parent&lt;/artifactId&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &lt;version&gt;1.2.4.RELEASE&lt;/version&gt;</div><div>&nbsp; &nbsp; &lt;/parent&gt;</div></div><div></div><img src ="http://www.blogjava.net/vcycyv/aggbug/425810.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/vcycyv/" target="_blank">人在江湖</a> 2015-06-21 09:08 <a href="http://www.blogjava.net/vcycyv/archive/2015/06/21/425810.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>发个公司招聘启事，念在平日里原创不少，请版主留情</title><link>http://www.blogjava.net/vcycyv/archive/2014/10/31/419330.html</link><dc:creator>人在江湖</dc:creator><author>人在江湖</author><pubDate>Fri, 31 Oct 2014 04:49:00 GMT</pubDate><guid>http://www.blogjava.net/vcycyv/archive/2014/10/31/419330.html</guid><wfw:comment>http://www.blogjava.net/vcycyv/comments/419330.html</wfw:comment><comments>http://www.blogjava.net/vcycyv/archive/2014/10/31/419330.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.blogjava.net/vcycyv/comments/commentRss/419330.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/vcycyv/services/trackbacks/419330.html</trackback:ping><description><![CDATA[美企，地点在北京，着急招个做java的兄弟（姐妹也行），要求java技术扎实，英语读写能力过关，至少有三五年工作经验，10来年工作经验就更好了。简历可以发到 chuyang.wan@sas.com 做的产品不错，氛围也挺好。声明，我不是找人赚推荐奖的，我推荐了也没奖金。只是想尽快找个靠谱的这个headcount fill了。<img src ="http://www.blogjava.net/vcycyv/aggbug/419330.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/vcycyv/" target="_blank">人在江湖</a> 2014-10-31 12:49 <a href="http://www.blogjava.net/vcycyv/archive/2014/10/31/419330.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>基于springside4新建project 错误Failed to execute goal org.apache.maven.plugins:maven-archetype-plugin的解决办法</title><link>http://www.blogjava.net/vcycyv/archive/2014/07/05/415476.html</link><dc:creator>人在江湖</dc:creator><author>人在江湖</author><pubDate>Sat, 05 Jul 2014 02:42:00 GMT</pubDate><guid>http://www.blogjava.net/vcycyv/archive/2014/07/05/415476.html</guid><wfw:comment>http://www.blogjava.net/vcycyv/comments/415476.html</wfw:comment><comments>http://www.blogjava.net/vcycyv/archive/2014/07/05/415476.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/vcycyv/comments/commentRss/415476.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/vcycyv/services/trackbacks/415476.html</trackback:ping><description><![CDATA[<div>基于springside4新建project:<br /><span style="color: #333333; font-family: Helvetica, arial, freesans, clean, sans-serif, 'Segoe UI Emoji', 'Segoe UI Symbol'; font-size: 15px; line-height: 25.5px; background-color: #ffffff;">使用Maven的Archetype插件，可以基于Quickstart项目，创建自己的项目。</span><br style="box-sizing: border-box; color: #333333; font-family: Helvetica, arial, freesans, clean, sans-serif, 'Segoe UI Emoji', 'Segoe UI Symbol'; font-size: 15px; line-height: 25.5px; background-color: #ffffff;" /><span style="color: #333333; font-family: Helvetica, arial, freesans, clean, sans-serif, 'Segoe UI Emoji', 'Segoe UI Symbol'; font-size: 15px; line-height: 25.5px; background-color: #ffffff;">运行support/maven-archetype\install.bat后，双击根目录中的generate-project.bat&nbsp;<br /></span>遇到错误：<br />[ERROR] Failed to execute goal org.apache.maven.plugins:maven-archetype-plugin:2</div><div>.2:generate (default-cli) on project standalone-pom: The desired archetype does</div><div>not exist (org.springside.examples:quickstart-archetype:4.1.1-SNAPSHOT) -&gt; [Help</div><div>&nbsp;1]<br /><br />这是为什么呢？<br />打开generate-project.bat<br /><div>-DarchetypeVersion=4.1.1-SNAPSHOT</div>改成<br /><div>-DarchetypeVersion=4.2.3-SNAPSHOT<br />就好了，正确的版本号在<span style="background-color: #ffffff; color: #333333; font-family: Helvetica, arial, freesans, clean, sans-serif, 'Segoe UI Emoji', 'Segoe UI Symbol'; font-size: 15px; line-height: 25.5px;">support/maven-archetype\install.bat运行过程中能看到</span></div></div><img src ="http://www.blogjava.net/vcycyv/aggbug/415476.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/vcycyv/" target="_blank">人在江湖</a> 2014-07-05 10:42 <a href="http://www.blogjava.net/vcycyv/archive/2014/07/05/415476.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>spring blazeds integration配置</title><link>http://www.blogjava.net/vcycyv/archive/2013/06/07/400352.html</link><dc:creator>人在江湖</dc:creator><author>人在江湖</author><pubDate>Fri, 07 Jun 2013 07:08:00 GMT</pubDate><guid>http://www.blogjava.net/vcycyv/archive/2013/06/07/400352.html</guid><wfw:comment>http://www.blogjava.net/vcycyv/comments/400352.html</wfw:comment><comments>http://www.blogjava.net/vcycyv/archive/2013/06/07/400352.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/vcycyv/comments/commentRss/400352.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/vcycyv/services/trackbacks/400352.html</trackback:ping><description><![CDATA[在学会了blazeds的简单配置之后，今天尝试了一下spring blazeds integration配置，被网上很多帖子坑了，比如这篇貌似不错的：http://www.adobe.com/devnet/flex/articles/spring_blazeds_integration.html<br />按照这篇文章的方式配置，会得到错误：<br />[RPC Fault faultString="[MessagingError message='Destination 'XXXX' either does not exist or the destination has no channels defined (and the application does not define any default channels.)']" faultCode="InvokeFailed" faultDetail="Couldn't establish a connection to 'userService'"]<br />在网上查原因，尝试了3个多小时，才终于搞定，靠。<br />第一步： 下载blazeds的sample, https://www.adobe.com/cfusion/entitlement/index.cfm?e=lc_blazeds 下载那个40多M的turnkey,里面包含tomcat和sample application.<br />第二步：webapp目录下有个blazeds目录，这是做blazeds项目的一个基础app, 新的app可以基于这个来做，lib目录下已经包含相应的jar包了，一些configuration文件也都已经包括了。可以在当前目录再复制粘贴出来一个副本，我命名为spring_blazeds。<br />第三步：改web.xml，内容如下：<br /><div>&lt;?xml version="1.0" encoding="UTF-8"?&gt;</div><div>&lt;!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"&gt;</div><div>&lt;web-app&gt;</div><div></div><div>&nbsp; &nbsp; &lt;display-name&gt;BlazeDS&lt;/display-name&gt;</div><div>&nbsp; &nbsp; &lt;description&gt;BlazeDS Application&lt;/description&gt;</div><div></div><div><span style="white-space:pre">	</span>&lt;servlet&gt;</div><div>&nbsp; &nbsp; &nbsp; &lt;servlet-name&gt;spring&lt;/servlet-name&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;servlet-class&gt;org.springframework.web.servlet.DispatcherServlet&lt;/servlet-class&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;init-param&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;param-name&gt;contextConfigLocation&lt;/param-name&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;param-value&gt;/WEB-INF/web-application-context.xml&lt;/param-value&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;/init-param&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;load-on-startup&gt;1&lt;/load-on-startup&gt;</div><div>&nbsp; &nbsp;&lt;/servlet&gt;</div><div>&nbsp;</div><div>&nbsp; &nbsp;&lt;servlet-mapping&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp;&lt;servlet-name&gt;spring&lt;/servlet-name&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp;&lt;url-pattern&gt;/messagebroker/*&lt;/url-pattern&gt;</div><div>&nbsp; &nbsp;&lt;/servlet-mapping&gt;</div><div></div><div>&lt;/web-app&gt;<br />第四步：web-inf目录下添加文件web-application-context.xml，内容如下：<br /><div>&lt;?xml version="1.0" encoding="UTF-8"?&gt;</div><div>&lt;beans xmlns="http://www.springframework.org/schema/beans"</div><div><span style="white-space:pre">	</span>xmlns:flex="http://www.springframework.org/schema/flex"</div><div><span style="white-space:pre">	</span>xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"</div><div><span style="white-space:pre">	</span>xsi:schemaLocation="</div><div><span style="white-space:pre">		</span>http://www.springframework.org/schema/beans</div><div><span style="white-space:pre">		</span>http://www.springframework.org/schema/beans/spring-beans-3.0.xsd</div><div><span style="white-space:pre">		</span>http://www.springframework.org/schema/flex&nbsp;</div><div><span style="white-space:pre">		</span>http://www.springframework.org/schema/flex/spring-flex-1.0.xsd"&gt;</div><div></div><div><span style="white-space: pre;">	</span>&lt;!-- Bootstraps and exposes the BlazeDS MessageBroker simplest form --&gt;</div><div><span style="white-space:pre">	</span>&lt;flex:message-broker/&gt;</div><div>&nbsp;</div><div>&nbsp; &nbsp;&lt;bean id="productService" class="flex.samples.product.ProductService" &gt;</div><div>&nbsp; &nbsp; &nbsp; &lt;flex:remoting-destination /&gt;</div><div>&nbsp; &nbsp;&lt;/bean&gt;</div><div>&lt;/beans&gt;<br />第五步：<br />把web-inf/flex目录下的services-config.xml的前几行改成：<br /><div>&lt;?xml version="1.0" encoding="UTF-8"?&gt;</div><div>&lt;services-config&gt;</div><div>&nbsp; &nbsp; &lt;services&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &lt;default-channels&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;channel ref="my-amf"/&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &lt;/default-channels&gt;<span style="white-space:pre">		</span></div><div>&nbsp; &nbsp; &lt;/services&gt;<br />这一步非常重要，我好几个小时没搞定问题，主要差的就是这一步！web-inf/flex目录下的其他文件没用，至少在这个例子里没用。<br />第六步：<br />写mxml文件：<br /><div>&lt;?xml version="1.0" encoding="utf-8"?&gt;</div><div>&lt;mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" backgroundColor="#FFFFFF"&gt;</div><div><span style="white-space:pre">	</span></div><div><span style="white-space:pre">	</span>&lt;mx:RemoteObject id="srv" destination="productService"/&gt;</div><div><span style="white-space:pre">	</span></div><div><span style="white-space:pre">	</span>&lt;mx:DataGrid dataProvider="{srv.getProducts.lastResult}" width="100%" height="100%"/&gt;&nbsp;</div><div><span style="white-space:pre">	</span></div><div><span style="white-space:pre">	</span>&lt;mx:Button label="Get Data" click="srv.getProducts()"/&gt;<span style="white-space:pre">	</span></div><div><span style="white-space:pre">	</span></div><div>&lt;/mx:Application&gt;<br />第七步：<br />把turnkey里blazeds-turnkey-4.0.0.14931\tomcat\webapps\samples\WEB-INF\src\flex\samples\product目录下的java文件编译一下，放web-inf的classes目录下。<br />第八步：<br />添加jar包，编译mxml，把bin-debug目录下的所有文件包括history目录都拷贝到webroot下，我的是spring_blazeds。记得编译时加选项<br /><div>-services "C:\code\flex\blazeds-turnkey-4.0.0.14931\tomcat\webapps\spring_blazeds\WEB-INF\flex\services-config.xml" -locale en_US<br />所以你每次改services-config.xml都要重新编译，替换webapp的文件。<br /><br />然后运行应该就可以了！</div></div></div></div></div><img src ="http://www.blogjava.net/vcycyv/aggbug/400352.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/vcycyv/" target="_blank">人在江湖</a> 2013-06-07 15:08 <a href="http://www.blogjava.net/vcycyv/archive/2013/06/07/400352.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>《高效能人士的七个习惯》摘录</title><link>http://www.blogjava.net/vcycyv/archive/2013/05/08/399023.html</link><dc:creator>人在江湖</dc:creator><author>人在江湖</author><pubDate>Wed, 08 May 2013 12:55:00 GMT</pubDate><guid>http://www.blogjava.net/vcycyv/archive/2013/05/08/399023.html</guid><wfw:comment>http://www.blogjava.net/vcycyv/comments/399023.html</wfw:comment><comments>http://www.blogjava.net/vcycyv/archive/2013/05/08/399023.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/vcycyv/comments/commentRss/399023.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/vcycyv/services/trackbacks/399023.html</trackback:ping><description><![CDATA[<span style="font-size: 12pt;">废话不多说，直接摘录：</span><br />
<div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; orphans: 2; text-align: -webkit-auto; widows: 2;"><br /><br />谁也无法说服他人改变，因为我们每个人都守着一扇只能从内开启的改变之门，不论动之以情或说之以理，我们都不能替别人开门。<span style="font-family: verdana, 'courier new'; font-size: 14px; line-height: 21px;">&nbsp;</span><span style="font-family: verdana, 'courier new'; font-size: 14px; line-height: 21px;">&nbsp;</span></div>
<div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; orphans: 2; text-align: -webkit-auto; widows: 2;"></div>
<div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; orphans: 2; text-align: -webkit-auto; widows: 2;"><br /><span style="color: red;">领导工作的核心，就是在共有的使命、愿景和价值观之后，创造出一个文化。</span></div>
<div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; orphans: 2; text-align: -webkit-auto; widows: 2;"></div>
<div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; orphans: 2; text-align: -webkit-auto; widows: 2;"><br />或许只有真正经历过拥有，才会真正懂得分享。</div>
<div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; orphans: 2; text-align: -webkit-auto; widows: 2;"></div>
<div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; orphans: 2; text-align: -webkit-auto; widows: 2;"><br />习惯定义为&#8220;知识&#8221;、&#8220;技巧&#8221;与&#8220;意愿&#8221;相互交织的结果。</div>
<div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; orphans: 2; text-align: -webkit-auto; widows: 2;"></div>
<div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; orphans: 2; widows: 2;"><br />人类的四种天赋关于选择的自由：自我意识，想象力，良知， 独立意志。</div>
<div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; orphans: 2; widows: 2;"></div>
<div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; orphans: 2; widows: 2;"><br /><span style="color: red;">除非你愿意，否则没人能伤害你。</span></div>
<div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; orphans: 2; widows: 2;"></div>
<div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; orphans: 2; widows: 2;"><br /><span style="color: red;">只有真正接受了&#8220;我昨日的选择决定了今日的我&#8221;的观念，才可能说&#8220;我有权另做选择&#8221;。</span></div>
<div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; orphans: 2; widows: 2;"></div>
<div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; orphans: 2; widows: 2;"><br />关注圈和影响圈：关注圈相关的语句经常带有假设性质:"如果"。影响圈相关的语句多半体现了品德修养：&#8220;我可以&#8221;</div>
<div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; orphans: 2; widows: 2;"></div>
<div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; orphans: 2; widows: 2;"><br />领导是第一次的创造，必须先于管理；管理是第二次的创造。</div>
<div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; orphans: 2; widows: 2;"></div>
<div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; orphans: 2; widows: 2;"><br />宣言主要说明自己想成为怎样的人（品德），成就什么样的事业（贡献和成就）及为此奠基的价值观和原则。</div>
<div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; orphans: 2; widows: 2;"></div>
<div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; orphans: 2; widows: 2;"><br />人人都能够运用想象力来挖掘内心深处真正的价值观。（比如想像参加自己葬礼）<br />
<br />
<br />
<img src="http://f-1.tuzhan.com/7a38061e146f/p-2/l/2013/05/08/20/3f75aac0b3a842c6af199b96e58b18b6.gif" alt="" /></div>
<div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; orphans: 2; widows: 2;">高效能人士总是避免陷入第三和第四类事务，因为不论是否紧迫，这些事情都是不重要的，他们还通过花费更多时间在第二类事务来减少第一类事务的数量。</div>
<div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; orphans: 2; widows: 2;"></div>
<div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; orphans: 2; widows: 2;"><br /><span style="color: red;">毕竟日程表的目的在于协助工作推行， 并不是要让我们为进度落后而产生内疚感。</span></div>
<div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; orphans: 2; widows: 2;"></div>
<div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; orphans: 2; widows: 2;"><br />对人不可讲效率，对事才可如此。对人应讲效用&#8212;&#8212;即某一行为是否有效。</div>
<div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; orphans: 2; widows: 2;"></div>
<div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; orphans: 2; widows: 2;"><br /><span style="color: red;">第四代个人管理理论的特点，在于承认人比事更重要。而芸芸众生中，首要顾及的便是自己。</span></div>
<div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; orphans: 2; widows: 2;"></div>
<div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; orphans: 2; widows: 2;"><br />两种授权：指令型授权和责任型授权。</div>
<div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; orphans: 2; widows: 2;"></div>
<div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; orphans: 2; widows: 2;"><br />信任是促使人进步的最大动力，因为信任能够让人们表现出自己最好的一面。但这需要时间和耐心，而且还有可能需要对人员进行必要的培训，让他们拥有符合这种信任水平的能力。</div>
<div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; orphans: 2; widows: 2;"></div>
<div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; orphans: 2; widows: 2;"><br />授权的大原则不变，权限却因人而异。对不够成熟的人，目标不必订得太高，指示要详尽，并且充分提供资源；监督考核则较频繁，奖惩也更直接。对成熟的人，可分配挑战性高的任务，精简指示，减少监督考核的次数，考评标准则较为抽象。</div>
<div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; orphans: 2; widows: 2;"></div>
<div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; orphans: 2; widows: 2;"><br /><span style="color: red;">我们都知道银行账户就是把钱存进去，作为储蓄，以备不时之需。情感账户里储蓄的是人际关系中不可或缺的信任，是人与人相处时的那份安全感。能够增加情感账户存款的，是礼貌，诚实，仁慈与信用。这使别人对我更加信赖，必要时能发挥相当的作用，甚至犯了错也可用这笔储蓄来弥补。</span></div>
<div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; orphans: 2; widows: 2;"></div>
<div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; orphans: 2; widows: 2;"><br />比方6岁的孩子趁你正忙的时候，为一件小事来烦你。在你看来此事或许微不足道，在他小小的心灵中，却是天下第一要事。</div>
<div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; orphans: 2; widows: 2;"></div>
<div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; orphans: 2; widows: 2;"><br />区别对待他们，才是平等的爱。</div>
<div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; orphans: 2; widows: 2;"></div>
<div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; orphans: 2; widows: 2;"><br />避免背后攻击他人。如果能对不在场的人保持尊重，在场的人也会尊重你。当你维护不在场的人的时候，在场的人也会对你报以信任。</div>
<div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; orphans: 2; widows: 2;"></div>
<div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; orphans: 2; widows: 2;"><br /><span style="color: red;">双赢者把生活看作一个合作的舞台，而不是一个角斗场。一般人看事情多用二分法：非强即弱，非胜即败。其实世界之大，人人都有足够的立足空间，他人之得不必就视为自己之失。</span></div>
<div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; orphans: 2; widows: 2;"></div>
<div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; orphans: 2; widows: 2;"><br />在家族式或者建立在友谊基础上的生意启动之前，最好先就&#8220;不能双赢就好聚好散&#8221;这一点达成协议，这样事业的繁荣才不会导致关系的破裂。</div>
<div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; orphans: 2; widows: 2;"></div>
<div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; orphans: 2; widows: 2;"><br />在敢作敢为与善解人意之间找到平衡点，才是真正的成熟，这是双赢的基础。如果我勇气十足，却不懂体谅他人，我的交往模式就是赢/输。如果我体谅有余，而勇气不足，我的交往模式就是输/赢。</div>
<div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; orphans: 2; widows: 2;"></div>
<div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; orphans: 2; widows: 2;"><br />打保龄球的时候计算全家分数</div>
<div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; orphans: 2; widows: 2;"></div>
<div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; orphans: 2; widows: 2;"><br />知彼解己，移情聆听</div>
<div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; orphans: 2; widows: 2;"></div>
<div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; orphans: 2; widows: 2;"><br /><span style="color: red;">假如两人意见相同，其中一人必属多余。与所见略同的人沟通，毫无益处，要有分歧才有收获。</span></div>
<div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; orphans: 2; widows: 2;"></div>
<div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; orphans: 2; widows: 2;"><br /><span style="color: red;">我们不应单纯地模仿大师的言行，而应该追求大师所追求的。</span></div>
<div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; orphans: 2; widows: 2;"></div>
<div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; orphans: 2; widows: 2;"><br />相同不是统一，一致也不等于团结，统一和团结意味着互补，而不是相同。相同毫无创造性可言，而且沉闷乏味。统合综效的精髓就是尊重差异。</div>
<div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; orphans: 2; widows: 2;"></div>
<div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; orphans: 2; widows: 2;"><br /><span style="color: red;">歌德说：&#8220;以一个人的现有表现期许之，他不会有所长进。以他的潜能和应有成就期许之，他定能不负所望。&#8221;</span></div>
<div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; orphans: 2; widows: 2;"></div>
<div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; orphans: 2; widows: 2;"><br />企业的体质就是财务状况；心智涉及人力资源的开发、培养与运用；社会情感指公关与员工待遇；精神则反映出目标宗旨与原则。企业健全与否系于这四方面的平衡发展。</div>
<div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; orphans: 2; widows: 2;"></div>
<div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; orphans: 2; widows: 2;"><br /><span style="color: red;">我们认为爱情保鲜的秘诀就是交谈，特别是讨论彼此的感受。</span></div><img src ="http://www.blogjava.net/vcycyv/aggbug/399023.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/vcycyv/" target="_blank">人在江湖</a> 2013-05-08 20:55 <a href="http://www.blogjava.net/vcycyv/archive/2013/05/08/399023.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>为QA准备的用以性能测试的java秒表</title><link>http://www.blogjava.net/vcycyv/archive/2013/04/04/397392.html</link><dc:creator>人在江湖</dc:creator><author>人在江湖</author><pubDate>Thu, 04 Apr 2013 14:28:00 GMT</pubDate><guid>http://www.blogjava.net/vcycyv/archive/2013/04/04/397392.html</guid><wfw:comment>http://www.blogjava.net/vcycyv/comments/397392.html</wfw:comment><comments>http://www.blogjava.net/vcycyv/archive/2013/04/04/397392.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/vcycyv/comments/commentRss/397392.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/vcycyv/services/trackbacks/397392.html</trackback:ping><description><![CDATA[<div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; orphans: 2; text-align: -webkit-auto; widows: 2;">以前QA做性能测试用手机的秒表，很不方便。前两年为QA做了一个java秒表，记录鼠标两次点击之间的时间差。但是那是基于JInvoke的，JInvoke是收费软件，有试用的时限，用来封装JNI编程的复杂性。最近QA要求我再搞一个完全免费的类似软件。这次用的是jnativehook.</div><div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; orphans: 2; text-align: -webkit-auto; widows: 2;"></div><div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; orphans: 2; text-align: -webkit-auto; widows: 2;">jnativehook可以用来监控键盘和鼠标的事件。底层通过调用不同平台的native code屏蔽了平台相关性。它强大的地方在于，基于jnativehook的软件可以后台运行，没有类似&#8220;监控<strong>某窗口</strong>内键盘/鼠标事件&#8221;的限制。</div><div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; orphans: 2; text-align: -webkit-auto; widows: 2;"></div><div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; orphans: 2; text-align: -webkit-auto; widows: 2;">扩展jnativehook的这个小工具可以记录两次鼠标点击之间的时间差，更确切地说，是记录<strong>第一次鼠标抬起和第二次鼠标按下</strong>的时间差。举一个QA使用的例子，比如在UI上点击一个button，等着执行成功弹出的对话框。QA在点击button时，鼠标一抬起，这个小工具就开始计时，当QA看见对话框时，马上在屏幕任意位置点鼠标，软件就记录了这两次点击之间的时间差。当然，这样做还是不够精确，存在人反应时间的误差。</div><div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; orphans: 2; text-align: -webkit-auto; widows: 2;"></div><div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; orphans: 2; text-align: -webkit-auto; widows: 2;">jnativehook项目的主页在 https://code.google.com/p/jnativehook/</div><div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; orphans: 2; text-align: -webkit-auto; widows: 2;"></div><div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; orphans: 2; text-align: -webkit-auto; widows: 2;">我扩展程序的源代码如下：</div><div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; orphans: 2; text-align: -webkit-auto; widows: 2;"><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">import</span>&nbsp;org.jnativehook.GlobalScreen;<br /><span style="color: #0000FF; ">import</span>&nbsp;org.jnativehook.NativeHookException;<br /><span style="color: #0000FF; ">import</span>&nbsp;org.jnativehook.mouse.NativeMouseEvent;<br /><span style="color: #0000FF; ">import</span>&nbsp;org.jnativehook.mouse.NativeMouseInputListener;<br /><br /><br /><span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">class</span>&nbsp;MouseHook&nbsp;&nbsp;<span style="color: #0000FF; ">implements</span>&nbsp;NativeMouseInputListener&nbsp;&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;<span style="color: #0000FF; ">double</span>&nbsp;startPoint&nbsp;=&nbsp;0.0;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">/**</span><span style="color: #008000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080; ">@param</span><span style="color: #008000; ">&nbsp;args<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">*/</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;main(String[]&nbsp;args)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">try</span>&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GlobalScreen.registerNativeHook();<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">catch</span>&nbsp;(NativeHookException&nbsp;ex)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.err.println("There&nbsp;was&nbsp;a&nbsp;problem&nbsp;registering&nbsp;the&nbsp;native&nbsp;hook.");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.err.println(ex.getMessage());<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.exit(1);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">Construct&nbsp;the&nbsp;example&nbsp;object.</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MouseHook&nbsp;example&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;MouseHook();<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">Add&nbsp;the&nbsp;appropriate&nbsp;listeners&nbsp;for&nbsp;the&nbsp;example&nbsp;object.</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;GlobalScreen.getInstance().addNativeMouseListener(example);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;@Override<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;nativeMouseClicked(NativeMouseEvent&nbsp;arg0)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;TODO&nbsp;Auto-generated&nbsp;method&nbsp;stub</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;@Override<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;nativeMousePressed(NativeMouseEvent&nbsp;arg0)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println((System.currentTimeMillis()&nbsp;-&nbsp;startPoint)/1000);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;@Override<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;nativeMouseReleased(NativeMouseEvent&nbsp;arg0)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;startPoint&nbsp;=&nbsp;System.currentTimeMillis();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;@Override<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;nativeMouseDragged(NativeMouseEvent&nbsp;arg0)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;TODO&nbsp;Auto-generated&nbsp;method&nbsp;stub</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;@Override<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;nativeMouseMoved(NativeMouseEvent&nbsp;arg0)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;TODO&nbsp;Auto-generated&nbsp;method&nbsp;stub</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />}</div></div><div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; orphans: 2; text-align: -webkit-auto; widows: 2;">可以在eclipse里右键点java 项目，在export...里选择Java目录下的Runnable Jar File</div><div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; orphans: 2; text-align: -webkit-auto; widows: 2;">假如你保存的jar文件叫mousehook.jar. 可以直接使用java -jar mousehook.jar启动就可以使用了。</div><img src ="http://www.blogjava.net/vcycyv/aggbug/397392.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/vcycyv/" target="_blank">人在江湖</a> 2013-04-04 22:28 <a href="http://www.blogjava.net/vcycyv/archive/2013/04/04/397392.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于调优之数据库篇（一）</title><link>http://www.blogjava.net/vcycyv/archive/2013/03/31/397206.html</link><dc:creator>人在江湖</dc:creator><author>人在江湖</author><pubDate>Sun, 31 Mar 2013 13:49:00 GMT</pubDate><guid>http://www.blogjava.net/vcycyv/archive/2013/03/31/397206.html</guid><wfw:comment>http://www.blogjava.net/vcycyv/comments/397206.html</wfw:comment><comments>http://www.blogjava.net/vcycyv/archive/2013/03/31/397206.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/vcycyv/comments/commentRss/397206.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/vcycyv/services/trackbacks/397206.html</trackback:ping><description><![CDATA[<div style="font-family: 微软雅黑; line-height: normal; orphans: 2; text-align: -webkit-auto; widows: 2;">这篇文字主要讨论sql的一般编写原则。下一篇讨论根据执行计划进行调优的话题。</div>
<div style="font-family: 微软雅黑; line-height: normal; orphans: 2; text-align: -webkit-auto; widows: 2;">网上这类文章很多，但往往只是给出结论，比如，这样写sql会比那样写sql效率更高。阅读者如果打算打开数据库自己做一遍实验，看看效率差异到底有多少，需要自己造数据，还是比较麻烦。这篇文字会把DDL和DML以及sql的执行时间都写出来，一方面给一个更直观的印象，另一方面方便阅读者自己实验。</div>
<div style="font-family: 微软雅黑; line-height: normal; orphans: 2; text-align: -webkit-auto; widows: 2;"></div>
<div style="font-family: 微软雅黑; line-height: normal; orphans: 2; text-align: -webkit-auto; widows: 2;">以Oracle为实验用数据库，使用著名的emp表。安装oracle数据库之后，scott用户的密码是tiger. 在他的schema下有几张sample表，很多sql教程都以这几张表为基础. 据说，熟悉oracle数据库的人提到smith这个人名，就能联想起sample表中他的工作是clerk. emp表就是sample表之一。这张表原始数据只有14行，为了体现不同sql性能上的差异，我们需要多填充一些数据进去。作为填充数据的预备知识，我们可以看一下如何生成一系列从小到大的id:<br />
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000FF; ">SELECT</span>&nbsp;ROWNUM<br />
<span style="color: #0000FF; ">FROM</span>&nbsp;DUAL<br />
CONNECT&nbsp;<span style="color: #0000FF; ">BY</span>&nbsp;<span style="color: #0000FF; ">LEVEL</span>&nbsp;<span style="color: #808080; ">&lt;</span>&nbsp;<span style="color: #800000; font-weight: bold; ">10000</span>;</div>
<span style="font-family: monospace, Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace; font-size: 13px; line-height: 14px; white-space: pre;">填充随机数据可以借助于dbms_random包，不想覆盖已有的表，所以新创建一个表结构基本一样的：</span>&nbsp;<br />
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000FF; ">create</span>&nbsp;<span style="color: #0000FF; ">table</span>&nbsp;emp_new<br />
<span style="color: #0000FF; ">as</span><br />
<span style="color: #0000FF; ">select</span>&nbsp;<span style="color: #0000FF; ">level</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;empno,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SYS.dbms_random.String(<span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">u</span><span style="color: #FF0000; ">'</span>,&nbsp;SYS.dbms_random.value(<span style="color: #800000; font-weight: bold; ">3</span>,<span style="color: #800000; font-weight: bold; ">10</span>))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ename,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SYS.dbms_random.String(<span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">u</span><span style="color: #FF0000; ">'</span>,&nbsp;SYS.dbms_random.value(<span style="color: #800000; font-weight: bold; ">3</span>,<span style="color: #800000; font-weight: bold; ">9</span>))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;job,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #FF00FF; ">round</span>(SYS.dbms_random.value(<span style="color: #800000; font-weight: bold; ">1000</span>,<span style="color: #800000; font-weight: bold; ">9999</span>))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mgr,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TO_DATE&nbsp;(&nbsp;&nbsp;&nbsp;<span style="color: #FF00FF; ">ROUND</span>&nbsp;(DBMS_RANDOM.VALUE&nbsp;(<span style="color: #800000; font-weight: bold; ">1</span>,&nbsp;<span style="color: #800000; font-weight: bold; ">28</span>))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #808080; ">||</span>&nbsp;<span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">-</span><span style="color: #FF0000; ">'</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #808080; ">||</span>&nbsp;<span style="color: #FF00FF; ">ROUND</span>&nbsp;(DBMS_RANDOM.VALUE&nbsp;(<span style="color: #800000; font-weight: bold; ">1</span>,&nbsp;<span style="color: #800000; font-weight: bold; ">12</span>))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #808080; ">||</span>&nbsp;<span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">-</span><span style="color: #FF0000; ">'</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #808080; ">||</span>&nbsp;<span style="color: #FF00FF; ">ROUND</span>&nbsp;(DBMS_RANDOM.VALUE&nbsp;(<span style="color: #800000; font-weight: bold; ">1980</span>,&nbsp;<span style="color: #800000; font-weight: bold; ">2012</span>)),<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">DD-MM-YYYY</span><span style="color: #FF0000; ">'</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hiredate,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #FF00FF; ">round</span>(SYS.dbms_random.value(<span style="color: #800000; font-weight: bold; ">300</span>,<span style="color: #800000; font-weight: bold; ">9999</span>))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sal,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #FF00FF; ">round</span>(SYS.dbms_random.value(<span style="color: #800000; font-weight: bold; ">1</span>,<span style="color: #800000; font-weight: bold; ">6</span>))&nbsp;<span style="color: #808080; ">*</span>&nbsp;<span style="color: #800000; font-weight: bold; ">100</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;comm,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #FF00FF; ">round</span>(SYS.dbms_random.value(<span style="color: #800000; font-weight: bold; ">1</span>,<span style="color: #800000; font-weight: bold; ">4</span>))&nbsp;<span style="color: #808080; ">*</span>&nbsp;<span style="color: #800000; font-weight: bold; ">10</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;deptno<br />
&nbsp;<span style="color: #0000FF; ">FROM</span>&nbsp;DUAL<br />
CONNECT&nbsp;<span style="color: #0000FF; ">BY</span>&nbsp;<span style="color: #0000FF; ">LEVEL</span>&nbsp;<span style="color: #808080; ">&lt;</span>&nbsp;<span style="color: #800000; font-weight: bold; ">1000000</span>;</div>
<div number3="" index2=""  alt2"="" style="color: #222222; font-family: monospace, Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace; font-size: 13px; line-height: 1.1em !important; outline: 0px !important; border: 0px !important; vertical-align: baseline !important; margin: 0px !important; padding: 2px 1em 2px 0em !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; width: auto !important; box-sizing: content-box !important; direction: ltr !important; white-space: pre !important;"><br />
</div>
<div number3="" index2=""  alt2"="" style="color: #222222; font-family: monospace, Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace; font-size: 13px; line-height: 1.1em !important; outline: 0px !important; border: 0px !important; vertical-align: baseline !important; margin: 0px !important; padding: 2px 1em 2px 0em !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; width: auto !important; box-sizing: content-box !important; direction: ltr !important; white-space: pre !important;"><span style="font-size: 14px; ">这里有一个局限，原本的emp表mgr列reference empno列。上面新创建的emp_new中失去了这个constraint. 这点可以从Oracle SQL Developer中看到。</span></div>
<div number3="" index2=""  alt2"="" style="color: #222222; font-family: monospace, Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace; font-size: 13px; line-height: 1.1em !important; outline: 0px !important; border: 0px !important; vertical-align: baseline !important; margin: 0px !important; padding: 2px 1em 2px 0em !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; width: auto !important; box-sizing: content-box !important; direction: ltr !important; white-space: pre !important;"><span style="font-size: 14px;">emp表：<br />
<a href="http://www.tuzhan.com/vcycyv/photo/a889617f745d7ba5.html" target="_blank"><img src="http://f-1.tuzhan.com/adb507d00a2a/p-2/l/2013/03/31/09/7c29f2ddaa7d47f29535dbe8b892c36a.png" alt="with_constrant.png" border="0" /><br />
</a></span>
<span style="font-size: 14px; line-height: 14px;">emp_new表：</span>
<span style="font-size: 14px;"><br />
<a href="http://www.tuzhan.com/vcycyv/photo/ab92069654042edb.html" target="_blank"><img src="http://f-1.tuzhan.com/33bdd567b454/p-2/l/2013/03/31/09/485143eb02104036ba1f146fb0d99375.png" alt="no_constrant.png" border="0" /></a>
</span>
<div style="color: #000000; font-family: 微软雅黑; font-size: 14px; line-height: normal; text-align: -webkit-auto; white-space: normal;"><table border="0" cellpadding="0" cellspacing="0" style="width: 402px; color: #222222; font-family: monospace, Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 13px !important; outline: 0px !important; border: 0px !important; vertical-align: baseline !important; margin: 0px !important; padding: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; line-height: 1.1em !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; box-sizing: content-box !important; direction: ltr !important;"><tbody style="outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; border-image: initial !important; vertical-align: baseline !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; line-height: 1.1em !important; overflow-x: visible !important; overflow-y: visible !important; position: static !important; right: auto !important; top: auto !important; width: auto !important; box-sizing: content-box !important; direction: ltr !important; "><tr style="outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; border-image: initial !important; vertical-align: baseline !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; line-height: 1.1em !important; overflow-x: visible !important; overflow-y: visible !important; position: static !important; right: auto !important; top: auto !important; width: auto !important; box-sizing: content-box !important; direction: ltr !important; "><td class="code" style="word-break: break-all; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; border-image: initial !important; vertical-align: baseline !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow-x: visible !important; overflow-y: visible !important; position: static !important; right: auto !important; top: auto !important; width: 402px; box-sizing: content-box !important; direction: ltr !important; "><div class="container" style="outline: 0px !important; border: 0px !important; vertical-align: baseline !important; margin: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important; position: relative !important; right: auto !important; top: auto !important; width: auto !important; box-sizing: content-box !important; direction: ltr !important;"><div class="line number3 index2 alt2" style="outline: 0px !important; border: 0px !important; vertical-align: baseline !important; margin: 0px !important; padding: 2px 1em 2px 0em !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; width: auto !important; box-sizing: content-box !important; direction: ltr !important;"><span style="font-size: 14px; white-space: pre; ">下面就开始测试sql了：</span></div><div class="line number3 index2 alt2" style="outline: 0px !important; border: 0px !important; vertical-align: baseline !important; margin: 0px !important; padding: 2px 1em 2px 0em !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; width: auto !important; box-sizing: content-box !important; direction: ltr !important;"><span style="font-size: 14px; white-space: pre; ">1. 先比较一下加primary key前后的结果：</span></div><div class="line number3 index2 alt2" style="outline: 0px !important; border: 0px !important; vertical-align: baseline !important; margin: 0px !important; padding: 2px 1em 2px 0em !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; width: auto !important; box-sizing: content-box !important; direction: ltr !important;"><span style="font-size: 14px; white-space: pre; ">select * from emp_new where empno=1;</span></div><div class="line number3 index2 alt2" style="outline: 0px !important; border: 0px !important; vertical-align: baseline !important; margin: 0px !important; padding: 2px 1em 2px 0em !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; width: auto !important; box-sizing: content-box !important; direction: ltr !important;"><span style="font-size: 14px; white-space: pre; ">加primary key constraint之前运行0.023秒。 加了primary key constraint之后0.001秒。加</span><span style="font-size: 14px; white-space: pre; line-height: 1.1em; ">primary key constraint在100万条数据上大约花费4秒钟。</span></div><div class="line number3 index2 alt2" style="outline: 0px !important; border: 0px !important; vertical-align: baseline !important; margin: 0px !important; padding: 2px 1em 2px 0em !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; width: auto !important; box-sizing: content-box !important; direction: ltr !important;"></div><div class="line number3 index2 alt2" style="outline: 0px !important; border: 0px !important; vertical-align: baseline !important; margin: 0px !important; padding: 2px 1em 2px 0em !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; width: auto !important; box-sizing: content-box !important; direction: ltr !important;"><span style="font-size: 14px; line-height: 15px; white-space: pre; ">2. where子句 vs. having子句</span></div><div class="line number3 index2 alt2" style="outline: 0px !important; border: 0px !important; vertical-align: baseline !important; margin: 0px !important; padding: 2px 1em 2px 0em !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; width: auto !important; box-sizing: content-box !important; direction: ltr !important;"><span style="font-size: 14px; line-height: 15px; white-space: pre; ">select deptno, avg(sal)  from emp_new group by deptno having deptno != 10 and deptno != 20;</span></div><div class="line number3 index2 alt2" style="outline: 0px !important; border: 0px !important; vertical-align: baseline !important; margin: 0px !important; padding: 2px 1em 2px 0em !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; width: auto !important; box-sizing: content-box !important; direction: ltr !important;"><span style="font-size: 14px; line-height: 15px; white-space: pre; ">0.24秒</span></div><div class="line number3 index2 alt2" style="outline: 0px !important; border: 0px !important; vertical-align: baseline !important; margin: 0px !important; padding: 2px 1em 2px 0em !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; width: auto !important; box-sizing: content-box !important; direction: ltr !important;"><span style="font-size: 14px; line-height: 15px; white-space: pre; ">select deptno, avg(sal)  from emp_new where deptno != 10 and deptno != 20 group by deptno ;</span></div><div class="line number3 index2 alt2" style="outline: 0px !important; border: 0px !important; vertical-align: baseline !important; margin: 0px !important; padding: 2px 1em 2px 0em !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; width: auto !important; box-sizing: content-box !important; direction: ltr !important;"><span style="font-size: 14px; line-height: 15px; white-space: pre; ">0.16秒</span></div><div class="line number3 index2 alt2" style="outline: 0px !important; border: 0px !important; vertical-align: baseline !important; margin: 0px !important; padding: 2px 1em 2px 0em !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; width: auto !important; box-sizing: content-box !important; direction: ltr !important;"><span style="font-size: 14px; line-height: 15px; white-space: pre; ">所以having中的条件一般用于对一些集合函数的比较，如count()等，除此之外，一般条件应该写在where子句中。</span></div><div class="line number3 index2 alt2" style="outline: 0px !important; border: 0px !important; vertical-align: baseline !important; margin: 0px !important; padding: 2px 1em 2px 0em !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; width: auto !important; box-sizing: content-box !important; direction: ltr !important;"><span style="font-size: 14px; line-height: 15px; white-space: pre; "><br /></span></div><div class="line number3 index2 alt2" style="outline: 0px !important; border: 0px !important; vertical-align: baseline !important; margin: 0px !important; padding: 2px 1em 2px 0em !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; width: auto !important; box-sizing: content-box !important; direction: ltr !important;"><span style="font-size: 14px; line-height: 15px; white-space: pre; ">3. 减少对表的查询</span></div><div class="line number3 index2 alt2" style="outline: 0px !important; border: 0px !important; vertical-align: baseline !important; margin: 0px !important; padding: 2px 1em 2px 0em !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; width: auto !important; box-sizing: content-box !important; direction: ltr !important;"><span style="font-size: 14px; line-height: 15px; white-space: pre; ">update emp_new set sal=(select max(sal) from emp_new), comm=(select max(comm) from emp_new) where empno=1237;</span></div><div class="line number3 index2 alt2" style="outline: 0px !important; border: 0px !important; vertical-align: baseline !important; margin: 0px !important; padding: 2px 1em 2px 0em !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; width: auto !important; box-sizing: content-box !important; direction: ltr !important;"><span style="font-size: 14px; line-height: 15px; white-space: pre; ">0.11秒左右</span></div><div class="line number3 index2 alt2" style="outline: 0px !important; border: 0px !important; vertical-align: baseline !important; margin: 0px !important; padding: 2px 1em 2px 0em !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; width: auto !important; box-sizing: content-box !important; direction: ltr !important;"><span style="font-size: 14px; line-height: 15px; white-space: pre; ">update emp_new set (sal, comm) =(select max(sal), max(comm) from emp_new) where empno=1224;</span></div><div class="line number3 index2 alt2" style="outline: 0px !important; border: 0px !important; vertical-align: baseline !important; margin: 0px !important; padding: 2px 1em 2px 0em !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; width: auto !important; box-sizing: content-box !important; direction: ltr !important;"><span style="font-size: 14px; line-height: 15px; white-space: pre; ">0.07秒到0.08秒之间</span></div><div class="line number3 index2 alt2" style="outline: 0px !important; border: 0px !important; vertical-align: baseline !important; margin: 0px !important; padding: 2px 1em 2px 0em !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; width: auto !important; box-sizing: content-box !important; direction: ltr !important;"><span style="font-size: 14px; line-height: 15px; white-space: pre; "><br /></span></div><div class="line number3 index2 alt2" style="outline: 0px !important; border: 0px !important; vertical-align: baseline !important; margin: 0px !important; padding: 2px 1em 2px 0em !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; width: auto !important; box-sizing: content-box !important; direction: ltr !important;"><span style="font-size: 14px; line-height: 15px; white-space: pre; ">注意：以上三个测试都只fetch前50条数据。</span></div><div class="line number3 index2 alt2" style="outline: 0px !important; border: 0px !important; vertical-align: baseline !important; margin: 0px !important; padding: 2px 1em 2px 0em !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; width: auto !important; box-sizing: content-box !important; direction: ltr !important;"><span style="font-size: 14px; line-height: 15px; white-space: pre; "><br /></span></div><div class="line number3 index2 alt2" style="outline: 0px !important; border: 0px !important; vertical-align: baseline !important; margin: 0px !important; padding: 2px 1em 2px 0em !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; width: auto !important; box-sizing: content-box !important; direction: ltr !important;"><span style="font-size: 14px; line-height: 15px; white-space: pre; ">4. 传说中用exists替代in通常可提高查询效率， not exists 也比not in 快。<br />先生成dept_new表：<br /></span><div style="background-color: #eeeeee; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">create</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">table</span><span style="color: #000000; ">&nbsp;dept_new<br /></span><span style="color: #0000FF; ">as</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">select</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">level</span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;deptno,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SYS.dbms_random.String(</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">u</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">,&nbsp;SYS.dbms_random.value(</span><span style="color: #800000; font-weight: bold; ">3</span><span style="color: #000000; ">,</span><span style="color: #800000; font-weight: bold; ">10</span><span style="color: #000000; ">))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dname,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SYS.dbms_random.String(</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">u</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">,&nbsp;SYS.dbms_random.value(</span><span style="color: #800000; font-weight: bold; ">3</span><span style="color: #000000; ">,</span><span style="color: #800000; font-weight: bold; ">9</span><span style="color: #000000; ">))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;loc<br /></span><span style="color: #0000FF; ">FROM</span><span style="color: #000000; ">&nbsp;DUAL<br />CONNECT&nbsp;</span><span style="color: #0000FF; ">BY</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">LEVEL</span><span style="color: #000000; ">&nbsp;</span><span style="color: #808080; ">&lt;</span><span style="color: #000000; ">&nbsp;</span><span style="color: #800000; font-weight: bold; ">10000</span><span style="color: #000000; ">;</span></div></div><div class="line number3 index2 alt2" style="outline: 0px !important; border: 0px !important; vertical-align: baseline !important; margin: 0px !important; padding: 2px 1em 2px 0em !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; width: auto !important; box-sizing: content-box !important; direction: ltr !important;"><span style="font-size: 14px; line-height: 15px; white-space: pre; ">实际测试中，无论是执行计划还是实际测试的速度都是基本一致的。</span></div><div class="line number3 index2 alt2" style="outline: 0px !important; border: 0px !important; vertical-align: baseline !important; margin: 0px !important; padding: 2px 1em 2px 0em !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; width: auto !important; box-sizing: content-box !important; direction: ltr !important;"><span style="font-size: 14px; line-height: 15px; white-space: pre; ">第一组</span></div><div class="line number3 index2 alt2" style="outline: 0px !important; border: 0px !important; vertical-align: baseline !important; margin: 0px !important; padding: 2px 1em 2px 0em !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; width: auto !important; box-sizing: content-box !important; direction: ltr !important;"><span style="font-size: 14px; line-height: 15px; white-space: pre; ">select * from emp_new e where e.empno &gt; 986000 and e.deptno in (select d.deptno from dept_new d where d.loc='AYDN')
select * from emp_new e where empno &gt; 986000 and exists (select * from dept_new d where d.deptno = e.deptno and d.loc='AYDN')
第二组
select e.empno from emp_new e where e.empno &gt; 996000 and not exists (select 1 from dept_new d where d.deptno = e.deptno and loc like 'A%')
select e.empno from emp_new e where e.empno &gt; 996000 and e.deptno not in (select d.deptno from dept_new d where loc like 'A%')</span></div><div class="line number3 index2 alt2" style="outline: 0px !important; border: 0px !important; vertical-align: baseline !important; margin: 0px !important; padding: 2px 1em 2px 0em !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; width: auto !important; box-sizing: content-box !important; direction: ltr !important;"><span style="font-size: 14px; line-height: 15px; white-space: pre; "><br /></span></div></div></td></tr></tbody></table></div><div style="color: #000000; font-family: 微软雅黑; font-size: 14px; line-height: normal; text-align: -webkit-auto; white-space: normal;"></div><div style="color: #000000; font-family: 微软雅黑; font-size: 14px; line-height: normal; text-align: -webkit-auto; white-space: normal;">这篇文字主要参考两篇文章：</div><div style="color: #000000; font-family: 微软雅黑; font-size: 14px; line-height: normal; text-align: -webkit-auto; white-space: normal;">Generating Random Data in<a href="file:///C:/Users/Chuyang/AppData/Local/youdao/ynote/editor/web/Oracle%EF%BC%9Ahttp://viralpatel.net/blogs/generating-random-data-in-oracle/" style="cursor: pointer; ">&nbsp;Oracle：http://viralpatel.net/blogs/generating-random-data-in-oracle/</a></div><div style="color: #000000; font-family: 微软雅黑; font-size: 14px; line-height: normal; text-align: -webkit-auto; white-space: normal;">Oracle sql &nbsp;性能优化调整：<a href="file:///C:/Users/Chuyang/AppData/Local/youdao/ynote/editor/web/&amp;nbsp;http://wenku.baidu.com/view/571cddd4195f312b3169a507" style="cursor: pointer; ">&nbsp;http://wenku.baidu.com/view/571cddd4195f312b3169a507</a>&nbsp;</div>
<span style="font-size: 14px;"><br />
<br />
<br />
<br />
</span></div>
</div><img src ="http://www.blogjava.net/vcycyv/aggbug/397206.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/vcycyv/" target="_blank">人在江湖</a> 2013-03-31 21:49 <a href="http://www.blogjava.net/vcycyv/archive/2013/03/31/397206.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>yuying姐姐&amp;SAS五年</title><link>http://www.blogjava.net/vcycyv/archive/2013/03/07/396171.html</link><dc:creator>人在江湖</dc:creator><author>人在江湖</author><pubDate>Thu, 07 Mar 2013 09:38:00 GMT</pubDate><guid>http://www.blogjava.net/vcycyv/archive/2013/03/07/396171.html</guid><wfw:comment>http://www.blogjava.net/vcycyv/comments/396171.html</wfw:comment><comments>http://www.blogjava.net/vcycyv/archive/2013/03/07/396171.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/vcycyv/comments/commentRss/396171.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/vcycyv/services/trackbacks/396171.html</trackback:ping><description><![CDATA[<p><font face="Verdana">姐姐去年怀孕了，发现她把微博上的名字改成&#8220;追求幸福进行时&#8221;的时候就猜到她怀孕了。试探地问了一下她为什么改名字，她只是敷衍，我也没敢继续问，最后终于还是确定知道她怀孕了，祝福！有个小孩不纯粹是快乐的事情，其实背后也有很多很多辛苦。发现姐姐改名字是7月14号的事情，假设她是去年6月末怀孕的，7月中旬发现的，那么3月末就是预产期了，希望一切顺利！</font></p>
<p><font face="Verdana">最近的一年回了三次丹东，其中两次是带着大猪和老虎儿一起回去的。每次老虎儿都跟爷爷奶奶玩儿得很高兴。虽然他们不常见面，血缘还是能瞬间拉近他们，很奇妙的事情。大猪坚持十年如一日地傻乐呵，开始喜欢上唱歌，最频繁的时候一周唱好几场KTV，比职业歌手还辛苦...我跟她说，她的性格很好，如果没有嫁给我，她跟很多人都适合；而我性格不好，适合我的人很少，能够有她是很幸运的事。然后，她就常说，我跟她在一起我多幸运啊。真是一点儿阳光也不能给她，要不然控制不住她的灿烂。老虎儿越来越聪明了，常会说些令人惊讶的话。精力无限，春节回家睡了三个晚上，最早的一天是11点40睡的。不过，他太爱哭了，还有半年就要上幼儿园了，爱哭鼻子估计要把老师折磨死了。</font></p>
<p><font face="Verdana">大猪和我都得到了升职，大猪做了副处，我做了manager。从表面上看，应该是挺殷实的家庭，但其实我们俩都是升职不加薪。加入SAS时，决没期望会在SAS工作五年这么久，还是很感谢Emily一如既往的支持，最近的一年和以往一样，很多愉快和不快，很多抱歉和感激。</font></p>
<p><font face="Verdana">今年用过的两个密码是thank you和principle.</font></p>
<p><font face="Verdana">过去的一年，有多少事情会被永久的记住，假如这些事情是本该忘记的，忘记之后又有什么其他值得我记得？</font></p><img src ="http://www.blogjava.net/vcycyv/aggbug/396171.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/vcycyv/" target="_blank">人在江湖</a> 2013-03-07 17:38 <a href="http://www.blogjava.net/vcycyv/archive/2013/03/07/396171.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>《人件》摘录及感想</title><link>http://www.blogjava.net/vcycyv/archive/2012/11/29/392236.html</link><dc:creator>人在江湖</dc:creator><author>人在江湖</author><pubDate>Thu, 29 Nov 2012 15:10:00 GMT</pubDate><guid>http://www.blogjava.net/vcycyv/archive/2012/11/29/392236.html</guid><wfw:comment>http://www.blogjava.net/vcycyv/comments/392236.html</wfw:comment><comments>http://www.blogjava.net/vcycyv/archive/2012/11/29/392236.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/vcycyv/comments/commentRss/392236.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/vcycyv/services/trackbacks/392236.html</trackback:ping><description><![CDATA[<div>《人件》是与《人月神话》齐名的书，promote manager三个月了，虽然基本是个挂名manager，也还是惶惶然恶补管理知识。《人件》是一本一定程度上影响自己价值观的书。下面是一些摘录和感想，其实之前既没管理经验也不具备更多这方面的知识，所谓感想也只是敢瞎想：</div><div></div><div><span style="color: #800000;">我们的成功源自于良好的、与所有此项工作的参与者之间的人际交往，同样我们的失败原因也是由于糟糕的人际交往。</span></div><div><span style="color: #800000;">　　我们倾向于集中精力做技术方面而不是人际关系方面工作的主要原因，不是因为它更重要，而是因为它更容易做。如果你发现自己关注的是技术而不是社会方面的问题，你就相当于在一条黑暗的街上丢掉钥匙，却到邻近的另一条街上去寻找。因为&#8220;这条街上的灯比那条街上的要亮一些&#8221;。</span></div><div><span style="color: #800000;">对任何一个员工来说，没有比因他的积极性不够而不得不由他的老板来 &#8220;补充&#8221;的感觉更令人泄气了。</span></div><div><span style="color: #800000;">人们在受到时间重压的时候不是工作得更好，只是工作得更快。</span></div><div><span style="color: #800000;">在一些日本公司，特别是日立软件和富士通的一些部门，项目团队在提交他们认为还未准备好的产品上有行之有效的否决权。甚至不论客户是否乐意接受低于质量标准的产品，团队可以坚持等到达到了自己的产品标准时才提交产品。当然项目经理们要承受同样的压力：他们正在被催促着提交东西、任何东西，马上就要！但是足够的质量文化已经建立了，因此这些日本经理懂得道理而不会威逼他的部下去满足于更低的质量。</span></div><div>【人在江湖】我平时也总是这种论调，不要给程序员太多压力，永远都有quick and dirty的approach,别把大家逼到这个份儿上.<br /></div><div></div><div><span style="color: #800000;">与经理甚至不询问他们便做出估计的情况相比较，如果他们能自己做出估计，程序员的生产力似乎更高一点。如果经理和程序员一起做估计，则结果倾向于以上两种情况之间。</span></div><div><span style="color: #800000;">当他们调查了预先没有做任何估计的24个项目的生产力时，劳伦斯和杰弗雷（Jeffery-Lawrence）在1985年发表的研究报告中最令人惊讶的部分是在报告的最后。这些项目的生产力都远远胜过了其它所有的项目。</span></div><div>【人在江湖】对于有责任心的人确实如此，幸好我遇到的大多数都属于此类。但是假如有的人天生就没有责任心，怎么办涅？我不是神父，改变不了人的灵魂。你要能改变人的灵魂，还用监狱干什么。<br /></div><div></div><div><span style="color: #800000;">经理的职能不是强迫人们工作，而是让人们有可能工作。</span></div><div>【人在江湖】严重同意。反对那种组织一堆activity风格的管理，一天开仨会，尽是碎片时间踏不下心来，一整天啥都干不了。一直努力创造条件，尽量节省队员的时间，让大家心无旁骛地工作。花很多时间帮助队员trouble shooting, 注重分享实用的tips并总结文档，重视优化开发环境，曾经独创性地把jetty引入团队的开发环境中，方便程序员的日常工作。跟UI designer沟通，申请icon, 应对组外同事基本都是自己做，为了能让大家少受打扰，同事在忙的时候，我甚至去帮他收快递！我分明是搞家政服务的，太善良了，自己都感动了。<br /></div><div></div><div><span style="color: #800000;">吉尔伯定律向你许诺度量不是免费的或者甚至不是廉价的，而且它可能不是完美的，只是比没有什么东西更好。</span></div><div>【人在江湖】这是时常思考的问题，只是一直没有明确答案。度量确实很花成本，不舍得这成本容易盲目，大量花成本又确实可惜，还在探索中...<br /></div><div></div><div><span style="color: #800000;">最有价值的人开始意识到不是因为他们的真正价值而受赏识，意识到他们的工作贡献还不如剪短的头发和领带重要，他们可能会离开。</span></div><div>【人在江湖】团队里有个兄弟，妈的，天天迟到一个半小时，上班也经常消失不见，但是技术工作很负责，干活儿也确实猛，团队需要他发飙的时候能干到下半夜。不想打压他的热情。麻烦在于，会有顾虑我的老板会不会质疑我不约束纪律不作为。倒是不担心这样的人会影响氛围，没人会攀比，即使某天有人跟他攀比，我会说，你能把工作做成这个样子你纪律也随便！<br /></div><div></div><div><span style="color: #800000;">如果你为&#8220;拯救斯奈尔达特基金会&#8221;或 &#8220;第一菲伯罗尼神圣纯洁教堂&#8221;或其它公司工作，这些公司的职员因为共同的信念而结合在一起，那么你可能可以依靠职员在公司目标上的亲合力。否则忘记亲合力一事。面对利润的快速增长，执行委员会热情高涨。但是对于位于底层的人而言，这个同样的目标只是个小小的土豆而已。</span></div><div>【人在江湖】协调个人目标和团队目标是很核心的工作，程序员的工作热情伤不起。<br /></div><div></div><div><span style="color: #800000;">一个团队的目的不是达到目标而是向目标看齐。</span></div><div>【人在江湖】这是我认为整本书里，对自己启发最大的一句话！<br /></div><div></div><div><span style="color: #800000;">你不能防止手下的无能。如果你的员工不能胜任手头的工作，你将会失败。当然，如果你的人不胜任工作，你可能会用新人。但是一旦你已经决定与一个既定小组一起工作,　你最好的策略是相信他们。除此之外，采取任何保证成功的防范措施只会使事情更糟。</span></div><div><span style="color: #800000;">如果你是经理，当然你正在想你的判断比你的手下更好，你有更多的经验，而且你可能有比他们更出色的水准；正因为如此，你才成为经理的。如果不插入你的个人判断，在项目的任何一点上，你的人都更有可能出差错。那么该做什么？让他们出一 些差错。这并不意味着你在很偶然的情况下不能撤销一个决定或者给项目下特别的指令。但是如果员工终于相信不允许他们自身出差错，那么你不信任他们的消息就会显而易见地传开来。除此之外，再也没有其他消息更会抑制团队形成了。</span><em>&nbsp;</em></div><div>【人在江湖】风险当然需要控制，任由队员犯错对他自己对团队都不好。看到上面这段话，一下就想起曾经在项目管理培训课上，学到一个技巧，"让他人感觉主意是他想到的"。沟通工作的时候，尽量循循善诱或许是比较两全的办法。<br /></div><div></div><div><span style="color: #800000;">共同点是，好的经理会为团队提供频繁而又容易一起实现成功的机会。这些机会可以是很小的、起向导作用的子方案，或示范，暗示等，可以是使团队快速养成一起去获得成功习惯的任何东西。最好的成功是没有明显管理的成功，在这样的成功中，团队工作起来如同一个亲切的同事集体。</span></div><div>【人在江湖】team building的时候成功消灭桌上所有的菜？团队每个季度有约1.7k team building预算，我的目标是一分不剩全花光，相对team building的小钱，团队玩儿舒服了把工作做好，多卖几个license才对公司赚钱最重要。那种算计给公司省team building钱的我觉得是娘们儿组。<br /></div><div></div><div><span style="color: #800000;">以下是一些倾向于产生团队自杀性负作用的管理行为：</span></div><div><span style="color: #800000;">* 年薪或绩效考评</span></div><div><span style="color: #800000;">* 目标管理（MBO）</span></div><div><span style="color: #800000;">* 褒奖出色完成任务的某些员工</span></div><div><span style="color: #800000;">* 奖励、奖金、红利与绩效挂钩</span></div><div><span style="color: #800000;">* 用几乎任何形式测量绩效</span></div><div><span style="color: #800000;">　　但在这停一下，这些正是那些经理们花费那么多时间甚至他们的大多数时间做的事情吗？悲哀得很，正是。而且这些行为很可能就是团队自杀行为。</span></div><div><span style="color: #800000;">　　爱德华兹&#183;戴明（W. Edwards Deming）在1982年出版的书《走出危机》中，他提出了他的广为遵循的&#8220;十四点&#8221;。其中第12B点几乎被看成后车之鉴的反思。</span></div><div><span style="color: #800000;">　　拆除那些会剥夺管理人员和工程人员为技艺感到骄傲的权利的障碍。这就（尤其）意味着废除年薪、绩效考评和目标管理。</span></div><div><span style="color: #800000;">　　即使认同戴明观点的人，也在这点上深受困扰。他们也只剩下喘气的功夫了。[p37]到底我们应该做些什么？</span></div><div><span style="color: #800000;">　　戴明的观点是目标管理（MBO）或相类似的行为是在管理上的一种逃避。用简单的外来的激励因素去刺激绩效，经理们总是为他们自己开脱罪责，例如在投资，直接的人员动力 ，周到的团队构成，人员的保留，以及将来的工作程序的分析和再设计等更难的事情上。</span></div><div><em>　　</em><span style="color: #800000;">我们这儿的观点说得比较窄：任何不同程度地奖励团队成员的行为可能会促成竞争。经理们需要采取措施减少或抵消这种影响。</span></div><div>【人在江湖】同意，团队氛围越好，越要无为而治。但是当团队失去平衡的时候，我觉得这些手段很难避免。<br /></div><div></div><div><span style="color: #800000;">每个地方的公司都有攀登更CMM等级的压力。明天他们会执著地追求现行等级向更高级别的跃进，或别的什么。这就是黑暗面，因为它会诱导低风险的一味保平安的行为，所以这些项目是低利润的。</span></div><div>【人在江湖】这是个很好的观点。技术管理需要对技术有insight，管理者需要理解那些值得冒的风险并且淡然承受难以避免的失败。<br /></div><div></div><div><span style="color: #800000;">威廉&#183;布瑞奇（William Bridges）在《管理变革》（Managing Transitions）一书中建议我们从不要去贬低我们的旧方法。相反，我们需要把旧方法作为帮助产生改变的一条途径来庆祝。例如：</span></div><div><span style="color: #800000;">　　&#8220;朋友们，核心图形系统（CGS）中的中心导航系统已经运行了14年。我们估计它已经完美地处理了1000000次起飞和降落。硬件平台在技术上已经陈旧了，有些新的遥感技术我们可以利用。现在我们有机会重新设计和重新建立整个系统。我们需要你们和你们这些年来在核心图形系统方面的成功经验上获得的专门技术来帮助我们成功。&#8221;</span></div><div>【人在江湖】Nice tips.</div><img src ="http://www.blogjava.net/vcycyv/aggbug/392236.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/vcycyv/" target="_blank">人在江湖</a> 2012-11-29 23:10 <a href="http://www.blogjava.net/vcycyv/archive/2012/11/29/392236.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>自录performance tuning, jvm, visualvm视频(更新：已发送视频至优酷)</title><link>http://www.blogjava.net/vcycyv/archive/2012/08/24/386164.html</link><dc:creator>人在江湖</dc:creator><author>人在江湖</author><pubDate>Fri, 24 Aug 2012 00:30:00 GMT</pubDate><guid>http://www.blogjava.net/vcycyv/archive/2012/08/24/386164.html</guid><wfw:comment>http://www.blogjava.net/vcycyv/comments/386164.html</wfw:comment><comments>http://www.blogjava.net/vcycyv/archive/2012/08/24/386164.html#Feedback</comments><slash:comments>12</slash:comments><wfw:commentRss>http://www.blogjava.net/vcycyv/comments/commentRss/386164.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/vcycyv/services/trackbacks/386164.html</trackback:ping><description><![CDATA[<p>visualvm是Sun JDK自带的Java profiling的工具。自己录了一个视频,35分钟，简单的介绍了performance tuning的lifecycle, jvm的一点点理论，以及visualvm的操作：定位死锁，查看out of memory, 定位运行缓慢的method.</p> <p>&nbsp;</p> <p>视频文件在：<a title="https://docs.google.com/open?id=0B22ayLe4teeYQm56QnhaWkUxM2s" href="https://docs.google.com/open?id=0B22ayLe4teeYQm56QnhaWkUxM2s">https://docs.google.com/open?id=0B22ayLe4teeYQm56QnhaWkUxM2s</a></p> <p>ppt在：<a title="https://docs.google.com/open?id=0B22ayLe4teeYdEhsMkItTk16UDg" href="https://docs.google.com/open?id=0B22ayLe4teeYdEhsMkItTk16UDg">https://docs.google.com/open?id=0B22ayLe4teeYdEhsMkItTk16UDg<br /><br /></a>有人说google drive上不容易下载大文件，建议压缩一下，但是我不太会用视频压缩软件，压过之后效果不好了，倒是也能将就着看：<br /></p><div>https://docs.google.com/open?id=0B22ayLe4teeYY1pvNlVtSWdUOVU<br /><br />我的声音就像梦游一样：<a href="http://v.youku.com/v_show/id_XNDQ1Nzk0NDYw.html">http://v.youku.com/v_show/id_XNDQ1Nzk0NDYw.html</a><br />&nbsp;</div><p>&nbsp;</p><img src ="http://www.blogjava.net/vcycyv/aggbug/386164.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/vcycyv/" target="_blank">人在江湖</a> 2012-08-24 08:30 <a href="http://www.blogjava.net/vcycyv/archive/2012/08/24/386164.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>总结Java的Generics</title><link>http://www.blogjava.net/vcycyv/archive/2012/08/20/385803.html</link><dc:creator>人在江湖</dc:creator><author>人在江湖</author><pubDate>Mon, 20 Aug 2012 00:13:00 GMT</pubDate><guid>http://www.blogjava.net/vcycyv/archive/2012/08/20/385803.html</guid><wfw:comment>http://www.blogjava.net/vcycyv/comments/385803.html</wfw:comment><comments>http://www.blogjava.net/vcycyv/archive/2012/08/20/385803.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/vcycyv/comments/commentRss/385803.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/vcycyv/services/trackbacks/385803.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 从JDK1.4到JDK5中间经历了两年半左右的时间，从JDK5到JDK6经历了两年左右的时间，从JDK6到JDK7经历了4年半多的时间。JDK5，6，7这三个版本，只有JDK5有横空出世的惊艳，一系列new feature明显改变了Java程序员日常的coding工作：Generics, Annotation, Autoboxing, for each statement.... 其中Java G...&nbsp;&nbsp;<a href='http://www.blogjava.net/vcycyv/archive/2012/08/20/385803.html'>阅读全文</a><img src ="http://www.blogjava.net/vcycyv/aggbug/385803.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/vcycyv/" target="_blank">人在江湖</a> 2012-08-20 08:13 <a href="http://www.blogjava.net/vcycyv/archive/2012/08/20/385803.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>论语四则</title><link>http://www.blogjava.net/vcycyv/archive/2012/08/19/385769.html</link><dc:creator>人在江湖</dc:creator><author>人在江湖</author><pubDate>Sun, 19 Aug 2012 07:04:00 GMT</pubDate><guid>http://www.blogjava.net/vcycyv/archive/2012/08/19/385769.html</guid><wfw:comment>http://www.blogjava.net/vcycyv/comments/385769.html</wfw:comment><comments>http://www.blogjava.net/vcycyv/archive/2012/08/19/385769.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/vcycyv/comments/commentRss/385769.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/vcycyv/services/trackbacks/385769.html</trackback:ping><description><![CDATA[<p>四段对话都发生在这个周末：</p> <p>1. 老婆说，她工作压力挺大的。我说，我来看孩子，你快去忙吧。老婆说，她不去，她压力最大的地方就是不知道该忙什么&#8230;.</p> <p>2. 我拍打儿子逗他玩儿，老婆不喜欢我这么逗儿子，威胁我说，你再打我儿子，我就打你儿子了啊。我：&#8230;&#8230;</p> <p>3. 老婆爱抚儿子的头，不无得意地向我炫耀，&#8220;这小家伙是从我肚子里生出来的，你能体会么？&#8221;，我回答，&#8220;这小家伙是我射你肚子里的，你能体会么？&#8221;<br />4. 老婆把腿伸给我，说，"帮我抻长点儿"，我装模作样抻几下，她把另一条腿也伸过来，"这条也抻抻。"</p><img src ="http://www.blogjava.net/vcycyv/aggbug/385769.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/vcycyv/" target="_blank">人在江湖</a> 2012-08-19 15:04 <a href="http://www.blogjava.net/vcycyv/archive/2012/08/19/385769.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>