Hello World
Spiga

分类:语言编程

适合C# Actor的消息执行方式(5):一个简单的网络爬虫

2009-07-27 09:13 by 老赵, 6720 visits
摘要:之前的几篇文章大都在摆一些“小道理”,有经验的朋友容易想象出来其中的含义,不过对于那些还不了解Actor模型的朋友来说,这些内容似乎有些太过了。此外,乒乓测试虽然经典,但是不太容易说明问题。因此,今天我们就来看一个简单的有些简陋的网络爬虫,对于Actor模型的使用来说,它至少比乒乓测试能够说明问题。对了,我们先来使用那“中看不中用”的消息执行方式。 阅读全文

适合C# Actor的消息执行方式(4):阶段性总结

2009-07-20 09:19 by 老赵, 5603 visits
摘要:阶段性总结本不在计划之内,不过似乎Actor模型这方面内容还不太受人关注,因此有的朋友也误解这系列文章想要解决的问题是什么。除了这方面的解释之外,我还会对之前提出的几种做法进行综合的对比,可以进一步了解整个演变过程的思路,为接下去的改变做铺垫——因为下次改变就涉及到多个方向,每个方向都是在一定程度上真正可用的方式。 阅读全文

适合C# Actor的消息执行方式(3):中看不中用的解决方案

2009-07-17 08:45 by 老赵, 5308 visits
摘要:在前两篇文章中,我们了解到Erlang中灵活的模式匹配,以及在C#甚至F#中会都遭遇的尴尬局面。那么现在就应该来设计一个解决方案了,我们如何才能在C#这样的语言里顺畅地使用Actor模型呢?不仅如此,最好我们还能获得其它一些优势。但事情总是很难一帆风顺的,最终我们这篇文章只得出一个中看不中用的解决方案。不过……至少方向是正确的吧。 阅读全文

适合C# Actor的消息执行方式(2):C# Actor的尴尬

2009-07-13 00:24 by 老赵, 10864 visits
摘要:在上一篇文章中,我们简单解读了Erlang在执行消息时候的方式。而现在,我们就一起来看看,C# Actor究竟出现了什么样的尴尬。此外,我还打算用F#进行补充说明,最终我们会发现,虽然F#看上去很美,但是在实际使用过程中依旧有些遗憾。 阅读全文

适合C# Actor的消息执行方式(1):Erlang中的模式匹配

2009-07-09 00:18 by 老赵, 7483 visits
摘要:Actor模型为并行而生。由于现在单台机器中独立的计算单元也越来越多,Actor模型的重要性也越来越大。Actor模型的理念是:天下万物皆为Actor,Actor之间通过发送消息进行通信。不同的Actor可以同时处理各自的消息,从而获得了大规模的并发能力。对于.NET平台下的开发人员来说,最常用的语言是C#。不过,无论您使用哪个Actor框架,在消息的执行阶段总是略显尴尬。本文的目的便是提出一种适合C# Actor的消息执行方式,而这种执行方式还会成为我以后公开的C#中“模式匹配”的基础。本文将分为三个部分,您目前正在阅读的第一部分,将会观察Erlang是如何执行消息的。有对比才会有差距,也正是由于Erlang在Actor模型上的示范作用,我们才会意识到C# Actor在使用上有多么的不方便。 阅读全文

拯救C# 2.0,但是我们真做的到吗?

2009-06-27 18:55 by 老赵, 24156 visits
摘要:似乎还有不少项目在用C# 2.0(本文最后我们来做一个调查),但是C# 2.0的生产力实在不如C# 3.0——如果您不信,那么一会儿就会意识到这一点。有朋友认为语言能力不重要,有了好用的框架/类库也可以有很高的生产力。所以这篇文章,我们就设法使用“类库”来弥补C# 2.0的缺陷。但是,我们真做的到吗? 阅读全文

天下无处不乒乓

