摘要:

前不久翻译了High Performance Web Sites一书,出版社定书名为《高性能网站建设指南》。 关于这本书,网络上已经有不少讨论了,确实是一本不可多得的好书。我这里就不过多吹嘘了。 在此,Anders Liu将为此书提供非官方非终身技术支持。

  阅读全文
posted @ 2008-04-23 11:18 Anders Liu 阅读(5015) | 评论 (24)编辑
     摘要: 在操作MSMQ队列的权限时一定要小心,如果意外地删除了自己的访问权限,即便自己是管理员,也无法对队列进行操作,尤其是无法删除该队列。本文将介绍一种方法,可以绕过MSMQ的权限控制,只要自己是管理员,能够操作C:\Windows\System32中的文件,即可获得对任意队列的操作权。  阅读全文
posted @ 2009-06-25 14:42 Anders Liu 阅读(1192) | 评论 (5)编辑
     摘要: 这里给出了一段可以搞死ILDASM的IL代码。  阅读全文
posted @ 2009-04-23 23:42 Anders Liu 阅读(1419) | 评论 (4)编辑
     摘要: CliPeViewer是老刘编写的一个WinForm小程序,能够用来查看托管PE文件中的各种结构。目前有很多能够查看PE信息的程序,支持.NET的也有。不过,CliPeViewer与他们的最大区别在于,这个小程序更在意原汁原味地暴露一个PE文件中的内容,尤其是对于文件中的每个结构、每个字段,除了显示了它的值之外,还显示出了它在PE文件中的偏移量和原始数据。  阅读全文
posted @ 2009-04-18 11:25 Anders Liu 阅读(2071) | 评论 (24)编辑
     摘要: 前两天发布了《隐藏接口实现 及 ReadOnlyDictionary》一文,有不少朋友提出疑问。其中一个主要问题就是,这样做真的可以实现“只读”吗?如果还有其他变量引用了ReadOnlyDictionary所包装的普通字典,依然可以通过另外这个变量来修改字典中的内容。有朋友甚至提到了,可以在创建ReadOnlyDictionary时,将原有字典中的内容复制出一份,来做到真正的“只读”。 其实,这些主要是因为我对这个类的应用场景没有介绍清楚的缘故。其实我这里提到的ReadOnlyDictionary也好,.NET提供的ReadOnlyCollection也罢,其目的并不是让整个字典(或集合)真的“只读”,而是希望某些具有字典(或集合)性质类成员,能够做到“在当前类中可读写,在类的外部只读”。   阅读全文
posted @ 2009-04-17 17:09 Anders Liu 阅读(1547) | 评论 (4)编辑
     摘要: 本文介绍了如何从类型中隐藏掉接口的某个成员,并介绍了应用这种技巧实现的只读字典——ReadOnlyDictionary。 接口代表着一种契约。但有的时候,接口所达成的契约并不适用于全部的场景,或者说,接口可能定义得“太宽了”。这个时候,就有必要隐藏起某些接口成员。 然而,接口既然是一种“契约”,这就要求实现方必须为接口中的所有成员提供实现。所以,这里说到的“隐藏”,是指从对象的视角上隐藏。换言之,就是只有直接在对象上调用成员时,看不到某些接口成员,但如果将对象强制转换为接口类型,依然能看到所有的接口成员。   阅读全文
posted @ 2009-04-16 12:57 Anders Liu 阅读(1612) | 评论 (12)编辑
     摘要: 本文大力吹捧了一下微软的新书《Microsft .NET Framework 3.5 – Windows Forms Application Development》,这是一本考试用书,但对于初学者和进阶者来说,帮助的确很大。  阅读全文
posted @ 2009-04-11 13:20 Anders Liu 阅读(375) | 评论 (2)编辑
     摘要: Aggregator Provider Pattern是Provider Pattern的一种扩展,用于创建和利用多个具有相同提供器接口的类的实例。该模式有一个Aggregator类实现了提供器接口,并包含了一系列实现了相同提供器接口的类的实例集合。  阅读全文
