<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>zq0459</title>
    <description></description>
    <link>http://zq0459.javaeye.com</link>
    <language>UTF-8</language>
    <copyright>Copyright 2003-2008, JavaEye.com</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>JavaEye - 做最棒的软件开发交流社区</generator>
      <item>
        <title>蔡世友--失望与迷惘，软件及程序员的价值在哪里？</title>
        <author>zq0459</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zq0459.javaeye.com">zq0459</a>&nbsp;
          链接：<a href="http://zq0459.javaeye.com/blog/200342" style="color:red;">http://zq0459.javaeye.com/blog/200342</a>&nbsp;
          发表时间: 2008年06月05日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <strong>原文地址：http://blog.csdn.net/easyjf/archive/2008/06/04/2509604.aspx<br />我觉得这篇文章提到了一些不错的问题，希望大家来一起讨论一下。   </strong> <br />越来越觉得在中国做程序员很没意思，甚至找不到中国软件公司及程序员的价值在哪里。<br />　　先来看一个简单的例子，公司接了一个小case，花了两个月，给客户报的是20个人月，两个月后项目验收，客户交付30万。而实际的情况是，公司是一个小公司，核心开发人员就你一个人，另外配了两个刚从学校毕业的学生协助你，还花3000块钱请了一个美工来搞后台的美工设计。<br />　　直接人工成本：你的工资按1万元/月算，两个月也就两万块。毕业生每月工资2500块，2500*2*2=１万块，而美工费用3000块，全部合计下来也就33000块。其它成本：公司水、电、办公设备磨损及其它相关，１万块，市场、管理成本等算５万块。<br />　　全部合计下来也就是9.3万，30减9.3等于21.7万，如此算来公司的利润其实是很高的。<br />　　然而，实际上是这个软件公司做不到一年就有可能发不起这几个人的工资而倒闭，因为中国这样的软件公司太多了。于似乎，很多老板觉得开软件公开还不如开一个家装公司或者开一个小茶馆划得来。<br />　　而程序员呢？你一定会老惦记着老板赚了21.7万，而你却只能拿到区区两万。你难免会觉得很吃亏，甚至有点受伤。觉得你的知识、智慧等都被老板剥削了，无论如何您一定会有点不愉快。<br /><br />　　再来看一个例子，你花两个月写了一个程序，工作态度、热情、投入的时间及精力等都远远超过上面那个30万的项目，因为这个项目是你自己的，同时也是你感兴趣的。然而你把这个项目拿到市场上，用户都评价很不错，然而由于用户都是做软件的，当你免费给他们使用的时候他们都说好，而当你说要收取一点费用（也就几十块）的时候却遭来一片骂。最可笑的是，你收到一笔费用，当你在为之感到有点欣慰的时候，你却发现自己的软件被别人拿来当成他的在网络上销售。你感觉自己是在被同行赤裸裸的欺负却哭都哭不出来。我想这样的例子有很多同行都经历过。<br /><br />　　最后再来看一个发生在我朋友身上的例子，他们基于Ext技术做了一个WebIM系统http://www.vifir.com/entry/view/1638400.html，并放在http://www.vifir.com/my.ejf上作测试，有不少公司表示对他们的系统感兴趣，想这个功能移植到他们的OA、业务管理等系统中。于是他们抱着试一试的态度，把这个系统推入市场，他们的现有客户主要都是软件开发公司，把系统成功移植到了一些企业应用系统中，从中他们收取了一定咨询费用，效果反馈还不错。客户把这系统集成到自己的系统中后，在报价的时候就可以很有底气地在这个IM功能模块上加上一笔(肯定是高于成本Ｎ倍)，而且也是非常受用户欢迎的功能。<br />　　Vifir有很多用户也对该功能感兴趣，于是他们在最近把该系统单独从vifir.com中提取了出来，并编写了系统的开发文档与源码一起打包起来，以比较低的价格提供给编程爱好者。但问题就出来了，很多人说这个Web IM不值钱，说人家那个spring那么多代码、那么多文档不但完全开源，而且全部免费，而他们这个却尽然要收费。有些人觉得更可恶的是， vifir.com网站即然叫 “开源人”，那么就应该把所有的东西开源，甚至有不少人找上门来要vifir.com的整站源码，他们花了九牛二虎的力来给他解释vifir.com官网的源代码是不开放的。<br /><br />　　综合上面的三个例子，我感到有点迷惘，软件及程序员的价值在哪儿的？谁会为程序员的辛勤劳动买单。老板不愿意、客户不愿意、自己的同行似乎更不愿意，感觉同行们更热衷于破解，热衷于免费。
          <br/>
          <span style="color:red;">
            <a href="http://zq0459.javaeye.com/blog/200342#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 05 Jun 2008 09:12:29 +0800</pubDate>
        <link>http://zq0459.javaeye.com/blog/200342</link>
        <guid>http://zq0459.javaeye.com/blog/200342</guid>
      </item>
      <item>
        <title>技术选型带来的困扰</title>
        <author>zq0459</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zq0459.javaeye.com">zq0459</a>&nbsp;
          链接：<a href="http://zq0459.javaeye.com/blog/189490" style="color:red;">http://zq0459.javaeye.com/blog/189490</a>&nbsp;
          发表时间: 2008年05月04日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          公司接到一个ERP系统改造的项目，数据库采用原有的AS400上的DB2 5.4。数据量巨大，大约有30年的历史了，而且表之间没有关联关系。由于本人技术能力有限，所以在技术选型时感到很迷茫。迷茫的原因是一方面要考虑到系统性能问题，另一方面还要考虑开发的难易程度和系统健壮性，等等一系列问题。<br />我将目前比较流行的技术方案分别做了一个demo，并且以查询10万条数据为标准做性能测试。结果如下：<br /><br />方案名称	               第一次执行耗时	第二次执行耗时	第三次执行耗时<br />Struts+Jdbc	                2192ms	1315ms	1299ms<br />Struts+Spring(JdbcTemplate)	2335ms	1317ms	1299ms<br />Struts+Ibatis	                3081ms	1525ms	1458ms<br />Struts+Spring+ibatis	        4172ms	2969ms	2938ms<br />Struts+Hibernate	   Java.lang.OutOfMemoryError: Java heap space<br /><br />测试方法是在Action中调用DAO中的方法，在调用方法前和返回数据后，打印当前时间来计算查询所耗费的时间。<br />开始的时候想采用Struts+Spring+ibatis这个方案，但是通过测试后，发现这个方案的耗时要比采用Struts+Spring(JdbcTemplate)高出将近2秒。Struts+Spring(JdbcTemplate)在性能上占有一定的优势，可是在编写代码上总是给人一种不太舒服的感觉，代码如下：<br />public List&lt;Employee> getEmployeeList() {<br />	   <br />		// TODO Auto-generated method stub<br />		String sql = "select * from employee where id&lt;?;";<br />		<br />		return jdbcTemplate.query(sql, new Object[]{100000},<span style="font-size: medium"> new RowMapper()</span>{<br />			public Object mapRow(ResultSet rs,int index)throws SQLException{<br />				Employee employee = new Employee();<br />				employee.setId(rs.getInt("id"));<br />				employee.setDempId(rs.getInt("emp_id"));<br />				employee.setEmpId(rs.getInt("dept_id"));<br />				employee.setFirstName(rs.getString("first_name"));<br />				employee.setLastName(rs.getString("last_name"));<br />				employee.setJobCat(rs.getString("job_cat"));<br />				employee.setSalary(rs.getInt("salary"));<br />				<br />				return employee;<br />				<br />			}<br />			<br />			<br />		});<br />		<br />		<br />	}<br />可能一直使用Hibernate的原因吧，总感觉这段代码不太舒服。而且Spring(JdbcTemplate)没有提供分页功能，实现起来比较麻烦。<br />希望各位高手能给在下一些建议？谢谢先！<br /><br /><br /><span style="font-size: large"><strong><br />2008/05/07补充：<br />由于昨天没机会看帖子，今天刚回来就看到这篇帖子已经出现在了首页。<br />激动之余发表两点感谢：<br />1.狂谢热心参与本次讨论的各位朋友们，小弟将会把最终的项目案例与大家分享，希望能为中国软件事业的崛起贡献微薄之力。<br />2.感谢javaeye提供了这样好的交流平台，希望今后越做越好。</strong></span>
          <br/>
          <span style="color:red;">
            <a href="http://zq0459.javaeye.com/blog/189490#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 04 May 2008 19:33:46 +0800</pubDate>
        <link>http://zq0459.javaeye.com/blog/189490</link>
        <guid>http://zq0459.javaeye.com/blog/189490</guid>
      </item>
      <item>
        <title>请大家指教hibernate3+spring2的批量删除问题？</title>
        <author>zq0459</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zq0459.javaeye.com">zq0459</a>&nbsp;
          链接：<a href="http://zq0459.javaeye.com/blog/87302" style="color:red;">http://zq0459.javaeye.com/blog/87302</a>&nbsp;
          发表时间: 2007年06月06日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <span style="font-size: 18pt"><span style="color: blue">从前台表单能获取到容纳id的数组，根据id来删除表记录，以下是我的dao方法。</span>public void delAllCache(String[] id) {<br />  for (int i = 0; i &lt; id.length; i++) {<br /><br />    getHibernateTemplate().delete(findById(new Long(id[i])));<br /><br />	}<br />		   <br />}<br /><span style="color: blue">可是这样做存在很大的效率问题。请大家指教一条更优解决方案。</span></span>
          <br/>
          <span style="color:red;">
            <a href="http://zq0459.javaeye.com/blog/87302#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 06 Jun 2007 09:37:39 +0800</pubDate>
        <link>http://zq0459.javaeye.com/blog/87302</link>
        <guid>http://zq0459.javaeye.com/blog/87302</guid>
      </item>
  </channel>
</rss>