WF4.0 基础篇 (六) 数据的传递 Arguments 参数
节主要介绍如何在WF4.0中使用参数,以及在流程启动时传入参数据在流程结束时读取参数 本文例子下载:http://files.cnblogs.com/foundation/ArgumentsSample.rar本文例子说明 数据的传递 Arguments 参数Argumen...
一系列技术视频:MIT 6.00,Channel 9 E2E,FP Foundamentals
最近看一些技术视频上瘾,每天都要看一两个才满足,有时还会整理整理总结总结。视频的来源主要是Channel 9等外国网站,它们往往必须下载到本地才能观看,代价太高。在线看的也不是没有,不过要么就在Youtube等国内无法访问的站点上,或者就因为国内没有CDN导致播放不畅。因此,我正在把一些视频上传到号...
关于浮点数计算时的精度问题
那个有问题的缩略图生成的方法发布之后,短短半天就有很多朋友响应,其中指出了不少方法中的不少问题,有些也是我没有意识到的。果然集体的智慧是无穷的,一段代码在许多人的眼皮底下经过,想留有bug也不容易。不过,我在这里只能谈一下我写那篇文章的本意了,我认为那篇文章中最主要的问题是,在计算图片尺寸时没有处理...
您能看出这个生成缩略图的方法有什么问题吗?
昨天又使用了某个多年以前写的,或者说是“收集”而来的方法。这个方法的作用是根据一幅图片(一般是幅大图)生成它的缩略图。这个方法用了许多年了,一直没有去怀疑过它的正确性,但是昨天忽然发现它一直以来都存在一个问题,虽然可能不是那么明显,而且也不会造成太大问题(否则早就发现了)——但是,这的确是个不妥的地...
URL生成方式性能优化结果
继上次发现URL生成的性能问题之后,我最近一直在关注一些细节的性能优化。这些优化方式不是宏观的,理论的,而是在实践上对相同问题的不同做法进行探索。我把探索的过程和结论都发布在博客上了,从结果上看性能提高是比较明显的。但是,把它们用于解决实际问题时,效果又会如何呢?我把MvcPatch进行了一些修改,...
Visual Studio 2010 Ultimate开发与测试敏捷特性
在测试方面,VSTS 2010强化了测试功能,同时简化了在整个应用程序生命周期中整合测试的工具。新功能包括快速进行有关测试的设计与开发、测试用例管理,与Team Foundation Server集成的测试计划,以及确保所有更新的程序代码都被测试提高覆盖率,并且新增了功能非常强的微软测试与实验室管理...
Visual Studio 2010 Ultimate敏捷之道:特性解析
随着软件开发日趋国际化,对软件的质量要求和管理也随之增高。微软看到了应用程序生命周期管理在业界逐渐被接受认可的趋势,并宣称VSTS2010将会是一个革命性的.Net软件开发以及管理工具的产品,预计在2010年3月正式版发布。它将提供协同一致的应用程序生命周期管理工具,让参与软件开发的各种角色人员,例...
Attribute操作的性能优化方式
Attribute是.NET平台上提供的一种元编程能力,可以通过标记的方式来修饰各种成员。无论是组件设计,语言之间互通,还是最普通的框架使用,现在已经都离不开Attribute了。迫于Attribute的功能的重要性(Kent Beck认为NUnit比早期JUnit设计的好,一个主要方面便是利用了A...
《链接、装载与库》里的一个错误:关于调用栈
周六老同学聚会,出门前随手从桌上抓起了《程序员的自我修养——链接、装载与库》在路上翻。自从武汉博文出版社的周筠老师送给我这本书后,我基本上还没怎么看过。对这本书第一感觉是“标题党”,主标题起大了,虽然经过解释之后并非无法理解,但还是不太喜欢。但书还是好书,已经看完大半,而且基本上会在近期找个方式推荐...
并发环境下的缓存容器性能优化(下):性能测试
上一篇文章里,我谈到对于某些场景中的缓存容器,其写操作非常少,到了程序后期甚至为零,而对它的读操作却几乎是密集连续且无穷无尽的。对于这样的容器,如果使用ReaderWriterLockSlim去进行保护每个“读”操作,这开销是在有些多余。因此我提出了“不可变”的哈希表,目的是在保持读操作的时间复杂度...
“表达式树”配合“泛型参数字典”定义通用操作
上午有朋友提出了这么一个问题:如何定义一个通用的相加操作。这样的话,我们就可以定义如下的扩展方法了: public static class EnumerableExtensions{ public static T Sum<T>(this IEnumerable<T> s...
F#版本的CodeTimer(已支持CPU时钟周期统计)
CodeTimer很好用,自从在今年三月在.NET技术大会上看到Jeffrey Richter用类似的东西之后,我就自己写了一个。不过,当时是用C#写的,现在我需要在F#里做相同的事情就不那么方便了。当然,F#与.NET本是无缝集成,因此C#写的CodeTimer也应该可以被F#使用。不过,我平时在...
并发环境下的缓存容器性能优化(上):不可变的哈希表
我们在项目中经常会遇到这样的场景:一些信息读取开销较大,但只需要生成一次便可反复使用,因此我们会将其永久地缓存起来。例如在ASP.NET MVC中,系统会根据Controller的名称来缓存对应的元数据。这些缓存容器都有一些共同的特点,便是存储的对象数量有限(少则几十,多不过数千),但都需要在并发环...
ASP.NET MVC Best Practices 27+
12 ASP.NET MVC Best PracticesMDomainModel != ViewModelUse ActionFilters for “shared” dataVDo NEVER user code-behindWrite HTML each time yo...
缓存方式与对象创建的性能比较
由于Lambda表达式构造URL的速度不佳,我最近对于性能上的细节问题进行了一些探索和尝试。对于很多问题,以前由于不会形成性能瓶颈,因此并没有进行太多关注。还有一些问题可以“推断”出大致的结论,也趁这个机会进行更详细的试验,希望可以得到更为确切的结论和理性的认识。这次我打算做的实验,是关于对象的缓存...
一次失败的尝试(下):无法使用泛型的Attribute
原本打算两篇写在一起,但是我认为这两个话题本身并没有太大关联,因此分开,便于查询。其实在构建Attribute的时候,我们经常会从构造函数中传入一个Type类型,然后在Attribute中使用Activator.CreateInstance或其他的“反射”方法来构造对象。那么,我忽然想,为什么不能使...
一次失败的尝试(上):原来GetCustomAttributes方法每次都返回新的实例
前一段时间我在比较各种URL生成方式性能的时候,其实已经为利用Lambda表达式的做法进行了优化。在优化之前,使用Lambda构建URL的性能比现在的结果还要慢上50%。性能低下的原因,在于每次都使用GetCustomAttributes来获取参数(或其他一些地方)标记的Custom Attribu...
《深入剖析Visual Studio 2010软件测试新功能》微软Tech.Ed2009我的Session(PPT已上传)
深入剖析Visual Studio 2010软件测试新功能 VSTS 2010版作为一次重大的版本升级,为我们带来了众多的新特性,从平台,开发,设计,部署,团队合作(MSF5.0)、架构设计和软件测试等方方面面都提供了更多的便利和强大的功能,将会带动软件测试等技术的更新。在软件测试的策略上,微软正在...
为URL生成设计流畅接口(Fluent Interface)
昨天我比较了三种URL生成方式的性能,并对结果进行了分析。从结果中我们得知使用Lambda表达式生成URL的性能最差,而且差到了难以接受的地步。经过分析,我们发现其中光“构造表达式树”这个阶段就占了接近30%的开销。虽然表达式树的节点是有些多,但是.NET中创建对象其实非常快,我实在没想到它会占这么...
各种URL生成方式的性能对比(结论及分析)
上次我们设计了一个实验,比较三种不同URL生成方式的性能。您运行了吗?如果运行的话,有没有对结果进行一些的分析呢?现在我们就来详细观察及分析这次试验的结果,并给出我的分析。如果您有一些其他的看法,也请进行一些补充。 结论 我使用每种方式各生成1000次页面,并输出每生成100次的时候所耗费的时间...