<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>JavaEye论坛最新讨论</title>
    <description>JavaEye论坛最新讨论 - Java编程，Ruby编程，微软.net，AJAX，敏捷软件开发，综合软件技术</description>
    <link>http://www.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>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://david-lv.javaeye.com">david_lv</a>&nbsp;
          链接：<a href="http://www.javaeye.com/topic/231239" style="color:red;">http://www.javaeye.com/topic/231239</a>&nbsp;
          发表时间: 2008年08月21日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          写了《三五个人十来条枪 如何走出软件作坊成为开发正规军》（一）、（二）、（三）后，每篇都点击上万跟贴评论无数。<br /><br />  有网友评论我之前的几篇博文：分析的不错，方案似乎也很能解决问题！不过必须满足一个潜条件：一定要找到非常合适人。现实中，就连最基本的程序员，找个合格的也不容易（聪明伶俐的养不住、经验丰富的养不起、迟钝呆傻的没法要、碰上心术不正的还够你喝一水壶的）<br /><br />  还有网友评论：楼主所说的很多方法，都是假设了客户还不错、对项目的重视程度、习惯于正规化的程度都还过得去，而楼上有些朋友的质疑则是指出这些资源不一定满足的情况；<br /><br />  但是跟贴最多的评论就是：现实问题描述的很精确，但解决方案不现实，太理想化，老板根本不可能给你人。如果真的发慈悲心，也是给你一个新人让你哭死。你想主导项目，省省吧，死了你的心吧，一切都是老板说了算。而且，你敢和客户说个不字，看来你是不想要你的饭碗了。还是乖乖敲好你的代码，多干活，多跟客户搞好关系。高手做啥都是高手，低能再培养再有方法管理他也是低能。你这样研究，只能吃饱饭瞎想瞎扯蛋，有你这工夫，早就把项目做好了。<br /><br />  种种评论来看，一切的根源都是人，是人。大家都觉得我的方法要想实施，必须老板支持，员工也是高素质的，客户也是高素质的。而三者要想凑到一起具备，根本不可能。所以我的方法算是理想的痴人说梦。<br /><br />  能支持的老板从哪里来？高素质的员工从哪里来？高素质的客户从哪里来？好像一切都是运气而来。好像我们就有高薪能聘得起高素质的员工。好像我们的产品面对的就是高素质的客户。<br /><br />  但我回顾了自己10多年的从业经验和管理经验，我并没有发现这个规律。我并非供职国际巨头公司，也不是国内知名企业，只是信息化行业内略有名气而已。手下很少出现名牌大学的员工，也很少能达到所谓的高薪（我自认自己还没有在马云、史玉柱、牛根生、柳传志这样大胸怀大眼光的企业家手下任过职，我们所从事的行业信息化也不是暴利的行业，大家也都知道管理软件没啥暴利，定制化修改、实施、咨询、培训、支持占去了很多成本。），我们的客户也是各种各样的人都有，从挖煤暴发户的私营老板到死气沉沉勾心斗角的国企，我们的客户千奇百怪。<br /><br />  在这样的环境下，我能把方法用起来，我和许多网友也交流过，最重要的是我认可了以下观点，这就是一个职业经理人和老板的关系：<br /><br />  1老板都是疑人也用用人也疑。用人不疑，疑人不用，我不奢望。<br /><br />  2再劳苦功高，我也只是职业经理人，我不拥有这个企业的哪怕1%所有权，所以我做好职业经理人本分，老板的归老板，职业经理人的归职业经理人。职业经理人的职责范围的，老板权力范围的，不要超越，也不要动歪脑筋。即使公司大部分的收入都是你研发的产品带来的。<br /><br />  3计划不计划一件事情，执行不执行一件事情。一定要以老板利益为目的。老板不赚钱，一切好事一切好想法都会被老板推翻，老板就是老板。老板赚钱赚的眉开眼笑，其他的事情就好办的多。这是很多职业经理人居然都认识不到的，他们总抱怨老板限制太死，什么资源也不给，干活还贼累。根源就出在这里了。想实现你的想法，必须在实现了老板想法和目的的前提下才能做。所以我的方法能实现，多靠此。<br /><br />  4而且我的方法不是为了我自己有什么好处，我的每一个方法也都不是为了正规化装修门面图好看。我的方法都是为了解决实际问题，为了老板赚钱更快更省成本更容易，员工更省力，客户更满意，而且每个方法都是在本企业能力和成本范围内能执行落地的解决方案。这样的解决方案，哪个老板会不支持呢。但很奇怪的是，很多研发部主管都忽略这个重点，老板在想利益，他在想技术。两人说不到一个目的去，互相不理解互相不支持互相埋怨，久而久之互相猜疑互相提防互相留一手。其实技术就是个手段，赚钱是目的，双方一起绑定去赚钱，怎么合法的赚更多钱怎么来。如果研发主管能脚踏实地的从本企业的能力和困境和现状去思考改进方法执行落地，而不是抱怨这样的环境没法实现想法消极怠工或心想跳槽，我想很多心结就都打开了。<br /><br />  只有和老板具备了这样的距离和关系，我的方法才好实施下去。所以，很多人觉得太理想化，就是和老板没有找到自己的位置。<br /><br />  但是，即使有这样的基础，要实现我所述的方法，也需要其他的环境支持。<br /><br />  我个人是这么看的：<br /><br />  1好的氛围，才会引入、留住好的人（乱世强盗多就是这个理）。<br /><br />  2好的人，才会有好的制度，并且保持好这个制度（制度是人定的）。<br /><br />  3好的人和好的制度，才会遇到好的客户（有句老话，夜路走多了总会遇见鬼。有些人老想着邪门事，最后也被邪人玩。近朱者赤近墨者黑，什么人总遇到什么人，就这个道理）。好客户就会产生好的结果。<br /><br />  所以，好的人才，好的客户都不是运气来的，而是来自你自己。你就是控制源头的人。<br /><br />  如何制造好的氛围，我讲讲我的职业经理人管理人的一些心得：<br /><br />  1师傅制。这里没有总监，没有经理，只有师傅，老师。总监，经理，会让员工产生隔阂，距离，权力争斗。每一个人总有一个师傅。每一个新人进来，都要指定一位合适的师傅。尤其是新人，更要短期内注意看时候合适，不合适就要更换合适的师傅。什么问题都可以问师傅，从技术到公司制度到公司新闻公司历史到职业发展规划到个人生活问题。团队的凝聚力，配合性，归属感，责任感，很多问题都被人的感情消化了。<br /><br />  2朝九晚五，禁止加班。其实大部分程序员也是不喜欢加班的（不过有些程序员是光棍，也是漂在北京，反正也是一个人，于是就喜欢呆在公司上网玩游戏看小说看电影吹空调，美其名曰加班。还有一类老板喜欢看表面功夫，谁加班就喜欢谁，于是大家都装做很忙都要加班）。因为加班不给钱。不给钱，还加班，天长日久就觉得自己很亏，心里不平衡，各种心思就都有了。其实也没有多大的事。我的老板一开始对我的不加班也是心存戒心，但是每次交给他的结果比加班的部门做的都好都快，他也就默许了。<br /><br />  3良好的办公环境和良好的个人形象。我们看到美女就兴奋的口吐莲花，我们看到阳光溪水草地我们就心情舒畅。当然，我们看自己，别人看我们，都是一个道理。心情好，工作才能好。一个满桌狼藉充满烟味饭味脚丫子味有人在冥思苦想解决问题有人在打游戏有人在放朋克音乐有人在骂有人在打闹嬉笑有人把脚放到桌子上的办公环境，我看谁都会逃离。<br /><br />  4以更快更省成本更容易完成任务为目标，以赚更多钱为目标，以提高产品质量产品价值产品售价为目标，鼓励员工进行自我岗位上的改进创新，我经常给与交流和指导，一旦有效，进行精神或物质的奖励或职位提拔或工资晋级。<br /><br />  好的氛围有了，就需要有好的人才。以下是我引入好的人才的几个心得：<br /><br />  1人的年龄和工作经验拉开距离。年年招，时时招。不断看人，试人，滤人，培养人，形成层次感有阶梯有接力的员工组织，绵绵不断前赴后继，不会出现人才地震、集体疲劳、小团伙争斗。避免不同高低职位上全是80-84年的人。下属还在窝里斗互相不服（很多员工不看对方能力，就看对方的工资和年龄。凭啥你就是我师傅？），那么客户逼你，老板压你，其他部门利益冲突你，下属还闹你，你这个孤独人算是失道者寡助也。<br /><br />  2人的技术能力高低先放一边。首先要过EQ关。有些中小型企业没有HR经理，一般考察EQ，都是老板把关。如果你现在招人没有老板把关，那么必须先考察人的EQ，再考察他的技术能力。我最怕有些羡慕科学管理的管理者照搬什么EQ测试问卷或什么团队游戏来评测。我的评测方法仍然是不讲道理，要讲经历。没有工作经历，至少有学习经历和生活经历吧。一个人的情感、压力、正义感、真诚感、领悟力、心细观察力、思路整理总结能力、关注全面平衡能力、执着力，都能看的出来。<br /><br />  招聘程序员也得看这些。我曾遇到一个程序员，思维混乱所以代码也混乱，思考也不全面，程序到处都是漏洞，思路也不自我整理总结，无法举一反三，给他讲了多遍的需求他都无法自己重述，一有了问题很急躁说搞不定了，一看还是很简单的问题，把错误提示原模原样输入到百度中查百度就能搜到好多，你说这样的程序员算技术合格吗？<br /><br />  其实，试用期的三个月就是主要看他的EQ和他的技术能力、理解学习成长能力，而不是片面只看他的现状技术能力。一个不愿意学习钻研，没有方法钻研快速学习理解，推一下动一下，或者怎么说都理解不了的，都需要统统辞掉。另外，对于心术不正有仇必报不服管教之类，早就扫出门外。一个讲究吃穿用享受或者满口脏话习惯毛病一堆或者不孝顺父母或者满口介词的人坚决不能要。<br /><br />  3专业发展，流程协作。如果不专业化，老板有什么活就分配什么活，时间短了还认为自己是在学习更多知识在锻炼。时间长了就会觉得自己就像个混子，干什么都干过，但什么都拿不起来。出去应聘啥职位，是应聘开发呢，项目经理呢，实施呢，支持呢，销售呢。啥都做过，但啥都没做专，都了解个皮毛，真要让上手还真给人家拿不下来。心就慌了，觉得自己是个被老板困在手心的小鸟，无法飞出本企业的樊笼，一旦飞出就要饿死没有能力存活。好可怕。难道只能在这家公司耗死了？赶快能逃逃吧，逃到一个正规的专业的公司去。<br /><br />  4下一阶段目标交流制定。交流，我想每个CTO或技术总监或研发经理都会做。交流可以了解员工的困难和心中的疑惑、个人期望、个人专业兴趣的变化、人生观世界观技术观管理观生活观（以调整自己以后和该员工如何交流、如何讲解工作、如何鼓励、如何布置任务、如何考察等等）。交流也可以让员工多了解自己是怎么想的。双方在日常很多事情的分歧和误解就会消除，心会往一处想，劲会往一处使。但是，交流也不仅仅实现这些目标。更重要的是，交流，主要为了能给该员工制定一个切实可行的、某段时间段内可达到的、他也喜欢也愿意努力的、也会他未来职业发展很有好处的职业目标。没有目标的工作，虽然他很努力，但是他容易迷失方向。如果他又是一个不能很有悟性很有规划的人，他的工作就会形成做一天和尚撞一天钟。撞钟撞的不错，但没什么更高层次的提高。天长日久，就会木然，倦怠，不思进取，思想守旧，遇到新问题无法突破。所以，我会根据双方的交流，和员工一些协商一个下一阶段的职业发展目标，并且时常指导调整他的做事方法和思考方法，给他讲解一些我过去的工作经验和我的感受，鼓励指导他们有计划有目标的走的更高更专业。这是很多研发部门主管没有做的一点。<br /><br />  最后有几句话和大家分享一下：<br /><br />  1毛主席说：社会主义就是打土豪分田地（不是资本论这样的天人天书），要天天讲，时时讲，到处讲，要团部建设到连队。所以，借用毛主席的方针，咱们的团队精神建设也得这样。天长日久，就形成了文化精神，就形成了习惯。<br /><br />  2习惯决定性格，性格决定命运，细节决定成败
          <br/>
          <span style="color:red;">
            <a href="http://banner.javaeye.com/topic/231239#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/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 21 Aug 2008 16:35:04 +0800</pubDate>
        <link>http://www.javaeye.com/topic/231239</link>
        <guid>http://www.javaeye.com/topic/231239</guid>
      </item>
      <item>
        <title>各位，帮看看简历，在北京能值多少钱</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://httplei.javaeye.com">不是流氓</a>&nbsp;
          链接：<a href="http://www.javaeye.com/topic/230584" style="color:red;">http://www.javaeye.com/topic/230584</a>&nbsp;
          发表时间: 2008年08月20日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          姓    名: XXX  <br />性    别: 男 <br />出生年月: 1987年10月23日  <br />籍    贯: XXX<br />民    族: 汉 <br />政治面貌: 共青团员 <br />身体状况: 良好 <br />学    位: 本科 <br />学    历: 本科<br />毕业学校: XXXXX<br />所在院系: 计算机科学与技术 <br />户    口: 天津<br /><br />专业能力: <br />    1﹑熟悉java语言，熟悉并且能够使用struts，spring，hibernate，ibatis，webwork等框架，会使       用EJB（不熟悉）。理解面向对 象的设计方法，掌握aop面向方面的编程思想<br />    2﹑熟悉c++语言，了解MFC<br />    3﹑熟悉javascript<br />    4﹑有ext2.0的使用经历<br />    5﹑熟悉ruby on rails<br />    6﹑熟练使用mysql，sqlserver2000<br /><br />实   践: <br />    2007年8月-12月:个人网站制作，使用rails+mysql <br />    2007年8月-10月:XXXX平台，参加天津市华苑杯，获得三等奖<br />    2007年11月-2008年1月:XXX物流管理系统，使用struts+spring+hibernate+sqlserver2000。<br />    2008年3月-4月:局域网内部聊天软件，支持聊天记录服务器记载，支持文件传输等功能，使用MFC<br /><br />工作经验:<br />    2008年4月 -- 8月： 天津XXXXXX技发展有限公司 <br />    担任职务: 软件工程师<br />    公司规模: 25人<br />    工作描述: 主要从事web部分的开发，公司管理人员对公司整个运作流程的管理:客户管理，游戏管理<br />              wap站点管理﹑每月账单报表等功能<br />    主要责任:整个系统的开发和维护<br /><br />教育背景:<br />   软件工程﹑c++程序设计﹑数据库原理﹑组成原理﹑接口技术﹑<br />   编译原理﹑体系结构﹑算法程序设计﹑网络数据库<br /><br />外语语种: 英语 <br /><br />求职意向: 软件开发制作<br />联系方式 手机：XXXXXX<br />宿舍电话:XXXXXXX<br />Email：XXXXXX<br />个 人 简 介:<br />	适应能力比较强，有良好的心理状态面对工作压力。工作认真负责，有团队精神。学习能     <br />	力较好，勤于思考。待人诚恳，对软件开发工作浓厚的兴趣和热情。<br /><br /><br />希望各位给个建议，我不知道怎么谈工资
          <br/>
          <span style="color:red;">
            <a href="http://banner.javaeye.com/topic/230584#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/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 20 Aug 2008 11:37:33 +0800</pubDate>
        <link>http://www.javaeye.com/topic/230584</link>
        <guid>http://www.javaeye.com/topic/230584</guid>
      </item>
      <item>
        <title>晒工资了！</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://tongue.javaeye.com">tongue</a>&nbsp;
          链接：<a href="http://www.javaeye.com/topic/229889" style="color:red;">http://www.javaeye.com/topic/229889</a>&nbsp;
          发表时间: 2008年08月18日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          北京，满两年工作经验,税前6000，5险1金+补充医疗保险，其他啥都没有，是啥水平？
          <br/>
          <span style="color:red;">
            <a href="http://banner.javaeye.com/topic/229889#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 18 Aug 2008 17:59:52 +0800</pubDate>
        <link>http://www.javaeye.com/topic/229889</link>
        <guid>http://www.javaeye.com/topic/229889</guid>
      </item>
      <item>
        <title>检查框架</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://carl-kkx-hotmail-com.javaeye.com">carlkkx</a>&nbsp;
          链接：<a href="http://www.javaeye.com/topic/231275" style="color:red;">http://www.javaeye.com/topic/231275</a>&nbsp;
          发表时间: 2008年08月21日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          发现一个很不错的一个Tip<br />　　<br />https://balloontip.dev.java.net/<br /><br />基于该库写了个检查框架，用在了我的一个项目中。<br /><br />　检查框架的思路在于构建一个被检查组件的包装器<br />　　public class CoolCheckTip {<br />　　 public CoolCheckTip(JComponent com,CoolCheckListenerlistener) {<br />　　 }<br />　　............<br />　　}<br />　　<br />　　下面是Listener的接口定义,如果实现check函数检查到错误返回相应错误描述便可，如果没有错误返回null<br />　　public interface CoolCheckListener {<br />　　public String check(JComponent com, CoolCheckTip cct, String type);<br />　　}<br />　　<br />　　这样需要对那个组件进行检查只要包装它就行了<br />　　<br />　　new CoolCheckTip(textfield,listener）;<br />　　<br />　　CoolCheckTip会自动监听textfield的key事件，然后发生事件时调用checklistener的check函数，如果 check函数返回错误CoolCheckTip会显示出来，这里我采用balloontip显示检查结果。这样对于框架的使用者这无需操心这些。这些都是 CoolCheckTip干的。<br />　　<br />　　光这样还不够，如果有人输入错误也提示了但是他不改正就直接点击比如成交或确定之类的按钮去了。<br />　　CoolCheckTipManager类登场了，它可以<br />　　public boolean addCoolCheckTip(CoolCheckTip cct)<br />　　public boolean removeCoolCheckTip(CoolCheckTip cct)<br />　　public CoolCheckTip removeCoolCheckTip(int index)<br />　　等方法。<br />　　然后提供一个统一的public boolean check()函数<br />　　<br />　　这样你在使用CoolCheckTip包装的时候，可以将CoolCheckTip加入其内。等到你在某处需要查看一下所有的组件是不是都OK了，只要调用CoolCheckTipManager便可。<br />　　<br />　　如此一来写检查提示是不是变得方便很多了。。。 <br /><br /><br />　　
          <br/>
          <span style="color:red;">
            <a href="http://banner.javaeye.com/topic/231275#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/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 21 Aug 2008 17:31:25 +0800</pubDate>
        <link>http://www.javaeye.com/topic/231275</link>
        <guid>http://www.javaeye.com/topic/231275</guid>
      </item>
      <item>
        <title>SQL 小技巧</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://ajoo.javaeye.com">ajoo</a>&nbsp;
          链接：<a href="http://www.javaeye.com/topic/230492" style="color:red;">http://www.javaeye.com/topic/230492</a>&nbsp;
          发表时间: 2008年08月20日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          很久不搞sql了。整天就是java, java，也挺无聊的。<br /><br />其实想想，sql还是挺好玩的，尤其是把别人吭哧吭哧几百行的stored procedure改写成一个简洁的query，或者一个本来要跑十分钟的stored proc改成几秒钟，感觉还是满爽的。<br /><br />闲来无事，把一些小技巧回忆下来，省得以后考人的时候想不起来了。<br /><br />1。一个基金performance表，记录着每个基金的每个月相比于前一个月的增长百分率，比如：<br />一月： 2.1（%）<br />二月： -0.5 (%)<br />三月：<br />...<br />十二月：15 (%)<br /><br />基金用基金ticker来标识。<br /><br />请列出每个基金从去年五月到今年五月的总共增长。 <br /><br />2。每个基金每个月都有打分，从一分到五分。请列出最近一年内每个基金被打五分的次数，四分的次数，三分的次数。如果一个基金被打至少三分的次数少于两次，就不要列出来了。<br /><br />3。请针对上一年列出每个基金增长最好的那个月，包括基金ticker，当月的增长百分比，当月打分。如果两个月增长幅度相同，选择打分高的那个月；如果打分也相同，选择最近发生的那个月。<br /><br />4。假设基金表不小心出现了重复数据，也就是ticker, 月份都相同，但是id是主键，唯一的。请删除重复记录。对重复记录，保留打分高的那条，如果打分也一样，保留其中任意一条。（其实，这个和三是一样的，不过算一个比较常见的dba要面临的问题）<br /><br />（答案回头有时间写出来。提示：珍爱生命，远离存储过程！）<br /><br />(I have discovered a truly marvelous proof of this, which this margin is too narrow to contain.)
          <br/>
          <span style="color:red;">
            <a href="http://banner.javaeye.com/topic/230492#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/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 20 Aug 2008 11:13:12 +0800</pubDate>
        <link>http://www.javaeye.com/topic/230492</link>
        <guid>http://www.javaeye.com/topic/230492</guid>
      </item>
      <item>
        <title>rails 框架里的模型(模型)继承和类的问题</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://deferling.javaeye.com">deferling</a>&nbsp;
          链接：<a href="http://www.javaeye.com/topic/231411" style="color:red;">http://www.javaeye.com/topic/231411</a>&nbsp;
          发表时间: 2008年08月22日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          开发中遇到一个问题<br />ReportRequest是一个表对应一个model:report_request.rb<br /><br />model report_request.rb 里面<br />class ReportRequest &lt; ActiveRecord::Base<br /><br />model TeikiRecountRequest.rb 里面<br />class TeikiRecountRequest &lt; ActiveRecord::Base<br /><br />model spot_report_request.rb 里面<br />class SpotReportRequest &lt; ReportRequest<br /><br />现在用 ReportRequest.find 方法在数据库里取数据<br />为什么取出来的对象会是SpotReportRequest 或者 TeikiRecountRequest 的类的对象<br /><img src="/images/smiles/icon_cool.gif"/><br />请教大家谢谢
          <br/>
          <span style="color:red;">
            <a href="http://banner.javaeye.com/topic/231411#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/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 22 Aug 2008 09:11:09 +0800</pubDate>
        <link>http://www.javaeye.com/topic/231411</link>
        <guid>http://www.javaeye.com/topic/231411</guid>
      </item>
      <item>
        <title>打算跳槽 JAVA系统架构师 上海</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://ahgf.javaeye.com">ahgf</a>&nbsp;
          链接：<a href="http://www.javaeye.com/topic/230153" style="color:red;">http://www.javaeye.com/topic/230153</a>&nbsp;
          发表时间: 2008年08月19日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          求职 JAVA系统架构师 上海<br /><br /><br />个人简介：<br />1、大专<br />2、计算机专业<br />3、8年JAVA项目经验<br />4、1个2000万项目经验（保险公司核心系统） 高级软件工程师<br />5、4个500万左右项目经验（2家保险、2家银行） 系统架构师、技术经理<br />6、对JAVA项目的架构设计有独到的经验，学习能力强，最大的优点是：解决问题的能力强（决不吹牛）<br />7、Weblogic、Oracle、MQ、Spring、Struts、Hibernate......不敢说精通，但架构设计肯定没问题<br />8、英语能力：一般。<br /><br />求职意向：<br />1、工作地点：上海<br />2、期望薪资：面谈<br />3、不考虑外包。<br />4、联系方式：ahgf75@163.com
          <br/>
          <span style="color:red;">
            <a href="http://banner.javaeye.com/topic/230153#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/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 19 Aug 2008 14:41:48 +0800</pubDate>
        <link>http://www.javaeye.com/topic/230153</link>
        <guid>http://www.javaeye.com/topic/230153</guid>
      </item>
      <item>
        <title>Why OO sucks</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://hideto.javaeye.com">hideto</a>&nbsp;
          链接：<a href="http://www.javaeye.com/topic/230760" style="color:red;">http://www.javaeye.com/topic/230760</a>&nbsp;
          发表时间: 2008年08月20日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          为什么OO很恶心<br /><br />原文： <a href="http://www.sics.se/~joe/bluetail/vol1/v1_oo.html" target="_blank">http://www.sics.se/~joe/bluetail/vol1/v1_oo.html</a><br />作者：Joe Armstrong<br /><br />当我第一次知道OOP的概念时，我非常疑惑，但是不知道为啥——它仅仅在感觉上“不对”。<br />在OOP问世之后变得粉流行（稍后解释为什么），而批评OOP就像“在教堂里咒骂”。<br />OO成为了每个受尊敬的语言必须具备的一部分。<br /><br />而当Erlang变得越来越流行时，我们经常问一个问题“Erlang是OO的吗？”<br />当然正确的答案是“当然不是”——但是我们没有大肆宣扬——我们只是换了种精心设计的说法，Erlang是某种OO但不是真的是。<br /><br />这时我想起在法国巴黎时IBM的老板在7th IEEE逻辑编程大会上的演讲。<br />IBM prolog添加了许多OO扩展，当人们问起时他说：“我们的客户想要OO的prolog，所以我们构建了OO的prolog”<br /><br />我想到了“多么简单，没有良心的疑虑，没有灵魂的搜索，没有‘这是正确的事情’的问题。。。”<br /><br /><strong>为什么OO很恶心</strong><br /><br />我对OOP的反对原则源自一些基本的概念，我将概述其中一些反对意见。<br /><br /><strong>反对之一——数据类型和方法应该绑定在一起</strong><br />对象将方法和数据结构绑定在一起成为不可分割的单元。我认为这是基本的错误，因为方法和数据结构属于完全不同的世界。为啥哩？<br /><br />1，方法做事情。它们是输入和输出。输入和输出的是方法所改变的数据结构。<br />在大部分编程语言里，方法由命令式语句顺序构建：“做这件事然后那件事。。。”<br />理解方法首先得理解做事情的顺序（在懒惰函数编程语言和逻辑语言中这个限制被放宽了）<br />2，数据结构是结构。它们不做任何事情。它们本质上是声明。“理解”数据结构比“理解”方法简单多了。<br /><br />方法作为黑盒子来转换输入和输出。如果我理解输入和输出，这样我就理解了方法。这并不意味着我可以写这个方法。<br /><br />方法通常理解为在一个计算系统里用来将数据结构T1转换为数据结构T2的东西。<br /><br /><strong>既然方法和数据结构是完全不同类型的动物，那么将它们锁在一个笼子里就是完全错误的。</strong><br /><br /><strong>2，反对之二——任何东西都必须为对象</strong><br />考虑“时间”。在OO语言里“时间”也必须是对象。但是在非OO语言里一个“时间”是一个数据结构的实例。<br />例如，在Erlang里有许多不同类型的时间，它们可以使用类型声明来明确指定：<br /><pre name="code" class="java">