posted @ 2009-04-11 11:43 Anders Liu 阅读(1115) | 评论 (8)编辑
     摘要: Anders Hejlsberg,C#和.NET框架背后的创造型天才,在12年前加入微软之前,他就以编译器编写者的身份驰名16年了。他的BLS Pascal、Turbo Pascal和Delphi彻底变革了软件开发方式。今天,他依然能够冒出新的想法和激进的倡议。  阅读全文
posted @ 2009-03-30 15:38 Anders Liu 阅读(1990) | 评论 (21)编辑
     摘要: foreach语句是C#中一种重要的循环语句,用于遍历一个数组或对象集合中的每一个元素。这一篇文章介绍了在面对数组、IEnumerable接口和自定义类型时,编译器为foreach语句生成的IL代码。  阅读全文
posted @ 2009-02-04 01:17 Anders Liu 阅读(2431) | 评论 (23)编辑
     摘要: 常量的含义本是“永远不会变的量”,但是如果作为类库开发人员,把常量用作“可以由我变,但不能由你变”的量,那就可能铸成大错了。  阅读全文
posted @ 2008-11-23 10:05 Anders Liu 阅读(2651) | 评论 (37)编辑
     摘要: switch语句是C#中常用的跳转语句,可以根据一个参数的不同取值执行不同的代码。本文介绍了当向switch语句中传入不同类型的参数时,编译器为其生成的IL代码。这一部分介绍的是,在switch语句中使用字符串类型的情况。  阅读全文
posted @ 2008-11-06 10:04 Anders Liu 阅读(2337) | 评论 (13)编辑
     摘要: switch语句是C#中常用的跳转语句,可以根据一个参数的不同取值执行不同的代码。本文介绍了当向switch语句中传入不同类型的参数时,编译器为其生成的IL代码。这一部分介绍的是,在switch语句中使用整数类型和枚举类型的情况。  阅读全文
posted @ 2008-11-03 22:42 Anders Liu 阅读(2890) | 评论 (27)编辑
     摘要: 这是一个系列文章,介绍了C#中各种语言结构被编译器翻译为IL之后的样子,并从IL的角度分析其中的原理。  阅读全文
posted @ 2008-11-03 22:36 Anders Liu 阅读(2646) | 评论 (22)编辑
     摘要: Microsoft Visual C# 3.0作为Visual Studio 2008的一部分发布以来已经快一年了。在VS Managed Languages团队,我们一直努力创建该语言的下一个版本(没什么惊喜,就是C# 4.0),而这个文档是我们现在所看到的、计划中的语言特性的第一个公开描述。  阅读全文
posted @ 2008-11-03 07:56 Anders Liu 阅读(4373) | 评论 (31)编辑
     摘要: POST操作不是直接返回一个HTML页面,而是返回一个重定向命令(使用HTTP 303响应码(有时是302)以及HTTP的“Location”响应头),引导浏览器使用HTTP GET请求加载另一个页面。这个结果页可以安全地作为书签进行保存或重新加载,而不会带来非预期的副作用。  阅读全文
posted @ 2008-09-08 12:22 Anders Liu 阅读(1699) | 评论 (11)编辑
     摘要: 本文仅是一个随笔,随手写下的。没有什么独到的或高深的见解。  阅读全文
posted @ 2008-08-29 08:14 Anders Liu 阅读(3308) | 评论 (39)编辑
     摘要: 日志记录是一种常见的交错关注点(Cross-Cutting Concern),很多ASP.NET开发者会在Global.asax文件中处理它。由于MVC是构建在ASP.NET之上的,所以你可以使用同样的解决方式,但还有更好的方法。这篇文章向你展示了使用ASP.NET MVC的操作过滤器来向Web应用程序中添加日志是多么简单。  阅读全文
posted @ 2008-08-26 15:20 Anders Liu 阅读(1833) | 评论 (1)编辑
     摘要: ASP.NET MVC Framework允许开发者使用更为灵活的方式创建Web应用程序。使用MVC框架可以摆脱令人头疼的ViewState和Postback,还能让应用程序便于测试。在这篇文章中,我们将研究控制器操作的基于角色的安全性。  阅读全文