2009-06-24 12:46 by 老赵, 19809 visits
摘要:在消息传递(Message Passing)领域,PingPong是最常见的测试之一。它的功能简单的有些无聊,一个Ping Actor和一个Pong Actor之间互相传递消息,你Ping过来我Pong过去。也正因为如此简单,PingPong的目标仅仅是测试纯粹的消息传递机制的效率。也正因为如此,各Actor模型往往都将其作为展示自己功能的第一个示例。老赵从互联网上收集了一些最为常见的,不同语言/平台下Actor模型实现PingPong的示例,可作“观赏”之用。 阅读全文

编程小练习:拆分自然数

2009-06-21 17:54 by 老赵, 23723 visits
摘要:上次的小练习的反响很不错,于是今天我们再来做一道小题目。上次有朋友指出,“反转数组”这种题目非常无聊,“写的再好,又会比框架自带的实现好吗?”。其实做这些小题目的作用是锻炼“编程解决问题”的能力,并非是为了替换框架的实现等等。咱们小学初中高中,不都会做数学题目,几何代数的吗?目的都是为了建立基本解题能力。现在的题目也是这样,请不要误会这些习题的目的。 阅读全文

.NET中*延迟*特性的几个陷阱

2009-06-08 13:19 by 老赵, 24974 visits
摘要:.NET发展至今,其实各处都有“延迟(Lazy)”的痕迹,一个小小的“Laziness”给我们带来了不少灵活性。“延迟”的关键就在于“只在需要的时候处理数据”,老赵曾经在多篇文章中提到了类似的概念,如《高阶函数、委托与匿名方法》及《您善于使用匿名函数吗?》。不过“延迟”本身也会给您带来一些陷阱,某些陷阱您很有可能也曾经遇到过。这篇文章便是总结了延迟特性的集中常见陷阱,并给出应对方案。 阅读全文

写程序时该追求什么,什么是次要的?

2009-05-29 15:14 by 老赵, 22712 visits
摘要:就我看来,一段程序,最该关注的是“逻辑表现”,不该追求的是“性能”。当然,肯定也会有需要追求性能的场景,不过这并不是“追求”出来的,而是在大量经验累计情况下做出的正确决策。就算在那种情况下,“逻辑表现”还是非常重要的。 阅读全文

一道简单的编程题,不过您做对了吗?

2009-05-27 19:45 by 老赵, 28260 visits
摘要:CSDN学生中心是个好地方,如果善于利用,应该能够对大众产生正面影响。老赵也去那里安了家,并给出了一个编程问题。题目如下:Reverse方法的作用是将array数组中,从begin下标到end下标之间的元素反序一下,如一个数组初始值是[1, 2, 3, 4, 5, 6],begin为1,end为4,那么当调用了Reverse之后,array数组中的元素便依次成为[1, 5, 4, 3, 2, 6],其中从array[1]到array[4]之前的元素被反序了。此外补充一点……其实本不用补充:这个方法需要对传入参数的正确性进行校验,如果用户调用该方法时传入了非法的参数,那么则需要抛出异常,并写清原因。简单,不是吗?只可惜截止到目前,也只有1人给出了正确答案。 阅读全文

ActorLite:一个轻量级Actor模型实现(下)

2009-05-16 17:52 by 老赵, 22825 visits
摘要:在上一篇文章中,我们实现了一个简单的Actor模型。如果要构建一个Actor,便只是简单地继承Actor类型并实现其Receive方法即可。在上次文章的末尾,我们使用C#演示了该Actor模型的使用。不过现在我们将尝试一下F#。 阅读全文

ActorLite:一个轻量级Actor模型实现(中)

2009-05-14 09:29 by 老赵, 25680 visits
摘要:从上一篇文章的反响来看,似乎大家对于这一话题并没有太大兴趣。而这篇文章将会为大家带来一个简单但完整的Actor模型实现。此外,在下一篇文章中……可能会出现一些让您觉得有趣的东西。:) 阅读全文

ActorLite:一个轻量级Actor模型实现(上)

