想认识了解RichardYu ?来这里!我很乐意和大家一起分享交流自己的点滴想法

2007年8月29日星期三

网络广告

什么是SEO?

SEO是Search Engine Optimization的缩写,用英文描述是to use some technics to make your website in the top places in Search Engine when somebody is using Search Engine to find something,翻译成中文就是“搜索引擎优化”,一般可简称为搜索优化。与之相关的搜索知识还有Search Engine Positioning(搜索引擎定位)、Search Engine Ranking(搜索引擎排名)。

SEO的主要工作是通过了解各类搜索引擎如何抓取互联网页面、如何进行索引以及如何确定其对某一特定关键词的搜索结果排名等技术,来对网页进行相关的优化,使其提高搜索引擎排名,从而提高网站访问量,最终提升网站的销售能力或宣传能力的技术。

网络广告的好处和优势

互联网广告传播范围更加广泛

传统媒体有发布地域、发布时间的限制,相比之下,互联网广告的传播范围极其广泛,只要具有上网条件,任何人在任何地点都可以随时浏览到网络的广告信息。

互联网广告具有强烈的互动性

传统媒体中受众只是被动地接受广告信息,而在网络上,受众是广告的主人,受众只会点击感兴趣的讯息。而厂商也可以在线随时获得大量的用户反馈信息,提高统计效率。

互联网广告富有创意,感官性强

传统媒体往往只采用片面单一的表现形式,互联网广告以多媒体、超文本格式为载体,图、文、声、像传送多感官的信息,使受众能身临其境般感受商品或服务。

互联网广告更加节省成本

在传统媒体做广告费用高昂,而且发布后很难更改,即使更改也要付很大的经济代价。网络媒体不但收费远远低于传统媒体,而且可按需要变更内容或改正错误,使广告成本大大降低。

互联网广告可准确统计广告效果

传统媒体广告很难准确知道有多少人接收到广告信息,而互联网广告可精确统计访问量,以及用户查阅的时间分布与地域分布。广告主可以正确评估广告效果,指定广告策略,把握广告目标。

互联网广告发展速度迅猛

中国每年网络用户的增长速度惊人,据中国互联网信息中心统计,中国每半年的互联网用户以200%的速度增长。

2007年8月27日星期一

江湖地位突然逆转 搜狐连续两周超越新浪

经过与新浪绵延8年的激烈对抗,胜利的天平终于暂时向搜狐方面倾斜。截至昨天为止,国外权威的网站流量统计站点Alexa最新的统计数据表明,搜狐网在网站访问量和网站总排名这两个影响广告价值和效果的关键指标中,已经连续两周以上全面超过新浪网。

无独有偶,由中国互联网协会主办的中国网站排名站ChinaRank
的排名中,搜狐网也从最近开始领先新浪。艾瑞的中国网络媒体精品推荐(iWebchoice)中对门户网站的推荐排名,搜狐网同样超过了新浪。

江湖地位突然逆转

突然出现的超越实在令业内惊讶。因为就在上月,在新浪网所有的新闻里,都已直接把搜狐剔出了“中国三大门户”,而宁肯代之以腾讯、网易,这种压力在奥运广告争夺战爆发后达到了顶峰。新浪这样做的理论依据,同样来自于上述咨询机构的排名,《搜狐跌出三大门户》的新闻,年中在新浪相关频道至少挂了一个多月。

Alexa的数据表明,单用户平均在搜狐网上打开的页面数量(人均PV值)为13.2,新浪网的这一指标为9.2,搜狐网超过新浪网43%。数据还显示,过去搜狐网的人均PV值正以9%的速度上升,相比之下,新浪网的这一指标以3%的速度下降。同时,搜狐网用户覆盖指标的周增长速度为7%,而新浪网以3%的速度在下降。

值得注意的是,由于搜狐网是搜狐门户矩阵内的一个主力站点,如果计算包括搜狗、ChinaRen、焦点网、17173等网站在内的搜狐门户矩阵,搜狐在同新浪的比较中更是遥遥领先。

门户格局的微妙变革

业内人士认为,搜狐网最近在网站访问量和网站总排名这两方面超过新浪网,说明搜狐3.0上线后已经取得了明显的效果,搜狐3.0将搜狐门户矩阵内的网站和用户打通,提高了用户的浏览效率,提高了用户在搜狐门户矩阵内的停留时间和点击数量,作为门户矩阵内的主力网站搜狐网,自然受益甚多。

