HCOONa 2012-01-25 11:45
@EmingK
囧嘞……O(∩_∩)O谢谢
EmingK 2012-01-25 11:43
学长V5,学长霸气,膜拜学长……
HCOONa 2012-01-25 10:58
@数字
O(∩_∩)O谢谢
数字 2012-01-25 10:56
很有启发的说,不错不错,学长v5.
HCOONa 2012-01-24 18:03
@youxiachai
非常感谢你的更正,很久没有用graphviz了,不太了解新版本的变化。
youxiachai 2012-01-19 11:50
{rank=same; a1; a2} 在最新的版本要放到结点定义前,
即:放到第一行中,不然,绘制失败..
youxiachai 2012-01-19 03:03
最近,在使用,一直得不到窍门,太感谢你的分享了
漂木 2011-11-13 19:11
原来要学的这么多。。。和我那工大计算机的哥们学得不全都一样,和我们(吉大)也好像有一些区别。。。
桌面 虚拟化 2011-11-10 14:14
我叫Matt。现在我在戴尔公司工作.我想你的想法很有意思的。我觉得,由于受不了RPM的气,决定把服务器上的redhat linux 9.0卸掉,使用debian系统。
因为服务器上运行着ftp,www,squid,nat等很多服务,所以关掉机子全部重装会长时间影响所提供的服务。
娃没戏 2011-11-09 03:19
我觉得编程快乐
反对反对 2011-06-19 15:37
能否具体说明一下如何在VS2010中的注册微软企业库4.1。谢谢!
www.233tl.com天龙八部
HCOONa 2011-05-26 15:21
@Hello! Linux 博客
是这样的,可能最新的wordpress处理方式改变了,如果有兴趣你应该看看源码:P
Hello! Linux 博客 2011-05-26 15:07
使用你的方法设置好了,有点不明白。
rewrite后是不是直接把请求的参数递交给 index.php处理了?
yyzhou 2011-05-20 00:03
(张)帅哥知识面很广哈,给力!!
风起时 想你 2011-05-06 15:53
我是新手,你的讲解很实用 谢谢!!!
菜程序员 2011-04-28 15:40
程序员对语言的选择,一般企业的主导多一些,什么样的企业需要什么样的程序员。做企业信息化的一般用.net的多,因为IDE工具可以用盗版,而不用担心被追究。用java的企业一般公司规模大一些,而且IDE有免费的,但是需要程序员的水平稍高一些。用DELPHI的少多,因为老是被打盗版,而且要求一台一授权,还那么贵。
HCOONa 2010-12-01 22:00
@luca brasi
debian安装详细流程而已,不含各种配置,更别提生产部署了
话说回来,你觉得怎么样才算详细呢?
luca brasi 2010-12-01 21:52
这也叫debian的详细部署么。。。
稀饭啦 2010-11-10 00:58
对于手工修改.config文件后程序自动更新这个咚咚
lz能否讲的详细一些
-------------------------------------------------------------
[url=http://www.columbiasportswearoutlet.org/]columbia sportswear outlet[/url] | [url=http://www.thenorthface-outlet.org/]north face outlet[/url]
lich0079 2010-09-17 15:31
大侠,真的太谢谢你了
到处没找到答案,还是在你这找到了
但你能解析下为什么要这么配吗 我还是不明白
HCOONa 2010-07-30 09:07
郁闷,Word里面排版的好好地,传上来就没有引用什么的了,格式也乱了
深蓝医生 2010-07-21 23:17
@HCOONa
最近用了好几个第三方的WinForm控件,它们都有一个Select方法,但是这些控件的Select方法已经不是Windows用户控件基类的那个意思了,也就是说在方法在子类的应用场景中,语义已经完全发生了变化,这个时候就需要在方法上使用NEW.
HCOONa 2010-07-12 11:19
@深蓝医生
呵呵,确实就是你引用的那段话,非常精辟。
我是想讨论下什么时候使用new关键字进行函数隐藏,因为函数隐藏的副作用非常之大,一般情况下弊大于利。
深蓝医生 2010-07-12 11:13
[quote]Alex He:new关键字告诉编译器,子类中的方法虽然与父类方法一样(签名,参数),但是该方法与基类中的方法没有任何关系[/quote]
当我第一次看到这样的NEW语法的时候,第一直觉就是上面兄弟说的这样,没有其它想法,反而看了大家的讨论越来越糊涂了。
HCOONa 2010-07-12 10:10
[quote]xiaotie:
@Alex He
问题是使用的人可能在这里用的是A.Foo(),在那里使用的是B.Foo()。如果用new的话,会导致“错误”。[/quote]
同意
HCOONa 2010-07-12 10:10
@CFan.Net
我认为你这个例子相当牵强了,:-)
从逻辑上也说不通啊,他们都继承武器类,而武器类用虚方法。
然后一个人拿着多种武器。在人需要使用武器的时候判断一下,一般情况下使用当前武器,特殊情况下使用基本武器,是这样吧,呵呵
HCOONa 2010-07-12 10:07
@Alex He
我在[url=http://www.cnblogs.com/Nobel/archive/2010/07/11/1775149.html]不要new你的函数[/url]的33楼详细的回答了你的问题
他那个属于基本错误,我这个属于观点不同,观点不同可以讨论,语言本身就没了解清楚的没法继续讨论
geckor 2010-07-12 09:55
复制粘贴害人不浅。上文代码多1个new字,更正如下:
-------------------------------------
//章鱼没有尾巴,怎么办?
public void 章鱼Swim()
{
Console.WriteLine("摆触手游");
}
geckor 2010-07-12 09:53
[quote]Alex He:new关键字告诉编译器,子类中的方法虽然与父类方法一样(签名,参数),但是该方法与基类中的方法没有任何关系[/quote]
精辟的解释。
正因为 该方法与基类中的方法没有任何关系 ,所以new一个方法跟新命名一个方法是一样的效果,但new 却会在用父类调用时发生不确定的错误。那为什么不新命名一个方法,而要让这种不确定性存在呢?
而至于原来的方法,个人应当依然使用override重写调用 新命名的方法使多态不至于发生错误。
以楼主所举的例子说明:
public class 章鱼 : 鱼
{
//章鱼没有尾巴,怎么办?
public void new 章鱼Swim()
{
Console.WriteLine("摆触手游");
}
public void override Swim()
{
章鱼Swim() ;
}
}
----------------------------
另对于各位和楼主所举各例,均可以用更好的方式来实现,确没有用new的必要,如有仁兄能举出 new 适用的场景,敬请告知。
xiaotie 2010-07-11 20:38
@Alex He
问题是使用的人可能在这里用的是A.Foo(),在那里使用的是B.Foo()。如果用new的话,会导致“错误”。
CFan.Net 2010-07-11 18:18
还是说我举的例子问题:
刀是最基本的武器,又是任何时候都可以使用的, 长枪是后来拥有,它具备了新的职能,当然也有可能会有剑,但在调用的时候,方法是不变的,都是Dosomething,接口一致,剑和长枪都是继承于刀。
长枪和剑可以切换类,刀却不用。或者是这里的刀举的不恰当,如果说刀是拳则更合适来说明问题。Dosomething就是出招,当武器在特殊环境中临时不能使用([b]注意是临时[/b]),则((A)B).Dosomething()就有意义了。。
当然,总的来说,这样的设计不是很合理,但可以从应用角度来说明这里的使用场合。
Alex He 2010-07-11 17:14
[quote]Rouper:
[quote]Alex He:
@Rouper
这就是重构的思维问题,换成我我也不会改名字,我改逻辑行不?
--------------------------
那别人怎么办[/quote]
我又没改名字,别人要怎么办?我会把旧的方法用新的名字公布出来。[/quote]
[quote]菩提小鸟:
[quote]HCOONa:
@菩提小鸟
你这个言论太误导人了,建议你还是多看看书再来发言,
你这个帖子我就不删了,在此提醒同学们不要被误导[/quote]
请问楼主,是哪句误导了人?请明示。[/quote]
你那句用new还不如使用新的方法名称实在是很误导人,请把眼光放长远一点,想想调用你代码的人,是不是让人家也要跟着你修改方法的名称
银河 2010-07-11 16:08
不错的文章。
mark
HCOONa 2010-07-11 13:16
@菩提小鸟
[quote]菩提小鸟:
楼主问什么时候需要函数隐藏,我觉得这个范围太大了。函数隐藏其实就是面向对象编程中的“多态”的具体实现吧。当需要最少修改原代码,而通过扩展来实现新功能时,我们就要在设计中大量使用这种隐藏函数,比如20多种主流的设计模式,每种都是解决一个具体功能需求的扩展问题,而这些模式都是建立在多态之上的,当然现在具体体现就是基类用抽象类或接口,然后在派生类中重载。[/quote]
1.函数隐藏跟多态没有关系(我估计你这点就搞错了,以至于后面说的我都接受不了了,建议你先点开MSDN那个链接看看什么是函数隐藏)
2.需要扩展新功能的时候不需要使用(甚至于一点都不需要)隐藏函数
3.单例模式不是建立在多态上的
4.具体体现也不是基类用抽象类或接口
菩提小鸟 2010-07-11 12:37
[quote]HCOONa:
@菩提小鸟
你这个言论太误导人了,建议你还是多看看书再来发言,
你这个帖子我就不删了,在此提醒同学们不要被误导[/quote]
请问楼主,是哪句误导了人?请明示。
HCOONa 2010-07-11 12:23
@xiaotie
囧,
所以我建议禁用这个语言特性……=w=
HCOONa 2010-07-11 12:22
@菩提小鸟
你这个言论太误导人了,建议你还是多看看书再来发言,
你这个帖子我就不删了,在此提醒同学们不要被误导
xiaotie 2010-07-11 12:17
@HCOONa
那就别无一用了。
菩提小鸟 2010-07-11 12:15
override和new最大区别是:当用基类调用派生类实例方法时,override是调用派生类的方法,而new调用的是基类方法。调用方式如楼主写的:(鱼)章鱼A).Swim()。在其他情况下,他们完全一样。至于为什么有这些差别,这是由于代码最终会被编译为二进制代码,我们知道汇编是最接近二进制代码的,如果站在汇编角度来看,这就是由于在汇编层支持面向对象的实现造成的。
楼主问什么时候需要函数隐藏,我觉得这个范围太大了。函数隐藏其实就是面向对象编程中的“多态”的具体实现吧。当需要最少修改原代码,而通过扩展来实现新功能时,我们就要在设计中大量使用这种隐藏函数,比如20多种主流的设计模式,每种都是解决一个具体功能需求的扩展问题,而这些模式都是建立在多态之上的,当然现在具体体现就是基类用抽象类或接口,然后在派生类中重载。
HCOONa 2010-07-11 12:14
@xiaotie
可以使用显式接口实现,而不是非得使用new函数隐藏。
Rouper 2010-07-11 12:05
[quote]Alex He:
@Rouper
这就是重构的思维问题,换成我我也不会改名字,我改逻辑行不?
--------------------------
那别人怎么办[/quote]
我又没改名字,别人要怎么办?我会把旧的方法用新的名字公布出来。
Alex He 2010-07-11 12:03
@Rouper
这就是重构的思维问题,换成我我也不会改名字,我改逻辑行不?
--------------------------
那别人怎么办
Alex He 2010-07-11 12:02
[quote]xiaotie:这个new就是反OO的。[/quote]
由此感觉,但是我认为他是为了弥补人类的失误
xiaotie 2010-07-11 11:54
public class 鱼,ISwim
{
public void Swim()
{
Console.WriteLine("摆尾巴游");
}
}
public class 章鱼 : 鱼,ISwim
{
//章鱼没有尾巴,怎么办?
public void new Swim()
{
Console.WriteLine("摆触手游");
}
}
当他们共同实现某一个接口,鱼这个类又写的很烂时,new 才有意义。
xiaotie 2010-07-11 11:49
这个new就是反OO的。
Rouper 2010-07-11 11:38
@Alex He
[quote]Alex He:
[quote]卡通一下:
[quote]Alex He:
楼主建议不要使用new,而直接起名字和父类不一样的方法,再次请楼主回答
[b]对于new,我个人的理解是如果在前期的设计里面是完全没有必要使用的,如果在前期的设计中如果感觉父类的方法不满足子类,那么完全可以在子类中设计一个和父类的方法名字不一样的方法,
但是楼主有一种情况,那就是如果在软件开发的后期发现了这种情况,我们有两种做法,
一是在子类中加不同方法名称的方法,
二是使用new加一个方法名称一样的方法,
请问楼主那一个做法应该好一点???[/b][/quote]
我个人对你帖子的理解,如果一个父类只有一个子类,重新定义一个新方法是可以的;如果一个父类有多个子类,同时又不是一个人来开发,那还是延用父类中的方法名较好。
[/quote]
对对对,否则n多人都调用了某一方方法,你要是修改了名字,那得产生多大的连锁反应啊,多少人要修改代码啊,而如果使用了new,就像b/s一样,只在服务器操作一下,客户端正常,但是如果调用的少许,修改名称导致的连锁反应很少,则可以修改名称[/quote]
这就是重构的思维问题,换成我我也不会改名字,我改逻辑行不?
HCOONa 2010-07-11 11:34
@Alex He
[quote]诺贝尔:
首先,章鱼不是鱼。因此这个“强硬”的继承,不过是滥用语法的一个特征。语法能支持的,不等于逻辑能通过。
ms设计这个new,自然有他的用意所在。但是我看不到很有意义的设计点。
我个人的看法,这不过是具体编码中的一种妥协,比如,这个方法虽然不行,但是还有其他方法可以,而既然这个方法不行(也就是没有多态意义),那我完全也不用考虑要避免和基类同名,因为这个名字可能还是很能达意的。
当然,我不认为这种妥协是什么好设计,因为这等于放弃了面向对象的哲学,沦为一种复制粘贴,是一种简陋,容易出错的复用代码行为。[/quote]
Rouper 2010-07-11 11:31
[quote]Alex He:
......
一是在子类中加不同方法名称的方法,
二是使用new加一个方法名称一样的方法,
请问楼主那一个做法应该好一点???[/b][/quote]
我会选择第一种。
如果方法是公开的,那在开发过程中我们永远不知道别人是否会使用基类来调用这个方法。这种不确定性我无法忍受.
Alex He 2010-07-11 11:31
[quote]卡通一下:
[quote]Alex He:
楼主建议不要使用new,而直接起名字和父类不一样的方法,再次请楼主回答
[b]对于new,我个人的理解是如果在前期的设计里面是完全没有必要使用的,如果在前期的设计中如果感觉父类的方法不满足子类,那么完全可以在子类中设计一个和父类的方法名字不一样的方法,
但是楼主有一种情况,那就是如果在软件开发的后期发现了这种情况,我们有两种做法,
一是在子类中加不同方法名称的方法,
二是使用new加一个方法名称一样的方法,
请问楼主那一个做法应该好一点???[/b][/quote]
我个人对你帖子的理解,如果一个父类只有一个子类,重新定义一个新方法是可以的;如果一个父类有多个子类,同时又不是一个人来开发,那还是延用父类中的方法名较好。
[/quote]
对对对,否则n多人都调用了某一方方法,你要是修改了名字,那得产生多大的连锁反应啊,多少人要修改代码啊,而如果使用了new,就像b/s一样,只在服务器操作一下,客户端正常,但是如果调用的少许,修改名称导致的连锁反应很少,则可以修改名称