??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲日韩一页精品发布,亚洲youjizz,日韩亚洲人成在线综合http://m.tkk7.com/zhoudq/庄周梦蝶Q孰蝶是我,我是孰蝶Q一梦至今,蝶我已难?/description>zh-cnSun, 11 May 2025 23:39:52 GMTSun, 11 May 2025 23:39:52 GMT60Bill Joy MIT BBS上说微Y电话面试的一道题是“Who do you think is the best coder, and why?”。我觉得挺有意思的Q也来凑个热闏V排名不分先后?/title><link>http://m.tkk7.com/zhoudq/archive/2008/05/31/204217.html</link><dc:creator>心酸果冻</dc:creator><author>心酸果冻</author><pubDate>Fri, 30 May 2008 17:29:00 GMT</pubDate><guid>http://m.tkk7.com/zhoudq/archive/2008/05/31/204217.html</guid><wfw:comment>http://m.tkk7.com/zhoudq/comments/204217.html</wfw:comment><comments>http://m.tkk7.com/zhoudq/archive/2008/05/31/204217.html#Feedback</comments><slash:comments>11</slash:comments><wfw:commentRss>http://m.tkk7.com/zhoudq/comments/commentRss/204217.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/zhoudq/services/trackbacks/204217.html</trackback:ping><description><![CDATA[<p>Bill Joy MIT BBS上说微Y电话面试的一道题是“Who do you think is the best coder, and why?”。我觉得挺有意思的Q也来凑个热闏V排名不分先后?</p> <p>传奇~程高手Q?br /> Bill Joy<br /> John Carmack <br /> David Cutler <br /> Donald E. Knuth <br /> Ken Thompson <br /> Rob Pike <br /> Dennis M. Ritchie <br /> Edsger Wybe Dijkstra <br /> Anders Hejlsberg </p> <p>Bill Joy<br /> Bill Joy, 前QSun的首席科学家Q当q在Berkeley时主持开发了最早版本的BSD。他q是vi和csh的作者。当ӞCsh Programming Considered Harmful 是另一个话题乐。据说他想看看自p不能写个操作pȝQ就在三天里写了个自qUnix, 也就是BSD的前w。当然是传说了,但见他的功力。另一个传说是Q?980q初的时候,DARPA让BBN在Berkley Unix里加上BBN开发的TCP/IP代码。但当时q是研究生的B伯伯怒了Q拒l把BBNTCP/IP加入BSDQ因Z觉得BBN的TCP/IP写得不好。于是B伯伯出手了,端的是一封喉,很快写Z高性能的伯克利版TCP/IP。当时BBN和DARPA{了巨额合同开发TCP/IPStackQ谁知他们的代码q不如一个研I生的好。于是他们开会。只见当时B伯伯I个T-shirt出现在会议室(当时IT-shirt不象现在Q还是相当散漫的?。只见BBN问:你怎么写出来的Q而B伯伯{:单,你读协议Q然后编E就行了。最令偶晕倒的是,B伯伯士毕业后决定到工业界发展,于是到了当时只有一间办公室的Sun, 然后他就把Sparc设计出来乐。。。象q种软硬通吃的牛人,想不佩服都不行的说。据Bill Joy的同事说Q一般开会的时候B伯伯L拿一堆杂志O不经心地诅R但往往在关键之处,B伯伯发言Q直切要宻I提出漂亮的构惻I让同事们d崩溃。对了,他还是Java Spec和JINI的主要作者之一?</p> <p>John Carmack<br /> John CarmackQid Software的founder和Lead Programmer。上个月和一个搞囑Ş的师兄聊天,他竟然不知道John Carmack, 也让偶大大地晕了一把。不q也许搞研究的和搞实战的多少有些隔吧。想必喜Ƣ第一人称击游戏的都知道J哥哥?0q代初只要能在PC上搞个小动画都能让h惊叹一番的时候,J哥哥推Z石破天惊的Castle Wolfstein, 然后再接再励Qdoom, doomII, Quake...每次都把3-D技术推到极致。J哥哥的简历上说自q专长?Exhaust 3-D technology"Q真是牛Za不我ƺ的说。做J哥哥q样的h是很q福的,因ؓ各大囑Ş卡厂家一有了C品就要向?#8220;qA” Q不然如果他的游戏不支持哪种卡,哪种卡基本就会夭折乐。当初MS的Direct3D也得听取他的意见Q修改了不少API。当ӞJ哥哥在结婚前十数q如一日地每天~程14时以上Q也是偶们凡人望莫及的。对了,J哥哥高中肆业(Q?Q可以说是自学成才。不q呢Q谁要用q个例子来ؓ自己学习不好辩护Q就大错牚w了。那 Leonardo Da Vinciq是自学成才?人是U生子,不能上学)。普通h和天才还是有区别的。对了,其实偶们?#8220;辑ֈ?#8221;是相当不对的Q因为Vinci是地名,而Da Vinci是从Vinci来的人的意思。换句话_Leonardo Da Vinci是“从Vinci来的Leonardo”的意思。叫别h“Da Vinci”׃知所谓乐。嗯Q扯q了Q打住?More about Carmack Here </p> <p>David Cutler<br /> David CutlerQVMS和Windows NT的首席设计师Q去微Y前号U硅h牛的kernel开发员。当初他和他的手下在微Y一周内把一个具备基本功能的bootable kernel写出来,然后_“who can't write an OS in a week?"Q也是牛气冲天的说。顺便说一句,DL到NT3.5Ӟ理1500名开发员Q自p兼做设计和编E,不改coder本色啊。DL天生脾气火爆Q和Z论时喜欢双手猛击桌子以壮声势?-) 日常交谈F-word不离口。他面试U书时必问:"what do you think of the word '****'?" Q让无数女刹羽而归。终于有一天,一个同L爆的女面对这个问题脱口而出Q?That's my favorite word"。于是她被录取乐QؓDL工作到NT3.5发布?</p> <p>Donald E. Knuth<br /> Don Knuth(Donald E. Knuth)。高L其实用不着偶多说。学~程的不知道他就好像学物理的不知道牛,学数学的不知道欧拉,学音乐的不知道莫扎特Q学Delphi的不知到 Anders HejlsbergQ或者学Linux不知道Linus Torvalds一P不可原谅啊?-)Z让文章完_再|唆几句吧。高L本科时就开始给行行色色的公司写各种E奇古怪的~译器挣外快了。他卖给别h时收一两千元Q那些公司拿了codeQ加工一下卖出去是上万上十万。不q也没见高爷爷不爽过Q学者本色的说。想想那可是60q代初啊Q高L写编译器写多了,带搞Z个Attribute Grammar和LR(k)Q大大地造福后h啊。至于高L在CalTech的编E比?有Alan Kay得众多高高手参加)LW一Q写的Tex?6q就code freezeQ还附带2^n分奖励{等都是耳熟能详Q偶׃饶舌乐。顺便说一下,高老大h无可争议的写作高手。他lConcrete Mathematics 写的前言可谓字字铉KQ堪为前a的典范。他的技术文章也是一l,文风l致Q解释精当,而且没有学究气,不失d跌。记得几q前读Concrete MathematicsQ时不时开怀大笑Q让老妈极其郁闷Q觉得我nerdy到家Q不可救药。其实呢Q子非鱼Q安知鱼之乐Q更不知那完全是高爷L功劳。说到写作高手,不能不提Stephen A. Cook。他的文章当q就被我们的写作老师极力推荐Q号U典雅文风的h。库L一头银发,w材颀长,L面带谦和的微W,颇有仙风道骨Q正好和他的仙文盔R的说。高L其实q是开源运动的先驱。虽然他没有象Richard Stallman那样八方奔走Q但他捐献了好多作品Q都可以在网上看刎ͼ比如著名的Mathematical WritingQMMIXWareQThe Tex Book{,更不用说以让他芳百世的Tex乐?</p> <p>Ken Thompson<br /> Ken ThompsonQC语言前nB语言的作者,Unix的发明h之一(另一个是Dennis M. Riche老大Q被ؓDMR)QBelle(一个厉害的国际象棋E序)的作者之一, 操作pȝPlan 9的主要作?另一个是大牛人Rob Pike, 前不久被google挖走?。KenL也算是计机历史上开天辟地的人物了?969q还是计机史前时代Q普通h都认为只有大型机才能q行通用的操作系l,型机只有高׃Ԓ止的份儿。至于用高语言来写操作pȝQ更是笑谈。KenL自然不是池中物,于是他和DMR怒了Q在1969q到1970间用汇编在PDP-7上写ZUNIX的第一个版本。他们ƈ不知道,一轰烈烈的UNIX传奇由此拉开了序q。KenL?971q又把Unix用C重写Q于是C在随?0q成׃不知多少豪杰的梦惛_光荣。KenLq有D佳话:装了UNIX的PDP-11最早被安装在Bell Lab里供大家日常使用。很快大家就发现KenL总能q入他们的帐P获得最高权限。Bell Lab里的U学安心比天高Q当然被搞得郁闷无比。于是有高手怒了Q蟩出来分析了UNIX代码Q找到后门,修改代码Q然后重新编译了整个UNIX。就在大安以ؓ“q个世界清净?#8221;的时候,他们发现KenLq是轻而易丑֜拿到他们的帐h限,百思不解后Q只好l郁闗谁知道q一郁闷Q就郁闷?4q_直到KenL道出个中~由。原来,代码里的有后门Q但后门不在Unix代码里,而在~译Unix代码的C~译器里。每ơC~译器编译UNIX的代码,p动生成后门代码。而整个Bell Lab的hQ都是用KenL的C~译器?</p> <p>Rob Pike<br /> Rob Pike, AT&T Bell Lab前Member of Technical Staff Q现在google研究操作pȝ。罗伯伯是Unix的先驱,是贝实验室最早和Ken Thompson以及Dennis M. Ritche开发Unix的猛人,UTF-8的设计h。他q在国名嘴David Letterman的晚间节目上露了一脸Q一脸憨厚地帮一胖子吹牛搞怪。让偶佩服不已的是,|伯伯还?980q奥q会箭的银牌得丅R他也是个颇为厉害的业余天文学家Q设计的珈玛线望远镜差点被NASA用在航天飞机上。他q是两本l典QThe Unix Programming Environment ?The Practice of Programming 的作者之一。如果初学者想在编E方面精益求_,实在该好好读读这两本书。它们都有中文版的说。罗伯伯q写ZUnix下第一个基于位囄H口pȝQƈ且是著名的blit l端的作者。当然了Q罗伯伯q是L锐意革新的操作系l,Plan9Q的主要作者。可惜的是,Plan9q没有引起多h的注意。罗伯伯一怒之下,写出了振聋发聩的雄文 Systems Software Research is IrrelevantQ痛斥当下系l开发不思进取,固步自封的弊病。虽然这文章是|伯伯含忿出手,颇有偏激之词Q但实道出了系l开发的无奈Q开发周期越来越长,代h来大Q用戯l一到少数几个系l上Q结果越来越多的zd是测量和修补Q而真正的革新来少。就在罗伯伯郁闷之极的时候,google登门求贤来乐。如果说现在q有一家大众公司在不遗余力地把pȝ开发推向极致的话,也就是google 乐。随便看看google的成果就知道了。具有超强容错和负蝲q能力的分布式文gpȝGFS (现在能够?00,000台廉价PC搭v一个巨型分布系l,q且高效便宜地进行管理的pȝ也不多哈)Q大规模机器学习pȝ(拼写查,q告匚wQ拼x寅R。。哪个都很牛的说)Q更不用说处理v量ƈ行计的各式google服务了。Rob在System Software Research is Irrelevant里萧瑟地说现在没有h再关心系l研I的前沿成果了。想不到他错了,因ؓgoogle兛_。google|络了大批功成名q牛hQ还有大量初生牛犊般博士做开发,昄不是没事耍酷Q而是因ؓ它们的开发L试图吸取pȝ研究的最新成果?惛_Rob Pike在google很幸。愿他做出更的pȝ?</p> <p>Dennis M. Ritchie<br /> Dennis M. Ritchie 既然Ken Thompson是我的偶像,新闻l上人称DMR的Dennis M. Ritchie自然也是Q毕竟两人共同缔造了UNIXQ而Dennis几乎独力把C搞大(当然QC的前w是BQ而B是Ken Thompson一手做出来?。J 两h1983q分享图灵奖Q是有史以来数几个因工E项目得奖的工程?本来是唯一的一对儿Q但Alan Kay才因为SmallTalk得奖Q所以就成了唯二的乐) 。一个h一生能做出一个卓的pȝ已经不易QDMR的C和UNIX长盛不衰q?0q_至今生机勃勃QDMR此生可以无憾的说。DL也算有家学渊源:他老爸在AT&T贝尔实验室工作了一辈子Qƈ在电路设计方面卓有成,q出了本颇有影响的书The Design of Switching CircuitsQ据说在交换理论和逻辑设计斚w有独到的。当ӞDL和他老爸是不同时代的人:他老爸的研I成形于晶体发明之前,而DL的工作离了晶体管q儿不转乐?-D不要看DL搞出了CQ其实他最q~程语言是AlefQ在Plan9上运行,支持q行~程。Alef的语法和C怼Q但数据cd和执行方式都和C大大不同。说到语aQDL对后来h有非怸肯的Q抱着学习的目的来开发你自己的语aQ不要冀望于它被众h接受。这个徏议不光对语言开发有用,也适用于其它大型系l的开发。别的不_DMR后来领导自己的团队在1995q和1996分别推出了Plan9?Inferno操作pȝQ又用多h知道呢?其实QDL当初也没惌C会风行世界。他开发C的初衷和 Eric S. Raymond在Cathedral and Bazaar里阐q的一P是要消除自己对现有工具的不爽之处。谁知DL无心插柳QC竟然受到众多E序员的狂热拥戴Q连DL自己都大惑不解。在一ơ采访中DL说大概那是因为C的抽象程度碰巧既满了程序员的要? 又容易实现。当然C一度是Unix上的通用语言也是原因。但不管怎么_DL对编E语a的审意识奠定了Cqؓ传的基。最后八卦一下。DL的业余爱好和NBA大牛Karl Malone一P开卡R。不qDL更喜Ƣ开NASCARQ而KM独爱巨无霸。J DL自称心中不供偶像Q如果一定要说一个,那就是Ken Thompson了。现在KenL退休当飞机教练MQ而DL当了贝尔实验室系l开发部的头Q整日忙于开支票。他俩合?0q_屡屡创造历双Ӏ这Do人神往的佳话,也就长留你我心中乐。P.S., 很多人都以ؓBrian W. Kernighan是C的作者。其实BWK只是写了那本l典K&R C。据DL_他,Ken, 和Kernighan三h中,Kernighan最能写文章Q他ơ之Q而Ken写得最;但说到编E,KenL才是当之无愧的老大?</p> <p>Edsger Wybe Dijkstra<br /> Edsger Wybe Dijkstra 对,是E.W. Dijkstra. 一提到EWDQ很多h׃惌v找最短\径的Dijkstra AlgorithmQ就好像一提到Sir. Tony HoareQ就惌vQuick Sort一栗其实这些个法不过是两个牛人在他们职业生中最琐碎的A献。比如Dijkstra法Q无非是戴爷爷在1956qؓ了展C新计算?ARMAC的计能力,初试w手的成果,属于他的法处女作。据戴爷爯qͼ他搞出最短\径算法的时候连U笔都没用。当时他和他老婆在阿姆斯特丹一家咖啡厅的阳C晒太阛_咖啡Q突然就把这个算法想出来乐。而且当时的算法研I还比较原始Q牛Z忙着用计机搞数D,对离散算法不屑一。那时连一个象L专注于离散算法的专业期刊都没有。戴L于是推迟发表q个法。直?959q_他才把这个算法发表在Numerische Mathematik的创刊号上,权ؓ捧场?-) EWD在多个领域牛气冲天,端的是理论和~程两手的高手。只不过他的很多工作比较深刻Q学校的老先生们觉得本科生接受不了,不给本科生讲而已。戴L大概因ؓ最短\径算法一战成名,于是有h请他参加另一台计机X1的设计工作,q且把设计实时中断系l的dz了他。现在看来实时中断也怸什么,但要知到QX1前根本就没有实时中断的概c实现它直就是一赌。戴L起初q不情愿Q但l不住项目负责hBram和Carel的轮?#8220;Ҏ”Q我们知道实时中断让您工作变得非常困难,但象您这L牛h肯定能做出来的说。结果戴L被糖衣炮弹彻底击I,接下了这个烫手山芋。两三年后,他不仅搞Z实时中断Q还围绕q个写出了自q博士论文Q顺利戴上博士帽。让戴爷L正成名立万的q是在X1上开发的Algo60Q最早的高语言之一。戴L没日没夜地工作了8个月Q就搞出了Algo60Q也因此获得?972q的囄奖。因为Algo60Q戴L发表了一石破天惊的文章QRecursive ProgrammingQ于是h们才知道Q原来高U语a也可以高效地实现递归Q原来从此以后,所有程序员都不可避免地和戴L发明的一个词(应该说是概念)打交道:堆栈。而且Algo60q让戴爷h入地思考多道程序设计的问题Q最l发明了每个pȝE序员都l不开的概念:semaphore。当Ӟ戴爷hL把他发明的概念严格Ş式化Q极L学家本色的说。和q些成就xQ他提出的吃饭的哲学安题,也就没什么好说的了。说来好W,当时的大?忘了哪所?q是觉得戴爷h有受q正l的数学训练Q也不是专门搞数值分析的Q所以最后不太情愿地l了他一个教职。这U小挫折q不能妨象戴爷爯L牛h创造历双Ӏ他一Ҏ数值分?:-D) Q一边开始开发一?br /> </p> <img src ="http://m.tkk7.com/zhoudq/aggbug/204217.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/zhoudq/" target="_blank">心酸果冻</a> 2008-05-31 01:29 <a href="http://m.tkk7.com/zhoudq/archive/2008/05/31/204217.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>没事Q写一个帮你处理Windows垃圾文g东东http://m.tkk7.com/zhoudq/archive/2008/02/06/179401.html心酸果冻心酸果冻Wed, 06 Feb 2008 07:52:00 GMThttp://m.tkk7.com/zhoudq/archive/2008/02/06/179401.htmlhttp://m.tkk7.com/zhoudq/comments/179401.htmlhttp://m.tkk7.com/zhoudq/archive/2008/02/06/179401.html#Feedback0http://m.tkk7.com/zhoudq/comments/commentRss/179401.htmlhttp://m.tkk7.com/zhoudq/services/trackbacks/179401.html 二、右键打开Q把下面的代码复制进厅R?

 