-deftype day() = 1..31.
-deftype month() = 1..12.
-deftype year() = int().
-deftype hour() = 1..24.
-deftype minute() = 1..60.
-deftype second() = 1..60.
-deftype abstime() = {abstime, year(), month(), day(), hour(), min(), sec()}.
-deftype hms() = {hms, hour(), min(), sec()}.
...
</pre><br />注意这些定义不属于任何特殊的对象。它们很普遍，并且数据结构表示的时间可以被系统中的任何方法处理。<br /><br />没有相关联的方法。<br /><br /><strong>反对之三——在一个OOP语言里数据类型定义散布到任意位置</strong><br />在OOP语言里数据类型定义属于对象。<br />这样我就不能在一个地方找到所有的数据类型定义。<br />在Erlang或者C里我可以在一个单独的include文件或数据字典里定义我所有的数据类型。<br />在一个OOP语言里我不能——数据类型定义散布到任意位置。<br /><br />让我举一个例子。假设我想定义一个通用的数据结构。通用数据类型是一个数据类型，它在系统中的任意位置出现。<br /><br />lisp程序员知道，拥有一个较小数量的通用数据类型和在它上面的大量的小方法会更好。<br /><br />通用数据类型就比如linked list，或者一个array或者一个hash table或者更高级的对象如time或者date或者filename。<br /><br />在一个OOP语言里我不得不选择一些base对象来在里面定义通用的数据结构，所有其他想使用这些数据结构的对象必须继承该对象。<br />假设现在我想创建一些“time”对象，那么它应该属于哪个对象呢。。。<br /><br /><strong>反对之四——对象拥有私有状态</strong><br />状态是所有罪恶的根源。特别是有副作用的方法应该避免。<br /><br />在编程语言里状态是令人讨厌的，而真实世界里状态却千奇百怪的存在着。<br />我对我的银行账户的状态很感兴趣，当我从我的账户存钱或取钱时我希望我的银行账户状态成功更新。<br /><br />既然状态在真实世界里存在，那么编程语言应该提供什么能力来处理状态呢？<br /><br />1，OOP语言说“将状态隐藏”。状态仅仅通过访问方法来隐藏和可见。<br />2，传统编程语言（C，Pascal）说状态的可见度由语言的scope规则来决定。<br />3，纯声明式语言说没有状态。系统的全局状态转移到方法里然后从方法里出来。<br />类似于monad(函数式编程语言)和DCG(逻辑语言)等机制被用来隐藏状态，这样它们可以像“有没有状态无所谓”一样来编程，但是对系统状态的完全访问是必需的。<br /><br />OOP语言所选择的“隐藏状态”可能是最坏的选择。<br />它们不是将状态显示出来并寻找减少状态的坏处的方式，而是将状态隐藏起来。<br /><br /><strong>为什么OO粉流行？</strong><br /><br />1，原因1——它被认为很容易学<br />2，原因2——它被认为让代码更易重用<br />3，原因3——它被大肆宣传<br />4，原因4——它创建了一个新的软件工业<br /><br />我看不到原因1和原因2的证据。原因看起来像是技术背后的驱动力。<br />如果一个编程语言技术如此之差，然后它创建了一个新的工业来解决它自己本身的问题，则它会成为想从中牟利的人的好工具。<br /><br />这就是OOP背后真正的驱动力。<br /><br />以及一篇回复：<a href="http://konryd.blogspot.com/2007/08/why-why-oo-sucks-sucks.html" target="_blank">Why "Why OO Sucks" Sucks </a>
          <br/>
          <span style="color:red;">
            <a href="http://banner.javaeye.com/topic/230760#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 20 Aug 2008 16:53:35 +0800</pubDate>
        <link>http://www.javaeye.com/topic/230760</link>
        <guid>http://www.javaeye.com/topic/230760</guid>
      </item>
      <item>
        <title>当遭遇系统的切面功能时，如何去写user stories呢?</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://fly-ever.javaeye.com">fly_ever</a>&nbsp;
          链接：<a href="http://www.javaeye.com/topic/230912" style="color:red;">http://www.javaeye.com/topic/230912</a>&nbsp;
          发表时间: 2008年08月21日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          这段时间在看如何实施敏捷开发方法，仔细看了如何写user story ,还有很多疑惑的地方希望得到各位的指导。<br />当写user stories时，如果一些功能是在用户描述每个功能时都会涉及到的，我暂且称为切面功能吧，<br />比如一个系统中的用户访问行为记录，权限设置功能等。<br />此时我们如何处理这些切面功能呢，是按用户的描述，把切面功能分别放入各个user stories中，<br />还是单独拿出来作为一个user stories来实现呢？<br />当然如果权限简单的话，可以融合到具体的各个user stories中，<br />如 <a href="http://www.javaeye.com/topic/53246" target="_blank">http://www.javaeye.com/topic/53246</a><br />这里讨论的，角色和权限比较简单，就可以把功能划分，并分别放入相应的user stories即可。<br />但是一个复杂的权限系统，需要对系统进行整体考虑，然后单独进行设计来实现，<br />这样的话，把这些切面功能放到各个user stories中显然是不合适的。<br />例如一个权限的例子：如果用户查看数据时，需要达到这样的控制，用户属于具体的一个省份，因此默认情况下用户只能查看所在省份的数据，但管理员可以看到所有省份的数据，同时管理员可以指定某些用户一些省份列表，使他们能查看多个省份的数据。<br />这种权限该如何写到user story中去呢？<br />还希望那些实践过user stories的兄弟们能够指导指导
          <br/>
          <span style="color:red;">
            <a href="http://banner.javaeye.com/topic/230912#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 21 Aug 2008 09:28:54 +0800</pubDate>
        <link>http://www.javaeye.com/topic/230912</link>
        <guid>http://www.javaeye.com/topic/230912</guid>
      </item>
      <item>
        <title>关于这样一个异构系统的设计，你有何高招</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://yeshucheng.javaeye.com">yeshucheng</a>&nbsp;
          链接：<a href="http://www.javaeye.com/topic/230012" style="color:red;">http://www.javaeye.com/topic/230012</a>&nbsp;
          发表时间: 2008年08月19日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          A系统是用JAVA写的WEB application，部署在Tomcat下。而且这个系统分布在全国近30个地区，他们各自在不相干扰基本就类似一个C/S结构的系统。（而且这套系统已经在使用）<br /><br />现在需要设计一套这样的系统：<br />要求B系统也是用JAVA来写的WEB-APPLICATION，它部署在WEBLOGIC中这套系统用来专门收集分散在全国多个地区A系统的数据（统计）和自身的其他一些功能，而且这些数据需要在B系统中尽可能的做到实时响应显示。经过分析B系统只关心A系统中一些关键的业务表。如果是你，你会如何设计这样一套B系统？
          <br/>
          <span style="color:red;">
            <a href="http://banner.javaeye.com/topic/230012#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 19 Aug 2008 07:31:36 +0800</pubDate>
        <link>http://www.javaeye.com/topic/230012</link>
        <guid>http://www.javaeye.com/topic/230012</guid>
      </item>
      <item>
        <title>请点评一下上海用java 的公司</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://shiren1118.javaeye.com">shiren1118</a>&nbsp;
          链接：<a href="http://www.javaeye.com/topic/228518" style="color:red;">http://www.javaeye.com/topic/228518</a>&nbsp;
          发表时间: 2008年08月15日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          我想去，可是人生地不熟的，想了解一下那边得公司
          <br/>
          <span style="color:red;">
            <a href="http://banner.javaeye.com/topic/228518#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 15 Aug 2008 21:19:38 +0800</pubDate>
        <link>http://www.javaeye.com/topic/228518</link>
        <guid>http://www.javaeye.com/topic/228518</guid>
      </item>
      <item>
        <title>华硕 ASUS  做的产品宣传是假的  ！！！</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://tang3176.javaeye.com">tang3176</a>&nbsp;
          链接：<a href="http://www.javaeye.com/topic/231313" style="color:red;">http://www.javaeye.com/topic/231313</a>&nbsp;
          发表时间: 2008年08月21日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          我最近想卖一台本，看了看华硕的本，突然看了机器的一个FLASH宣传页，一个宇航员，手里托着一个本本，键盘上面怎么会有一个红红的点点，那个点点不是IBM的THINKPAD机子才有的吗？大家给看看！
          <br/>
          <span style="color:red;">
            <a href="http://banner.javaeye.com/topic/231313#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/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 21 Aug 2008 19:47:14 +0800</pubDate>
        <link>http://www.javaeye.com/topic/231313</link>
        <guid>http://www.javaeye.com/topic/231313</guid>
      </item>
      <item>
        <title>公司要求实时监控服务器，写个Web的监控系统</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://kakaluyi.javaeye.com">kakaluyi</a>&nbsp;
          链接：<a href="http://www.javaeye.com/topic/228636" style="color:red;">http://www.javaeye.com/topic/228636</a>&nbsp;
          发表时间: 2008年08月16日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>&nbsp;</p>
