﻿<?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-人在江湖-随笔分类-others</title><link>http://www.blogjava.net/vcycyv/category/47726.html</link><description /><language>zh-cn</language><lastBuildDate>Sun, 06 Jul 2014 18:13:14 GMT</lastBuildDate><pubDate>Sun, 06 Jul 2014 18:13:14 GMT</pubDate><ttl>60</ttl><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>0</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>最近复习sql, 分享整理的12条sql语句连同数据</title><link>http://www.blogjava.net/vcycyv/archive/2012/06/26/381478.html</link><dc:creator>人在江湖</dc:creator><author>人在江湖</author><pubDate>Tue, 26 Jun 2012 01:29:00 GMT</pubDate><guid>http://www.blogjava.net/vcycyv/archive/2012/06/26/381478.html</guid><wfw:comment>http://www.blogjava.net/vcycyv/comments/381478.html</wfw:comment><comments>http://www.blogjava.net/vcycyv/archive/2012/06/26/381478.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/vcycyv/comments/commentRss/381478.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/vcycyv/services/trackbacks/381478.html</trackback:ping><description><![CDATA[<p>原本sql写得也不好，近几年数据库用得少，sql更是荒废了，最近复习sql,网上例 子很多，但都只是提供sql例子，没有配套的数据用来自己练习和调试。俺觉得自 己试着写写sql,调试调试还是有帮助的，读人家sql例子好像读懂了，自己写就未 必思路正确，调试得通，写得简洁。</p> <p>&nbsp;<br>跟着网上流行的学生选课表的例子复习了一下： <a href="http://www.cnblogs.com/buzaixian/archive/2009/09/21/1571365.html">http://www.cnblogs.com/buzaixian/archive/2009/09/21/1571365.html</a><br>这篇文字在网上被转载烂了，里面有些sql适合用在应用系统里，有些“报表”的感 觉更重些，主要是想复习前者。前20条大体还挺好，后30条明显偏报表风格了，而 且后面选例良莠不齐，选了12个例子做练习，（其实很多语法，case, any/all, union之类的都没包括），用mysql数据库，并共享自己造出来的数据。关于这12条 sql, 修正了原文中有纰漏的地方。 <br>sql是基本技能，若能写得好也挺精彩的，还在继续练习。绝不提倡努力写复杂sql 解决业务问题。应用系统里如果存在很复杂的sql，往往揭示了业务逻辑向下泄露 到sql层的问题，不利于维护和扩展，虽然这样确实常能提高运行效率。具体情况 自行取舍。 <br>下面的例子都是比较通用的sql, 其实针对特定的数据库，需要学的也挺多，比如 oracle db的decode函数, rowid, rownum, connect by 虽然不通用，但是很实用。 </p> <p><br>数据可以在这里下载，只是用作练习，没做任何外键关联：<a title="http://115.com/file/an2svxbe#sql-study.sql" href="http://115.com/file/an2svxbe#sql-study.sql">http://115.com/file/an2svxbe#sql-study.sql</a></p> <p><br>整理的sql在下面： <br>Student(S#,Sname,Sage,Ssex) 学生表 <br>Course(C#,Cname,T#) 课程表 <br>SC(S#,C#,score) 成绩表 <br>Teacher(T#,Tname) 教师表 <br>1. 选出每门功课都及格的学号 <br>select distinct `s#` from sc where `s#` not in (select `s#` from sc where score &lt;60) <br>2. 查询“1”课程比“2”课程成绩高的所有学生的学号； <br>SELECT c01.`s#` from (select `s#`, `score` from sc where `c#`=1) c01, <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; (select `s#`, `score` from sc where `c#`=2) c02 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; where c01.`s#` = c02.`s#` and c01.score &gt; c02.score <br>3.&nbsp; 查询平均成绩大于60分的同学的学号和平均成绩； <br>select `s#`, avg(score) from sc group by `s#` having avg(score) &gt; 60 <br>4. 查询所有同学的学号、姓名、选课数、总成绩； <br>select student.`s#`, student.`Sname`, count(`c#`), sum(score) from student left outer join sc on student.`s#` = sc.`s#` group by student.`s#`, sc.`s#` <br>5.查询没学过“叶平”老师课的同学的学号、姓名； <br>select student.`s#`, student.`Sname` from student where student.`s#` not in (select distinct(sc.`s#`) from teacher, course, sc where Tname='叶平' and teacher.`t#` = course.`t#` and sc.`c#`= course.`c#` ) <br>6. 查询学过“001”并且也学过编号“002”课程的同学的学号、姓名 <br>select student.`s#`, student.sname from student, sc where student.`s#` = sc.`s#` and sc.`c#` = 1 and exists (select * from sc sc_2 where sc_2.`c#`=2 and sc.`s#`=sc_2.`s#`) <br>7. 查询学过“叶平”老师所教的所有课的同学的学号、姓名 (巧妙) <br>select `s#`, sname from student where `s#` in <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (select `s#` from sc, teacher, course where tname='叶平' and teacher.`t#`=course.`t#` and course.`c#`= sc.`c#` group by `s#` having count(sc.`c#`)= <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (select count(`c#`) from teacher, course where tname='叶 平' and teacher.`t#`=course.`t#`) ) <br>8. 查询课程编号“002”的成绩比课程编号“001”课程低的所有同学的学号、姓名 (有代表性) <br>select `s#`, sname from (select student.`s#`, student.sname, score, (select score from sc sc_2 where student.`s#`=sc_2.`s#` and sc_2.`c#`=2) score2 from student , sc where <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sc.`s#`=student.`s#` and sc.`c#`=1) s_2 where score2 &lt; score <br>9.查询没有学全所有课的同学的学号、姓名 <br>select student.`S#`, Sname from student, sc where student.`s#` = sc.`s#` group by `s#`, sname having count(`c#`) &lt; (select count(`c#`) from course) <br>10. 查询至少有一门课与学号为“002”的同学所学相同的同学的学号和姓名； <br>select distinct(sc.`s#`), sname from student, sc where student.`s#`=sc.`s#` and `c#` in (select `c#` from sc where `s#`=002) <br>11. 把“SC”表中“叶平”老师教的课的成绩都更改为此课程的平均成绩； <br>update sc inner join <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (select sc2.`c#`, avg(sc2.score) score from sc sc2, teacher, course where <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sc2.`c#`=course.`c#` and tname='叶平' and teacher.`t#` = course.`t#` and course.`c#`=sc2.`c#` group by course.`c#`) sc3 on sc.`c#`=sc3.`c#` set sc.score=sc3.score <br>12. 查询2号的同学学习的课程他都学了的同学的学号；（注意理解：where语句的 第一个条件过滤掉不满足c#的记录，再group by，就比较清晰） <br>select `S#` from SC where `C#` in (select `C#` from SC where `S#`=2) <br>&nbsp;&nbsp;&nbsp; group by `S#` having count(*)=(select count(*) from SC where `S#`=2); </p><img src ="http://www.blogjava.net/vcycyv/aggbug/381478.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-06-26 09:29 <a href="http://www.blogjava.net/vcycyv/archive/2012/06/26/381478.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>美企招Java，发个招聘贴，版主留情</title><link>http://www.blogjava.net/vcycyv/archive/2011/10/10/360411.html</link><dc:creator>人在江湖</dc:creator><author>人在江湖</author><pubDate>Mon, 10 Oct 2011 09:47:00 GMT</pubDate><guid>http://www.blogjava.net/vcycyv/archive/2011/10/10/360411.html</guid><wfw:comment>http://www.blogjava.net/vcycyv/comments/360411.html</wfw:comment><comments>http://www.blogjava.net/vcycyv/archive/2011/10/10/360411.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/vcycyv/comments/commentRss/360411.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/vcycyv/services/trackbacks/360411.html</trackback:ping><description><![CDATA[<p>Software Developer - SAS Financial Management Mid-Tier<br>As a Software Developer, you will assist with the design, development and support of software for SAS Financial Management.&nbsp; You will work on a developing the business logic for SAS Financial Management in a high performance Java based mid tier.&nbsp; Your primary responsibilities will include designing and writing new or revised application code; performing development level testing, assisting in documentation and training; and performing other duties as assigned.<br>Essential<br>•&nbsp;&nbsp;&nbsp; Bachelor’s degree in Computer Science or related quantitative field<br>•&nbsp;&nbsp;&nbsp; 5 years of development experience<br>•&nbsp;&nbsp;&nbsp; 3 years of Java experience<br>•&nbsp;&nbsp;&nbsp; Professional experience with algorithm analysis and performance<br>•&nbsp;&nbsp;&nbsp; Professional experience developing server side objects which are used as part of a highly scalable distributed application<br>•&nbsp;&nbsp;&nbsp; Professional experience with JDBC and SQL<br>•&nbsp;&nbsp;&nbsp; Professional experience designing and developing distributed applications<br>•&nbsp;&nbsp;&nbsp; Fluent English<br>Additional<br>•&nbsp;&nbsp;&nbsp; Excellent development skills with a thorough understanding of Object Oriented programming<br>•&nbsp;&nbsp;&nbsp; Ability to work independently as well as part of a team<br>•&nbsp;&nbsp;&nbsp; Superior analytical and problem-solving skills<br>Preferences<br>•&nbsp;&nbsp;&nbsp; Professional experience developing with the following technologies:<br>o&nbsp;&nbsp;&nbsp; JUnit<br>o&nbsp;&nbsp;&nbsp; OLAP<br>o&nbsp;&nbsp;&nbsp; HTML<br>o&nbsp;&nbsp;&nbsp; HTTP(S)<br>o&nbsp;&nbsp;&nbsp; LDAP<br>o&nbsp;&nbsp;&nbsp; SOAP<br>o&nbsp;&nbsp;&nbsp; Web Services<br>•&nbsp;&nbsp;&nbsp; Financial application development experience or experience with Oracle Financials, Great Plains, PeopleSoft, Hyperion, or similar financial software  <p>Software Developer - SAS Financial Management Web Application<br>As a Software Developer, you will assist with the design, development and support of software for SAS Financial Management.&nbsp; You will work on a developing the web application for SAS Financial Management.&nbsp; Your primary responsibilities will include designing and writing new or revised application code; performing development level testing, assisting in documentation and training; and performing other duties as assigned.<br>Essential<br>•&nbsp;&nbsp;&nbsp; Bachelor’s degree in Computer Science or related quantitative field<br>•&nbsp;&nbsp;&nbsp; 5 years of development experience<br>•&nbsp;&nbsp;&nbsp; 2 years of Java experience<br>•&nbsp;&nbsp;&nbsp; 2 years of web development experience<br>•&nbsp;&nbsp;&nbsp; Professional experience developing web applications which are part of a highly scalable distributed application<br>•&nbsp;&nbsp;&nbsp; Professional experience designing and developing distributed applications<br>•&nbsp;&nbsp;&nbsp; Fluent English<br>Additional<br>•&nbsp;&nbsp;&nbsp; Excellent development skills with a thorough understanding of Object Oriented programming<br>•&nbsp;&nbsp;&nbsp; Ability to work independently as well as part of a team<br>•&nbsp;&nbsp;&nbsp; Superior analytical and problem-solving skills<br>Preferences<br>•&nbsp;&nbsp;&nbsp; Professional experience developing with the following technologies:<br>o&nbsp;&nbsp;&nbsp; Adobe Flash<br>o&nbsp;&nbsp;&nbsp; JUnit<br>o&nbsp;&nbsp;&nbsp; OLAP<br>o&nbsp;&nbsp;&nbsp; HTML<br>o&nbsp;&nbsp;&nbsp; SOAP<br>o&nbsp;&nbsp;&nbsp; Web Services<br>•&nbsp;&nbsp;&nbsp; Financial application development experience or experience with Oracle Financials, Great Plains, PeopleSoft, Hyperion, or similar financial software  <p>======================================= <p>简历可以发到俺们老板的邮箱：yan.gao@sas.com</p><img src ="http://www.blogjava.net/vcycyv/aggbug/360411.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/vcycyv/" target="_blank">人在江湖</a> 2011-10-10 17:47 <a href="http://www.blogjava.net/vcycyv/archive/2011/10/10/360411.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>hsqldb的使用方法</title><link>http://www.blogjava.net/vcycyv/archive/2011/03/26/347071.html</link><dc:creator>人在江湖</dc:creator><author>人在江湖</author><pubDate>Sat, 26 Mar 2011 14:39:00 GMT</pubDate><guid>http://www.blogjava.net/vcycyv/archive/2011/03/26/347071.html</guid><wfw:comment>http://www.blogjava.net/vcycyv/comments/347071.html</wfw:comment><comments>http://www.blogjava.net/vcycyv/archive/2011/03/26/347071.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/vcycyv/comments/commentRss/347071.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/vcycyv/services/trackbacks/347071.html</trackback:ping><description><![CDATA[<p>现在很多开源项目使用hsqldb作为数据库。了解hsqldb的基本使用方法还是很必要的。这篇不是全面介绍hsqldb的文字，但我认为用这个笔记的内容调试程序够用了。</p> <p>一、下载数据库，地址在<a title="http://sourceforge.net/projects/hsqldb/files/hsqldb/" href="http://sourceforge.net/projects/hsqldb/files/hsqldb/">http://sourceforge.net/projects/hsqldb/files/hsqldb/</a> 我使用的是1.8.0版本。假定下载解压后的目录是D:\hsqldb\, 那么hsqldb.jar在D:\hsqldb\lib目录下。这个jar文件是hsqldb的核心包</p> <p>&nbsp;</p> <p>二、启动数据库，比如数据库名称为test(不需要提前建test数据库): java -classpath D:\hsqldb\lib\hsqldb.jar org.hsqldb.Server -database test</p> <p>&nbsp;</p> <p>三、在hsqldb的demo目录下有runManagerSwing.bat，运行它，注意Type选择Engine Server，同时注意URL的写法。你程序中配置的jdbc property中的url也应该是这样的：jdbc.url=jdbc:hsqldb:hsql://localhost</p> <p>&nbsp;</p> <p><a href="http://www.blogjava.net/images/blogjava_net/vcycyv/WindowsLiveWriter/hsqldb_13EB7/image_2.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.blogjava.net/images/blogjava_net/vcycyv/WindowsLiveWriter/hsqldb_13EB7/image_thumb.png" width="516" height="446"></a> </p> <p>接着就进入图形界面可以看到表，并且执行sql了。</p><img src ="http://www.blogjava.net/vcycyv/aggbug/347071.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/vcycyv/" target="_blank">人在江湖</a> 2011-03-26 22:39 <a href="http://www.blogjava.net/vcycyv/archive/2011/03/26/347071.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>工作中用到的一些免费软件</title><link>http://www.blogjava.net/vcycyv/archive/2011/03/18/346513.html</link><dc:creator>人在江湖</dc:creator><author>人在江湖</author><pubDate>Fri, 18 Mar 2011 01:10:00 GMT</pubDate><guid>http://www.blogjava.net/vcycyv/archive/2011/03/18/346513.html</guid><wfw:comment>http://www.blogjava.net/vcycyv/comments/346513.html</wfw:comment><comments>http://www.blogjava.net/vcycyv/archive/2011/03/18/346513.html#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://www.blogjava.net/vcycyv/comments/commentRss/346513.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/vcycyv/services/trackbacks/346513.html</trackback:ping><description><![CDATA[<p>上学的时候都装盗版软件，工作了做程序员开始抵触盗版了，毕竟咱也是靠写代码混饭吃的，何况工作环境也不允许装盗版。把平时用的一些免费软件列出来，抛砖引玉。大家有什么好的软件也推荐一下。</p> <p>&nbsp;</p> <p>画图软件：EDraw free mind <a title="http://www.edrawsoft.com/cn/freemind.php" href="http://www.edrawsoft.com/cn/freemind.php">http://www.edrawsoft.com/cn/freemind.php</a></p> <p>评论：这个软件名义上是画思维导图的，其实功能挺强大的。能画出来比较复杂的图。平时咱工作写个文档，要配个图啥的，就用这个画，挺好。</p> <p>&nbsp;</p> <p>思维导图软件：XMind <a title="http://www.xmind.net/" href="http://www.xmind.net/">http://www.xmind.net/</a></p> <p>评论：更出名的同类软件是freemind. 但是不如XMind好用。思维导图本身是一种"自上而下"的思维方式，就跟咱写代码的思维方式类似. 思维导图还能用来记笔记。把自己的hibernate笔记截图发上来，有个直观印象：</p> <p><a href="http://www.blogjava.net/images/blogjava_net/vcycyv/WindowsLiveWriter/be846bbc4334_8102/image_2.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.blogjava.net/images/blogjava_net/vcycyv/WindowsLiveWriter/be846bbc4334_8102/image_thumb.png" width="916" height="498"></a> </p> <p>这个笔记可以从这里下载：<a title="http://cid-d8b11f9bf86fecfa.office.live.com/self.aspx/.Public/Hibernate.xmind" href="http://cid-d8b11f9bf86fecfa.office.live.com/self.aspx/.Public/Hibernate.xmind">http://cid-d8b11f9bf86fecfa.office.live.com/self.aspx/.Public/Hibernate.xmind</a></p> <p>&nbsp;</p> <p>画界面prototype的： Pencil <a title="http://pencil.evolus.vn/en-US/Home.aspx" href="http://pencil.evolus.vn/en-US/Home.aspx">http://pencil.evolus.vn/en-US/Home.aspx</a></p> <p>评论：它本身是firefox的一个插件，小巧好用。我们和美国同事合作开发，交流界面结构就用这个，哈哈，我推荐的。</p> <p>&nbsp;</p> <p>网络硬盘工具： SDExplorer: <a title="http://www.cloudstorageexplorer.com/" href="http://www.cloudstorageexplorer.com/">http://www.cloudstorageexplorer.com/</a></p> <p>评论：重要的东西放在网络硬盘上，得选个靠谱的网络硬盘。微软够靠谱儿吧？25G sky drive免费空间。但是sky drive太慢了。可以用这个工具把sky drive网络硬盘映射到你自己的机器上，就像本地的磁盘一样，方便。我上面共享的hibernate笔记就是放在sky drive上的。 之前共享的 <a href="http://www.blogjava.net/vcycyv/archive/2011/02/14/344298.html"><font color="#0000ff">分享十二本经典电子书，涉及java, OO design, spring, hibernate,struts2, agile</font></a> 也放在那上面。</p> <p>&nbsp;</p> <p>文件解锁工具：lock hunter: <a title="http://lockhunter.com/" href="http://lockhunter.com/">http://lockhunter.com/</a></p> <p>评论： 有时候文件删不掉，提示被锁了。天知道什么程序在使用这个文件…lock hunter知道，而且还能解锁。</p> <p>&nbsp;</p> <p>抛砖引玉。大家有什么好的软件也推荐一下。</p><img src ="http://www.blogjava.net/vcycyv/aggbug/346513.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/vcycyv/" target="_blank">人在江湖</a> 2011-03-18 09:10 <a href="http://www.blogjava.net/vcycyv/archive/2011/03/18/346513.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>发个招人广告</title><link>http://www.blogjava.net/vcycyv/archive/2011/02/25/345147.html</link><dc:creator>人在江湖</dc:creator><author>人在江湖</author><pubDate>Fri, 25 Feb 2011 13:56:00 GMT</pubDate><guid>http://www.blogjava.net/vcycyv/archive/2011/02/25/345147.html</guid><wfw:comment>http://www.blogjava.net/vcycyv/comments/345147.html</wfw:comment><comments>http://www.blogjava.net/vcycyv/archive/2011/02/25/345147.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/vcycyv/comments/commentRss/345147.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/vcycyv/services/trackbacks/345147.html</trackback:ping><description><![CDATA[<p>我们公司的一个QA团队招人。是个挺不错的团队，很多其他team的人都想往那儿transfer呢。他们招人很急，我这么善良，就在blog里贴出来，看看能不能帮忙收到好简历。</p> <p>&nbsp;</p> <p>智联招聘的原链接： <a title="http://jobs.zhaopin.com/P2/CC0003/1191/J902/509/CC000311917J90250983000.htm?f=ss" href="http://jobs.zhaopin.com/P2/CC0003/1191/J902/509/CC000311917J90250983000.htm?f=ss">http://jobs.zhaopin.com/P2/CC0003/1191/J902/509/CC000311917J90250983000.htm?f=ss</a></p> <p>&nbsp;</p> <p><strong>软件分析师A</strong> <p><strong>Job Responsibilities: </strong> <p>The mission of this role is to improve the customer competence of SAS. You are expected and will be cultivated to be an expert who understands SAS technology/solution, globalization and the domain knowledge. In more details, duties will include:Conducts customer experience testing and best practice testing for SAS technologies and solutions; <ul> <li>Provides counseling on localized SAS software;  <li>Provides internal SAS practice training and implementation guidance, especially for new product and solutions;  <li>Collects the feedback from customers. </li></ul> <p><strong>Qualifications: </strong> <ul> <li>Hands on experience in business intelligence;  <li>Passion on programming, hands on Java programming or C/C++ experiences and skills;  <li>Better skills on communication, customer-facing and problem-resolving;  <li>The ability to work as member of a team, virtual team and individual;  <li>Good written and spoken English;  <li>Master&#8217;s or Bachelor's degree.</li></ul> <p><strong>Preferences: </strong> <ul> <li>SAS products and technology knowledge;  <li>Domain Knowledge in retail industry, financial management, risk management, CRM, etc.;  <li>Experience in internationalization and localization.</li></ul> <p>&nbsp;</p> <p><strong>发送简历至:</strong><a href="mailto:bjrnd@sas.com"><strong>bjrnd@sas.com</strong></a></p> <img src ="http://www.blogjava.net/vcycyv/aggbug/345147.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/vcycyv/" target="_blank">人在江湖</a> 2011-02-25 21:56 <a href="http://www.blogjava.net/vcycyv/archive/2011/02/25/345147.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>也谈代码质量</title><link>http://www.blogjava.net/vcycyv/archive/2011/02/19/344664.html</link><dc:creator>人在江湖</dc:creator><author>人在江湖</author><pubDate>Sat, 19 Feb 2011 09:52:00 GMT</pubDate><guid>http://www.blogjava.net/vcycyv/archive/2011/02/19/344664.html</guid><wfw:comment>http://www.blogjava.net/vcycyv/comments/344664.html</wfw:comment><comments>http://www.blogjava.net/vcycyv/archive/2011/02/19/344664.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.blogjava.net/vcycyv/comments/commentRss/344664.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/vcycyv/services/trackbacks/344664.html</trackback:ping><description><![CDATA[<p>这篇算是 <a href="http://www.javaeye.com/wiki/Design_Patterns?category_id=253">一堂如何提高代码质量的培训课</a> 的读后感。作者网名fangang. 这系列文章涵盖很多内容，包括设计模式，DDD，代码审核等等。这些话题大于“代码质量”。更像是“提高软件质量的培训课”。培训课本身就是高质量的，赞！网上有不少转载，比如<a title="http://www.tech-q.cn/thread-3831-1-1.html" href="http://www.tech-q.cn/thread-3831-1-1.html">http://www.tech-q.cn/thread-3831-1-1.html</a>。赞同作者的很多观点，也收益不少。总结一下：</p> <p>&nbsp;</p> <p>[fangang]我们评价高质量代码有三要素：可读性、可维护性、可变更性。</p> <p>[vcycyv]同意这三个方面。我总这样想，软件的核心是可维护性。可维护性主要就体现在可读性和扩展性。</p> <p>&nbsp;</p> <p>[fangang]（可读性）不要编写大段的代码</p> <p>[vcycyv]Martin Fowler管"从大段代码抽取独立的方法"叫做"extract method"，这是常见而重要的重构手段。在他的<a href="http://cid-d8b11f9bf86fecfa.office.live.com/self.aspx/.Public/books/refactoring-improving%20the%20design%20of%20existing%20code.pdf">refactor</a>书里从技术层面做了详细的阐述。分解的过程中，比较容易形成技术障碍的local variable. 引一段书里的话，专门讨论这个话题的：</p> <p>•&nbsp;&nbsp;&nbsp;&nbsp; Copy the extracted code from the source method into the new target method. <br>•&nbsp;&nbsp;&nbsp;&nbsp; Scan the extracted code for references to any variables that are local in scope to the <br>source method. These are local variables and parameters to the method. <br>•&nbsp;&nbsp;&nbsp;&nbsp; See whether any temporary variables are used only within this extracted code. If so, <br>declare them in the target method as temporary variables. <br>•&nbsp;&nbsp;&nbsp;&nbsp; Look to see whether any of these local-scope variables are modified by the extracted <br>code. If one variable is modified, see whether you can treat the extracted code as a query <br>and assign the result to the variable concerned. If this is awkward, or if there is more than <br>one such variable, you can't extract the method as it stands. You may need to use Split <br>Temporary Variable and try again. You can eliminate temporary variables with <br>Replace Temp with Query (see the discussion in the examples). <br>•&nbsp;&nbsp;&nbsp;&nbsp; Pass into the target method as parameters local-scope variables that are read from the <br>extracted code. <br>•&nbsp;&nbsp;&nbsp;&nbsp; Compile when you have dealt with all the locally-scoped variables. <br>•&nbsp;&nbsp;&nbsp;&nbsp; Replace the extracted code in the source method with a call to the target method.  <p>•&nbsp;&nbsp;&nbsp;&nbsp; Compile and test.</p> <p>&nbsp;</p> <p>前两年看到一个讨论的很火的话题，说任意复杂的产品，都能break into一系列的小方法，每个方法行数不超过5行。当然没必要这么狠，但如果你真这么狠，我倒觉得没啥明显的坏处。</p> <p>&nbsp;</p> <p>"而一些更有经验的程序员会采用另外一种从上往下的编写方式。当他们在编写程序的时候，每个被分出去的程序，可以暂时只写一个空程序而不去具体实现功能。当主程序完成以后，再一个个实现它的所有子程序。采用这样的编写方式，可以使复杂程序有更好的规划，避免只见树木不见森林的弊病。"这也是一个好的实践。 <p>&nbsp; <p>提到这种自上而下的编程方法，顺便推荐 《斯坦福大学开放课程：编程方法》。这是一系列视频教程。google一下有很多地方可以下载或在线观看，比如优酷<a title="http://v.youku.com/v_show/id_XMjE4NzQ0NDI0.html" href="http://v.youku.com/v_show/id_XMjE4NzQ0NDI0.html">http://v.youku.com/v_show/id_XMjE4NzQ0NDI0.html</a> 在视频教程里教授也演示了自上而下的编程方法。 这是入门级的教程，本来想通过它练练听力，后来发现这课程根本就是喜剧片，看的过程一直狂笑，教授特逗。 <p>&nbsp; <p>跟可读性相关的一个话题就是注释。近年来一个广泛被接受的做法是，尽量通过 避免大段代码 以及良好的变量命名达到可读性。注释在这个过程中被淡化了。我基本同意这种做法，程序结构清晰，自解释的变量名都是重要的实践。变量名尽量不要写缩写，如果写缩写的话，一定要有<strong>缩写字典</strong>有据可查。看spring的代码，可以发现很多类名或方法名在30个字符以上。大段注释往往暗示程序结构的不合理。不鼓励写过多注释的结果就是，剩下的注释都是重要不可或缺的，<strong>注释是程序的一部分，需要和程序保持一致，也需要被维护</strong>。另一个基本而重要的原则是，要把public package protected private方法按照顺序写。更重要的、可访问性更高的方法放前面，尽管eclipse里可以方便地在视图过滤非public方法。 <p>&nbsp; <p>[fangang](可维护性)但是，事实却不一样，对机关级次计算的代码遍布整个项目，甚至有些还写入到了那些复杂的SQL语句中。 <p>[vcycyv] Domain Driven Disign强调，domain的逻辑要圈在一定边界中。往上不能爬到service, 甚至UI层。往下不能渗透到repository以下，比如sql语句里。 Domain Driven Design的书在<a href="http://cid-d8b11f9bf86fecfa.office.live.com/self.aspx/.Public/books/Addison.Wesley.Domain.Driven.Design.Tackling.Complexity.In.The.Heart.Of.Software.eBook-LiB.chm">这里</a>下载。更多电子书可以看之前写的博客 <a href="http://www.blogjava.net/vcycyv/archive/2011/02/14/344298.html">分享十二本经典电子书</a> <p>&nbsp; <p>[fangang]将专用代码提升为通用代码 <p>[vcycyv] 这个过程大家都会遇到。什么代码算通用代码并不容易界定。过多的通用代码淹没了真正有通用意义的方法，不足的通用代码容易造成代码重复。这个过程有这么几个方面需要注意。 <p>一，避免重复造轮子。 要对JDK常用的API以及<strong>经典第三方的软件包有一定了解</strong>。举两个例子：古典的singleton在JDK1.5之后可以用单一元素的enum表示，而且不用考虑serializable的readresolve问题； apache commons里的io, lang等包提供了很多常用的API。我在我们的产品里，用到io的FileNameUtils和ExceptionUtils的一些方法。包括取文件后缀名，获取exception的root cause以及excepiton stack的字符串。 要尽量重用可靠的第三方代码， 原因是你自己写的代码多半不如Sun和apache的人好。更重要的是，你自己写的每一行code都要自己维护。代码行数本身就是代码维护量的一个因素。最近一两年疯狂地喜欢删除代码，估计再发展下去我就要被删除了。 <p>二， 还是domain为先。<strong>当你犹豫一段比较“通用”的代码应该放在module里还是拿出来的时候，尽量还是保留在module里吧</strong>。因为如果你犹豫来，犹豫去之后，决定它是global的通用代码，下一个人非常可能在module里找不到，就认为没有这种code,自己又写一遍。太激进的写一堆通用代码，一旦组织不好，就没人爱去从通用代码里寻宝了。关于这一点，martin大叔有近似的阐述， 在<a href="http://cid-d8b11f9bf86fecfa.office.live.com/self.aspx/.Public/books/Patterns%20of%20Enterprise%20Application%20Architecture.chm">Patterns of Enterprise Application Architecture</a>里 <p>A common concern with domain logic is bloated domain objects. As you build a screen to manipulate orders you'll notice that some of the order behavior is only needed only for it. If you put these responsibilities on the order, the risk is that the Order class will become too big because it's full of responsibilities that are only used in a single use case. This concern leads people to consider whether some responsibility is general, in which case it should sit in the order class, or specific, in which case it should sit in some usage-specific class, which might be a <a href="0321127420_ch09lev1sec1.html#ch09lev1sec1">Transaction Script</a> (110) or perhaps the presentation itself. <p>The problem with separating usage-specific behavior is that it can lead to duplication. Behavior that's separated from the order is harder to find, so people tend to not see it and duplicate it instead. Duplication can quickly lead to more complexity and inconsistency, but I've found that bloating occurs much less frequently than predicted. If it does occur, it's relatively easy to see and not difficult to fix. My advice is not to separate usage-specific behavior. Put it all in the object that's the natural fit. Fix the bloating when, and if, it becomes a problem. <p>三、通用代码一定要有整体设计。如果调用通用代码的那些invoker不完全在你控制的范围，比如你写的程序有其他项目组在调用，那么你修改API的签名一定会被骂死的。所以通用代码要思前想后design清楚了才release.结构清楚的通用代码也比较方便以后查找。<strong>好的程序总是分层的，通用代码要尽量往底层放</strong>。 <p>&nbsp; <p>[fangang]一个快速提高软件质量的捷径就是利用设计模式。 <p>[vcycyv]设计模式除了是一种工具以外，学习、思考设计模式能扩展coding的思维方式。自己也总结了一篇博客 <a href="http://www.blogjava.net/vcycyv/archive/2011/02/15/344395.html">串讲23种设计模式</a> 。 <p>&nbsp; <p>[fangang]拿一个员工工资系统来说吧。当人力资源在发放一个月工资的时候，以及离职的员工肯定不能再发放工资了。在系统设计的期初，开发人员商量好，在员工信息中设定一个“离职标志”字段。编写工资发放的开发人员通过查询，将“离职标志”为false的员工查询出来，并为他们计算和发放工资。但是，随着这个系统的不断使用，编写员工管理的开发人员发现，“离职标志”字段已经不能满足客户的需求，因而将“离职标志”字段废弃，并增加了一个“离职时间”字段来管理离职的员工。然而，编写工资发放的开发人员并不知道这样的变更，依然使用着“离职标志”字段。显然，这样的结果就是，软件系统开始对离职员工发放工资了。仔细分析这个问题的原因，我们不难发现，确认员工是否离职，并不是“发放工资”软件类应当完成的工作，而应当是“员工管理”软件类应当完成的。如果将“获取非离职员工”的任务交给“员工管理”软件类，而“发放工资”软件类仅仅只是去调用，那么离职功能由“离职标志”字段改为了“离职时间”字段，其实就与“发放工资”软件类毫无关系。而作为“员工管理”的开发人员，一旦发生这样的变更，他当然知道去修改自己相应的“获取非离职员工”函数，这样就不会发生以上问题。 <p>[vcycyv]哈哈，我喜欢这个例子。DDD的核心思想就是这个。当然DDD的理论还有一些具体的实践。Eric Evan在他的DDD书里讲了一个cargo的例子，当时我还找了一下代码，没找到，从fangang的博客评论里居然发现哪里能找到代码了，<a title="http://dddsample.sourceforge.net/" href="http://dddsample.sourceforge.net/">http://dddsample.sourceforge.net/</a>, 还没来得及具体看。以后有机会深入了解一下。 <p>&nbsp; <p>[fangang]（代码审查） 被审查后的代码如果还出现缺陷，审查者应当负有责任 <p>[vcycyv] 这个系列的最后一篇文章主题是代码审查。作者所说的最佳实践很有道理，但不是在任何环境下可操作性都强的。我不知道最佳实践是什么，但我觉得有一些问题是值得注意的。 <p>一、<strong>代码审查的范围要小，最好是one-one的</strong>，跟绩效没有关系，范围小可以保证审查不会太伤“面子”，否则会影响团结氛围。 <p>二、<strong>审查者在指出错误的同时，一定要说如何修正问题</strong>。我非常非常反感那种善于用大道理指出别人错误，自己却把错误犯得更夸张的那种人。如果你自己没有更好的解决方案，就别说那是问题。 <p>三、代码审查制度的推行以良好的团队氛围为前提。大家都是为了产品着想，这样代码审查才不至于扯皮。 <p>四、关于审查者的责任。我同意fangang说的"被审查后的代码如果还出现缺陷，审查者应当负有责任", 但是谁来追究责任，如何界定责任，怎么追究责任呢？呵呵，这个恐怕不好操作。代码审查显然不能杜绝defect, 但是明显的设计，编码错误是应该看到的，但怎么又算"明显"呢。软件本身不像数学那样严格，容易界定问题。纪律在软件行业作用有限，团队氛围比纪律重要。但怎么营造好的团队氛围又是一个太宽泛的问题。 <img src ="http://www.blogjava.net/vcycyv/aggbug/344664.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/vcycyv/" target="_blank">人在江湖</a> 2011-02-19 17:52 <a href="http://www.blogjava.net/vcycyv/archive/2011/02/19/344664.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>咱数据库使用外键么？</title><link>http://www.blogjava.net/vcycyv/archive/2011/02/17/344481.html</link><dc:creator>人在江湖</dc:creator><author>人在江湖</author><pubDate>Wed, 16 Feb 2011 16:58:00 GMT</pubDate><guid>http://www.blogjava.net/vcycyv/archive/2011/02/17/344481.html</guid><wfw:comment>http://www.blogjava.net/vcycyv/comments/344481.html</wfw:comment><comments>http://www.blogjava.net/vcycyv/archive/2011/02/17/344481.html#Feedback</comments><slash:comments>12</slash:comments><wfw:commentRss>http://www.blogjava.net/vcycyv/comments/commentRss/344481.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/vcycyv/services/trackbacks/344481.html</trackback:ping><description><![CDATA[<p>今天看天乙社区的程序，发现一个外键都没有啊，太狠了。上网看了一些资料，稍微整理了一下。</p> <p>这个帖子很牛：</p> <p><a title="http://www.itpub.net/viewthread.php?tid=1313696&amp;extra=&amp;page=1" href="http://www.itpub.net/viewthread.php?tid=1313696&amp;extra=&amp;page=1">http://www.itpub.net/viewthread.php?tid=1313696&amp;extra=&amp;page=1</a></p> <p>&nbsp;</p> <p>我的观点是，<u>外键在初始阶段能加的都加上，只有迫不得已的时候才disable或drop掉。遇到性能瓶颈的时候，尽量采用其它方式调优，而不要轻易牺牲掉外键。有外键约束的时候，写程序的确会有约束，但从直觉上说这种约束一定程度上揭示了设计或实现上不合理的地方。带着外键写出来的应用更倾向于严谨。产品上线之前如果确实需要通过牺牲外键达到性能上的优化，再捡相对不重要的外键废弃掉，同时要把这个document下来，下次遇到数据不一致问题的时候，是个线索。两点说明：1. 我们在做的一个项目确实是小项目。&nbsp; 2. 我得承认我最近三年开发都不用关系型数据库，貌似 no sql那么nb的key-value pair存数据，其实这三年在持久层上很多纠结。如果我说的不对，请指正！</u></p> <p>&nbsp;</p> <p>下面引用一些有见地的想法：</p> <p><strong>&#215; 支持外键的：</strong></p> <p>1. 你的程序再严谨也有可能出现BUG;你自己判断不如交给数据库判断，它做得又快又好。<br>&nbsp;&nbsp;&nbsp; 大多数人的程序没有考虑并发问题。一旦考虑了就得手工加锁，效率很低。<br>&nbsp;&nbsp;&nbsp; 数据可能绕过你的应用程序进入数据库。<br>2. 性能问题：难道你自己做就没有开销？<br>&nbsp;&nbsp;&nbsp; 一个外键判断分摊到事务级别，开销可以忽略，用户完全没有察觉。<br>&nbsp;&nbsp;&nbsp; 如果是批量导入数据，可以先暂时屏蔽外键，事后用NOVALIDATE选项快速恢复，前提是你的数据是干净的。 <p>&nbsp; <p>也有人提到了如果100张表可能需要建立300个约束，导致性能太差。<br>我要说的仍然是，是否这300个外键约束都是业务必须的，如果是，没有办法这就是必须要加的，如果不是，那么大可不必在所有的地方都增加外键。<br>如果在程序中仅对其中的5、6张表的10来个外键约束进行判断，然后和数据库中的300个外键去比较，并评价Oracle的外键性能太差，恐怕是有失公允的。 <p>&nbsp; <p><strong>&#215; 反对外键的：</strong></p> <p>的确外键在大系统中用的很少，在开发初级，设计数据库的时候一般会加入外键，以保证系统设计的完整性和业务需求的完整性，也便于开发人员了解业务规则，在程序中加以控制，很多大系统在系统稳定后，会逐步将外键去掉，以保证性能，将太多的功能强加于数据库，虽然说数据库很强大，但是毕竟很多人不信任数据库的能强大到什么都能干的地步。所以在一个大系统中外键见的少也不足为奇，小系统就无所谓了，用不用外键取决于设计人员，这样的系统也随处可见。 <p>&nbsp;</p> <p>&nbsp;</p> <p>另引用一篇：</p> <p>引自<a title="http://blog.csdn.net/neusoft_lkz/archive/2009/07/21/4366668.aspx" href="http://blog.csdn.net/neusoft_lkz/archive/2009/07/21/4366668.aspx">http://blog.csdn.net/neusoft_lkz/archive/2009/07/21/4366668.aspx</a></p> <p>数据库设计是否需要外键。这里有两个问题：一个是如何保证数据库数据的完整性和一致性；二是第一条对性能的影响。<br>正方观点：<br>1，由数据库自身保证数据一致性，完整性，更可靠，因为程序很难100％保证数据的完整性，而用外键即使在数据库服务器当机或者出现其他问题的时候，也能够最大限度的保证数据的一致性和完整性。<br>eg：数据库和应用是一对多的关系，Ａ应用会维护他那部分数据的完整性，系统一变大时，增加了Ｂ应用，Ａ和Ｂ两个应用也许是不同的开发团队来做的。他们如何协调保证数据的完整性，而且一年以后如果又增加了C应用呢？ <br>2，有主外键的数据库设计可以增加ER图的可读性，这点在数据库设计时非常重要。<br>3，外键在一定程度上说明的业务逻辑，会使设计周到具体全面。<br>反方观点：<br>1，可以用触发器或应用程序保证数据的完整性<br>2，过分强调或者说使用主键／外键会平添开发难度，导致表过多等问题<br>3，不用外键时数据管理简单，操作方便，性能高（导入导出等操作，在insert,&nbsp;&nbsp; update,&nbsp;&nbsp; delete&nbsp;&nbsp; 数据的时候更快）<br>eg:在海量的数据库中想都不要去想外键，试想，一个程序每天要insert数百万条记录，当存在外键约束的时候，每次要去扫描此记录是否合格，一般还不止一个字段有外键，这样扫描的数量是成级数的增长！我的一个程序入库在3个小时做完，如果加上外键，需要28个小时！&nbsp; <p>结论：<br>1，在大型系统中（性能要求不高，安全要求高），使用外键；在大型系统中（性能要求高，安全自己控制），不用外键；小系统随便，最好用外键。<br>2，用外键要适当，不能过分追求<br>3，不用外键而用程序控制数据一致性和完整性时，应该写一层来保证，然后个个应用通过这个层来访问数据库。   <img src ="http://www.blogjava.net/vcycyv/aggbug/344481.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/vcycyv/" target="_blank">人在江湖</a> 2011-02-17 00:58 <a href="http://www.blogjava.net/vcycyv/archive/2011/02/17/344481.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>分享十二本经典电子书，涉及java, OO design, spring, hibernate,struts2, agile</title><link>http://www.blogjava.net/vcycyv/archive/2011/02/14/344298.html</link><dc:creator>人在江湖</dc:creator><author>人在江湖</author><pubDate>Mon, 14 Feb 2011 13:45:00 GMT</pubDate><guid>http://www.blogjava.net/vcycyv/archive/2011/02/14/344298.html</guid><wfw:comment>http://www.blogjava.net/vcycyv/comments/344298.html</wfw:comment><comments>http://www.blogjava.net/vcycyv/archive/2011/02/14/344298.html#Feedback</comments><slash:comments>12</slash:comments><wfw:commentRss>http://www.blogjava.net/vcycyv/comments/commentRss/344298.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/vcycyv/services/trackbacks/344298.html</trackback:ping><description><![CDATA[<p>相信你们都读过其中的一些书，太经典了，值得反复玩味。每本都能从我的sky drive网络硬盘下载</p> <p>1. <a href="http://cid-d8b11f9bf86fecfa.office.live.com/self.aspx/.Public/books/Thinking.In.Java.4th.Edition.Dec.2007.eBook-BBL.pdf">thinking in java</a></p> <p>java developer常见案头书</p> <p>&nbsp;</p> <p>2. <a href="http://cid-d8b11f9bf86fecfa.office.live.com/self.aspx/.Public/books/Effective.Java.2nd.Edition.May.2008.pdf">effective java, 2nd Edition</a></p> <p>会写代码和写好代码的差距，可以靠这本书缩短。包含JDK1.5的feature. 太出名了，不多评论。</p> <p>&nbsp;</p> <p>3. <a href="http://cid-d8b11f9bf86fecfa.office.live.com/self.aspx/.Public/books/refactoring-improving%20the%20design%20of%20existing%20code.pdf">refactoring &#8211; improve the design of existing code</a></p> <p>Martin Fowler的经典著作之一。初看的时候一头冷汗，他指出的很多错误我也犯过。</p> <p>&nbsp;</p> <p>4. <a href="http://cid-d8b11f9bf86fecfa.office.live.com/self.aspx/.Public/books/Expert%20One-on-one%20J2EE%20Development%20Without%20EJB.pdf">J2EE Development Without EJB</a></p> <p>Rod Johnson单挑EJB的思想基本都反映在这里</p> <p>&nbsp;</p> <p>5. <a href="http://cid-d8b11f9bf86fecfa.office.live.com/self.aspx/.Public/books/Expert%20One-on-One%20J2EE%20Design%20^0%20Development.chm">J2EE Design &amp; Development</a></p> <p>作者仍然是Rod Johnson, 和上一本书是一个系列的好书，同样经典。</p> <p>&nbsp;</p> <p>6. <a href="http://cid-d8b11f9bf86fecfa.office.live.com/self.aspx/.Public/books/Addison.Wesley.Domain.Driven.Design.Tackling.Complexity.In.The.Heart.Of.Software.eBook-LiB.chm">Domain Driven Design &#8211; Tackling Complexity In The Heart Of Software</a></p> <p>近两年来对自己影响最大的一本书。俺到处推广之。</p> <p>&nbsp;</p> <p>7. <a href="http://cid-d8b11f9bf86fecfa.office.live.com/self.aspx/.Public/books/extreme^_programming^_explained^_-^_embrace^_change.^_2nd^_edition.chm">Extreme programming explained &#8211; embrace change 2nd edition</a></p> <p>第一版就备受推崇， 得了Jolt大奖，这是Kent Beck又经锤炼的第二版</p> <p>&nbsp;</p> <p>8. <a href="http://cid-d8b11f9bf86fecfa.office.live.com/self.aspx/.Public/books/Patterns%20of%20Enterprise%20Application%20Architecture.chm">Patterns of Enterprise Application Architecture</a></p> <p>很多人都是通过这本书认识Martin大叔的吧？ 哈哈，去年10月我亲眼见到了Martin Fowler，还问了问关于这本书的问题。</p> <p>&nbsp;</p> <p>9. <a href="http://cid-d8b11f9bf86fecfa.office.live.com/self.aspx/.Public/books/framework/Manning.Spring.in.Action.2nd.Edition.Aug.2007.pdf">Spring in Action</a></p> <p>自己是靠这本书入门Spring的</p> <p>&nbsp;</p> <p>10. <a href="http://cid-d8b11f9bf86fecfa.office.live.com/self.aspx/.Public/books/framework/ProSpring25.pdf">Pro Spring</a></p> <p>说实话，这本书只是简单翻过，讲了一些上一本书没cover到的东西。Amazon上评价相当高</p> <p>&nbsp;</p> <p>11. <a href="http://cid-d8b11f9bf86fecfa.office.live.com/self.aspx/.Public/books/framework/Manning.Java.Persistence.with.Hibernate.Nov.2006.pdf">Java Persistence with Hibernate</a></p> <p>学hibernate的不二之选</p> <p>&nbsp;</p> <p>12. <a href="http://cid-d8b11f9bf86fecfa.office.live.com/self.aspx/.Public/books/framework/Struts%202%20in%20Action.pdf">Struts 2 in Action</a></p> <p>Struts2这种技术不太适合看书学，应该直接看例子+google, 这本可以捡重点看看，然后当工具书使。</p> <img src ="http://www.blogjava.net/vcycyv/aggbug/344298.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/vcycyv/" target="_blank">人在江湖</a> 2011-02-14 21:45 <a href="http://www.blogjava.net/vcycyv/archive/2011/02/14/344298.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>svn迁移（dump &amp;amp; load） &amp;amp; 删除已保存的用户名</title><link>http://www.blogjava.net/vcycyv/archive/2011/02/13/344177.html</link><dc:creator>人在江湖</dc:creator><author>人在江湖</author><pubDate>Sun, 13 Feb 2011 03:53:00 GMT</pubDate><guid>http://www.blogjava.net/vcycyv/archive/2011/02/13/344177.html</guid><wfw:comment>http://www.blogjava.net/vcycyv/comments/344177.html</wfw:comment><comments>http://www.blogjava.net/vcycyv/archive/2011/02/13/344177.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/vcycyv/comments/commentRss/344177.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/vcycyv/services/trackbacks/344177.html</trackback:ping><description><![CDATA[<p><strong><font size="4">迁移</font></strong></p> <p>我使用visual svn作为服务器。使用方法参见我的另一篇博客： <a href="http://www.blogjava.net/vcycyv/archive/2011/01/30/343785.html">visualsvn</a></p> <p>1. 创建待备份的repository时，选中create default structure(trunk, branches, tags). check in 一些代码</p> <p>2. dump: 运行 svnadmin dump c:\svnRepo\forum &gt; forum.dump</p> <p>3. 在另一台机器上创建forum repository. 这次不要选create default structure</p> <p>4.&nbsp; load: 运行 svnadmin load D:\svnRepo\forum &lt; d:\tmp\forum.dump</p> <p>&nbsp;</p> <p><strong><font size="4">删除已保存的用户名</font></strong></p> <p><font size="2">win7下清空此目录下的文件 C:\Users\【user】\AppData\Roaming\Subversion\auth\svn.simple</font></p><img src ="http://www.blogjava.net/vcycyv/aggbug/344177.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/vcycyv/" target="_blank">人在江湖</a> 2011-02-13 11:53 <a href="http://www.blogjava.net/vcycyv/archive/2011/02/13/344177.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>备份mysql的bat脚本</title><link>http://www.blogjava.net/vcycyv/archive/2011/01/30/343788.html</link><dc:creator>人在江湖</dc:creator><author>人在江湖</author><pubDate>Sun, 30 Jan 2011 10:21:00 GMT</pubDate><guid>http://www.blogjava.net/vcycyv/archive/2011/01/30/343788.html</guid><wfw:comment>http://www.blogjava.net/vcycyv/comments/343788.html</wfw:comment><comments>http://www.blogjava.net/vcycyv/archive/2011/01/30/343788.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/vcycyv/comments/commentRss/343788.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/vcycyv/services/trackbacks/343788.html</trackback:ping><description><![CDATA[<p>连抄带改了一个，记录下来</p> <p>@echo off<br>set errorlevel=0 <br>set dump_command="C:\Program Files\MySQL\MySQL Server 5.5\bin\mysqldump" </p> <p>set db_bbs=bbscs8 <br>set db_bug=jtrac <br>set db_wiki=wiki </p> <p>set backup_dir=U:\bak\mysql\ <br>set timestamp=%date:~,4%%date:~5,2%%date:~8,2%_%time:~0,2%-%time:~3,2%-%time:~6,2% </p> <p>set backup_bbs_file=%backup_dir%%db_bbs%_backup_%timestamp%.sql <br>set backup_bug_file=%backup_dir%%db_bug%_backup_%timestamp%.sql <br>set backup_wiki_file=%backup_dir%%db_wiki%_backup_%timestamp%.sql </p> <p>set user_mysql=root <br>set password_mysql=virtual </p> <p>echo backup mysql database:%db_bbs% <br>%dump_command% -u%user_mysql% -p%password_mysql% %db_bbs% &amp;gt; %backup_bbs_file% </p> <p>echo backup mysql database:%db_bug% <br>%dump_command% -u%user_mysql% -p%password_mysql% %db_bug% &amp;gt; %backup_bug_file% </p> <p>echo backup mysql database:%db_wiki% <br>%dump_command% -u%user_mysql% -p%password_mysql% %db_wiki% &amp;gt; %backup_wiki_file% </p> <p>echo end backup</p><img src ="http://www.blogjava.net/vcycyv/aggbug/343788.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/vcycyv/" target="_blank">人在江湖</a> 2011-01-30 18:21 <a href="http://www.blogjava.net/vcycyv/archive/2011/01/30/343788.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>visualsvn(转)</title><link>http://www.blogjava.net/vcycyv/archive/2011/01/30/343785.html</link><dc:creator>人在江湖</dc:creator><author>人在江湖</author><pubDate>Sun, 30 Jan 2011 10:16:00 GMT</pubDate><guid>http://www.blogjava.net/vcycyv/archive/2011/01/30/343785.html</guid><wfw:comment>http://www.blogjava.net/vcycyv/comments/343785.html</wfw:comment><comments>http://www.blogjava.net/vcycyv/archive/2011/01/30/343785.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/vcycyv/comments/commentRss/343785.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/vcycyv/services/trackbacks/343785.html</trackback:ping><description><![CDATA[<p>今天试用了一下，很好，转贴自：<a href="http://blog.csdn.net/mini_snow/archive/2008/11/01/3197017.aspx">http://blog.csdn.net/mini_snow/archive/2008/11/01/3197017.aspx</a></p> <p>VisualSVN Server----更方便使用的SVN服务器 收藏 <br>&nbsp; 前发现了一个好用的服务器端软件VisualSVN Server。下面就其安装及配置方法作一简略介绍： </p> <p>1） 安装 <br>这里我们下载Windows平台下的VisualSVN Server，地址在这里，下载后，双击安装，弹出下面的对话框，可以更改Respositories仓库路径： </p> <p><img alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/mini_snow/EntryImages/20081101/VisualSVN_Server_install.png"></p> <p>2）使用VisualSVN Server Manager进行配置 <br>安装完毕，默认会弹出VisualSVN Server Manager管理器，在管理器中的Repositories目录下可以创建我们将要上传源码的目录结构，如图所示，红框内是该目录在服务器上的http地址： </p> <p>注意：在Resposiories下目录创建之前，首先要在Users目录创建拥有上传下载权限的用户及其密码（如：用户：mike, 密码：123） </p> <p><img alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/mini_snow/EntryImages/20081101/svn_url.png"></p> <p>3）上传源码 <br>这里我们使用Eclipse的svn插件来上传源码，选中所要上传的工程，右键Team-&gt;Share Project，弹出对话框，选中SVN项，继续到下一页，如下图示： </p> <p>&nbsp;&nbsp; URL栏填入目录服务器的http地址，User及Password栏填入mike和123,进入下一步，如有warning对话框弹出，选择"Trust Always"即可，svn代码提交方法不在这里赘述。提交完毕，即可看到Eclipse工程源码出现svn服务器地址或版本号。 </p> <p><img alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/mini_snow/EntryImages/20081101/UploadCode.png"></p>   <img src ="http://www.blogjava.net/vcycyv/aggbug/343785.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/vcycyv/" target="_blank">人在江湖</a> 2011-01-30 18:16 <a href="http://www.blogjava.net/vcycyv/archive/2011/01/30/343785.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>