2009-05-11 20:10 by 老赵, 35807 visits
摘要:Actor模型为并行而生,具Wikipedia中的描述,它原本是为大量独立的微型处理器所构建的高性能网络而设计的模型。而目前,单台机器也有了多个独立的计算单元,这就是为什么在并行程序愈演愈烈的今天,Actor模型又重新回到了人们的视线之中了。在这篇文章中,我们会先对Actor Model的相关知识进行简单的介绍。 阅读全文

语言真是不重要的吗?谈语言的*层次*与技术的三六九等

2009-05-03 17:24 by 老赵, 24962 visits
摘要:关注——或“专注”于多语言编程之后,老赵对于语言的关注也越来越多,对于语言在编程中所带来的“美感”也有了越来越深的体会,还在博客的标题中加上“追求编程之美”。关注语言多了,关注纯粹的编程实践多了,自会有所比较,然后写出了引人注目的《为啥老赵不喜欢Java*语言*》。这篇文章所得到的负面评论的确也和想象中差不多,大部分朋友的观点是“语言不是关键”或类似说法,似乎对语言的讨论和比较非常没有必要。有个朋友说的更是直接:“在看到这些文章之前,我还是比较敬重老赵的,不过现在发现你也就这点高度”。老赵认为,这是对这方面的误解,而有这种误解无论是对于社区还是个人的发展都是没有益处的,因此单独开篇,讨论一下这个问题。 阅读全文

事理越辩越明,那么就来详细说说为什么我不喜欢Java*语言*

2009-04-19 02:56 by 老赵, 37657 visits
摘要:最近我对Java语言唱衰似乎凶狠了一点,让有些朋友不是很爽,认为我不负责任凭个人感觉乱说话,影响不好。这讨论事情事小,否认我做事方式就不好了。因此我这里也继续整理一下我对Java语言的观点,这样大家不必四处查看我的说辞,再者也可以控制一下讨论事情的方式,以免大家舞蹈半天尘土飞扬最后停下一看——得,双方在自说自话,这怎能辩明事理,您说呢? 阅读全文

高阶函数、委托与匿名方法

2009-04-18 12:25 by 老赵, 28825 visits
摘要:这是几个月前就写的文章,只是一直忙于QCon的各项事宜,最近才发表出来。这篇是对.NET中委托,匿名方法和高阶函数使用的一个介绍,非常简单,目的是强调一下C#中对于高阶函数的使用,体现一下现在C#的高度生产力。 阅读全文

浅谈尾递归的优化方式

2009-04-01 01:00 by 老赵, 32476 visits
摘要:在上文《尾递归与Continuation》里,我们谈到了尾递归的概念和示例,不过有些朋友对于尾递归的功效依然有所怀疑。因此现在,老赵再简单讲解一下尾递归的优化原理,希望能给大家以一定理性认识。 阅读全文

尾递归与Continuation

2009-03-26 22:24 by 老赵, 35661 visits
摘要:这几天恰好和朋友谈起了递归,忽然发现不少朋友对于“尾递归”的概念比较模糊,网上搜索一番也没有发现讲解地完整详细的资料,于是写了这么一篇文章,权当一次互联网资料的补充。 阅读全文

使用IronPython检测ASP.NET程序状况(下)

2009-03-25 09:03 by 老赵, 25290 visits
摘要:在上一篇文章中,我们在一个请求中执行了IronPython代码,通过这个方法我们可以轻松地的检查系统运行的状态,或对系统进行一些简单修改。但是这种做法只能检查系统在当前时刻的状态,在很多情况下,我们需要对系统的请求进行一段时间的采样。对于简单的数据(例如每秒执行的请求数量,请求时间),我们可以通过查看Performance Monitor中相关的计数器来获得一些概要的数据。但是,如果我们需要获取一些系统的详细状态,甚至是需要根据需要进行动态改变的自定义需求,则势必要深入到系统内部进行数据采集。那么,我们该怎么做呢? 阅读全文
使用Live Messenger联系我