<p>&nbsp;</p>
<p>公司的服务器需要实时监控，而且当用户空间已经满了，操作失败，或者出现程序Exception的时候就需要实时提醒，便于网管和程序员调式，这样就把这个实时监控系统分为了两部分，</p>
<p>&nbsp;</p>
<p>第一部分：实时系统监控（cpu利用率，cpu温度，总内存大小，已使用内存大小）</p>
<p>第二部分：实时告警</p>
<p>由于无刷新实时性，所以只能使用Ajax，这里没有用到任何ajax框架，因为调用比较简单</p>
<p>大家知道，由于java的先天不足，对底层系统的调用和操作一般用jni来完成，特别是cpu温度，你在window下是打死用命令行是得不到的，但由于我们的服务器系统是linux，所以可以不调用jni完全用java的方式来得到系统信息，这里用到了runtime的exec()函数，通过解析本地命令调用的结果来查询本地信息，</p>
<p>这里要感谢公司同事qinkun推荐ecsun兄的这篇文章<a href="http://papa.javaeye.com/blog/220532">http://papa.javaeye.com/blog/220532</a>，</p>
<p>&nbsp;</p>
<pre name="code" class="java">* 取得linux系统下的cpu、内存信息 
* 
* */ 
public final class LinuxSystemTool 
{ 
/** 
* get memory by used info 
* 
* @return int[] result 
* result.length==4;int[0]=MemTotal;int[1]=MemFree;int[2]=SwapTotal;int[3]=SwapFree; 
* @throws IOException 
* @throws InterruptedException 
*/ 
public static int[] getMemInfo() throws IOException, InterruptedException 
{ 
File file = new File("/proc/meminfo"); 
BufferedReader br = new BufferedReader(new InputStreamReader( 
new FileInputStream(file))); 
int[] result = new int[4]; 
String str = null; 
StringTokenizer token = null; 
while((str = br.readLine()) != null) 
{ 
token = new StringTokenizer(str); 
if(!token.hasMoreTokens()) 
continue; 

str = token.nextToken(); 
if(!token.hasMoreTokens()) 
continue; 

if(str.equalsIgnoreCase("MemTotal:")) 
result[0] = Integer.parseInt(token.nextToken()); 
else if(str.equalsIgnoreCase("MemFree:")) 
result[1] = Integer.parseInt(token.nextToken()); 
else if(str.equalsIgnoreCase("SwapTotal:")) 
result[2] = Integer.parseInt(token.nextToken()); 
else if(str.equalsIgnoreCase("SwapFree:")) 
result[3] = Integer.parseInt(token.nextToken()); 
} 

return result; 
} 

/** 
* get memory by used info 
* 
* @return float efficiency 
* @throws IOException 
* @throws InterruptedException 
*/ 
public static float getCpuInfo() throws IOException, InterruptedException 
{ 
File file = new File("/proc/stat"); 
BufferedReader br = new BufferedReader(new InputStreamReader( 
new FileInputStream(file))); 
StringTokenizer token = new StringTokenizer(br.readLine()); 
token.nextToken(); 
int user1 = Integer.parseInt(token.nextToken()); 
int nice1 = Integer.parseInt(token.nextToken()); 
int sys1 = Integer.parseInt(token.nextToken()); 
int idle1 = Integer.parseInt(token.nextToken()); 

Thread.sleep(1000); 

br = new BufferedReader( 
new InputStreamReader(new FileInputStream(file))); 
token = new StringTokenizer(br.readLine()); 
token.nextToken(); 
int user2 = Integer.parseInt(token.nextToken()); 
int nice2 = Integer.parseInt(token.nextToken()); 
int sys2 = Integer.parseInt(token.nextToken()); 
int idle2 = Integer.parseInt(token.nextToken()); 

return (float)((user2 + sys2 + nice2) - (user1 + sys1 + nice1)) / (float)((user2 + nice2 + sys2 + idle2) - (user1 + nice1 + sys1 + idle1)); 
} 
} 