@echo off 
del/f/s/q %systemdrive%\*.tmp 

del/f/s/q %systemdrive%\*._mp 

del/f/s/q %systemdrive%\*.log 

del/f/s/q %systemdrive%\*.gid 

del/f/s/q %systemdrive%\*.chk 

del/f/s/q %systemdrive%\*.old 

del/f/s/q %windir%\*.bak 

del/f/q %systemdrive%\recycled\*.* 

del/f/q %windir%\prefetch\*.* 

rd/s/q %windir%\temp & md %windir%\tempemp% &md %temp% 

del/f/q %userprofile%\cookies\*.* 

del/f/q %userprofile%\recent\*.* 

rd/s/q \
"%userprofile%\Local Settings\Temporary Internet Files\" 

cls & echo pȝ垃圾清除完成:) 

echo. & pause


三、保存,双击执行QOK.

心酸果冻 2008-02-06 15:52 发表评论
]]>
谁说E序员不q默了?New Song: Java EE 5!(?http://m.tkk7.com/zhoudq/archive/2007/11/18/161332.html心酸果冻心酸果冻Sat, 17 Nov 2007 19:26:00 GMThttp://m.tkk7.com/zhoudq/archive/2007/11/18/161332.htmlhttp://m.tkk7.com/zhoudq/comments/161332.htmlhttp://m.tkk7.com/zhoudq/archive/2007/11/18/161332.html#Feedback8http://m.tkk7.com/zhoudq/comments/commentRss/161332.htmlhttp://m.tkk7.com/zhoudq/services/trackbacks/161332.html谁说E序员不q默了?Roumen发挥了一下,嘿,以下是他写的歌: Java EE 5!

new geeky song about Java EE 5 (hosted on Javalobby).

It goes like this...

Ladies and gentlemen, this is Java EE 5!

One, two, three, four, five
There's a technology I use day and night
For my application with a web frontend
They told me to use .Net
But I really don´t wanna

So many bugs I fixed last week.
My code is neat and talk is a cheap
I like Glassfish, JSF, persistence API
And as I continue you know they´re gettin´ sweeter

So what can I do I really beg you my Lord
To me codin' it´s just like a sport
All the bad code from the past, let me dump it
Please set in the trumpet

A little bit of injection in my life
A little bit of persistence by my side
A little bit of NetBeans is all I need
A little bit of EJB's what I see
A little bit of standards in the sun
A little bit of XML all night long
A little bit web services here I am
A little bit of code makes me real man

This is Java EE 5!

Jump up and down and move your code around
Shake your head to the sound bury bad code under ground
Move one step left and one step right
One to the front and one to the side
Refactor it once and refactor it twice
If it looks like this you're doin´ it right

A little bit of injection in my life
A little bit of persistence by my side
A little bit of NetBeans is all I need
A little bit of EJB's is what I see
A little bit of standards in the sun
A little bit of XML all night long
A little bit web services here I am
A little bit of code makes me real man

This is Java EE 5!

Maybe I will grow up once. Maybe I won't...

作者:http://blogs.sun.com/roumen/entry/new_song_java_ee_5



心酸果冻 2007-11-18 03:26 发表评论
]]>
你还在用if else吗?(?http://m.tkk7.com/zhoudq/archive/2007/11/11/159780.html心酸果冻心酸果冻Sun, 11 Nov 2007 11:53:00 GMThttp://m.tkk7.com/zhoudq/archive/2007/11/11/159780.htmlhttp://m.tkk7.com/zhoudq/comments/159780.htmlhttp://m.tkk7.com/zhoudq/archive/2007/11/11/159780.html#Feedback13http://m.tkk7.com/zhoudq/comments/commentRss/159780.htmlhttp://m.tkk7.com/zhoudq/services/trackbacks/159780.html
传统思维习惯分析

  Z么会业务逻辑层用if elseQ其实用者的目的也是Z重用Q但是这是面向过E编E的重用Q程序员只看C码重用,因ؓ他看到if else几种情况下大部分代码都是重复的,只有个别不同Q因此用if else可以避免重复代码Qƈ且认是模板Template模式?br />
  他范的错误是Q程序员只从代码q行序q个方向来看待它的代码,q种思维cM水管或串行电路,水沿着水管动Q代码运行次序)Q当遇到几个分管Q子)Q就分到q几个分子在流动,q里q当于到代码的if else处了?br />
  而用OOQ则首先打破q个代码׃向下序{同于运行时的先后@序这个规律,代码l构不由执行循序军_Q由什么决定呢Q由OO设计Q设计模式会取代q些if elseQ但是最后L׃个Service{ȝ按照q行序l装q些OO模块Q只有一处,q处可包含事务,一般就是ServiceQEJB中是Session bean?br />
  一旦需求变化,我们更多的可能是Service中各个OO模块Q甚x只改动Service中的OO模块执行序pW合需求?br />
  q里我们也看到OO分离的思\Q将以前q程语言的一个Main函数d分解Q将q行序与代码其他逻辑分离开来,而不是象面向q程那样混ؕ在一赗所以有人感慨,OO也是要顺序的Q这是肯定的Q关键是q行序要单独分d来?br />
  是否有if else可以看出你有没有运行顺序分d家?br />
设计模式的切入口

  l常有h反映Q设计模式是不错Q但是我很难用到Q其实如果你使用if else来写代码Ӟ除显C控制以外)Q就是在写业务逻辑Q只不过使用单的判断语句来作为现实情늚替代者?br />
   q是以大家熟悉的论坛帖子Z子,如ForumMessage是一个模型,但是实际中帖子分两种性质Q主题脓Q第一个根_和回帖(回以前帖子的帖子Q,q里有一个朴素的解决ҎQ?br /> 建立一个ForumMessageQ然后在ForumMessage加入isTopicq样判断语句Q注意,你这里一个简单属性的判断引入Q可能导致你的程序其他地方到处存在if else 的判断?br />
  如果我们改用另外一U分析实现思\Q以对象化概늜待,实际中有主题贴和回帖Q就是两U对象,但是q两U对象大部分是一致的Q因此,我将ForumMessage设ؓ表达主题_然后创徏一个承ForumMessage的子cForumMessageReply作ؓ回帖Q这P我在E序地方Q如Service中,我已l确定这个Model是回帖了Q我q接下溯ؓForumMessageReply卛_Q这个有点类似向Collection攑օ对象和取出时的强制类型{换。通过q个手段我消灭了以后E序中if else的判断语句出现可能?br />
  从这里体CQ如果分析方向错误,也会D误用模式?br />
  讨论设计模式举例Q不能没有业务上下文场景的案例,否则无法军_是否该用模式Q下面D两个Ҏ的例子:

  W一. q个帖子中D例的W一个代码案例是没有上下文的Q文中只说明有一D代码:

main() { 
ifQcase AQ{ 

//do with strategy A 

}else(case B){

//do with strategy B 

}else(case C){ 

//do with strategy C 

}


   

  q段代码只是Ua的代码,没有业务功能Q所以,在这U情况下Q我们就很难定使用什么模式,是一定用{略模式{,也逃不q还是用if else的命q,设计模式不是法Q不能将一D|无意义的代码变得单了Q只能将其体现的业务功能更加Ҏ可拓展了?br />
  W二.在这个帖子中Q作者D了一个PacketParser业务案例Q这D代码是体现业务功能的,是一个数据包的分析,作者也比较了各U模式用的不同Q所以我们还是用动态代理模式或Command模式来消灭那些可能存在的if else

  ׃上两个案例表明:业务逻辑是我们用设计模式的切入点,而在分解业务逻辑Ӟ我们习惯则可能用if else来实玎ͼ当你有这U企图或者已l实C码了Q那么就应该考虑是否需要重构Refactoring了?br />

if else替代?br />
  那么实战中,哪些设计模式可以替代if else呢?其实GoF设计模式都可以用来替代if elseQ我们分别描q如下:

状态模式 
  当数据对象存在各U可能性的状态,而且q种状态将会媄响到不同业务l果Ӟ那么我们应该考虑是否使用状态模式,当然Q用状态模式之前,你必首先有内存状态这个概念,而不是数据库概念Q因为在传统的面向过E的/面向数据库的pȝ中,你很隑֏现状态的Q从数据库中d某个|然后Ҏq个D行代码运行分,q是很多初学者常q的事情。参考文?状态对象:数据库的替代?br />   使用传统语言思维的情况还有:使用一个类整数变量标识状态:
 

public class Order{

private int status;

//说明Q?nbsp;

//status=1 表示订货但ؓ查看 Q?br />
//status=2 表示已经查看未处理;

//status=3 表示已经处理未付?br />
//status=4 表示已经付款未发?br />
//status=5 表示已经发货


 

  上述c设计,无疑是将cMZl语a的函数来使用Q这样导致程序代码中存在大量的if else?br />

{略模式 
  当你面几种法或者公式选择Ӟ可以考虑{略模式Q传l过E语a情况是:从数据库中读取算法数|数?表示{略1Q例如保存到数据库;数gؓ2表示{略2Q例如保存到XMl文g中。这里用if else作ؓ{略选择的开兟?nbsp;


command模式 
  传统q程的思维情况是:如果客户端发Zh1?A"Q那么我调用A.javaq个对象来处理;如果代号??B"Q我p用B.java来处理,通过if else来判断客L发送过来的代码Q然后按事先U定的对应表Q调用相应的cL处理?br />

MVC模式 
  MVC模式的传l语a误用和Command模式cMQ在一个ActioncMQ用if elseq行前后台调度,如果客户端传送什么命令;我就调用后台什么结果;如果后台处理什么结构,再决定推什么页面,不过Q现在我们用Struts/JSFq样MVC模式的框架实现者就不必范这U低U错误?br />

职责链模式 
  职责链模式和Command模式是可选的Q如果你实在不知道客L会发Z么代P也没有一个事先定义好的对照表Q那么你只能~写一个个cd运气一h开q个包看一下就可以。与Command是不同在AOP vs Decorator一文中有分析?br />

代理或动态代理模式 
  代理对象可以是符合某U条件的代表者,比如Q权限检验,传统面向q程思维是:当一个用L陆后Q访问某资源Ӟ使用if elseq行判断Q只有某U条件符合时Q才能允许访问,q样权限判断和业务数据逻辑混ؕ在一P使用代理模式可以清晰分离Q如果嫌不太好,使用动态代理,或者下面AOP{方式?br />

AOP或Decorator模式
  
  其实使用filterqo器也可以替代我们业务中的if elseQ过滤器起到一U过滤和{选作用,符合本qo器条件的对象拦截下来做某件事情,q就是一个过滤器的功能,多个qo器组合在一起实际就是if else的组合?br />   所以,如果你实在想不出什么办法,可以使用qo器,过滤器看成防火墙就比较好理解,当客L有一个请求时Q经q不同性质的防火墙Q这个防火墙是拦截端口的Q那个防火墙是安全检查拦截等{。过滤器也如同红蓝白各种光o镜;U色滤镜只能通过光线中的U色拦截了;蓝色滤镜光U中的蓝色拦截下来,q实际上是对光线使用if elseq行分解?br />

  如图Q通过一个个条gqo器我们立体地实现了对信号的分,如果你用if elseQ说明你是将图中的条?/2/3/4合ƈ在一P在同一个地方实现条件判断?br />   需要深入了解过滤器的实现细节和微小区别Q请参考文章:AOP vs Decorator

OO设计的ȝ   

  q有一U伪模式Q虽然用了状态等模式Q但是在模式内部实质q是使用if else或switchq行状态切换或重要条g判断Q那么无疑说明还需要进一步努力。更重要的是Q不能以模式自居Q而且ZCZh?br />
  真正掌握面向对象q些思想是一件困隄事情Q目前有各种属于揪着自己头发向上拔的解说Q都是误人子弟的Q所以我觉得初学者读Thinking in JavaQJava~程思想Q是没有用,它试图从语言层次来讲OO~程思想Q非常失败,作ؓ语言参考书可以Q但是作为Java体现的OO思想的学习资料,错了?br />
  OO~程思想是一U方****Q方****如果没有应用比较Q是无法体会q个?***的特点的Q禅是古代一个方****Q悟是靠挑水砍柴这些应用才能体会?br />
  那么OO思想靠什么应用能够体会到了?是GoF设计模式QGoF设计模式是等于Y件h员的挑水砍柴{基本活Q所以,如果一个程序员q基本活都不会,他何以自居OOE序员?从事OO专业设计~程q个工作Q如果不掌握设计模式基本功,p一个做和尚的h不愿意挑水砍_他何以立个行业?早就被师傅赶下山?br />
  最后ȝQ将if else用在地方还可以Q如单的数值判断;但是如果按照你的传统习惯思维Q在实现业务功能时也使用if elseQ那么说明你的思维可能需要重塑,你的~程l验丰富,传统q程思维模式容易根p固,想靠自己改变很困难;接受专业头脑风暴培训?br />
  用一句话ȝQ如果你做了不少pȝQ很久没有用if else了,那么说明你可能真正进入OO设计的境C。(q是本h自己发明的实战性的衡量考核标准Q?

心酸果冻 2007-11-11 19:53 发表评论
]]>
Fedora 7pȝ安装配置心得(?(有图?http://m.tkk7.com/zhoudq/archive/2007/10/23/155369.html心酸果冻心酸果冻Tue, 23 Oct 2007 10:18:00 GMThttp://m.tkk7.com/zhoudq/archive/2007/10/23/155369.htmlhttp://m.tkk7.com/zhoudq/comments/155369.htmlhttp://m.tkk7.com/zhoudq/archive/2007/10/23/155369.html#Feedback2http://m.tkk7.com/zhoudq/comments/commentRss/155369.htmlhttp://m.tkk7.com/zhoudq/services/trackbacks/155369.html

计算机基本配|如?
CPU:Intel Core 2 Duo E4300
昑֍:NVidia GeForce 7600GS
L:ABit IB9(P965+ICH8)
内存2G/盘160G
安装旉择用户定制Q加上开发环境,以防止编译时找不到相关的模块.
pȝ内核为默认的2.6.21Q?.3194.fc7.
以下配置ZGnome环境.

来个囄?嘿嘿:


一:准备工作

在桌面空白处叛_,选择"创徏启动?,"名称"处填?l端","命o"为gnome-terminal,选个自己喜欢的图?br /> 两个重要的yum?
rpm -ivh http://ftp.freshrpms.net/pub/freshrpms/fedora/linux/7/freshrpms-release/freshrpms-release-1.1-1.fc.noarch.rpm
rpm -ivh http://rpm.livna.org/livna-release-7.rpm
Z在一定程度上加快yum速度:
yum install yum-fastestmirror yum-presto
安装方便理的图形配|界?
yum install yumex
挂蝲pȝ的NTFS分区:
~辑/etc/fstab,内容如下:
LABEL=/                 /                       ext3    defaults        1 1
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
dev/sda1               /mnt/C                   ntfs    umask=000,nls=utf8, 0 0
dev/sda7               /mnt/F                   ntfs    umask=000,nls=utf8, 0 0
dev/sda8               /mnt/G                   ntfs    umask=000,nls=utf8, 0 0
dev/sda9               /mnt/H                   ntfs    umask=000,nls=utf8, 0 0
把C:/WINDOWS/Fonts目录中的字体文g拯?usr/share/fonts
在终端下输入fc-cache -fv重新启动完成字体的配|?

?昑֍驱动

官方驱动下蝲面:http://www.nvidia.com/object/linux_display_ia32_100.14.11.html
下蝲得来的驱动文件ؓNVIDIA-Linux-x86-100.14.11-pkg1.run
安装Ҏ如下:
在运行到d会话时按Ctrl+Alt+F2
以rootw䆾d,输入 init 3
然后q入驱动文g所在目?
sh NVIDIA-Linux-x86-100.14.11-pkg1.run
Ҏ提示一步步操作,完成后输?init 5q入X
x烦h的Nvidia logo:
在shell下输入nvidia-xconfig --no-logo卛_

~辑/etc/X11/xorg.confQ加入以下字D?br /> Section "Module"
   Load           "glx"
   Load           "extmod"
EndSection
此步目的为防止MPlayer报错.

?多媒体播?br />
?a >http://www.mplayerhq.hu/design7/dload.html下蝲MPlayer源码,字体,皮肤及解码包
~译命o?
./configure --prefix=/usr/local/mplayer/ --enable-gui --enable-freetype --with-codecsdir=/usr/lib/codes/ --with-win32libdir=/usr/lib/wincodes/ --language=zh_CN
make&&make install
或者直?br /> yum install mplayer*

XMMS安装Ҏ同理Q官方网站ؓwww.xmms.org
默认情况下ؕ码问题比较严?化Ҏ?
首选项-->字体Q选中'使用字体?Q?使用X字体'Q两个框内用下行内容代替
-adobe-helvetica-medium-r-normal-*-14-*-*-*-p-*-iso8859-1,-*-*-medium-r-normal--16-*-*-*-*-*-gb2312.1980-0
在标题格式里只填?%f 卛_选择昄文g的名U?

?a href="ftp://ftp.fedora.cn/pub/fedora-cn/linux/7/i386/">ftp://ftp.fedora.cn/pub/fedora-cn/linux/7/i386/目录下蝲如下文g:
sp-sc-1.0.2-1.fc7.fcn.y0.i386.rpm
gsopcast-0.2.9-1.fc7.fcn.y0.i386.rpm
直接双击安装,q样|络电视便安装完?

?QQ MSN

QQ选择Eva,下蝲地址:ftp://ftp.fedora.cn/pub/fedora-cn/linux/7/i386/
rpm -ivh eva-0.4.9-0.20070723.fc7.fcn.y5.i386.rpm
pidgin的样子实在是太土了,而且某些特定cȝQQ号都上不?

一个比较难扄pidgin依赖的XML解析器的安装Ҏ:
?a >http://search.cpan.org/搜烦中输入XML::Parser
q回l果中下载XML-Parser-2.34.tar.gz,解压后输?perl Makefile.PL
make&&make install

pidgin的官方下载站点ؓ:http://www.pidgin.im/download/source/
下蝲pidgin-2.1.0.tar.bz2,解压~后在终端输?br /> ./configure --prefix=/usr/local
make&&make install
若用yum的方法安装完会报?和其他的库有冲突,无法使用.

MSN推荐aMSN,官方站点?a >http://www.amsn-project.net/index.php
下蝲源码~译的方法太烦琐,所以直接yum install amsn*

?其他

?a >http://java.sun.com/javaee/downloads/index.jsp下蝲JavaEE 5 SDK,
安装Ҏ:sh java_ee_sdk-5_02-linux.bin
安装路径选择/opt/sun
然后?etc/profile.d下新ZI白文g,
内容如下:
export JAVA_HOME=/opt/Sun/jdk
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
另存为java.sh

PDF阅读器选择AdobeReader,官方下蝲地址?
http://www.adobe.com/products/acrobat/readstep2_allversions.html
选择Unix/Linux-->Linux(.rpm)-->Chinese(Simplified)
也可?a href="ftp://ftp.fedora.cn/pub/fedora-cn/linux/7/i386/">ftp://ftp.fedora.cn/pub/fedora-cn/linux/7/i386/下蝲.
׃该版本存在一些BUGQ所以安装完毕后需要作如下修改:
用Emacs~辑器打开/usr/local/Adobe/Acrobat/bin目录下的acroreadQ?br /> ?22行改?MIN_GTK_VERSION="2040"
597行改?echo $mfile| sed 's/libgtk-x11-/([0-9]*/).0.so.0./([0-9]/)00*./([0-9]*/)/|/(.*/)//1/2/3/g'
保存修改卛_.

google-desktop是款很不错的实用工具,官方站点:
http://desktop.google.com/zh/linux/download.html
rpm -ivh google-desktop-linux-1.0.2.0061.rpm或直接双?

?a >http://www.gnome-look.org/扑և个喜Ƣ的主题,
GDM/GTK 2.X的主题包格式要求为tar.gz,其他格式的居然无法识?br /> ?pȝ-->首选项-->观感-->主题 安装GTK 2.X主题
?pȝ-->理-->d屏幕-->本地 安装GDM主题
XMMS Themes无格式要?下蝲后可直接攑֜/usr/share/xmms/skins

cedega的下载安装详?http://linuxdesktop.cn/2007/05/16/cedega6-download
crossover的下载地址?http://www.mediafire.com/?3dozmxylnjf
下蝲的文件大ؓ85.23MB,其实只用到其中的crossover-pro-6.0.0-1.i386.rpm
具体使用Ҏ?a >http://www.codeweavers.com/support/docs/crossover-pro/
面下的CrossOver Linux Professional Users Guide

?桌面Ҏ

compiz fusion官方下蝲站点?a >http://releases.compiz-fusion.org/
不过提供的下载文仉是源码包Q由于文件众多,一个个地编译显然有点烦,
故国外有人做成了rpm?详见:
http://fedoraforum.org/forum/showthread.php?t=159056&page=1&pp=15
可到http://devel.foss.org.my/~kagesenshi/repo/pub/下蝲kagesenshi.repoQ?br /> 该文g攑֜/etc/yum.repos.d路径?

yum install compiz*
完成对Compiz的安装更?
然后?pȝ-->首选项-->个h-->会话 中的"启动E序"处点?新徏"
"名称"?Compiz Fusion
"命o"?/usr/bin/fusion-icon
q样每次d后就会自动启动CompizҎ?

在Compiz Fusion Icon处右?弹出菜单?br /> Select Window Decorator选择 Emerald
Compiz OptionsN?loose binding
Select Window Manager选择 compiz
然后在Settings Manager中勾选自己喜Ƣ的效果.

最新的Compiz Fusion效果视频展示?a >http://you.video.sina.com.cn/b/6110125-1298710774.html



心酸果冻 2007-10-23 18:18 发表评论
]]>
面试题一?看看你是否会?http://m.tkk7.com/zhoudq/archive/2007/10/23/155363.html心酸果冻心酸果冻Tue, 23 Oct 2007 10:01:00 GMThttp://m.tkk7.com/zhoudq/archive/2007/10/23/155363.htmlhttp://m.tkk7.com/zhoudq/comments/155363.htmlhttp://m.tkk7.com/zhoudq/archive/2007/10/23/155363.html#Feedback12http://m.tkk7.com/zhoudq/comments/commentRss/155363.htmlhttp://m.tkk7.com/zhoudq/services/trackbacks/155363.html?分钟遍历一下页?http://post.baidu.com/f?kw=%D2%EC%C8%CB%B0%C1%CA%C0%C2%BC), 
L计页面中"???之间有多个"异h"q两个字,这数值弹Z个alertq且发信l指定的邮g地址 
获取面内所有地方的?<< >>"为标C的q个W号代表书名?获取之中的内?nbsp;
<<使用正则表达?gt;>
功能? 
1)URL抓取面 
2)正则表达式匹?nbsp;
3)邮gpȝ调用 
h意设计思\和代码规?nbsp;




?本h博客刚开,请大家不胜指?


心酸果冻 2007-10-23 18:01 发表评论
]]>
վ֩ģ壺 ҹƵ | Ƶ| ޾Ʒ| 91Ʒ鶹ϵ| Ƶۿ| ŵ| Ӱ| ¶ѿ| ޲122021鶹| Ʒþ| þҹɫƷa| ޾ƷaĻ| ɫžžþWWWۺ| ޾Ʒ| Ʒ޶| ҹƵ| ߹ۿվ| þþƷѹۿ| 18Ůȴ| ߿Ƭ˳Ƶ| þþwwwëƬ | Ļ߹ۿձ| Ƶ㶮| ѵƵݮ| ҹӰѹۿ| ѳ˻ɫƬ| ޹ۺһ| ޾ƷӰԺþþþþ| ޹va| Ʒþһ | ҹҹþ| ۺϼ¶| Ƶ| Ʒվ߹ۿѴý| Ƶ| ޶߹ۿվ| һëƬѲ| ҹAVպAVȫ| ާѡþþþƷ9966 | ƷƬҹɫ| ɫһ|