这位人士还表示,搜狐网在新闻内容方面所做的长时间的努力,也是使自身超过新浪网的重要原因。同时,搜狐成为2008北京奥运会互联网内容服务赞助商,并与国家体育总局属下的华奥星空网站、中国奥委会官方网站、中华全国体育总会官方网站结成了战略合作关系,这些为搜狐报道奥运提供了天然的竞争门槛。近期新浪同网易、腾讯结盟,在侧面证明了搜狐的强势。

搜狐网同新浪网排名的初步易位,意味中国的门户格局产生了微妙的变革,而这种变革是否能够持续,取决于搜狐是否能把自己的奥运赞助权益发挥到最大限度。

  Alexa排名

Alexa从1997年9月开始通过专用的工具将各个网站的访问量和排名整理成详细的数据。目前为止,Alexa的网站访问量和网站排名数据是世界最权威的第三方网站统计结果。

对网站而言,人均PV值是衡量网站粘性和可信度的标准,同时也是衡量用户对网站的信任和依赖程度的标准,用户在网站中打开的页面越多,说明这个网站的粘性和可信度越高,用户对这个网站的信任和依赖程度也越高。

2007年8月25日星期六

World Wind Energy Association

The World Wind Energy Association (WWEA) is an international non-profit association representing and uniting the wind power sector worldwide, with members in 80 countries, amongst them the leading national and regional wind energy associations and further members from areas such as manufacturers, suppliers, wind farm developers, NGOs, public bodies, scientific and research institutes as well as individuals. The organisation works for the promotion and worldwide deployment of wind energy technology as a cornerstone of a future energy system fully based on renewable energy.

The aims of WWEA are:
- To provide a platform for the communication of all wind energy actors worldwide.
- To advise and influence national governments and international organisations.
- To enhance international technology transfer.

2007年8月21日星期二

天涯社区联手谷歌挑战"百度知道"

国际搜索引擎公司谷歌(Google)正式公布了与国内大型网络社区天涯的合作计划,应用谷歌搜索技术的“天涯问答”和“天涯来吧”两款产品同时在天涯网上亮相,目标直指竞争对手百度的“知道”和“贴吧”。
已经成功结盟了新浪、腾讯、中国移动、中国电信等诸多本土企业的谷歌显然决心将“谷歌系”进一步扩大,这一次,谷歌选中了注册人数超过两千万的老牌网络社区天涯。目前,问答式社区搜索产品“天涯问答”和搜索型论坛“天涯来吧”都已在天涯网上正式运行,作为谷歌首次与中国合作伙伴推出的社区产品,其功能和形式与“百度贴吧”和“百度知道”十分类似,而谷歌在国内的老对头“百度”正是凭借这两款产品凝聚了一大批忠实用户。
转载自 Kenneth Says
本文链接地址:http://www.51rank.net.cn/blog/post/tianya-guge.html

2007年8月19日星期日

毛泽东:历史上第一个与"官国"传统决裂的人

中国是一个“官国”,官国的遗产很容易被继承,特权思想一代又一代遗传下来,从古代一直到民国都是如此,具有很深厚的历史土壤。中国共产党及其创建的中华人民共和国,是告别“官国”的历史起点,其代表人物是一代伟人毛泽东,他是中国历史上第一个与“官国”传统决裂的人。

谢觉哉从毛泽东睡硬板床说起

1959年春,党内尊敬的“五老”之一谢觉哉,以中央赴革命老区慰问团团长的身份,来到革命圣地井冈山。他在参观当时尚未修复的革命遗址时,心潮澎湃,感慨万千。他指着当年毛泽东睡过的门板问陪同人员:毛主席过去条件差睡木板,现在当了国家领袖还睡木板,你知道为什么吗?谢老认为,这就是毛泽东的“悬梁刺股”,他在提倡井冈山的革命精神,带头打破封建做官的特权,做官的生活特权、政治特权。