</pre>
<p>&nbsp;</p>
<p>这里的两个方法，解释一下，</p>
<p>方法1文件"/proc/meminfo"里面包含的就是内存的信息，还包括了swap的信息。例如： <br /><br />$ cat /proc/meminfo <br /><br />total: used: free: shared: buffers: cached: <br />Mem: 1057009664 851668992 205340672 0 67616768 367820800 <br />Swap: 2146787328 164429824 1982357504 <br />MemTotal: 1032236 kB <br />MemFree: 200528 kB <br />MemShared: 0 kB <br />这样可以用截取字符串的方法，来得到linux内存信息.</p>
<p>方法2在文件"/proc/stat"里面就包含了CPU的信息。每一个CPU的每一tick用在什么地方都在这个文件里面记着。后面的数字含义分别是： user、nice、sys、idle、iowait。有些版本的kernel没有iowait这一项。这些数值表示从开机到现在，CPU的每tick用在了哪里。例如： <br /><br />cpu0 256279030 0 11832528 1637168262 <br /><br />就是cpu0从开机到现在有 256279030 tick用在了user消耗，11832528用在了sys消耗。所以如果想计算单位时间（例如1s）里面CPU的负载，那只需要计算1秒前后数值的差除以每一秒的tick数量就可以了。</p>
<p>ok这样还剩下cpu温度，怎么做呢</p>
<p>发现了一个文件"cat /proc/acpi/thermal_zone/THM/temperature";可以返回本机的linux温度，</p>
<p>大概是这样的：temperature：&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;68C</p>
<p>但不是每台linux机器都有这个THM你要确定你的linux加载了这个THM才能使用这个文件，这样就用<span style="color: #ff0000;">InputStreamReader(new FileInputStream（new File("/proc/acpi/thermal_zone/THM/temperature")）,</span>去读取这个文件，后面的相信大家一定会做了吧，就是把内容读出来,然后分割字符串去得到这个68。ok,系统基本信息全部完成，然后ok现在就只有一件事就是用Ajax去调用这个类来得到&nbsp;基本信息，然后返回到页面上，Ajax的用法就不赘言了。</p>
<p>&nbsp;</p>
<p>下面是系统监控的效果，大概是Ajax每几秒去linux下去取一次系统信息，然后显示在jsp页面上，以下是效果。</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;<img src="../../../../upload/picture/pic/19967/7c685f82-cfc3-365a-8d3b-1487f495530b.bmp?1218858196" height="204" alt="" width="450" /></p>
<p>&nbsp;</p>
<p>到这里第一部分系统监控部分已经完成，现在开始完成实时告警部分，分析需求</p>
<p>1温度和cpu超过额定值需要告警</p>
<p>2用户操作系统失败，用户存储空间不足也需要告警，还有我们公司的业务操作失败告警，如果发生Exception也只能告警，当然要把异常的堆栈的信息保存在数据库里，我就这样设计如果用户在操作中触发了这些错误，则保存在数据库的告警表里，然后实时监控的再取出来这些信息。</p>
<p>3告警是要实时的那么要怎么从告警表里查到当前以后的数据呢，一开始想到用当前时间，在当前时间加上Ajax发送时间间隔，select * from warnlist where date&gt;new Date()+AjaxTime这种形式,后来发现时间是很不正确的，网络延迟，程序处理时间，（cpu信息用了sleep函数），等等你常常会发现有些告警信息被无情的放过，而有的时候有重复数据，这样我想到了用id，每次进入告警系统先查询到最大的告警id,然后保存在session中，然后ajax从数据库里取告警信息的时候都查这个id之后的数据（就是进入监控系统后的最新数据），然后session再保存新的最大id,下次ajax取还是从这个session中取最大id,这样信息就可以当ajax取的时候都保证是最新的，而且没有重复，very good!就这样做了</p>
<p>这样设计了一张告警处理表</p>
<pre name="code" class="sql">CREATE TABLE `warnlist` (
  `Id` bigint(20) NOT NULL auto_increment,
  `warnleave` tinyint(2) NOT NULL default '0',//告警级别：告警的严重程度
  `fromguy` varchar(20) NOT NULL,//属于哪个用户哪个组织的告警
  `warncontent` varchar(100) NOT NULL,//告警内容，比如cpu使用率超过80%
  `aviliablevalue` varchar(12) default NULL,//允许值 比如85%
  `warnvalue` varchar(12) default NULL,//告警值 80
  `warntime` datetime NOT NULL,//告警时间
  `stackinfo` varchar(255) default NULL,//异常的堆栈信息
  `dealwith` tinyint(2) NOT NULL default '0',//处理结果
  `version` int(11) default NULL,//version
  `organizerID` varchar(20) default NULL,//组织id
  `des` varchar(255) default NULL,
  PRIMARY KEY  (`Id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;</pre>
<p>&nbsp;</p>
<p>假设我ajax从系统取信息后，那么要写个逻辑，if(cpuTempature&gt;75C)or if(cpuUserd&gt;80%)则写入数据库，然后再查询大于上一次发送Ajax数据库的最大id的告警信息（这期间如果发生的以下错误一并查出：用户存储空间不足，还有我们公司的业务操作失败告警，Exception等），循环插入一个xml解析类中，大概形式是这样的Ajax返回这个xml,供页面提取信息</p>
<pre name="code" class="xml">&lt;response&gt;
&lt;cpuUsed&gt;67&lt;/cpuUsed&gt;
&lt;cpuTemp&gt;76&lt;cpuTemp&gt;
&lt;Memory&gt;1023422&lt;/Memory&gt;
&lt;freeMemory&gt;43244&lt;/freeMemory&gt;
&lt;wannlist&gt;
&lt;warnid&gt;2&lt;/warnid&gt;
&lt;warncontent&gt;系统存储空间不足&lt;/warncontent&gt;
&lt;fromguy&gt;kakaluyi&lt;/fromguy&gt;
..............
&lt;/wanrlist&gt;
&lt;warnlist&gt;
&lt;warnid&gt;3&lt;/warnid&gt;
&lt;warncontent&gt;cpu温度过高&lt;/warncontent&gt;
&lt;fromguy&gt;系统&lt;/fromguy&gt;
&lt;orgid&gt;系统&lt;/orgid&gt;
&lt;warnvalue&gt;78&lt;/warnvalue&gt;
.............
&lt;/warnlist&gt;
........

&lt;/response&gt;</pre>
<p>&nbsp;</p>
<p>系统信息的显示代码，就是关联上面那个图片的：</p>
<pre name="code" class="html">var cpuUsed=req.responseXML.getElementsByTagName('cpuUsed')[0].firstChild.nodeValue;
var totalMemory=req.responseXML.getElementsByTagName('totalMemory')[0].firstChild.nodeValue;
var freeMemory=req.responseXML.getElementsByTagName('freeMemory')[0].firstChild.nodeValue;
var cpuTemp=req.responseXML.getElementsByTagName('cpuTemp')[0].firstChild.nodeValue;
$('cpuUsed').innerHTML=cpuUsed;
$('totalMemory').innerHTML=totalMemory;
$('freeMemory').innerHTML=freeMemory;
$('cpuTemp').innerHTML=cpuTemp;

//jsp
&lt;tr&gt;
&lt;td class="label" width="20%"&gt;
服务器CPU使用率：&lt;/td&gt;
&lt;td class="text"&gt;
&lt;font color="#FF0000" size="+2"&gt;&lt;label id="cpuUsed"&gt;&lt;/label&gt;
&lt;/font&gt; &lt; 告警预定阀值: 80% &gt;
&lt;/td&gt;
&lt;/tr&gt;
 .........</pre>
<p>然后就是页面展现的问题了这里我用了dom节点的增删，一个页面保持50条记录，如果超过50条则删除以前的节点，代码为：</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<pre name="code" class="js">var length=req.responseXML.getElementsByTagName('warnlist').length;
if(length&gt;0)
{
var trlength=document.getElementsByTagName('table')[4].childNodes[0].childNodes.length;

if(trlength+length-1&gt;50)//如果大于50条，则查找告警列表的table，得到
告警信息的子节点，然后删除多余的最早的告警信息
{
var tbody=document.getElementsByTagName('table')[4].childNodes[0];
for(var i=1;i&lt;trlength+length-50;i++)
{
var tr=tbody.childNodes[i];
tr.parentNode.removeChild(tr);

}</pre>
<p>&nbsp;</p>
<p>然后插入新的告警信息，</p>
<pre name="code" class="js">for(var i=0;i&lt;length;i++)
{
var onewarnlist=req.responseXML.getElementsByTagName('warnlist')[i].childNodes;
if(onewarnlist[0].firstChild.nodeValue==0)
{
var leave="企业级告警";
}
else {
var leave="运营商级告警";
}
var from=onewarnlist[1].firstChild.nodeValue;
var warncontent=onewarnlist[2].firstChild.nodeValue;
var aviliablevalue=onewarnlist[3].firstChild.nodeValue;
var warnvalue=onewarnlist[4].firstChild.nodeValue;
var warntime=onewarnlist[5].firstChild.nodeValue;
var id=onewarnlist[8].firstChild.nodeValue;
if(onewarnlist[6].firstChild.nodeValue==0)
{
var dealwith="未处理" ;
}
else {
var dealwith="&lt;font color='red'&gt;已处理&lt;/font&gt;";
}
var table=document.getElementById('warntable');
var tr=document.createElement('tr');
 if(x%2==1)
{
tr.style.backgroundColor="#BFD3F9"
}
else{
tr.style.backgroundColor="#FBFCEB"
}
x++;
table.appendChild(tr);
var td=document.createElement('td');
td.className ='listText';
td.innerHTML =x;
tr.appendChild(td);
var td1=document.createElement('td');
td1.className ='listText';
td1.innerHTML = leave;
tr.appendChild(td1);
var td2=document.createElement('td');
td2.className ='listText';
td2.innerHTML = from;
tr.appendChild(td2);
var td3=document.createElement('td');
td3.className ='listText';
td3.innerHTML = warncontent;
tr.appendChild(td3);6
var td4=document.createElement('td');
td4.className ='listText';
td4.innerHTML = aviliablevalue;
tr.appendChild(td4);
var td5=document.createElement('td');
td5.className ='listText';
td5.innerHTML = '&lt;font color="#FF0000"&gt;'+warnvalue+'&lt;/font&gt;';
tr.appendChild(td5);
var td6=document.createElement('td');
td6.className ='listText';
td6.innerHTML = warntime;
tr.appendChild(td6);
var td7=document.createElement('td');
td7.className ='listText';
td7.innerHTML = dealwith;
tr.appendChild(td7);
var td8=document.createElement('td');
td8.className ='listText';
td8.innerHTML = id;
tr.appendChild(td8);
   }</pre>
<p>&nbsp;</p>
<p>ok，一切大功告成，以下是最终效果</p>
<p><img src="../../../../upload/picture/pic/19963/89cd061e-0d44-31d6-8769-c69a06de7ae2.bmp?1218855651" height="343" alt="" width="762" /></p>
          <br/>
          <span style="color:red;">
            <a href="http://banner.javaeye.com/topic/228636#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/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 16 Aug 2008 12:38:02 +0800</pubDate>
        <link>http://www.javaeye.com/topic/228636</link>
        <guid>http://www.javaeye.com/topic/228636</guid>
      </item>
      <item>
        <title>数据库使用ssd作为存储介质的一些文章</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://nihongye.javaeye.com">nihongye</a>&nbsp;
          链接：<a href="http://www.javaeye.com/topic/231412" style="color:red;">http://www.javaeye.com/topic/231412</a>&nbsp;
          发表时间: 2008年08月22日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          看到百度使用ssd作为存储介质，被震了一下，想到数据库使用ssd在会有很大的优势，google了一些资源，性能上显示了很大的改进。<br /><div class="quote_title">引用</div><div class="quote_div">http://www.linux.com/feature/142657<br />http://www.bigdbahead.com/?p=37<br />http://www.bigdbahead.com/?p=44</div>
          <br/>
          <span style="color:red;">
            <a href="http://banner.javaeye.com/topic/231412#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 22 Aug 2008 09:14:17 +0800</pubDate>
        <link>http://www.javaeye.com/topic/231412</link>
        <guid>http://www.javaeye.com/topic/231412</guid>
      </item>
      <item>
        <title>Ext Js 给window或panel加上热键</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://javaExtjs.javaeye.com">chanball</a>&nbsp;
          链接：<a href="http://www.javaeye.com/topic/231170" style="color:red;">http://www.javaeye.com/topic/231170</a>&nbsp;
          发表时间: 2008年08月21日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          如题，代码如下:<br /><pre name="code" class="java">
var OverTimeForm = new Ext.form.FormPanel({
		bodyStyle: 'padding: 15px 0 0 10px;',
		defaultType: 'textfield',
		items:[{
			fieldLabel: '超时时间(小时/h)',
			name: 'overTime',
			xtype: 'numberfield'
		},{
			xtype: 'panel',
			border: false,
			html: '&lt;div style="color:red">设置终端刷卡后的有效时间!&lt;/div>'
		}],
		buttons:[{
			text: '确定',
			scope: this,
			handler: this.setOverTime
		},{
			text: '取消',
			scope: this,
			handler: this.cancleOverTime
		}],
//热键添加
		keys:[{
			key : Ext.EventObject.ENTER,
			fn : this.setOverTime,
			scope : this
		}]

	});
</pre>
          <br/>
          <span style="color:red;">
            <a href="http://banner.javaeye.com/topic/231170#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/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 21 Aug 2008 14:25:26 +0800</pubDate>
        <link>http://www.javaeye.com/topic/231170</link>
        <guid>http://www.javaeye.com/topic/231170</guid>
      </item>
      <item>
        <title>项目管理工具-streber中文资料-实践使用笔记 </title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://orpheus.javaeye.com">orpheus</a>&nbsp;
          链接：<a href="http://www.javaeye.com/topic/230399" style="color:red;">http://www.javaeye.com/topic/230399</a>&nbsp;
          发表时间: 2008年08月20日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><span style="font-size: small;"><strong>1.Streber背景介绍：</strong>
</span>
<br />
    Streber是一个基于WEB的在线项目协调工具，它融合了wiki的思想和项目协作管理机制，成为了一个适用于小型团队的可以贯穿真个项目生命周期的项目协作和管理工具。<br />
    Streber的出现的历史并不长，作者为德国人，网名pixtur，其产品原型为05年一个作者的在线office系统，在进行这个在线office系统开发工作当中，作者发现其思路可以很好的成为一个在项目开发的协调组织的工作平台。于是作者对原有产品的不断的修改和完善其在线协作理念，乃至到最后从原有产品中完全剥离出来成为独立的开源项目。<br />
    &ldquo;Streber&rdquo;在德语中意为是一个具有高度热情和经理旺盛的人，按我们白话说就是一得瑟的人....它是基于PHP开发的项目，目前的最高版本是 0.803，基于php5。同时Sreber是基于GPL开源协议，这点一定要注意，这意味着你如果使用其进行修改和发布也要遵循GPL协议，把你的修改的代码进行开源发布。</p>
<p><img src="http://zhangmeng.blog.51cto.com/attachment/200807/200807191216457710137.jpg" height="571" alt="Strber" width="993" />
<br />
                                                          图1-1<br />
Streber截图<br />
-----------------------------------------------------------------------------------------------------------------------<br />
<span style="font-size: small;"><strong>2.Streber特点概述：</strong>
</span>
<br />
1.基于wiki的方式<br />
    Streber中采用基于wiki的管理方式和语法，采用多人协作的方式进行项目的管理和文档的编写，项目中的任务和文档资源无论创建者是谁，其他人都可以方便的修改和完善，在这种方式下项目人员自由度很高，极大的提高了项目协作的效率，但需要求人员在遵守一定的项目规则下进行项目协作。基于wiki的思想更可以使知识管理与项目紧密的联合起来，不用再为项目搭建一套知识管理系统。<br />
2.简单而灵活项目管理协作系统<br />
    Streber类似于jira，也是面向issue的项目协作系统，使用方便，操作简单，系统中常用操作基本元素就是task（也称为issue）和 comment，并且可灵活进行运用，可以作为贯穿项目生命周期中的支持系统，也可以单独作为缺陷跟踪系统，甚至可以单独作为项目知识管理系统使用。<br />
3.label标签分类功能：<br />
    Streber中的任务类型可以是一般Task类型，DOC类型，bug类型，idel类型，<br />
feature类型，research类型，refactor类型等等，我们可以通过这些类型对任务进行表示和搜索。<br />
4.全面的角色及其权限分类<br />
    Steber中的默认角色按照一般项目类的角色分为项目成员，系统管理员，项目经理，开发人员，方案人员，测试人员，客户，受信客户，以及Guest集中角色，各个角色的默认权限不同，如有特殊情况，管理员可以为每个人定制权限。这些角色是系统自带的，如果要添加自己项目的权限，可以通过直接修改数据库数据实现。<br />
5.邮件通知和RSS支持<br />
    在项目中的每个task的辨变更和更新记录都会被详细的记录下来，从更改者的角度，这些在进行变更和任务更新的时候可以选择是否将更新邮件通知此此任务的相关干系人，保证信息的及时同步。 并且任务的相关联系人可以使用RSS的方式对项目的变更和更新记录进行订阅，实现主动获取变更信息的功能。<br />
6.替代sharepoint等项目门户网站功能<br />
    我们可以使用Streber代替项目门户的功能，可以将在各个项目中中Contact Info、Baselined Schedule、News元素放在项目主页上，使项目信息沟通全面通畅。Streber支持，英，德，法，西班牙，意大利等12种语言的系统界面，可惜的是目前还不支持中文的系统界面。<br />
-----------------------------------------------------------------------------------------------------------------------<br />
<br />
<strong><span style="font-size: small;">3.Streber应用介绍</span>
</strong>
<br />
3.1安装：<br />
   Streber的安装十分简单，简单分为以下几个步骤：<br />
1.环境准备：准备一个Mysql，一个Apache服务器，并从http://www.streber-pm.org/index.php?go=fileDownload&amp;file=6434下载一个Streber的最新版，然后直接copy到htdocs目录下。<br />
2.启动Apache，运行index.php。根据提示填写管理员用户名，密码，数据库地址，用户名，密码。<br />
3.删除安装目录下的install文件夹<br />
<br />
3.2应用：<br />
    使用过其他项目协作工具的人都会发现Streber的应用操作十分简单，它主模块分为Home，Project，People，Company几个部分，一般在进行项目开发的时候我们只会经常用到项目模块中的功能。<br />
<br />
3.2.1 Home：<br />
    在Home模块我们可以管理与自己相关的项目，任务，为添加评论，查看最近的任务更新列表，书签，和effort（人工管理）<br />
3.2.2 Project:<br />
    Projec是我们在进行项目协作的时候最为经常使用的模块，也是Streber系统的核心模块。在Project中我们可以进行项目的定义，项目中任务的分配，项目相关文档的撰写，项目后期缺陷的跟踪调试，项目进度控制，项目任务的变更和进度更新等等，所有项目的行为活动都是在这里进行定义。每个Project中针对项目的管理又细分为 Task，Topic，Milestone，Version，Files，Effors，Chages几个元素进行管理，为了便于理解，我们可以把所有这些元素都看为不同类型的task。当我们建立Project的时候，我们可以根据自己的需要设定是否保留这些元素。<br />
    Task：Streber中所有项目活动Streber中所有项目活动都是基于Task，不论这个Task可能是个开发任务，或是个Bug，又或者是一个说明文档，设计文档，可以说，它是类似JIRA中的 issue驱动，在Streber中的Task驱动。每个Task都有一个唯一的Streber中所有项目活动都是基于Task，不论这个Task可能是个开发任务，或是个Bug，又或者是一个说明文档，设计文档，可以说，它是类似JIRA中的issue驱动，在Streber中的Task驱动。每个 Task都有一个唯一的TaskID，通过这个TaskID会对应一个唯一的项目URL，这样，我们可以使用这个TaskID作为每次代码check-in的说明，说明此次check-in的目的，就不用写太多的commit日志了。Task的属性分为一下几种：<br />
      1.Task属性： Task中可以指定任务的Milestone（指定的为了实现某个Milestone所做的任务），任务的优先级，任务分配人员，目前的状态(new,open,block,done,approved,closed)，任务完成节点（如果本次无法完成，设定为下个版完成，如果本次可以完成，需要设定在哪个milestone完成的，或者可以不做设定），任务完成类型（如果是task则类型为done，如果为bug则类型为fixed，其他的根据任务类型依此类推）。<br />
      2.Task时间管理：预计正常完成时长，最坏情况下的完成时长（正常时间+buffertime），任务起始时间，任务结束时间。<br />
      3.Task描述:使用wiki格式。<br />
      4.Task显示：任务的缩写（显示在导航栏的名称），任务id（可根据任务所需自由设定，这个是由项目组设定的，比如ex-01）,任务的标签，供以后任务分类和搜索使用，其中包括Bug，Feature，Enhancement，Refactor，Research，Idea，Orgnaize，Wiki，Docu。<br />
    Topic：主题信息管理,Topic在项目中一般起到发布主题类的信息，可以是项目说明文档，项目会议记录，项目需求变更计划，项目内部新闻等等文档类信息，同样可作为项目知识管理的功能使用，比如代码规范，项目开发规范。<br />
     Milestone：里程碑计划管理，项目的里程碑管理，同Task设置类似，Milestone中可以设置负责人，时间管理，任务描述，显示描述，Milestone设置后可以与每个task进行关联，上面已经提到，每个task的目标都是要针对于某个具体的Milestone的，所以把Milestone看做是一个大的 Task，由无数小的task的集合形成。Streber的思想还是比较严谨的开发模式，具体的使用还是看各个项目了。<br />
     Version：版本计划管理,里面元素设定与Milestone和Task类似，我们在项目中可以把Version看做Milestone的父类，把Milestone看做Task的父类。在项目周期前期，按照这种方式，先设定Version，再设定这个Version中的Milestone，在设定每一个具体的 Task，给其指定所属的Milestone。<br />
     File：项目文件管理，与此项目有关的资源文件可以同一放在这里进行管理，与一般的在线系统类似，Streber的理念就是使平台达到能将项目周期活动都集中在此的目的，所以此功能虽然简单，但是还是相当有用的，我们可以把项目工具，框架，各类前期说明书等等文件都在此进行资源共享，统一管理。具体好处就不多说了。<br />
     Efforts：字面上的意思是人工管理，感觉其实就是在在项目任务中计算人员工作量的工具，在项目开发和人工绩效考核的时候应该有一定作用，同时Streber提供统计Efforts功能，但似乎这个功能还未完全完善，建议可以先不用使用。<br />
     Changes：变更记录，所有任务和文档的内容更新和状态更新以及评论添加都会在这里可以进行查看详细的信息记录<br />
<br />
 <br />
3.2.3 People: 人员管理 ，在这里设置项目人员信息，人员类型，默认的人员类型系统管理员，项目经理，开发人员，方案人员，测试人员，客户等项目基本干系人。我们在这里对项目中所有干系人进行管理，并设定相关人员所属的公司。个人认为在项目中，无论大小，上述的这些角色一定要尽量全员参与到系统的使用中来。不同的干系人具有不同的人员权限的设置，系统在初次安装之后只有管理员有用最高权限。权限设置比较简单，只有针对项目，人员，登陆，等相关权限，但对于一般的小型项目足够使用了。<br />
<br />
3.2.4 Companies:公司管理 在这里可设置公司信息，公司类型，公司类型可为<br />
一般客户，高活跃度客户，供应商，各做伙伴。在建立项目和建立人员的时候都可以设定所属公司。<br />
3.2.5 Search:搜索功能，在所搜的关键字前加入&lsquo;！&rsquo;可直接跳到最佳结果页面中。<br />
----------------------------------------------------------------------------------------------<br />
<strong><span style="font-size: small;">4.Streber在项目中的实践：</span>
</strong>
<br />
    我们基本上了解了Streber的功能，可以看出系统使用相对大型商业软件要简单的多，相对缺少了很多纷繁复杂的工作流程，细化流程和统计功能。但是对于中小型项目来说，Streber已经抓住了项目中的关键要素，只要使用方法得当，将项目管理思想很好的融合到工具中，Streber可以使一般项目的质量和开发过程得到一个很大层次的以高。下面就我在项目管理过程中的经验与结合Streber的一些实践方法分享出来，希望大家能提出宝贵意见并且能将自己在管理过程中的经验或使用工具的经验分享出来。<br />
<br />
4.1 建立新项目<br />
        建立新项目的时候，注意项目描述的重要性，项目描述是显示在项目首页最醒目的地方，所有的项目干系人每次进入项目的时候都会看到，在项目描述中将项目的目标和意义写好，稍微夸大也是允许的，要让让开发人员认识到他们所做的事情的重要程度，做到信息对称，我们的项目团队对项目的成功有共同的认识，使我们项目顺利完成的第一步。在项目关闭后，我们将项目总结再补充到项目描述之中，整个项目周期完成。<br />
<br />
4.2  建立干系人管理和沟通机制<br />
        包括客户，公司领导，开发人员，市场人员等和项目相关的一切人员，都在系统中设立相应的账号使各方人员均能参与其中。我们在其中一个项目中为客户开放阅读（RSS订阅）与编辑权限（编辑权限看情况而定），可以让其参与其中，增加客户的团队归属感，使其了解团队的各个方面，包括项目进度汇报，各类文档资料，潜在困难，资源需求，使其主动帮助项目向更好的方式发展。<br />
4.3   建立项目知识库<br />
        建立知识库的好处众所周知，知识库已经越来越成为现在软件项目过程中的一个重要组成部分。我们使用Project中的<br />
Topic功能实现项目中的知识库的功能。我们在知识库中记录项目的代码规范，测试用户编写，项目工具经验，页面设计规范，文档专业规范等一般基础性知识点，同时在一些项目中，可以直接在知识库中进行项目说明书，开发设计文档，项目风险列表等开发类文档。使用 Project中的Folder功能可以进行文档的分级显示和管理。<br />
<br />
4.4沟通管理<br />
     Streber本身就是一个很好的沟通管理工具，我们在项目中主要使用其作为一个被动信息共享平台。开发人员使用Topic功能进行针对项目周报和月报的撰写，具体方法可以让汇报与上面的知识管理使用不同的Folder，在汇报的folder中为每一个开发人员（使用姓名或员工编号）建立一个周汇报的 topic和一个月报的topic。客户，公司领导和项目其他相关人员可以通过邮件或者Streber的RSS功能定期或手动收取这些报告，以了解项目的进度。同时项目经理和高层领导可以在这些汇报中批示自己的意见建议，或鼓励或表扬，对于开发人员的开发热情是一种激励。<br />
     在Streber中，每个任务都有一个TaskID的唯一标识，我们利用这个ID与其他的项目协作工具关联起来，例如我们在每日编译后在Check in到代码库的时候可以将每人负责的的Taskid作为comment提交到代码库。这样每次的提交都会有一个具体的taskid任务与之对应，以后有问题可以根据taskid对代码版本进行针对性的复查，将版本与代码关联统一管理起来。<br />
 <br />
4.5任务流程和任务设置<br />
     任务分配和协作无疑是使用Streber最大的目的之一，在我们的项目实施周期，我们无论采用何种软件开发方式，最终都离不开以下几步： 计划任务（全体项目组人员）-》形成项目阶段界定（milestone，项目组全体成员）-》分析安排任务（全员讨论，项目助理在Project中登记任务）-》任务实施（项目组员打开任务，实施更新进度）-》完成任务，项目经理审核-》审核通过，项目助理关闭此任务。注意在进行任务分配和登记的时候注意任务一定是具体的，可以验证的。 Strber中的任务具有new，open，done，apprived，closed几个状态，我们对应任务在上述不同阶段使用不同的状态进行标示，同时任务在分配登记的信息只是任务的一些基本信息，描述，优先级，状态，类型（Label，新的开发任务可以为task或feather，如果是），至于任务的时间就需要和每个被分配人员商议讨论，最好由本人进行估算，之后再进行登记。<br />
     在项目实施过程中，注意要让团队成员养成每日对任务情况进行汇报的习惯，这个习惯如同每日编译和每日check in一样重要，目的是事project中的任务进度一定要反映最近的情况。具体的汇报方式可以使用评论的方式，每个成员对本人每日的工作在相应任务下面以 add comment(评论)方式加入简短的总结，并根据自己的任务完成情况更新项目情况，包括项目完成进度百分比，项目状态，如果遇到任务变更或突发实践也可以直接更改任务的周期，并最好在comment中说明一下。在任务完成并审核后，登记人员对任务进行关闭，关闭的时候需要选择此任务的关系原因，如果是新功能（feather）的task，直接选择done即可，如果是bug类型的任务，则需要选择fixed，其他类型可根据任务的状态和类型不同选择相应的关系状态。<br />
     <br />
     在缺陷跟踪方面，Streber中对缺陷的跟踪方式与任务一样，事实上这里的缺陷就是一种类型为BUG的任务，其发布方式和流程与其他任务没有太大区别，只需要注意task的类型，label的类型等设置即可。Tester（测试）在进行缺陷登记的时候，注意是否写清了Bug的重现步骤，并且保证所有的缺陷都是有登记的人进行验证后进行关闭。我们在登记缺陷的时候，也要写清楚这个缺陷的优先级，开发人员一定要保证在开发新功能前把所有严重的缺陷解决掉再开始新任务。<br />
<br />
-----------------------------------------------------------------------------------------------<br />
5.不适合使用Streber的情况：<br />
1.Streber官方网站上表明，本系统只适合1-40人的小型团队，的确，Streber没有商业软件的自动化流程，也没有其软件的功能细化程度高，但这个描述也有点儿太绝对了，还是要根据项目实际情况和管理体系来确定。<br />
2.Streber不是一个缺陷管理工具，它关注与项目的整个生命周期，同样也没有相应的二次开发的API和与CVS，SunVersion之间的插件。<br />
3.Streber不是一个纯wiki系统，不要把它当作WIKI系统使用，它的性能对于项目内部管理来说足够使用了，但是并没有加入太多的性能优化和缓存机制，所以把其当作内容管理系统来做是相当不明智的。<br />
-----------------------------------------------------------------------------------------------<br />
6.使用总结：<br />
在软件过程改进技术不断发展和进步的情况下，很多国内中小型企业的开发规范化和项目管理机制确一直滞留在4，5年前的样子，这样的情况对于企业和雇员的发展都具有很大的弊端。近年来市面上也出了很多项目协作和管理工具，例如有名的JIRA，Xplanner，版本控制工具svn，cvs等等。这些工具各有个的特点，关键使用工具不是目的，目的是要在工具辅助基础使用项目管理思想上最大限度的对项目进行控制，对软件构造过程进行不断持续的优化和改造，这样才能使软件企业和项目得到良性发展。本文在Streber上也是个大体的说明，strber中包括wiki的使用，任务的转接分派，项目元素的移动，权限的具体设置本文都没详细的进行阐述，我会在以后的相关文章中逐渐进行说明，由于streber的中文文档几乎没有，如果大家有相关的经验技术可以一同进行交流。<br />
-----------------------------------------------------------------------------------------------<br />
<strong><span style="font-size: small;">附录：WIKI语法初窥</span>
</strong>
<br />
WIKI语法适合进行多人协作文档和版本控制，由于streber基于WIKI的思想和语法进行设计，文档的编写使用都是WIKI的语法，所以本文简单介绍一下WIKI语法核项目中常用的语法，如在使用过程中需要wiki语法的进一步支持，可以到这里http://www.allwiki.com/wiki/Wiki查询。<br />
 <br />
标题（heading）<br />
== Top Level ==<br />
<br />
=== Second Level ===<br />
<br />
或者<br />
<br />
Top Level<br />
=========  &lt;-  3 or more '=' characters<br />
<br />
Second Level<br />
------------   &lt;- 3 or more '-' charaters<br />
列表（List）<br />
 <br />
# Numbered<br />
# Numbered<br />
代码框<br />
[ code from=&quot;index.php&quot;]<br />
some more code<br />
[ /code]<br />
 <br />
Email链接<br />
Send to mailto:zm@streber<br />
 <br />
表格（Tables）<br />
<br />
|Header |Header |<br />
|Cell |Cell |</p>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://banner.javaeye.com/topic/230399#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/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 20 Aug 2008 10:33:24 +0800</pubDate>
        <link>http://www.javaeye.com/topic/230399</link>
        <guid>http://www.javaeye.com/topic/230399</guid>
      </item>
      <item>
        <title>请问大家有对文思创新熟悉的吗？</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://shanke0702.javaeye.com">shanke0702</a>&nbsp;
          链接：<a href="http://www.javaeye.com/topic/231405" style="color:red;">http://www.javaeye.com/topic/231405</a>&nbsp;
          发表时间: 2008年08月22日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          如果有熟悉的大虾不妨客观的评价一下，小弟在此谢谢了
          <br/>
          <span style="color:red;">
            <a href="http://banner.javaeye.com/topic/231405#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 22 Aug 2008 08:55:10 +0800</pubDate>
        <link>http://www.javaeye.com/topic/231405</link>
        <guid>http://www.javaeye.com/topic/231405</guid>
      </item>
      <item>
        <title>杭州：高参公司诚聘优秀的软件开发工程师</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://jobhunter.javaeye.com">JavaEye猎头</a>&nbsp;
          链接：<a href="http://www.javaeye.com/topic/229232" style="color:red;">http://www.javaeye.com/topic/229232</a>&nbsp;
          发表时间: 2008年08月18日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <strong>高参公司</strong>(Gaocan LLC)由中国留学人员创办，注册在美国特拉华州。 2007年在中国杭州开始创建一支中国本土的团队。我们的宗旨是凭借一流的技术成为您最高明最可信赖的参谋，让您生活地更简单更轻松。<br /><br />高参网(<a href="http://www.gaocan.com" target="_blank">http://www.gaocan.com</a>)自从1999年开通以来已经拥有上百万用户。网站目前免费提供独特的酒店旅馆搜索和最佳旅行路线搜索服务。我们目前95%代码是Java,3% JavaScript,2% Python。开发环境是：Linux,Mac,Subversion,MoinMoin,JIRA。 我们共有6名员工。<br /><br /><strong>招聘要求</strong><br /><br />* 具有创业型公司员工的冒险和实干精神。重视期权的价值。<br />* 工作经验2到12年。<br />* 拥有扎实的Algorithms和Data Structures基础，深刻领会面向对象的思想。熟悉Java语言。<br />* 优秀的中英文读写和沟通能力,我们的书面交流主要是英语(如项目管理和程序注释)。<br />* 痴迷于编程，即使没有报酬也会自己想写程序,最好有过完全出自兴趣开发的作品。<br />* 热爱各种互联网应用，把用户对你开发的应用的赞赏当作最大的享受。<br />* 熟悉以下技术或工具中的三种以上： C/C++, Java, Python, GWT, Hibernate, Tapestry, CSS,<br />JavaScript, Unix shell scripting, Java Swing, Natural Language<br />Processing, Lucene, Eclipse, CVS, Subversion， PostgreSQL, Django,<br />ext-gwt, gwt-ext.<br />* 需要通过两轮电话面试和一次约8个小时的on-site面试(包括白板编程)。<br />*  <strong>全职, 杭州。工资在6000到10000元每月，另加期权</strong>。<br /><br /><span style="color: red">如果是外地来面试的我们报销所有路费和住宿，而且可以安排在周末进行以方便在职的candidate.我们面试较严格是为了保证所有员工都在和优秀的人共事从而可以互相学习并心情愉快。</span><br /><br /><br />请发送您的中英文简历到 <strong>jobs AT gaocan.com</strong>(把AT换成@)<br />或者使用我们的"联系高参"页面(<a href="http://www.gaocan.com/app?page=user%2FContactGaocan&service=page" target="_blank">http://www.gaocan.com/app?page=user%2FContactGaocan&service=page</a>)。
          <br/>
          <span style="color:red;">
            <a href="http://banner.javaeye.com/topic/229232#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/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 18 Aug 2008 15:30:17 +0800</pubDate>
        <link>http://www.javaeye.com/topic/229232</link>
        <guid>http://www.javaeye.com/topic/229232</guid>
      </item>
      <item>
        <title>郁闷的新手--你是活该！</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://up123.javaeye.com">风清云淡</a>&nbsp;
          链接：<a href="http://www.javaeye.com/topic/228278" style="color:red;">http://www.javaeye.com/topic/228278</a>&nbsp;
          发表时间: 2008年08月15日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在JavaEye的招聘频道，经常看到许多新手的苦闷贴和牢骚帖，比如许多新手埋怨招聘的人太苛刻--一会儿要求有经验，一会儿又要求是计算机专业，经常带有色眼睛看待培训学校出来的或者那些非名校出来的人。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 本来这些新人写这些帖子是想博得别人的宽容和理解，没想到又招致一些老鸟的一通批评和嘲讽，更加郁闷了！我在这里想说，种瓜得瓜，种豆得豆，一切因皆有果起，不要再抱怨环境、埋怨别人了，多从自身找找原因吧。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HR要求有经验，这有错吗？新人会说，我没工作，哪有经验？但在学校里就不能自己做项目吗？网上那么多系统原型，比照着做几个，就不能积累项目经验吗？</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HR总是鄙视培训出来的或是非名校毕业的？这有错吗？新人会说，王侯将相，宁有种乎！但请新人换位考虑一下，招人是有成本的，有成本就要考虑概率的问题，10个清华毕业的，可能会有8个人才，10个二本毕业的可能只有2个人才，你如果是HR，经常要面试几十个，你愿意选择那些概率小的人群吗？<span style="color: #ff0000;">所以如果你是概率小的人群，就要比那些概率大的人群有明显优势才能获胜</span>
，这没有什么不公平！光看贼吃肉，不见贼挨打。人家上名牌的人在上高中的时候投入了多少精力，那些上培训学校和烂大学的又投入了多少精力，醒醒吧，苦闷的新手！</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 还有些新手抱怨现在的社会太浮躁、诱惑很多、学习的气氛很差，但说来说去就没有说<span style="color: #ff0000;">自己没种</span>
，没有自责一下自己的自控能力。一个成年人，没有自控能力和自学能力，等于是把自己的命运交由环境和别人掌握，失败了，也是咎由自取，怨不得别人！</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如果我们起点低，那就更需要我们努力，付出比别人更多的汗水！</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 我也是烂大学毕业，学的专业跟计算机不沾边，我自学编程的时候（90年代），没有网络（有拨号，但鄙人穷的根本上不起），没有人可交流，身边大多数人也都在谈恋爱混日子，但这不是失败的借口（参见<a href="../../blog/228272">我的编程之路</a>
）。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如果想追求卓越，想成为一个优秀的人，就要象男人一样战斗，敢于在比自己强的对手面前亮剑！</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;不论时间流逝的快和慢，我们都不能把它截住，把它储藏起来，但我们可以有意义地、积极地利用它。切记：今天是余生开始的第一天！</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 从现在起，抛弃抱怨，开始努力吧！</p>
          <br/>
          <span style="color:red;">
            <a href="http://banner.javaeye.com/topic/228278#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 15 Aug 2008 11:51:06 +0800</pubDate>
        <link>http://www.javaeye.com/topic/228278</link>
        <guid>http://www.javaeye.com/topic/228278</guid>
      </item>
      <item>
        <title>这样的应用有必要Hibernate？</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://hex.javaeye.com">sole</a>&nbsp;
          链接：<a href="http://www.javaeye.com/topic/229228" style="color:red;">http://www.javaeye.com/topic/229228</a>&nbsp;
          发表时间: 2008年08月18日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          其实也就有三张简单的表；<br />数据量特别大，一个表中会产生有几十万，甚至几百万条记录；<br />更新，删除，插入操作非常频繁，一般都是批量进行的。<br /><br />公司其他技术人员说，hibernate自动ORM,有自带缓冲,数据库连接池，减少了很多工作。<br />其实公司没有一人hibernate了解的，只听说而已，现学现用。 <br /><br />我觉得很没必要。用hibernate没有一点优势。<br />对hibernate了解比较深入的，能谈谈您的意见吗？<br />谢谢all
          <br/>
          <span style="color:red;">
            <a href="http://banner.javaeye.com/topic/229228#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/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 18 Aug 2008 15:21:12 +0800</pubDate>
        <link>http://www.javaeye.com/topic/229228</link>
        <guid>http://www.javaeye.com/topic/229228</guid>
      </item>
      <item>
        <title>从软件质量想开去......</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://gurudk.javaeye.com">gurudk</a>&nbsp;
          链接：<a href="http://www.javaeye.com/topic/231393" style="color:red;">http://www.javaeye.com/topic/231393</a>&nbsp;
          发表时间: 2008年08月22日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          先插播一则广告，我建立一个圈子，讨论软件质量和开发效率，欢迎大家加入。<br /><a href="http://devmgr.group.javaeye.com/" target="_blank">http://devmgr.group.javaeye.com/</a><br /><br />本文想采用头脑风暴的方式，大家一起想影响软件质量的因素，便于我们采用QFD（质量机能展开）方法改进软件质量。<br />我先首先介绍一些软件的质量特性，就是“XX性”，参考McCall，boehm，iso9126模型，其它自己杜撰的。<br /><br /><strong>.正确性（correctness）<br />.可靠性（reliability）<br />.完整性（integrity）<br />.可用性（usability）<br />.效率性（efficiecy）<br />.可维护性（maintainability）<br />.可扩展性（extensibility）<br />.可测试性（testablity）<br />.互操作性（interoperablility）<br />.灵活性（flexibility）<br />.可重用性（reuseablility）<br />.可移植性（portablility）<br />.明确性（clarity）<br />.可修改性（modifiablity）<br />.可恢复性（resilience）<br />.可理解性（understandablity）<br />.有效性（validity）<br />.功能性（functionality）<br />.普遍性（generality）<br />.经济性（economy）<br />.透明性（transparency）<br />.合理性（rationality）<br />.可验证性（verificablity）<br />.可追踪性（traceability）<br />.简单性（simplicity）<br />.一致性（consistency）</strong><br /><br />以下是我的砖头，有些是客观的，有些是主观的，道行尚浅，欢迎继续拍砖：<br /><br /><strong>1）项目管理与计划（☆☆☆☆☆）</strong><br />  .进度计划，估算是否合理，满足合理性；<br />  .是否遗漏，满足完整性；<br />  .细分的任务是否明确，满足明确性和可追踪性；<br />  .是否建立了沟通机制，满足透明性。<br />  .里程碑是否明确，满足明确性和可验证性。<br />  项目计划和管理的不好，会直接影响软件质量。<br /><br /><strong>2）需求分析（☆☆☆☆☆）</strong><br />  .是否描述了所有需求，满足了完整性。<br />  .是否清晰阐述需求，满足明确性。<br />  .是否正确描述需求，满足正确性。<br />  .是否简单明了，不用副词和形容词，满足准确性和可理解性。<br />  .是否容易测试，满足可测试性。<br />  这是影响软件质量最大的因素。<br /><br /><strong>3）设计（☆☆☆☆）</strong><br />  .是否容易理解，满足可读性和可理解性。<br />  .数据库和架构是满足可扩展性。<br />  .数据库是否考虑到性能，满足可扩展性和效率性。<br />  .数据库的范式是否合理，满足合理性。 <br />  .架构是否考虑到性能问题，满足可扩展性和效率性。<br />  .架构是否考虑周到，满足完整性。<br />  .架构模块是否划分合理，满足可重用性。  <br />  .模块设计是否考虑性能问题，满足效率性。  <br />  .界面设计是否容易操作和使用，满足易用性和可用性。<br />  非常重要，会影响软件的性能，可用性。<br /><br /><strong>4) 测试（☆☆☆☆）</strong><br />  .测试用例是够合理覆盖业务流程，满足完整性。<br />  .测试策略是否制定，满足经济性。<br />  确保软件能够履行职责，直接影响软件质量。<br /><strong><br />5) 编码实现与集成（☆☆☆☆☆）</strong><br />  .编码是否考虑了性能问题，满足对设计的可追踪性；<br />  .编码是否进行测试，满足性能和功能的可验证性，功能的合理性。<br />  .代码是否规范，满足可读性，可理解性和可维护性。<br />  .代码是够满足可扩展性。<br />  .代码意图是够明确，满足明确性。<br />  .代码命名是否合理，满足一致性。<br />  .是够进行单元测试和持续集成，满足效率性，正确性，有效性。<br />  实现好不好，影响功能符合性，修改的可维护性。<br /><strong><br />6) 技术评审（☆☆☆☆）</strong><br />   .预审质量是够合格，满足充分性。<br />   .评审方式（桌查，轮查，走查，审查）选择是够合理，满足合理性。<br />   .评审人员是够选择合格，满足合理性。 <br />   .评审缺陷是否记录，满足可追踪性。<br />   .评审检查表是否合理，满足可验证性。<br />  <br /><strong>7) 沟通（☆☆☆☆）</strong><br />   .是够满足及时性，有效性。<br />   .是够满足充分性，确保理解一致。<br />   .需求分析和客户沟通不好，需求就会不明确。<br />   .开发和需求，设计人员沟通不好，就会错误的去实现功能，造成浪费。<br />   <br /><strong>8) 培训（☆☆☆）</strong><br />   通过培训，可以使人获取用于工作的技能，从而间接影响软件质量。<br />   .需求分析培训。<br />   .架构设计培训。<br />   .数据库设计培训。<br />   .模块设计培训。<br />   .界面设计培训。<br />   .单元测试培训。<br /><br /><strong>9) 管理（☆☆☆☆）</strong><br />   .配置管理，满足可追踪性，可恢复性，可维护性。<br />   .质量保证，满足可执行性。<br />   .制度，制度合理，人积极性高，间接影响软件质量。<br />   管理得好，效率高，间接影响软件质量。<br /><br /><strong>10)人（☆☆☆☆☆）</strong><br />   .IQ，逻辑思维能力强，能够透彻理解需求，分析条理清楚，直接影响软件质量。<br />   .EQ, 有毅力，自律，勇气，遇到问题不退缩，间接影响软件质量。<br />   .TQ, 是否好好利用时间，提高个人工作效率，间接影响软件质量。<br />   .领导，好的领导可能会影响一批人，能够使团队凝聚在一起，从而直接影响软件质量。<br />   .技术水平高低，对技术的熟悉程度，直接影响软件质量。<br /><br /><strong>11)公司（☆☆☆）</strong><br />   .是否有好的氛围，轻松，有利于发挥个人能力，高效率的工作，直接影响软件质量。<br />   .是否奖罚分明，影响心情，直接影响软件质量。<br />   .是否有重视质量的文化，不用说，直接影响软件质量。<br />   .职责是否清楚，满足明确性，如果一个人什么都做，什么都做不精，职责不清，间接影响软件质量。<br /><br /><strong>12)客户（☆☆☆☆）</strong><br />   .客户信息化程度高，IT素养高，容易沟通，间接影响软件质量。<br />   .客户积极配合，进行阶段软件演示，提交问题，间接影响软件质量，这个非常重要。<br /><br /><strong>13)方法学（☆☆☆）</strong><br />   .采用迭代开发，分阶段交付，增强了反馈，充分沟通。间接影响软件质量。<br />   .方法学选择缺乏指导，会间接影响软件质量。<br />   <br />     <br />回帖原则：<br /><br />如果是新的主题，请继续我的标号，主题尽可能简短，分条阐述和软件质量的关联。<br />如果是补充，指出原标号和标题，进行补充。<br /><br />权当一个游戏罢了。
          <br/>
          <span style="color:red;">
            <a href="http://banner.javaeye.com/topic/231393#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/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 22 Aug 2008 02:34:03 +0800</pubDate>
        <link>http://www.javaeye.com/topic/231393</link>
        <guid>http://www.javaeye.com/topic/231393</guid>
      </item>
      <item>
        <title>2家公司的offer, 选择哪一个?</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://joedanny.javaeye.com">JoeDanny</a>&nbsp;
          链接：<a href="http://www.javaeye.com/topic/231302" style="color:red;">http://www.javaeye.com/topic/231302</a>&nbsp;
          发表时间: 2008年08月21日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          先说我本人的情况.一年经验,java基础很好,ssh熟练,mysql熟练,oracle了解.主要是应聘Java程序员.<br /><br />这两家公司分别是 浙江鸿程计算机系统有限公司 和 杭州世导科技有限公司.<br /><br />下面说一下2个公司的异同:<br /><br />鸿程计算机系统<br />    公司情况:国有企业,主要业务有IT系统应用服务、通讯增值运营、信息系统集成等.是省电信的全资子公司.<br />    公司规模:500人+<br />    开发团队: 经过我现场观察,很多人,团队很大.<br />优点:<br />   1.办公环境非常好(现场观察).<br />   2.国有企业<br />   3.大型公司<br />缺点:<br />   1.不够敏捷(国有企业 --> 官僚主义)<br />   2.<span style="color: darkred">加班很厉害</span>(一面的时候就让我做好每天到晚上10点持续3个月加班的心理准备)<br />   <br />关于面试:<br />   今天还没拿到offer,现在已经过了2面了,还剩第3面(行政主管).自我感觉有80%的成功率.面试内容都很一般,框架(ssh)和数据库,还有java基础.<br />关于评价:<br />    <a href="http://www.itcompanysearch.com/5/5/5560.html" target="_blank">http://www.itcompanysearch.com/5/5/5560.html</a><br />    在it公司速查网上看到这个公司主要的问题就是工资(工资结构混乱,不按时发.  <span style="color: darkred">福利奖金全在工资里?</span>).目前给我开的基本工资是1400(年薪4w).应该和这个差不多<br />    <div class="quote_title">引用</div><div class="quote_div">5w的年薪，一般是基本工资1450，奖金1450左右 </div><br /><br />世导科技<br />     公司情况:民营,主要业务是VAS（电信增值服务）、IDC（互联网数据中心）、ITS（IT服务）,其中IDC应该是主要的.<br />     公司规模:150-500<br />     开发团队:30人<br />优点:<br />   1.注重测试(主要从面试上得出的)<br />   2.主管非常好(我认为很重要)<br />   3.团队氛围很好(也是从面试上得出的)<br />   4.几乎不加班(这也是一个有点)<img src="/images/smiles/icon_surprised.gif"/><br />缺点:<br />   1.开发人数比较少(相对鸿程来说)<br />   2.软件开发不是公司的主要方向<br />其他:<br />   办公环境未知(没有去开发现场).<br /><br />关于面试:<br />    offer已拿到,4000左右/月.经过一面和二面, 面试内容为测试,框架,数据库,java基础. 感觉公司很<span style="color: red">重视测试</span>,笔试有测试题,一面和二面也有测试相关的问题, 也问道了个人的职业规划.很合我胃口.<img src="/images/smiles/icon_lol.gif"/><br />关于评价:<br />    <a href="http://www.itcompanysearch.com/1/0/10418.html" target="_blank">http://www.itcompanysearch.com/1/0/10418.html</a><br />    <a href="http://www.itcompanysearch.com/6/9/698.html" target="_blank">http://www.itcompanysearch.com/6/9/698.html</a><br />    在it公司速查网上的问题是面试接待方面的.我没有遇到面试接待方面的问题,你尊重别人,别人自然会尊重你.<br /><br />现在拿不定主意要去哪一家(如果鸿程3面不通过,那就省心了),主要问题是鸿程加班很厉害,工资问题不清楚.而世导(开发不是重点业务)是发展前景上.大家有熟悉这两家公司的给出出主意,谢谢了.
          <br/>
          <span style="color:red;">
            <a href="http://banner.javaeye.com/topic/231302#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 21 Aug 2008 18:59:40 +0800</pubDate>
        <link>http://www.javaeye.com/topic/231302</link>
        <guid>http://www.javaeye.com/topic/231302</guid>
      </item>
      <item>
        <title>谈两次面试</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://chenpingtai2008.javaeye.com">chenpingtai2008</a>&nbsp;
          链接：<a href="http://www.javaeye.com/topic/228510" style="color:red;">http://www.javaeye.com/topic/228510</a>&nbsp;
          发表时间: 2008年08月15日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          记的第一次面试是学校的导员邀请一家上海公司来我们学校招人，是有关java的，那时候是大三。通过介绍可知是一家做外包的，要求要日语三级或英语六级。介绍完自己公司的情况后，就问在坐的同学有没有人达到这个要求的，于是整个系举起了两只手，两只女生的手，但是这两个女生不会编程技术，哦忘了说，我是数学专业的。系里有几个人会编程技术（包括我一个）。都是自己平常爱好利用课余时间学的。但是不管日语还是英语都没达到那个要求。那时候我们都刚接触日语。很显然，公司有点失望，打算不在继续下去了，但是既然学校找来了，又不好意思就这么走了，于是，就给我们发了一张笔试，但不让把答案添在试卷上，要拿张纸写。接着就是面试，大家都去了，我知道公司已经不想招人了，但我还是去了面试，不为别的，就会了得到一次面试经验。面试官没问我什么问题，给我分析了卷子。那是一张很综合的卷子，考的内容很多c,c++,java还有其他的，我都答了，除了java其他都是蒙的，面试的时候，我直接跟他说实话，然后他就只给我分析了java题，最后说我们java基础学的不错，然后教我以后学习的方向。我很感谢有这样的面试机会，懂得了不少。<br />这次面试是下午，是一个老师介绍去的，那边公司招人的经理说他招人的理念是，有德有才重用，有德无才可用，无德有才慎用，无德无才坚决不用。我被这个理念吸引去了。面试的时候，我们是四个人一起上的，坐在一个沙发上，因为有老师介绍，所以就一起上了。首先面试官要我们做自我介绍，我跟他说我是被他的理念吸引来了，之后就什么也说不出来，脑子就白了，他问我介绍完了吗，我说完了，于是话题就交给后面的同学了。之后的面试里，都是这样，我总是脑里一片空白，不知道要说什么。中间他一直想要让我表达一下自己，但是，我不知道说什么。他问我最擅长什么，我说都差不多。这是一个老毛病了，不知道为什么，自己一遇到陌生人，说话就变的拘谨起来，然后不知道该说什么，其实，平常我跟同学们说话都挺能说的，跟自己的好朋友更是什么话都敢说，不知道为什么，一到陌生人，尤其是象面试官，陌生的老师，就显的措手不及。不知道怎么改。面试的经理很年轻，就比我大两岁，看出来很有本事。很能表达自己，当他介绍自己下个要做的项目时候，我都听的一任任的。后来一个女面试官来问我们话，大家是自由交流的，我都没怎么说，那个女面试官就问我，你为什么不说话啊，我说，我不说，听你们说就好了，结果就把那女面试脸都整红了。咳，不知道怎么改掉这样的毛病，其实我很想交流，但是总是不知道说什么好。要是我同学，一定都不知道我有这样的一个性格。咳。。。。。。。。。。<br />学校断网了，跑来网吧发发闷。
          <br/>
          <span style="color:red;">
            <a href="http://banner.javaeye.com/topic/228510#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/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 15 Aug 2008 20:32:00 +0800</pubDate>
        <link>http://www.javaeye.com/topic/228510</link>
        <guid>http://www.javaeye.com/topic/228510</guid>
      </item>
      <item>
        <title>开发内容管理系统（cms）ROM用ibatis合适还用Hibernate合适</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://axhack.javaeye.com">axhack</a>&nbsp;
          链接：<a href="http://www.javaeye.com/topic/231369" style="color:red;">http://www.javaeye.com/topic/231369</a>&nbsp;
          发表时间: 2008年08月21日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          小弟是新手，想边学边做cms仿 DEDEcms的功能。用spring2.5+struts2+freemarker2.8+ibatis2.3+dwr<br />对数据库操作用联表查询比较多。目前用的是ibatis2.3<br />感觉不如JDBC方便(新手的见解)，特别是数据库备份功能，要求执行任意语句。如：select * from tales语句。 ibatis封装成map传个业务层，业务层在把MAP遍历出来。这个过程没有JDBC快。<br />我没有用过Hibernate 不知道Hibernate比不比ibatis快。请各位帮忙指点迷经。<br />以下是数据库备份代码：<br /><pre name="code" class="java">&lt;statement id="mysql" resultClass="java.util.HashMap" parameterClass="String" remapResults="true">
	&lt;![CDATA[
	$value$
	]]&gt;
&lt;/statement></pre><br /><br /><pre name="code" class="java">list=service.mysql("select * from "+tables[0]);//备份内容
				StringBuffer tab=new StringBuffer();
				for(int j=0;j&lt;list.size();j++){
					map=(Map)list.get(j);		
					tab.append("INSERT INTO `"+tables[0]+"`");
					Iterator it=map.keySet().iterator();
					tab.append("(");
					for(int m=0;it.hasNext();m++){												
						tab.append(it.next());
						if(m&lt;(map.size()-1)){
							tab.append(",");
						}																	
					}
					tab.append(")");
					tab.append(" VALUES(");
					Iterator its=map.keySet().iterator();
					for(int n=0;its.hasNext();n++){
						tab.append("'");						
						tab.append(map.get(its.next()));
						tab.append("'");						
						if(n&lt;(map.size()-1)){
							tab.append(",");
						}	
					}					
					tab.append(");\r\n");
					if(tab.toString().getBytes().length>(fsize*1024)){//判断大小分卷
						Tools.outfile(application.getRealPath("/WEB-INF/sqlback/"+tables[0]+"_"+(teg+1)+".txt"), tab.toString());						
						teg++;
						tab=new StringBuffer();
					}else{
						Tools.outfile(application.getRealPath("/WEB-INF/sqlback/"+tables[0]+"_"+(teg+1)+".txt"), tab.toString());
					}
				}</pre>
          <br/>
          <span style="color:red;">
            <a href="http://banner.javaeye.com/topic/231369#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 21 Aug 2008 22:59:21 +0800</pubDate>
        <link>http://www.javaeye.com/topic/231369</link>
        <guid>http://www.javaeye.com/topic/231369</guid>
      </item>
      <item>
        <title>这样的设计可行么？</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://ebinaini.javaeye.com">ebinaini</a>&nbsp;
          链接：<a href="http://www.javaeye.com/topic/228832" style="color:red;">http://www.javaeye.com/topic/228832</a>&nbsp;
          发表时间: 2008年08月17日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          最近做个项目 遇到查询性能问题 设计完后 性能问题解决了 但是 总感觉有什么不对的地方<br /><br />我有4个信息表 一个是厂房信息表 一个是仓库信息表 一个是土地信息表 一个是需求信息表<br /><br />他们的信息都不一样所以需要分开建立表<br /><br />但是我在前台查询的时候 需要他们4个表的所有数据 这样就会很慢 应为我用的是hibernate <br /><br />所以后来我有建了一个总表 里面就存查询用的字段 每次插入这四个表种的任何一个 都需要往总表种插入一条主键相同的记录 这样查询问题解决了  但是其他问题又出现了 我需要删除 如果删除多个信息的时候 就会有问题 <br /><br />应为 我不想 在根据总表的类型再去查找 到底要取那个表去删，所以有没有更好的设计 能解决这个问题
          <br/>
          <span style="color:red;">
            <a href="http://banner.javaeye.com/topic/228832#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 17 Aug 2008 02:32:51 +0800</pubDate>
        <link>http://www.javaeye.com/topic/228832</link>
        <guid>http://www.javaeye.com/topic/228832</guid>
      </item>
      <item>
        <title>动态网站的缓存及个性化数据的显示处理</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://leero.javaeye.com">leero</a>&nbsp;
          链接：<a href="http://www.javaeye.com/topic/228873" style="color:red;">http://www.javaeye.com/topic/228873</a>&nbsp;
          发表时间: 2008年08月17日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><span style="color: #ff0000;"><span style="background-color: #ffffff;">如题，不知道有的大型网站如何做的缓存，在页面上是如何显示个性化数据的[比如:登陆的动态信息]。</span></span><br /><br /><span style="color: #808000;">比如：淘宝，在它没一个商品页面都会有显示个性化数据[登陆信息:用户名，消息数量等的]，但是据我说知那页面肯定做了缓存的，要不然承受不了那么大的访问量。这就来问题了，居然做了缓存，为什么还能显示登陆信息？<br />1.假如是使用的cookie保存的个性化数据的，再从cookie里获取的信息显示到页面上，如果这个假如成立的话，那么从cookie里获取信息的话就只有两种方式：客户端和服务器端两种方式获取cookie信息，我看了下它的页面，没有找到任何使用客户端脚本获取cookie信息的代码。如果是从服务器端获取cookie信息的话那商品页面又如何能缓存呢？<br />2.假如是使用的session保存的个性化数据的，同上在服务器端读取cookie一样，页面又如何做到的缓存的？<br />3.难道是它只是针对未登陆用户做了缓存？不太可能，淘宝每天成交量都不低，故不太可能只针对登陆用户做缓冲。<br />4.难道是它使用了类似于oscache之类的缓存，页面中部分缓存，部分不缓存？</span><br /><br /><span style="font-size: medium;"><br /></span><strong><span style="color: #ff0000; font-size: medium;"><span style="background-color: #ffff99;">je也是同样的，如何即做到缓存又做到个性化数据的处理？</span></span></strong></p>
          <br/>
          <span style="color:red;">
            <a href="http://banner.javaeye.com/topic/228873#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/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 17 Aug 2008 11:05:16 +0800</pubDate>
        <link>http://www.javaeye.com/topic/228873</link>
        <guid>http://www.javaeye.com/topic/228873</guid>
      </item>
      <item>
        <title>技术总监和CTO的区别 浅谈CTO的作用----软件公司如何开源节流（一）</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://david-lv.javaeye.com">david_lv</a>&nbsp;
          链接：<a href="http://www.javaeye.com/topic/229940" style="color:red;">http://www.javaeye.com/topic/229940</a>&nbsp;
          发表时间: 2008年08月18日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          我一直在思考软件公司