05 2008 档案
摘要:序列化和反序列化我们可能经常会听到,其实通俗一点的解释,序列化就是把一个对象保存到一个文件或数据库字段中去,反序列化就是在适当的时候把这个文件再转化成原来的对象使用。 我想最主要的作用有: 1、在进程下次启动时读取上次保存的对象的信息 2、在不同的AppDomain或进程之间传递数据 3、在分布式应用系统中传递数据 ...... 在C#中常见的序列化的方法主要也有三个:BinaryFormat...
阅读全文
摘要:在以前传统的开发中我们都知道,一个应用程序对应一个进程,并为该进程指定虚拟内存,由操作系统来映射实际的物理内存,有效的维护了进程之间的安全性。但另一方面,每一个进程都会消耗一定的系统资源,降低了性能,并且进程间的通信也比较麻烦。 在.Net中推出了一个新的概念:应用程序域(AppDomain)。可以理解成很多应用程序域都可以运行在同一个.NET的进程中,可以降低系统消耗,同时不同的域之间互相隔离,...
阅读全文
摘要:在软件开发尤其是框架和底层开发时,为了更灵活的控制代码,常常需要进行一些动态的操作。比如根据用户的输入等动态的调用类中的方法或者根据数据库表结构、用户要求动态的生成一些类,然后再动态的调用类中的方法。当然使用这些方式时会对性能有一点影响,具体使用过程中可以根据实际情况来定,不过一般的B/S开发中主要的瓶颈还是在数据库操作和网速方面,这点影响应该可以忽略的 下面我就从这两个方面来说说动态代码的使用:...
阅读全文
摘要:匿名方法相信很多人都听过,它是C#2.0的一个新特性,顾名思义,匿名方法就是没有名称的方法。那么在C#中的匿名方法有哪些好处,在C#中如何使用呢? 匿名方法最明显的好处就是可以降低另写一个方法的工作量,另外一个好处就是可以访问调用者的变量,降低传参数的复杂度,下面就通过一些使用例子来具体看看。 1、在事件中使用匿名方法 下面是一个定时器的小例子,我们常规的写法如下: 常规写法 Code highl...
阅读全文
摘要:C#中提供了三种类型的计时器: 1、基于 Windows 的标准计时器(System.Windows.Forms.Timer) 2、基于服务器的计时器(System.Timers.Timer) 3、线程计时器(System.Threading.Timer) 下面我就通过一些小实验来具体分析三种计时器使用上面的异同点,特别是和线程有关的部分。 实验例子截图: 一、基于 Windows 的标准计时...
阅读全文
摘要:相信以前用过VB、Delphi,特别是VC的程序员应该对钩子程序都不陌生。在C#中我们同样可以使用钩子程序来实现特殊效果,比如当用户按下某个特殊键时提示,比如关闭应用程序前提示等。 当然使用方法相对VC来说要稍微复杂一点,有的地方还不太方便,下面的例子中实现两个基本功能: 1、按下Alt+F4时使窗口最小化 2、关闭应用程序前提示 不过目前只能捕获消息,不能屏蔽消息,我正在实验,也希望知道的高...
阅读全文
摘要:ViewState的使用比较简单,一两句话就可以了。 赋值:ViewState[key] = value; 取值:value = ViewState[key]; 最主要的作用就是可以在当前页面保存值,ASP.NET的页面状态维护就是使用ViewState来实现的,基本上每一个ASPX页面都可以看到如下类似的html代码: 也就是说ViewState中的值实际上都是通过一个hidden来保存的...
阅读全文
摘要:在一个aspx页面请求时后台到底做了什么?当然asp.net做了很多事情,过程也比较复杂,本文主要分析一下大体的流程。总体流程如下: 请求一个页面时首先被WWW服务截获(inetinfo.exe进程),这个进程首先判断页面的后缀,然后根据IIS中的配置来决定调用哪个扩展程序,比如aspx的页面就会调用c:\windows\microsoft.net\framework\v2.0.50727\asp...
阅读全文
摘要:.NET Remoting是.NET平台上允许存在于不同应用程序域中的对象相互知晓对方并进行通讯的基础设施。调用对象被称为客户端,而被调用对象则被称为服务器或者服务器对象。简而言之,它就是.NET平台上实现分布式对象系统的框架。 传统的方法调用是通过栈实现,调用方法前将this指针以及方法参数压入线程栈中,线程执行方法时将栈中的参数取出作为本地变量,经过一番计算后,将方法的返回结果压入栈中。这样我...
阅读全文
摘要:首先来看一下在Castle项目中用于示范其Ioc功能的一个小例子: 1: public interface IEmailSender 2: { 3: void Send(String from, String to, String message); 4: } 5: 6: public interface ITemplateEn...
阅读全文
摘要:1:概述 在软件系统中,“行为请求者”与“行为实现者”通常呈现一种“紧耦合”。但在某些场合,比如要对行为进行“记录、撤销/重做、事务”等处理,这种无法抵御变化的紧耦合是不合适的。在这种情况下,如何将“行为请求者”与“行为实现者”解耦?将一组行为抽象为对象,可以实现二者之间的松耦合。这就是本文要说的Command模式。 2:意图 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行...
阅读全文
摘要:在敏捷开发过程中,我们还需要对系统架构进行设计吗?事实上,Martin Fowler在《Is Design Dead?》一文中已经给出了答案,那就是我们同样不能忽略对系统架构的设计。与计划性的设计(Planned Design)不同,我们需要演进式的设计(Evolutionary Design)。在敏捷开发的生命周期中,我们通过每一次迭代来丰富与更新我们的设计方案,以使其最大限度地符合客户对系统的...
阅读全文
摘要:1:意图 表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。 2:类图 3:代码 namespace Bll.Visitor { //实体 public class EntityMessage { private string msg; private DateTime date...
阅读全文
摘要:1.基本结构 CREATE OR REPLACE PROCEDURE 存储过程名字 ( 参数1 IN NUMBER, 参数2 IN NUMBER ) IS 变量1 INTEGER :=0; 变量2 DATE; BEGIN END 存储过程名字 2.SELECT INTO STATEMENT 将select查询的结果存入到变量中,可以同时将多个列存储多个变量中,必须有一条 ...
阅读全文
摘要:一:类在内存中的结构 每当在堆中创建对象时,每个对象都会获得两个与它关联的附加开销字段。 第一个开销字段MethodTablePointer 包含类型的方法表的内存地址。 基本上,该指针使获得有关堆中的任何对象的类型信息成为可能。实际上,当您在内部调用 System.Object 的 GetType 方法时,该方法会按照对象的 MethodTablePointer 字段来确定该对象的类型。 ...
阅读全文
摘要:public class BaseDisposable : IDisposable { ~BaseDisposable() { //垃圾回收器将调用该方法,因此参数需要为false。 Dispose(false); } /// /// 是否已经调用了 D...
阅读全文
摘要:/// /// 计算程序的运行时间 /// class StopWatch { private int mintStart; public void start() { mintStart = Environment.TickCount; } public long elapsed() { return Environment.Ti...
阅读全文
摘要:ajax资料收集-Ajax文章(教程和实例)---Ajax资源下载(源码和教程)---Ajax规范标准 CSDN Blog Ajax文章搜索: http://search.csdn.net/search/ajax/1/blog/ 专题:Ajax技术应用开发 http://www.51cto.com/html/2005/1121/11736.htm http://www.edufans.com...
阅读全文