最新评论
Re:存档 - UPNP 相关资料 TypeCool 2011-03-20 07:33
误导,完全是误导.你谋杀了我3天时间.
设备在239.255.255.250:1900地址上多播这是正确的.
但对搜索的响应方式却是采用的单播.
我是说我在多播组上的监听一直没有回馈呢。
Re:存档 - UPNP 相关资料 TypeCool 2011-03-16 13:57
你好,看了你的文章收获很大,这里感谢一下。
但有个问题请教你。我发送 发现消息给设备,得不到回应。是不是我的信息格式有问题?
char sData[] = "M-SEARCH * HTTP/1.1\n\
HOST: 239.255.255.250:1900\n\
MAN: \"ssdp:discover\"\n\
MX: 3\n\
ST: upnp:rootdevice\n";
@老段
动作真快啊
@边城浪
好主意! 不过我自己的算法最多也就能解第4级的迷宫。
@二叉树
恩,说明文件和帮助文件还是很详细的。
@Leem
呵呵,算是给博客园小贡献一把,丰富大家的课余生活吧! :)
@唐文
因为考虑到有的同学不知道什么是C#,所以就手把手开工了。
@逖靖寒
不同的迷宫需要有不同的算法,A*算法可以求解1-3级的迷宫,4级以后的迷宫是没有通路的,需要更复杂的算法来求解。7级迷宫需要2个算法配合才能走出,好比《国家宝藏2》中最后尼古拉斯同学是借助另外一名同学才得以逃出地下迷宫一样。
re: .NET平台上编写算法走迷宫的小游戏 Leem 2008-09-12 10:41
强的,做的好的话,应该会很受技术人员欢迎.
以前有个类似的游戏的,主要是以文字表现为主.
下了,其实前段时间就对这个很感兴趣,明天下班后中秋放假可以研究研究了
请问最新版的AgentFramework在哪里下载。能否提供下载。谢谢
我手里只有当时的M6版。另外,若能提供下载,可否将相关使用文档一并送出,之前的说明书实在有些晦涩。
联系:majianle#gmail.com。
谢谢。
re: 悄悄的到来 Agent 2.0 e2mars 2007-09-29 22:05
路过
可以给我一份代码研究下么? Email:79961739@QQ.com 不胜感谢。。
re: 收藏 - UPNP 相关资料 Isold 2006-08-08 16:51
收藏了你的文章,找了好久的文章.太谢谢楼主了.
@Hon Young
谢谢,这里也有另外两个例子
http://e2tox.cnblogs.com/archive/2005/11/28/285990.html。AOP的编程模式其实能派上很大用处的。
比如你可以用 IInterceptor 来对参数和返回值进行验证
class 之间的 invocation 的调用
甚至动态的重写一个函数,增加一个功能,等等。
想法是不错,举的例子不是很恰当,可能会引起很大的争论!
1、该文章发表在软件发布区比较合适。
2、文章中的图片会让读者误以为是弹出窗口。
to Holy:
用Emit手动构造的拦截代码,重写了原有的函数
to 双鱼座:
上面的代码已经显示了,除了定义的地方不同(Aspect用的是字符串定义,DProxy用的是对象定义),实现的功能两者是无异的,DProxy不是动态代理。
对于是否把方法定义为final这个只是个人的习惯问题,而重写override方法这个不是AOP设计的初衷,是因为目前的.NET Framework 1.1的限制,才迫于使用这个方法。
并且DProxy对Emit生成的代码具有保护功能,如果将动态生成的Assembly反编译为C#代码,就算不修改直接编译回去,会发现编译可以成功,但是代码不能正确运行。
我晕...你为什么要和Aspect#比?你只实现了DynamicProxy的功能,就只能和DynamicProxy比呀。Aspect#是对DynamicProxy的进一步抽象,完成了太多动态代理没有实现的功能。就Override方式的Proxy来讲,不太可能有比DynamicProxy使用Emit更快的方式了。
无论如何,基于动态override的Proxy是没有任何意义的,我就经常喜欢将方法定义成final,因为这样可以获得非常好的性能。RemotingProxy虽然没有很好的性能,但是通过消息机制实现,没有任何限制。
to TOX:
请问tox使用什么方法拦截的呀?我用RemotingProxy发现性能不是一个数量级的。
to Jifeng huang:
Mixin 大概意思指在不修改原有类(A)代码的基础上,动态的增加函数到(A)中。当然这个是动态代理做不到的,我们其实利用了一个技巧,我们将增加的代码写到A的派生类中,而使用的时候却按照A的方法来使用。这样会感觉到A好像多了一个功能。
但是在调用的时候,我们不能用A直接调用A的派生类中增加的代码,因此我们需要预先定义一个接口,用这个接口来调用。上面代码的 contract.Mix(typeof(GetAnyName), typeof(IGetName)); 就是说将 GetAnyName 这个类实现的函数通过IGetName这个接口混合到基类 Customer 中去。
实现动态代理都需要重新编译DLL,本例使用的是 Emit。
Aspect#性能比较低,主要的时间是花在重新编译一下DLL了,如果被拦截类采用Singleton性能就可以提高很多了.其它的差别不是很大.另外对Mixin概念还不是很掌握,能详细说说吗?