谢老还同身边同志讨论:解放快十年了,共产党建立的是一个新政权,毛主席为什么一再教导反对官僚主义?有同志回答:人一当官,就容易脱离群众。谢老对这个回答显得很满意。他进一步发挥说:这就是“官国”的遗产之一。共产党的官就是不能脱离群众,要为人民服务,这是党的宗旨。困难的是,中国是一个“官国”,官国的遗产很容易被继承,特权思想一代又一代传下来,从古代到民国都是如此,有很深厚的土壤。

谢老说得何等深刻、何等好啊!在这里,他把特权思想、特权作风和特权享受,概括为“官国”的遗产,这是对长期封建社会传统的形象说明,是共产党人必须面对的一个沉重的历史包袱。是的,权力具有两重性,人民赋予的权力,既可以用来为人民服务,也可能被用作谋取私利。毛泽东以深邃的历史眼光,看到了我们党取得全国政权之后存在的这种危险。

抗战胜利前夕毛泽东就向“官国”开炮

早在1944年11月,当中国革命胜利的曙光初露端倪的时候,毛泽东在给郭沫若的信中就说:“你的《甲申三百年祭》,我们把它当作整风文件看待。小胜即骄傲,大胜更骄傲,一次又一次吃亏,如何避免此种毛病,实在值得注意。”在毛泽东看来,骄傲,就必然脱离群众,在取得政权之后,就会贪图享受,骄奢淫逸,重蹈历史上农民战争屡遭失败的覆辙。在建国前夕召开的中共七届二中全会上,毛泽东向全党发出了要防止资产阶级“用糖衣裹着的炮弹的攻击”的警示,他语重心长地说:“中国的革命是伟大的,但革命以后的路程更长,工作更伟大,更艰苦。这一点现在就必须向党内讲明白,务必使同志们继续地保持谦虚、谨慎、不骄、不躁的作风,务必使同志们继续地保持艰苦奋斗的作风。”全会还根据毛泽东的提议作出了六条规定:一曰不做寿,二曰不送礼;三曰少敬酒;四曰少拍掌;五曰不以人名作地名;六曰不要把中国同志同马、恩、列、斯并列。后来在“三反”运动中毛泽东重申必须坚持“七届二中全会防止腐蚀的方针”。这表明在建国前夕,毛泽东就把党执政后反腐蚀的问题提到了全党面前。毛泽东上述基于对党的事业深刻理解而作出的高屋建瓴的科学预见,是我们党执政必须具备的一种思想观念和精神状态,是共产党员保持无产阶级先进战士本色、拒腐防变的长鸣警钟。

毛泽东的一生,是争取人民主权、捍卫人民主权的一生。他萦萦于心的是天下的苍生,最痛恨的是那种骑在人民头上作威作福的官僚主义作风。我们知道,官僚主义作为一种社会现象,是以往一切剥削阶级统治的国家所固有的特征。这是因为剥削阶级为了追求自己特殊的利益,拼命维护他们少数人对多数人的统治,借助庞大的官僚国家机器实施对社会的严密控制,使国家日益成为脱离社会的机关。这种国家的阶级本质,决定了官僚与社会的对立和分离。在社会主义制度下,国家与社会对立的现象消失了,主权回到人民的手中。但必须看到,由于历史的原因,人民群众在相当长的时期还难以达到直接地、普遍地参加社会管理的水平,所以人民的权力是通过自己的利益代表者,即共产党和国家权力机关来实现的。这样,党和政府的工作人员与人民的关系如何,就直接关系到这个政权的性质。同时还要看到,旧的思想意识是不可能和被推翻的旧制度一起被埋葬掉,它会在一个很长的历史时期内存在并影响着人们。像中国这样一个经历了2000多年封建统治,在近代又缺乏民主传统的国家,封建专制主义在思想政治和社会生活各方面的遗毒根深蒂固,这不能不是官僚主义在社会主义条件下得以复活的一个重要的社会历史原因。这正是谢老称之为“官国”的传统习惯势力的根源所在。所以,毛泽东尖锐地把官僚主义称作“反人民的作风”,他说,官僚主义作风,“就社会根源来说,这是反动统治阶级对待人民的作风(反人民的作风,国民党的作风)的残余在我们党和政府内的反映的问题”。他在党的八届二中全会上一再告诫全党:“不要滋生官僚主义作风,不要形成一个脱离人民的贵族阶层”。

铲除特权才能防止人民江山变色

