06 2011 档案
摘要:概述 事务必须具有原子性、一致性、隔离性和持久性。虽然首字母缩写词容易记忆,但是每个词的含义不是很明显。以下是简要说明。 ● 原子性(Atomicity):原子性可确保要么执行所有更新,要么什么也不发生。由于事务中的原子性保障,开发人员不必编写代码来处理更新成功而另一个没有成功的情况。 ● 一致性(Consistency):一致性意味着事务的结果使得系统保持一致状态。在事务启动之前,数据保持有...
阅读全文
摘要:概论 多线程在构建大型系统的时候是需要重点关注的一个重要方面,特别是在效率(系统跑得多快?)和性能(系统工作正常?)之间做一个权衡的时候。恰当的使用多线程可以极大的提高系统性能。 什么是线程? 每个正在系统上运行的程序都是一个进程。每个进程包含一到多个线程。进程也可能是整个程序或者是部分程序的动态执行。线程是一组指令的集合,或者是程序的特殊段,它可以在程序里独立执行。也可以把它理解为代码运行的上下...
阅读全文
摘要:概述 C#中的委托类似于C或C++中的函数指针。使用委托使程序员可以将方法引用封装在委托对象内。然后可以将该委托对象传递给可调用所引用方法的代码,而不必在编译时知道将调用哪个方法。与C或C++中的函数指针不同,委托是面向对象,而且是类型安全的。 C#中的“事件”是当对象发生某些事情时,类向该类的客户提供通知的一种方法。事件最常见的用途是用于图形用户界面;通常,表示界面中的控件的类具有一些事件,当...
阅读全文
摘要:GC的前世与今生 虽然本文是以.net作为目标来讲述GC,但是GC的概念并非才诞生不久。早在1958年,由鼎鼎大名的图林奖得主John McCarthy所实现的Lisp语言就已经提供了GC的功能,这是GC的第一次出现。Lisp的程序员认为内存管理太重要了,所以不能由程序员自己来管理。但后来的日子里Lisp却没有成气候,采用内存手动管理的语言占据了上风,以C为代表。出于同样的理由,不同的...
阅读全文
摘要:概述 .NET Framework的核心是其运行库的执行环境,称为公共语言运行库(CLR)或.NET运行库.通常将在CLR的控制下运行的代码称为托管代码(managed code). 但是,在CLR执行编写好的源代码之前,需要编译它们(在C#中或其它语言中).在.NET中,编译分为两个阶段: 1、把源代码编译为Microsoft中间语言(IL)。 2、CLR把IL编译为平台专用的代码。 这个两阶段...
阅读全文
摘要:常规页生命周期阶段 一般来说,页要经历下表概述的各个阶段。除了页生命周期阶段以外,在请求前后还存在应用程序阶段,但是这些阶段并不特定于页。 阶段 说明 页请求 页请求发生在页生命周期开始之前。用户请求页时,ASP.NET 将确定是否需要分析和编译页(从而开始页的生命周期),或者是否可以在不运行页的情况下发送页的缓存版本以进行响应。 开始 在开始阶段,将设置页属性,如 Request 和 Respo...
阅读全文
摘要:反射的定义:审查元数据并收集关于它的类型信息的能力。元数据(编译以后的最基本数据单元)就是一大堆的表,当编译程序集或者模块时,编译器会创建一个类定义表,一个字段定义表,和一个方法定义表等。 公共语言运行库(CLR)加载器管理应用程序域,这些域在拥有相同应用程序范围的对象周围形成了确定边界。这种管理包括将每个程序集加载到相应的应用程序域以及控制每个程序集中类型层次结构的内存布局。 System.re...
阅读全文
摘要:历时一个多月的时间,代码重构系列终于写完了,代码的坏味道大家一看都不会陌生,绝对是在我们的编程中如影随形的,现在把相应的重构方法和设计模式总结出来,以供大家参考.因为不论是重构还是应用设计模式,一切的目的都是为了软件构架的“优雅”,而不是炫耀技术。步步为营 .NET 代码重构学习笔记系列 步步为营 .NET 代码重构学习笔记 一、为何要代码重构步步为营 .NET 代码重构学习笔记 二、提炼方法(Extract Method)步步为营 .NET 代码重构学习笔记 三、内联方法(Inline Method)步步为营 .NET 代码重构学习笔记 四、临时变量(Temporary Variable)步
阅读全文
摘要:一、Form Templlate Method(塑造模板函数) 动机(Motivation) 有一些subclasses,其中相应的某些函数以相同顺序执行类似的措施,但各措施实际上有所不同。将各个措施分别放进独立函数中,并保持它们都有相同的签名式(signature),于是原函数也就变得相同了。然后将原函数上移至baseclass。 示例 public abstract class Site { ...
阅读全文
摘要:一、Replace Exception with Test(以测试取代异常) 动机(Motivation) 面对一个[调用者可预先加以检查]的条件,你抛出了一个异常。修改调用者,使它在调用函数之前先做检查。 示例 private Dictionary<int, string> _values; public double GetValueForPeriod(int periodNumber) { ...
阅读全文
摘要:一、Preserve Whole Object(保持对象完整) 动机(Motivation) 要向某个方法内传递若干个值,可以改使用传递整个对象。 示例 int low = DaysTempRange().GetLow(); int high = DaysTempRange().GetHigh(); withinPlan = Plan.WithinRange(low, high);改为within...
阅读全文
摘要:步步为营 .NET 代码重构学习笔记系列步步为营 .NET 代码重构学习笔记 一、为何要代码重构步步为营 .NET 代码重构学习笔记 二、提炼方法(Extract Method)步步为营 .NET 代码重构学习笔记 三、内联方法(Inline Method)步步为营 .NET 代码重构学习笔记 四、临时变量(Temporary Variable)步步为营 .NET 代码重构学习笔记 五、分解函数和替换算法(Replace Method And Substitute Algorithm)步步为营 .NET 代码重构学习笔记 六、移动函数和移动值域(Move Method And Move Fie
阅读全文