http://msdn.microsoft.com/zh-cn/site/cc163725#S2 当ASP.Net收到一个页请求,它会从线程池中抓取一个线程,然后把这个请求交给这个线程处理。一个普通的,或者说是同步的页在请求期间占据了这个线程,阻止了线程被其它请求占用。如果同步请求变成IO绑定,例如,如果他调用远程的WEB服务或者查询远程数据库,并且等待数据返回,这个线程就被卡在那里,什么也不做
看了http://msdn.microsoft.com/en-us/library/ms972976#viewstate_topic3的Understanding ASP.NET View State。对view State有新的认识。翻译他的部分章节,以作备忘。 更多细节可以看http://www.cnblogs.com/psunny/archive/2010/03/11/1683864.ht
http://www.cnblogs.com/yinyao/archive/2011/02/21/1960014.html ASP.NET是一个非常强大的构建Web应用的平台,它提供了极大的灵活性和能力以致于可以用它来构建所有类型的Web应用。 绝大多数的人只熟悉高层的框架如: WebForms 和 WebServices --这些都在ASP.NET层次结构在最高层。 这 篇文章的资料收
两者都能处理HttpApplication中的事件。 IHttpModule 的方式可以用来创建多个 Module ,并编译为程序集,方便部署和在多个项目中使用。 而 Global.asax 方式比较直接,方便在程序中一次性的处理。 Global.asax是继承了HttpApplication。而IHttpModule的Init方法中,传入的参数必须是HttpApplication。 H
有两种方法,本质是一样的。一种是写代码,把实现IHttpModule接口的类放在App_Code文件夹中。还有一种方法是直接把该类放到一个项目中,编译后得到的dll放入Bin文件夹。 具体步骤如下: http://support.microsoft.com/kb/307996 参考 实现 IHttpModule 接口。您的类定义应如下所示: public class HelloW
HTTP handlers和Module是ASP.NET平台的基本模块。任何对ASP.NET资源的请求总是通过HTTP Module管道并且由HTTP Handler处理。 Page类,是最终的HTTP handler,它在内部实现了页面的生命周期。包括postback,Init,Load,PreRender之类的。一个HTTP handler设计为处理一个或者更多的URL扩展。Handler
————————————————————————————&mda
http://msdn.microsoft.com/zh-cn/library/ms178473(v=VS.100).aspx 在 ASP.NET 中,若要对 ASP.NET 应用程序进行初始化并使它处理请求,必须执行一些处理步骤。 此外,ASP.NET 只是对浏览器发出的请求进行处理的 Web 服务器结构的一部分。 了解应用程序生命周期非常重要,这样才能在适当的生命周期阶段编写代码,达到预期的
Web服务器的消息流动阶段 当装载(hosting) ASP.NET 的 Web 服务器接收到 HTTP 请求时,HTTP 聆听程序 (HTTP Listener) 会将请求转交给 URL 指定的网站应用程序的工作流程 (Worker Process),ASP.NET 的工作流程处理器(aspnet_isapi.dll,若是 IIS 5.0 时则是 aspnet_wp.exe)会解析 URL,并
Internet Server Application Programming Interface (ISAPI)是IIS的多层API。是可被微软IIS加载和调用的DLL。用于扩展HTTP服务器的功能。 ISAPI 也能够由Apache的mod_isapi模块实现,这样在微软的IIS运行的服务器端WEB应用程序也能在Apache上使用,其他第三方的服务器例如Zeus Web Server也提供I
http://www.cnblogs.com/hkncd/archive/2011/06/05/2073404.html 最近找工作,面试了几家公司,其中有一家公司的面试题给我印象很深,不久前在博客园看过类似的题目,但这次的更复杂,题目如下: public class BaseA { public static MyTest a1 = new My
HTTP 协议通过在头部添加 Cache-Control 标头来控制页面的缓存动作。HTTP 1.1 协议中的 Cache-Control 标头有以下设置: public 数据内容皆被储存起来,就连有密码保护的网页也储存,安全性很低。 private 数据内容只能被储存到私有的缓存中,通常是浏览器的本地缓存。这是 Cache-Control 标头的默认值。 no-cache 数
http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9 Cache-Control = "Cache-Control" ":" 1#cache-directive cache-directive = cache-req
HTTP Header有两种:Requests Header和Response Header http://en.wikipedia.org/wiki/List_of_HTTP_headers
转自维基百科 HTTP的发展是万维网协会(World Wide Web Consortium)和Internet工作小组(Internet Engineering Task Force)合作的结果,(他们)最终发布了一系列的RFC,其中最著名的就是RFC 2616。RFC 2616定义了HTTP协议中一个现今被广泛使用的版本——HTTP 1.1。 HTTP是一个客户端和服务器端请求和应答的标准
memcached
http://www.cnblogs.com/wucg/archive/2011/03/01/1968185.html Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemo
http://www.cnblogs.com/xugang/archive/2010/09/09/1822555.html 也许会有人这样解释C# 中浅拷贝与深拷贝区别: 浅拷贝是对引用类型拷贝地址,对值类型直接进行拷贝。 不能说它完全错误,但至少还不够严谨。比如:string 类型咋说? 其实,我们可以通过实践来寻找答案。 首先,定义以下类型: int 、string 、enum 、
http://www.cnblogs.com/an-wl/archive/2011/04/14/2016312.html 1.深拷贝与浅拷贝 拷贝即是通常所说的复制(Copy)或克隆(Clone),对象的拷贝也就是从现有对象复制一个“一模一样”的新对象出来。虽然都是复制对象,但是不同的复制方法,复制出来的新对象却并非完全一模一样,对象内部存在着一些差异。通
数据库缓存依赖 数据库缓存依赖,在数据库中的数据更改的时候,它能自动的使缓存中的数据失效。这个特征仅在SQL 2005以及以后的版本中适用。 为了理解SQL 缓存依赖的工作原理,先了解一些过去常用的有缺陷的解决方案。 一个常用的技术是使用标记文件。使用这种技术,你在缓存里增加一个数据对象,然后建立起一个文件依赖。然而,这个文件是空文件,你只是用来做标记。 当用户调用存储过程改变表里的
聚集依赖 有时候,你可能想要合并几个依赖,以此来创建一个依赖多个资源的缓存项。比如,你可能想要创建一个缓存项,当三个文件中的任何一个文件改变的时候,它会失效,或者你想要创建一个缓存项,当一个文件改变或者别的缓存项被移除的时候,它会失效。 创建这些规则十分简单,使用AggregateCacheDependency类就行。 AggregateCacheDependency 可以包裹多个Cache
有时候,数据源可能会对其他动作做出反应。但是,如果你的代码使用了缓存,你可能仍然没有意识到数据源的改变,仍然使用的缓存中过期的信息。为了解决这个问题,ASP.NET支持缓存依赖。缓存依赖允许你创建的缓存项依赖于其他资源,这样当资源改变,缓存项会被自动删除。 有3种类型的缓存依赖。 依赖其他缓存项 依赖文件或者文件夹 依赖数据库查询 要创建缓存依赖,你先需要创建一个CacheDepen
数据源控件缓存 使用数据源控件缓存是非常提倡的,因为数据源控件经常生成一些大量的查询请求。比如,当参数改变后,会重新请求。为每一个绑定控件执行分开的查询,即使这些控件使用的汉斯相同的命令,这样,即使很小的缓存也能减小开销。 尽管很多数据源控件支持缓存,但是数据源支持缓存不是必须具备的特征,有些数据源也不支持缓存,比如SiteMapDataSource。 为了支持缓存,数据源控
数据缓存 数据缓存是最灵活的缓存方式,但是它页强制你采取专用的步骤来实现。基本的原则是你添加那些创建起来比较昂贵的项到专用的内建的集合对象中(Cache类)。这个对象工作起来有点像Application。他对所有的请求都可见,当然们也有一些不同的地方: Cache对象是线程安全的:这意味着,你不需要在添加或者删除项的时候显式的加锁。 cache中的项会被自动的删除。ASP.NET会删除过期项
Building a Custom Cache Provider 创建一个自定义缓存提供 下面的例子展示了将每个缓存页面存储在独立的文件中,尽管基于磁盘的缓存比基于内存的慢几个数量级,但使用他也有2个优势。 持久化缓存:因为缓存输出被存储在磁盘上,即使web程序被重启,还是能够存在的。如果这些数据的产生很费开销,这样做还是值得的。 低内存的使用率:当缓存也被使用,他从磁盘直
ASP.NET可以让你把一组页面采用相同的缓存设置,你只需要在web.config文件定义缓存设置,将这些设置关联一个name,然后把这个name应用到页面上去即可。 看如下的web.config <configuration> <system.web> <caching> <outputCacheSettings&g
先说说自己对Memcached和Mongodb的一些看法,主要是抛砖引玉了,希望看到大家的意见和补充。 Memcached Memcached的优势我觉得总结下来主要体现在: 1) 分布式。可以由10台拥有4G内存的机器,构成一个40G的内存池,如果觉得还不够大可以增加机器,这样一个大的内存池,完全可以把大部分热点业务数据保存进去,由内存来阻挡大部分对数据库读的请求,对数据库释放可观的压
刚开始学习C#的时候,就听说CLR对于String类有一种特别的内存管理机制:有时候,明明声明了两个String类的对象,但是他们偏偏却指向同一个实例。如下: String s1 = "Hello"; String s2 = "Hello"; //s2和s1的实际值都是“Hello” bool same = (object) s
1.使用属性代替使用成员变量 2.使用readonly代替const // Compile time constant: public const int Millennium = 2000; // Runtime constant: public static readonly int ThisYear = 2004; 编译时常量在编译时,将用到该常量的地方都用它的值(200
本条款讨论函数GetHashCode()的缺陷,这种情况在全书中是唯一的。幸运的是,GetHashCode()函数只应用在一个地方:为一个基于散列(hash)的集合定义键的散列值,典型的集合为Hashtable或Dictionary容器。因为基类的GetHashCode()实现有很多问题。对引用类型来讲,它可以正常工作,但是效率很低。对于值类型来讲,基类中的实现通常是不正确的。更为糟糕
Copyright © 2005-2023 51CTO.COM 版权所有 京ICP证060544号