摘要:C#的语法脱胎于C++,因而保留了virtual关键字,可以定义一个虚方法(或虚属性)。一个类的成员被定义为virtual,就意味着它在告诉自己的子类:我准备了一笔遗产,你可以全盘接受,也可以完全拒绝或者修改我的遗嘱。显然,虚方法授予子类的权利甚至大于抽象方法。子类面对抽象方法只有重写(override)的权利,而对于虚方法,它还可以选择完全继承。毫无疑问,虚方法破坏了对象的封装性。如果不加约束的使用,会对调用方造成破坏,至少它有可能破坏子类与父类之间在外在行为上的一致性。因此,当我们在重写虚方法时,务必要遵循Liskov替换原则。我们要保证对于调用方而言,子类对于父类是完全可以替换的。这里所
阅读全文
摘要:一、 URL的获取很简单,ASP.NET通用:【1】获取 完整url (协议名+域名+虚拟目录名+文件名+参数)string url=Request.Url.ToString();【2】获取 虚拟目录名+页面名+参数:string url=Request.RawUrl;(或 string url=Request.Url.PathAndQuery;)【3】获取 虚拟目录名+页面名:string url=HttpContext.Current.Request.Url.AbsolutePath;(或 string url= HttpContext.Current.Request.Path;)【4】获
阅读全文
摘要:TF-IDF与余弦相似性的应用(一):自动提取关键词http://www.ruanyifeng.com/blog/2013/03/tf-idf.htmlTF-IDF与余弦相似性的应用(二):找出相似文章http://www.ruanyifeng.com/blog/2013/03/cosine_similarity.htmlTF-IDF与余弦相似性的应用(三):自动摘要http://www.ruanyifeng.com/blog/2013/03/automatic_summarization.html
阅读全文
摘要:页面代码:Response.StatusCode = 404;throw new HttpException(404, "");Web.config:<customErrors mode="RemoteOnly" redirectMode="ResponseRewrite" > <error statusCode="404" redirect="404Page.htm" /> </customErrors>之前搜索的资料只讲了配置问题,没说代码,搞了好半天,其
阅读全文
摘要:反射(Reflection)是.NET中的重要机制,通过反射,可以在运行时获得.NET中每一个类型(包括类、结构、委托、接口和枚举等)的成员,包括方法、属性、事件,以及构造函数等。还可以获得每个成员的名称、限定符和参数等。有了反射,即可对每一个类型了如指掌。如果获得了构造函数的信息,即可直接创建对象,即使这个对象的类型在编译时还不知道。Assembly就是反应反射的一种应用,它定义和加载程序集,加载在程序集清单中列出模块,以及从此程序集中查找类型并创建该类型的实例。反射通常具有以下用途。(1)使用Assembly定义和加载程序集,加载在程序集清单中列出模块,以及从此程序集中查找类型并创建该类型
阅读全文
摘要:之前我写过一篇博客文章,讲的是.NET 4.0的应用程序部署问题。有网友问到一个相关问题就是:如何理解IIS 7中的应用程序池的管道模式,尤其是如何理解“托管模型(integrated mode)”,今天特意再写一篇文章来介绍这个问题。IIS 7是微软最新版本的IIS版本,从Vista开始提供,目前在Vista,Windows 7,Windows Server 2008中提供。这个全新的版本中,一个突出的亮点就是,它提供了两种管道模式,来支持不同的应用程序场景。这里提到的管道模式,指的是应用程序池(Application Pool)的一个属性上图中可以看到,这两种管道模式分别为Integrat
阅读全文
摘要:这是一个及其常见的问题,网上已经有关于这个问题的很多讨论。但是我觉得都是不求甚解,有一些还是在误导别人。下面我来说下我对这三者的理解,如有错误的地方请大家及时指正。 一:""与string.Empty我认为是一样的。网上有一篇被转载了几十遍的文章是这样说的string.Empty 不分配存储空间,"" 分配一个长度为空的存储空间,我认为这句话是错误并且含糊不清的。 1、实际上Empty是string类中的一个静态的只读字段,他的定义是这样的: public static readonly String Empty = ""; 也就是说
阅读全文
摘要:一:Task的优势ThreadPool相比Thread来说具备了很多优势,但是ThreadPool却又存在一些使用上的不方便。比如:1:ThreadPool不支持线程的取消、完成、失败通知等交互性操作;2:ThreadPool不支持线程执行的先后次序;以往,如果开发者要实现上述功能,需要完成很多额外的工作,现在,FCL中提供了一个功能更强大的概念:Task。Task在线程池的基础上进行了优化,并提供了更多的API。在FCL4.0中,如果我们要编写多线程程序,Task显然已经优于传统的方式。3:Task类为把线程类进行改良,使之更简便,使用起来更加容易的类。因此,虽然功能相似,但属于两个概念,使
阅读全文
摘要:在一个route中,通过在大括号中放一个占位符来定义( { and } )。当解析URL的时候,符号"/"和"."被作为一个定义符来解析,而定义符之间的值则匹配到占位符中。route定义中不在大括号中的信息则作为常量值。下面是一些示例URL:Valid route definitionsExamples of matching URL{controller}/{action}/{id}/Products/show/beverages{table}/Details.aspx/Products/Details.aspxblog/{action}/{entry
阅读全文
摘要:<system.web> <urlMappings enabled="true"> <add url="~/login.html" mappedUrl="default.aspx?state=222"/> <add url="~/login.aspx" mappedUrl="default.aspx?state=6"/> </urlMappings></system.web>猛然发现ASP.NET 2.0本身就提供了对Url
阅读全文
摘要:经过Asp.net设计思想的研究,我们对HttpApplication的管线已经有了一个本质的了解。所谓管线,实际上就是生产流水线,由一系列的步骤所组成,而HttpContext,就是这条流水线上待加工的产品。现在,我们来对这条生产流水线进行更进一步的了解。首先请看ApplicationStepManager.BuildSteps方法。1、ValidatePathExecutionStep:负责对请求的路径进行安全检查,禁止非法路径访问。深入到该类的Execute方法我们发现,该类直接调用HttpContext.ValidatePath方法,而后一个方法在检测到非法路径时,直接抛出Htt...
阅读全文
摘要:.sln:解决方案文件,为解决方案资源管理器提供显示管理文件的图形接口所需的信息。.csproj:项目文件,创建应用程序所需的引用、数据连接、文件夹和文件的信息。.aspx:Web 窗体页由两部分组成:视觉元素(HTML、服务器控件和静态文本)和该页的编程逻辑。Visual Studio 将这两个组成部分分别存储在一个单独的文件中。视觉元素在.aspx 文件中创建。.aspx.cs:Web 窗体页的编程逻辑位于一个单独的类文件中,该文件称作代码隐藏类文件(.aspx.cs)。.cs: 类模块代码文件。业务逻辑处理层的代码。.asax:Global.asax 文件(也叫做 ASP.NET 应用程
阅读全文
摘要:HttpHandler HttpHandler是HTTP请求的处理中心,真正地对客户端请求的服务器页面做出编译和执行,并将处理过后的信息附加在HTTP请求信息流中再次返回到HttpModule中。 HttpHandler与HttpModule不同,一旦定义了自己的HttpHandler类,那么它对系统的HttpHandler的关系将是“覆盖”关系。 IHttpHandler接口声明 public interface IHttpHandler { bool IsReusable { get; } public void ProcessRequest(HttpContext cont...
阅读全文
摘要:项目中httpModules应用:WapModule.cs:public class WapModule:IHttpModule{ public void Init(HttpApplication context) { context.BeginRequest += new EventHandler(context_BeginRequest); } // 处理BeginRequest 事件的实际代码 void context_BeginRequest(object sender, EventArgs e) ...
阅读全文
摘要:为了使读者对基于WCF的编程模型有一个直观的映像,我将带领读者一步一步地创建一个完整的WCF应用。本应用功能虽然简单,但它涵盖了一个完整WCF应用的基本结构。对那些对WCF不是很了解的读者来说,这个例子将带领你正式进入WCF的世界。在这个例子中,我们将实现一个简单的计算服务(CalculatorService),提供基本的加、减、乘、除的运算。和传统的分布式通信框架一样,WCF本质上提供一个跨进程、跨机器以致跨网络的服务调用。在本例中,客户端和服务通过运行在相同的同一台机器上不同进程模拟,图1体现了客户端和服务端进程互相调用的关系。图1 计算服务应用运行环境WCF的服务不能孤立地存在,需要寄宿
阅读全文
摘要:spring.net 是一个关注于.NET企业应用开发的应用程序框架.它能够提供宽广范围的功能,例如依赖注入、面向方面编程(AOP)、数据访问抽象, 以及ASP DOTNET集成等。基于java的spring框架的核心概念和价值已被应用到.NET。Spring DOTNET 包含一个完全功能的依赖注入容器和AOP库。1.定义接口?usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;namespaceDao{publicinterfaceIDao{voidSave();}}2.定义实现接口..
阅读全文
摘要:我们现在 Visual Studio 中创建一个网站应用程序,为了方便检查,在网站中增加一个名为 index.aspx 的页面,并设为起始页。首先解决 Sping.NET 在网站中的配置问题。Spring.NET 大量使用配置文件,如果你愿意的话,也可以使用代码进行配置,不过,我们还是使用传统的配置文件方式。一. 添加程序集引用首先,我们需要在网站中添加对于 Spring.NET 程序集的引用,最基本的是两个程序集 Spring.Core.dll 和 Spring.Web.dll。Spring.Core.dll 是整个 Spring.NET 的核心程序集,而 Spring.Web.dll 则对
阅读全文
摘要:.Net是微软开发的一个集成的、面向对象的开发平台,它以通用语言运行时(CLR)为基础,支持C#、F#、C++等多种编程语言(编程语言可以互操作)。.Net框架是运行在操作系统之上、应用程序之下的,它负责管理所有运行在它之上的.Net应用程序。.Net框架是跨平台的,运行在它之上的应用程序也是跨平台的,只是微软官方只提供了运行在Windows平台上的.Net框架(如果他也提供可以运行在其他平台上的.Net框架,不是扇自己耳光吗),但是已有开源团队提供了基于其他平台的.Net框架。.Net能够支持多种编程语言互操作,是因为有通用语言基础架构(CLI)。通用语言基础架构是一个开放的技术规范,它规定
阅读全文
摘要:这两天用Aspose.Cells构建一个Excel报表,感觉这个组件还比较好用.记录一下常用的使用知识:1.创建Workbook和Worksheetworkbook&worksheet1Workbookwb=newWorkbook();wb.Worksheets.Clear();wb.Worksheets.Add("NewWorksheet1");//New Worksheet1是Worksheet的nameWorksheetws=wb.Worksheets[0];如果直接用下边两句则直接使用默认的第一个Worksheet:workbook&workshee
阅读全文
摘要:单讲效率肯定是 SQL > HQL > Linq, 因为 NH 的 Linq 查询是基于 HQL 实现的, 也就是说执行的时候是这样的 Linq -> HQL -> SQL 。
阅读全文