毛泽东看来,官僚主义的实质是一种特权的思想和作风。这种把人民赋予的权力看作是个人的专利、专权,它不但会表现在漠视群众疾苦甚至欺压百性的工作作风上,而且也会表现在以这种特权来谋取个人的私利。毛泽东极端憎恶特权的思想和作风,他是官僚主义的不可调和的敌人。1965年毛泽东重上井冈山时,饱含深情地回忆井冈山斗争时牺牲的同志,卢德铭、何挺颖、王尔琢、张子清、伍中豪……,他说,一回到井冈山,脑子里就看到了他们一张张年轻的面孔,都是活生生的。他们都是有坚定信仰有牺牲精神的好同志,牺牲时都只有二十几岁呀!这时,毛泽东的思绪回到亿万工农百战多的艰苦岁月,目光却射向未来,他深深地思考和担忧,千百万革命先烈用鲜血换来的人民江山,会不会因为我们队伍中的特权思想滋长而改变颜色?他说,一想到建立红色政权牺牲了那么多的好青年,好同志,我就担心今天的政权。他以苏联为例,说苏联党内有个特权集团、官僚集团,他们掌握了国家的要害部门,为个人捞取了大量的政治利益和经济利益,一般党员和普通老百姓是没有什么权利的,你提意见他们不听,还要打击迫害。他接着说,我们国家也有危险,官僚主义作风反了多次,还是存在,甚至比较严重,官僚主义思想也比较严重。打击迫害、假公济私的事有没有?这样的事情,你们知道的比我多。但报喜不报忧,这也是官僚和封建的东西。做官有特权,有政治需要、有人情关系。县官不如现管,假话满天飞,忽“左”忽右、形左实右,这些很容易造成干部的腐化、蜕化和变质,苏联就是教训。我很担心高级干部出现修正主义,中央出现修正主义怎么办?有没有制度管住他们?这时他特别提出,井冈山革命精神不能丢了,不能从我们第三代和第四代身上丢了。这些令人振聋发聩的深刻思想,是毛泽东1945年提出以民主新路跳出“兴勃亡忽”历史周期率、1949年提出“进京赶考”等一系列思考的延续和深化。这是一个具有深远意义的战略思考和历史课题,后辈共产党人应当加以警惕和自律;以能够交出一份让革命先烈和老一辈无产阶级革命家满意的答卷。

2007年8月15日星期三

Victory for voices over keystrokes

Funk is one of 200 customer service representatives at the Netflix call center here, 20 miles west of Portland, where she is on the front lines of the online movie rental company's efforts to use customer service as a strategic weapon against Blockbuster's similar DVD-mailing service.

Netflix set up shop here a year ago, shunning other lower-cost places in the United States and overseas, because it thought that Oregonians would present a friendlier voice to its customers. Then in July, Netflix took an unusual step for a Web-based company: it eliminated e-mail-based customer service inquiries. Now all questions, complaints and suggestions go to the Hillsboro call center, which is open 24 hours a day. The company's toll-free number, previously buried on the Web site, is now prominently displayed.

Netflix is bucking several trends in customer service. Booz Allen Hamilton, a management consulting firm, and Duke University studied 600 companies last year and found a continued increase not just in outsourcing, but also offshoring, in which call centers are moved overseas.

"I don't think there's any trend to pull back," said Matt Mani, a senior associate at Booz Allen. "This is a unique strategy for Netflix. There's so much more competition, this is something they've done to get closer to the customer, because without that, there's really no connection a customer has to Netflix.”

Netflix's decision to greet anxious consumers with a human voice, not an e-mail, is also unusual in corporate customer service. "It's very interesting and counter to everything anybody else is doing," said Tom Adams, the president of Adams Media Research, a market research firm in Carmel, Calif. "Everyone else is making it almost impossible to find a human.”

In contrast, Blockbuster outsources a portion of its customer service, and when people do call, they are encouraged to use the Web site instead. Its call center is open only during business hours, said Shane Evangelist, senior vice president and general manager for Blockbuster Online, because the majority of customers prefer e-mail support, which is available 24 hours a day. "Our online customers are comfortable using e-mail to communicate," he said.

