??xml version="1.0" encoding="utf-8" standalone="yes"?>
昨天从IBM的网站下载了最新的RMC7.2QRational Method ComposerQ,感觉q东东现在是做好了,真的不得不让Z服IBM的伟大。其实自从IBM收购Rational的那一天vQIBM在不停的整合其五大产品U,也才有今天这L(fng)格局Q五大产品U能有机的结合在一P能满现实中的各个领域的大部分需求,Rationalpd是为满Y件开发领域所提供的一pd软gQI love the Rational series?br />
闲话不多说了Q今天先来分享一下RUP的一些基吧,我用Mind图来记录。如下:(x)
2008.1.21.
本周来学?fn)后台命令?x)
cron pȝ调度q程。用它在每天或一个@环周期中完成作业?br />At 使用它在一个特定的旉q行一些特D的作业?br />Q 使用它在后台q行一个占用时间不长的q程?br />Nohup 使用它在后台q行一个命令,即用户退出时也不受媄(jing)响?br />
crontab命o(h)允许用户提交、编辑或删除相应的作业。每一个用户都可以有一个crontab文g来保存调度信息,pȝ理员通过cron.deny和cron.allowq两个文件来止或允许用h有自qcrontab文g?br />crontab的域Q?br />分钟 时 日 月 星期 要运行的命o(h)
可以用-来表CZ个时间范_(d)域中可以用逗号(,)表示多个选项Q用Q表Cl的旉Dc(din)?br />命o(h)格式Qcrontab [-u user] -e -l -r
根用户可以通过/etc目录下的at.allow和at.deny文g来控制哪些用户可以用at命o(h)Q哪些用户不行?br />at命o(h)格式Qat [-f script] [-m -l -r] [time] [date]
nohup命o(h)格式Qnohup command &
默认?x)将该作业的所有输出重定向C个名为nohup.out的文件中Q可以指定输出文Ӟ如下Q?br />nohup command >myout.file 2>&1
样例Q?br />查找文g名以a或b开头的Q可执行文gQƈ调用ls命o(h)昄其详l信?br />find . -name '[a-b]*' -perm 755 -exec ls -l {} \;
查找更改旉?天内的文?br />find . -mtime -5
列出所有的目录?br />find . -type d
xargs可以使用户对所匚w到的文g执行几乎所有的命o(h)Q而不?x)受到命令长度的限制。如Q?br />find . -name '*.txt' -type f|xargs grep "ttt"
搜烦(ch)所有txt文gQƈ扑ևq些文档中存在ttt字串的文件?/p>
“研I的动机本n׃(x)影响l果。”(page 14Q?/SPAN>
书中在第17到20对J2EE中用代码生成技术的U种理由?qing)其解决办法做了详细的分析,我也?gu)谈谈自己的体?x)?/SPAN>
◎根?/SPAN>RDBMS schema生成持久对象c?/SPAN>
Entity Bean的解耦能力的o(h)Z敢恭l_(d)我在开发一个项目的时候一般都采用Hibernate Q且一般自己写?/SPAN>*.hbm”配|文Ӟ从不用工L(fng)成,但是我会(x)利用hbm2DDL?/SPAN>hbm2Java工具来生成相应的RDBMS schema和持久对象类?/SPAN>
对于XDoclet工具Q其实是个不错的工具Q只是用v来麻?ch)了一些(我本人比较懒Q?/SPAN>
其实对于RDBMS的性能没有做过太多的考虑Q因Z直以来做的项目不是很大,数据库的逻辑l构也很单,所以性能的问题几乎不用考虑?/SPAN>
书中提到“自动生成的持久对象不会(x)包含M行ؓ(f)Q如果手工向其中d行ؓ(f)Q又可能l再ơ执行代码生成带来麻?ch)。一个没有行为的‘对象’是典型的反OO设计Q我们很快将再次讨论q个问题。”(page 17Q我且看作者将?x)怎么解释q个问题Q?/SPAN>
◎根据持久对象类生成DDL
◎生?/SPAN>DAO代码
◎生?/SPAN>EJB部v描述W?/SPAN>
◎ؓ(f)领域对象生成“将对象映射?/SPAN>XML”的代码
◎生成用于访?/SPAN>EJB的类
◎生成一整套J2EE代码Q从JSP直到entity beanQ或是别的持久对象)(j)
在此条的附注中,作者提CIntranet数据库管理工Pq样的工具到是不,可是我在想真的能通过IE来管理网l数据库的工具太了Q好?/SPAN>PHP在这斚w做得q算好?/SPAN>
◎生成千一律的重复代码Q例如“管理脏数据标记?/SPAN>
在此复习(fn)一下“脏诠Z和“脏数据”。脏d是指当一个事务正在访问数据,q且Ҏ(gu)据进行了修改Q而这U修改还没有提交到数据库中,q时Q另外一个事务也讉Kq个数据Q然后用了q个数据。因个数据是q没有提交的数据Q那么另外一个事务读到的q个数据是脏数据Q依据脏数据所做的操作可能是不正确的?/SPAN>
q本书主要是在谈架构Q而且限定?/SPAN>J2EEq_上的架构。自然就不跟微Y?/SPAN>.Net{架构作比较Q但偶尔也会(x)借鉴其思想之精华。书中对自主开发框架也提出了自q看法Q进行了大篇q的阐述Qȝ来看是十分有道理的,但是在很多实际的目中,我还是经常自己写一些简单的基础设施Q当然这些基设施能够让我的团队很快理解ƈҎ(gu)使用?/SPAN>
书中对于开发过E和开发工h有作q多的讨论?/SPAN>
“除非别无选择Q否则不要容忍‘伪对象’的存在。”(page 27Q?/SPAN>
“在避免?/SPAN>OO的做法的同时Q我们还应该量实践OO的原则。?/SPAN> Q?/SPAN>page 27Q?/SPAN>
对于OO的讨论,书中有前面的章节中确实花了不的幅Q还记得当初我去一家公叔R试的时候,考官居然q在问我一个问题:(x)?/SPAN>C?/SPAN>Java有什么区别??/SPAN>
在我阅读此书之前Q我应该ȝ一下目前在 J2EE 斚w所h的基知识。在我看来, J2EE 是一个极其庞大的pȝ架构Q对?/span> J2EE 有一些初步的认识Q也做过一些基于此架构的小型或中小型项目,比如Z此技术架构的|站Q一些应用系l等?/span> J2EE 包括以下部分Q?br />
好了Q开始言归正传,真正开始谈谈一些我自己的肤观点(甚至是错误的观点Q?/span>
书中谈到?/span> J2EE 应用目臛_和从前的?/span> J2EE 目一样容易失败――如果不是更Ҏ(gu)p|的话”( page 4 Q,我认Z个项目的p|与该目采用何种框架和技术有太大的关p,在这个时代,对于架构和技术的选择有很多,而更关键的因素可能得从Y仉目管理方面来衡量Q从所周知Q一个项目采用何U架构和l节性的技术只是项目管理的一个小部分。“而在 J2EE 遭遇p|的场景中Q?/span> EJB 通常都扮演着重要的角艜y( page 4 Q,q样说似乎也昑־很牵强?/span>
书中再次“最成功的标准都是从实践中发展出来的?/span> (page 5) Q最显著的例子莫q于 OSI ?/span> TCP/IP 之间的关pR?/span>
本书的主旋律主要包括以下部分Q?/span>
1 、简?/span>
我常常在工作中就把一些问题看得较复杂Q因为总觉得这不是一件坏事,考虑C个问题的复杂性ƈ认真x楚此问题的各个方面,在解册个问题的时候相Ҏ(gu)说就?x)简单一些,但是q样也确实会(x)带来诸多问题Q如软g成本的核,我就曑֛此在一个客户需求ƈ不高的情况下把问题复杂化了,D了那个方案的p|。上ơ我是犯了“提前叫客户掏钱购买的复杂架构”( page 6 Q这L(fng)错误。“这U想法有两个问题Q首先,是否让系l变得如此复杂不应该׃为架构师和开发者的我们来决定,因ؓ(f)买单的h不是我们Q其ơ,即便pȝ最l变得如此复杂,我们又怎么知道一开始将它们考虑q来p节约成本呢?说不定,{到有需求的时候再修改架构q会(x)更节U呢。”( page 6 Q?/span>
书中主要从技术层面上讨论了这个问题,如数据库的分布,多种客户端等。对于问题的解决我们应该更切合实际一点,不要沉h于一些不切实际的惌?/span>
“XP 的核心教义之一是Q很多时候,是节约成本Q就能开发出高质量的软gQ不要试N先解x有能惛_的问题?/span> ?/span> Q?/span> page 6 Q?/span>
“ J2EE 目具备架构重构能力的关键在于:(x)遵@良好?/span> OO 设计法则Q?/span> q且始终针对接口~程、而非针对cȝE?/span>Q将EJB之类的技术隐藏在普?span lang="EN-US">Java对象背后?/span> ”( page 7 Q?/span>
2 、生产率
虽然我没有真正的?/span> EJB 来开发过M目Q但Ҏ(gu)我对 EJB 的了解来看, EJB 在生产效率方面确实存在着很大的问题?/span>
3 ?/span> OO
以前我在设计一个对象的时候,Ҏ(gu)没有认真的考虑q某一个对象是否真正的合理Q这个需要在以后的设计中得以重视?/span>
4 、需求至?/span>
?/span> J2EE 的开发者们仅仅因ؓ(f)他们的技术选择――而不是客L(fng)需求――就耗费了更多的_֊。?/span> (page 8)
5 、经验过E?/span>
l验对于一个Y件开发者来说是极其重要的,很多问题只有你在具体的实施过E中才会(x)发生Q但是我从不拿一个h参加工作的时间长短来衡量一个h的经验是否丰富?/span>
书中提到的@证医学( EBM Q到是一件很有意思的事情Q我觉得值得我们中国的医生好好的学习(fn)和思考一下(题外话)(j)?/span>
6 、可试?/span>
对于软g试Q我其实q没有深入的认识Q我一直都处在开发的前沿Q没有更多的Z(x)和时间来深入研究试Q其实Y件测试是一门很值得研究的学问。就拿腾讯的E序来说Q其出错的机率远q高于其它YӞq是人的q的,我想q也是腾讯所需要重视的?/span>
关于轻量U框架和容器Q我一直在x Spring ?/span> PicoContainer ?/span> Nanning {?/span>
书中讲到的“帕累托法则Q?/span> 80/20 法则Q或 90/10 法则Q”的可以作为我们在目实施q程中考虑该如何解决问题的一个衡量标准。即“花比较?yu)的力气可以解军_部分的问题,而要解决剩下的少部分问题则需要多得多的努力。”( page 11 Q这教会(x)了我们如何在目中做适当的取舍(包括软g架构的取舍和需求的取舍Q当然很多时候需求是不能改变的)(j)?/span>
EJB 在那些真正需要对象的分布应用斚w仍是上佳之选,同时在需要大量用异步消息的应用中,也是不错的选择Q同Ӟ EJB 在金融中间g的应用中Q也能ؓ(f)目提供价倹{?/span>
本书所推行的思想是Q?/span> EJB q不是要被我们完全抛弃,只是在一些没有必要?/span> EJB 的项目中Q我们可以如何找到更好,更简单,更具生率的替代Ҏ(gu)?/span>
同时需要澄清的一个误解是Q?/span> EJB 一直被视ؓ(f) J2EE q_的核心。这U观Ҏ(gu) EJB 的地位看得太重了一些?/span>
书中说“还有强大的政治因素Q而非技术因素)(j)促Z使用 EJB ”( page 12 Q,对于此句中的“政d素”不知所指。是说的来自 Java 官方Q即 SUN Q的因素吗?