posted @ 2008-08-22 11:13 Anders Liu 阅读(2072) | 评论 (11)编辑
     摘要: .NET/CLI的PE文件中广泛采用了一种整数压缩算法,这种算法可以将一个32位无符号整数根据其大小放置在1、2或4个字节中。本文介绍了这种压缩算法,并给出了解压缩的参考实现。  阅读全文
posted @ 2008-08-21 22:11 Anders Liu 阅读(1774) | 评论 (10)编辑
     摘要: 本文介绍了如何通过PE文件中某一项的RVA来计算其在文件中的位置。  阅读全文
posted @ 2008-08-04 12:41 Anders Liu 阅读(1339) | 评论 (8)编辑
     摘要: 在这个Tip中,你将学到在MVC框架中显示数据库数据时,如何创建和使用模板。Stephen Walther介绍了如何创建一个名为RenderTemplate()的辅助方法。  阅读全文
posted @ 2008-08-03 09:53 Anders Liu 阅读(1349) | 评论 (6)编辑
     摘要: 在这个Tip中,Stephen Walther演示了如何为你的ASP.NET MVC应用程序中的自定义路由创建单元测试。Stephen Walther介绍了如何测试一个URL是否被映射到正确的控制器、控制器操作和操作参数上。  阅读全文
posted @ 2008-07-27 11:36 Anders Liu 阅读(1551) | 评论 (3)编辑
     摘要: ASP.NET MVC Preview 4带来了一些AJAX支持,能够适应MVC设计模式的本质。这篇文章向你展示了在ASP.NET MVC中使用“延迟加载AJAX面板”是如何使其变得不可思议的简单。  阅读全文
posted @ 2008-07-26 09:00 Anders Liu 阅读(1434) | 评论 (8)编辑
     摘要: 在这个Tip中,Stephen Walther介绍了在为ASP.NET MVC应用程序创建单元测试时,如何深入ASP.NET内部进行测试。Stephen Walther介绍了如何创建一组标准的仿制对象(Fake Object)来模仿当前用户、当前用户角色、请求参数、会话状态和Cookie。  阅读全文
posted @ 2008-07-26 07:39 Anders Liu 阅读(1108) | 评论 (1)编辑
     摘要: 在这个Tip中,Stephen Walther建议你为控制器操作使用标准的名字,这样可以使你的代码对其他开发者更明晰。  阅读全文
posted @ 2008-07-21 10:26 Anders Liu 阅读(1355) | 评论 (6)编辑
     摘要: 本文档描述了ASP.NET MVC框架的Preview 3与目前的CodePlex Preview 4之间的差别。还介绍了要运行新的发布版,你必须对现有的MVC应用程序进行的修改。  阅读全文
posted @ 2008-07-18 16:25 Anders Liu 阅读(1395) | 评论 (2)编辑
     摘要: 在这个Tip中,Stephen Walther介绍了黑客如何通过操作URL从ASP.NET MVC网站中窃取敏感信息。Stephen Walther还探讨了如何构建单元测试来防止这类攻击。  阅读全文
posted @ 2008-07-17 12:35 Anders Liu 阅读(1828) | 评论 (11)编辑
     摘要: 在这个Tip中,Stephen Walther向你展示了如何创建一个ASP.NET MVC视图用户控件,它能接受一组数据库记录,并自动在一个HTML表格中呈现这些记录。使用视图用户控件的好处是,你可以自定义特定列的呈现方式。   阅读全文
posted @ 2008-07-17 11:38 Anders Liu 阅读(1880) | 评论 (1)编辑
     摘要: 在这个Tip中,你将学到如何扩展ASP.NET MVC框架,创建一个新的辅助方法,可以为数据库数据显示一个HTML表格。  阅读全文
posted @ 2008-07-12 17:27 Anders Liu 阅读(2004) | 评论 (2)编辑
     摘要: 在这个Tip中,你将了解到JavaScript注入攻击可能会比你想象的更加严重。Stephen Walther展示了如何使用JavaScript注入攻击来在一个ASP.NET MVC站点上干些大大的坏事,并解释了如何通过一种简单的方式来防止这种攻击。  阅读全文
posted @ 2008-07-12 09:37 Anders Liu 阅读(2179) | 评论 (1)编辑