The decision to invest heavily in telephone customer service was an expensive one for Netflix, but it may be one advantage that the company with the familiar red envelopes has over its rival with the blue ones, analysts say. "It's vital in a world where they're no longer growing their customer base," Adams said.

Indeed, for the first time in its eight-year existence, Netflix has found itself losing customers. It is not the quality of customer service that is driving them away, but rather the heightened competition from Blockbuster. Late last year, soon after Blockbuster introduced its Total Access program, which allows members to swap a movie they have rented online for an in-store movie, the nationwide chain began gaining on Netflix's base of 6.7 million subscribers.

By the first quarter this year, after years of outstripping Blockbuster in subscriber growth, Netflix added 480,000 new subscribers while Blockbuster signed up 780,000 new members. And in the second quarter of this year, Netflix, which prides itself on customer loyalty, lost 55,000 customers. Blockbuster added 525,000, bringing its total to 3.6 million.

The Hillsboro operation, which occupies about 30,000 square feet of a low building in an office park, is intended to keep the red envelopes coming. Michael Osier, vice president for information technology operations and customer service, said he rejected cities like Phoenix, Salt Lake City and Las Vegas, which are known as call-center capitals, because of their high employee turnover rates. He settled on the greater Portland area because of the genial attitude on the part of most service workers.

"In hotels and coffee shops and the airport, it's amazing how consistent people are in their politeness and empathy," said Osier, who is based at Netflix headquarters in Los Gatos, Calif. "There's an operational language in the industry that people are so jaded about--phrases like ‘due to high caller volume.' We're very consciously trying to counter that mentality."

2007年8月12日星期日

java abstract class 和 interface的概念分析与理解

非常透析的分析文章。
"从设计理念层面看abstract class和interface ”这段最重要。


abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java强大的面向对象能力。abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性,甚至可以相互替换,因此很多开发者在进行抽象类定义时对于abstract class和interface的选择显得比较随意。其实,两者之间还是有很大的区别的,对于它们的选择甚至反映出对于问题领域本质的理解、对于设计意图的理解是否正确、合理。本文将对它们之间的区别进行一番剖析,试图给开发者提供一个在二者之间进行选择的依据。

理解抽象类

abstract class和interface在Java语言中都是用来进行抽象类(本文中的抽象类并非从abstract class翻译而来,它表示的是一个抽象体,而abstract class为Java语言中用于定义抽象类的一种方法,请读者注意区分)定义的,那么什么是抽象类,使用抽象类能为我们带来什么好处呢?

在面向对象的概念中,我们知道所有的对象都是通过类来描绘的,但是反过来却不是这样。并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。抽象类往往用来表征我们在对问题领域进行分析、设计中得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象。比如:如果我们进行一个图形编辑软件的开发,就会发现问题领域存在着圆、三角形这样一些具体概念,它们是不同的,但是它们又都属于形状这样一个概念,形状这个概念在问题领域是不存在的,它就是一个抽象概念。正是因为抽象的概念在问题领域没有对应的具体概念,所以用以表征抽象概念的抽象类是不能够实例化的。

在面向对象领域,抽象类主要用来进行类型隐藏。我们可以构造出一个固定的一组行为的抽象描述,但是这组行为却能够有任意个可能的具体实现方式。这个抽象描述就是抽象类,而这一组任意个可能的具体实现则表现为所有可能的派生类。模块可以操作一个抽象体。由于模块依赖于一个固定的抽象体,因此它可以是不允许修改的;同时,通过从这个抽象体派生,也可扩展此模块的行为功能。熟悉OCP的读者一定知道,为了能够实现面向对象设计的一个最核心的原则OCP(Open-Closed Principle),抽象类是其中的关键所在。


a. 从语法定义层面看abstract class和interface

在语法层面,Java语言对于abstract class和interface给出了不同的定义方式,下面以定义一个名为Demo的抽象类为例来说明这种不同。

使用abstract class的方式定义Demo抽象类的方式如下:

abstract class Demo {
abstract void method1();
abstract void method2();



使用interface的方式定义Demo抽象类的方式如下:

interface Demo {
void method1();
void method2();

}

在abstract class方式中,Demo可以有自己的数据成员,也可以有非abstarct的成员方法,而在interface方式的实现中,Demo只能够有静态的不能被修改的数据成员(也就是必须是static final的,不过在interface中一般不定义数据成员),所有的成员方法都是abstract的。从某种意义上说,interface是一种特殊形式的abstract class。

b. 从编程的角度来看,abstract class和interface都可以用来实现"design by contract"的思想。但是在具体的使用上面还是有一些区别的。

首先,abstract class在Java语言中表示的是一种继承关系,一个类只能使用一次继承关系。但是,一个类却可以实现多个interface。也许,这是Java语言的设计者在考虑Java对于多重继承的支持方面的一种折中考虑吧。

其次,在abstract class的定义中,我们可以赋予方法的默认行为。但是在interface的定义中,方法却不能拥有默认行为,为了绕过这个限制,必须使用委托,但是这会 增加一些复杂性,有时会造成很大的麻烦。

在抽象类中不能定义默认行为还存在另一个比较严重的问题,那就是可能会造成维护上的麻烦。因为如果后来想修改类的界面(一般通过abstract class或者interface来表示)以适应新的情况(比如,添加新的方法或者给已用的方法中添加新的参数)时,就会非常的麻烦,可能要花费很多的时间(对于派生类很多的情况,尤为如此)。但是如果界面是通过abstract class来实现的,那么可能就只需要修改定义在abstract class中的默认行为就可以了。

同样,如果不能在抽象类中定义默认行为,就会导致同样的方法实现出现在该抽象类的每一个派生类中,违反了"one rule,one place"原则,造成代码重复,同样不利于以后的维护。因此,在abstract class和interface间进行选择时要非常的小心。


c. 从设计理念层面看abstract class和interface

上面主要从语法定义和编程的角度论述了abstract class和interface的区别,这些层面的区别是比较低层次的、非本质的。本小节将从另一个层面:abstract class和interface所反映出的设计理念,来分析一下二者的区别。作者认为,从这个层面进行分析才能理解二者概念的本质所在。

前面已经提到过,abstarct class在Java语言中体现了一种继承关系,要想使得继承关系合理,父类和派生类之间必须存在"is a"关系,即父类和派生类在概念本质上应该是相同的(参考文献〔3〕中有关于"is a"关系的大篇幅深入的论述,有兴趣的读者可以参考)。对于interface 来说则不然,并不要求interface的实现者和interface定义在概念本质上是一致的,仅仅是实现了interface定义的契约而已。为了使论述便于理解,下面将通过一个简单的实例进行说明。

考虑这样一个例子,假设在我们的问题领域中有一个关于Door的抽象概念,该Door具有执行两个动作open和close,此时我们可以通过abstract class或者interface来定义一个表示该抽象概念的类型,定义方式分别如下所示:

使用abstract class方式定义Door:

abstract class Door {
abstract void open();
abstract void close();
}


使用interface方式定义Door:


interface Door {
void open();
void close();
}


其他具体的Door类型可以extends使用abstract class方式定义的Door或者implements使用interface方式定义的Door。看起来好像使用abstract class和interface没有大的区别。

如果现在要求Door还要具有报警的功能。我们该如何设计针对该例子的类结构呢(在本例中,主要是为了展示abstract class和interface反映在设计理念上的区别,其他方面无关的问题都做了简化或者忽略)?下面将罗列出可能的解决方案,并从设计理念层面对这些不同的方案进行分析。

解决方案一:

简单的在Door的定义中增加一个alarm方法,如下:

abstract class Door {
abstract void open();
abstract void close();
abstract void alarm();
}


或者

interface Door {
void open();
void close();
void alarm();
}


那么具有报警功能的AlarmDoor的定义方式如下:

class AlarmDoor extends Door {
void open() { … }
void close() { … }
void alarm() { … }
}


或者

class AlarmDoor implements Door {
void open() { … }
void close() { … }
void alarm() { … }


这种方法违反了面向对象设计中的一个核心原则ISP(Interface Segregation Priciple),在Door的定义中把Door概念本身固有的行为方法和另外一个概念"报警器"的行为方法混在了一起。这样引起的一个问题是那些仅仅依赖于Door这个概念的模块会因为"报警器"这个概念的改变(比如:修改alarm方法的参数)而改变,反之依然。

解决方案二:

既然open、close和alarm属于两个不同的概念,根据ISP原则应该把它们分别定义在代表这两个概念的抽象类中。定义方式有:这两个概念都使用abstract class方式定义;两个概念都使用interface方式定义;一个概念使用abstract class方式定义,另一个概念使用interface方式定义。

显然,由于Java语言不支持多重继承,所以两个概念都使用abstract class方式定义是不可行的。后面两种方式都是可行的,但是对于它们的选择却反映出对于问题领域中的概念本质的理解、对于设计意图的反映是否正确、合理。我们一一来分析、说明。

如果两个概念都使用interface方式来定义,那么就反映出两个问题:1、我们可能没有理解清楚问题领域,AlarmDoor在概念本质上到底是Door还是报警器?2、如果我们对于问题领域的理解没有问题,比如:我们通过对于问题领域的分析发现AlarmDoor在概念本质上和Door是一致的,那么我们在实现时就没有能够正确的揭示我们的设计意图,因为在这两个概念的定义上(均使用interface方式定义)反映不出上述含义。

如果我们对于问题领域的理解是:AlarmDoor在概念本质上是Door,同时它有具有报警的功能。我们该如何来设计、实现来明确的反映出我们的意思呢?前面已经说过,abstract class在Java语言中表示一种继承关系,而继承关系在本质上是"is a"关系。所以对于Door这个概念,我们应该使用abstarct class方式来定义。另外,AlarmDoor又具有报警功能,说明它又能够完成报警概念中定义的行为,所以报警概念可以通过interface方式定义。如下所示:

abstract class Door {
abstract void open();
abstract void close();
}
interface Alarm {
void alarm();
}
class AlarmDoor extends Door implements Alarm {
void open() { … }
void close() { … }
void alarm() { … }
}


这种实现方式基本上能够明确的反映出我们对于问题领域的理解,正确的揭示我们的设计意图。其实abstract class表示的是"is a"关系,interface表示的是"like a"关系,大家在选择时可以作为一个依据,当然这是建立在对问题领域的理解上的,比如:如果我们认为AlarmDoor在概念本质上是报警器,同时又具有Door的功能,那么上述的定义方式就要反过来了。

2007年8月8日星期三

突破网络屏蔽、封锁的浏览器Torpark

代理软件之一.Torpark整合了Tor(The Onion Router)和FireFox最新版本.主要的特点就是可以整套放在移动硬盘随身携带,随处使用加密浏览.使用也非常方便,关闭FireFox,启动Torpark即可自动寻找代理.

能访问被屏蔽的网站的优秀浏览器torpark,其最大亮点就是全自动的代理功能,这种代理功能得益于一个叫做tor的网络平台(官方主页是tor.eff.org)。tor是新一代的socks加密代理服务软件,每个用户都可以在自己的计算机上运行tor软件,以便成为一台代理节点。把无数运行tor的计算机连接起来便构成tor网络。最终,一条条数据传输线路就在这个庞大的网络中产生。而用户机上的tor还可以为应用程序提供socks的接口支持,这就是torpark何以如此强大的原因。但由于tor软件本身的配置比较复杂,所以我们一般的应用就使用torpark即可


下载地址:
http://torpark.onionland.org/torpark_chinese_1.5.0.2.exe
本文链接地址:http://www.hefeiseo.cn/blog/post/Torpark.html

2007年8月6日星期一

在HTML文件引入其它HTML文件的几种方法

在论坛中常常有网友问到,可以在一个html的文件当中读取另一个html文件的内容吗?答案是确定的,而且方法不只一种,在以前我只会使用iframe来引用,后来发现了另外的几种方法,那今天就总结这几种方法让大家参考一下。

1.IFrame引入,看看下面的代码

--------------------------------------------------------------------------------

--------------------------------------------------------------------------------

你会看到一个外部引入的文件,但会发现有一个类似外框的东西将其包围,可使用

--------------------------------------------------------------------------------

--------------------------------------------------------------------------------

但你会发现还会有点问题,就是背景色不同,你只要在引入的文件import.htm中使用相同的背景色也可以,但如果你使用的是IE5.5的话,可以看看这篇关于透明色的文章 如果想引入的文件过长时不出现滚动条的话在import.htm中的body中加入scroll=no

2.方式

--------------------------------------------------------------------------------

--------------------------------------------------------------------------------

3.Behavior的download方式

--------------------------------------------------------------------------------