Hello world.

随笔 - 108  文章 - 1  评论 - 35 
  2012年1月12日
Sql Server 事务

 

BEGIN TRAN
--执行一些东东
if @@error<>0
begin rollback tran
return 0
end
else
begin commit tran
return 1
end 
go

简单明了. 

 

posted @ 2012-01-12 17:44 Ryan.zhu 阅读(9) 评论(0) 编辑
  2011年12月30日
用强名称来给程序集签名即谓之程序集强签名!

那什么是强名称,签名又有什么作用?,我们先看看强名称的概念是什么,强名称是由程序集的标识加上公钥和数字签名组成的,其中程序集的标识包括简单文本名称,版本号和区域性信息!

Visual Studio.NET 和 .NET Framework SDK 中有工具能够将强名称分配给一个程序集!强名称相同的程序集一般也是相同的!

好了,具体我们可以通过给程序集强签名达到什么目的呢?

通过签发具有强签名的程序集合,可以确保名称的全局唯一性!因为强名称是依赖于唯一的密钥对来确保名称的唯一性,其他人不会生成与你相同的程序集名称(不同的私钥产生的名称不同)

强名称保护程序集的版本沿袭,因为强名称的唯一性能够确保没有其他人能够生成你的程序集的后续版本

强名称提供可靠的完整性检查,通过.NET Framework安全检查后,可以确保程序集内容在生成后未被更改过!

要注意的是,具有强名称的程序集引用其他程序集,如果这个程序集没有强名称,那么具有强名称的程序集所带来的好处,并依旧会产生DLL冲突!因此具有强名称的程序集只能引用其他具有强名称的程序集。 

以上 from:http://blog.csdn.net/vipxiaotian/article/details/1686071

====== 

如果没有强命名程序集,是不可以得到全局程序集缓存(Global Assembly Cache,GAC)的。

 

posted @ 2011-12-30 13:38 Ryan.zhu 阅读(8) 评论(0) 编辑
  2011年12月29日
摘要: 阅读目录开始Cache的基本用途Cache的定义Cache常见用法Cache类的特点缓存项的过期时间缓存项的依赖关系 - 依赖其它缓存项缓存项的依赖关系 - 文件依赖缓存项的移除优先级缓存项的移除通知巧用缓存项的移除通知 实现【延迟操作】巧用缓存项的移除通知 实现【自动加载配置文件】文件监视技术的选择各种缓存方案的共存许多做过程序性能优化的人,或者关注过程程序性能的人,应该都使用过各类缓存技术。 而我今天所说的Cache是专指ASP.NET的Cache,我们可以使用HttpRuntime.Cache访问到的那个Cache,而不是其它的缓存技术。以前我在【我心目中的Asp.net核心对象】这篇博阅读全文
posted @ 2011-12-29 16:56 Ryan.zhu 阅读(125) 评论(0) 编辑
  2011年12月15日

  HTTP Caching 用好了,可以极大的减小服务器负载和减少网络带宽。十分有必要深入了解下 http 的 caching 协议。

  先来看下请求/响应过程:

http 请求/响应

http 请求/响应

  1、用 Last-Modified 头

  在第一次请求的响应头返回 Last-Modified 内容,时间格式如:Wed, 22 Jul 2009 07:08:07 GMT。是零时区的 GMT 时间,servlet 中可以用 response.addDateHeader ("Last-Modified", date.getTime ()); 加入响应头。如图:

last-modified 和 If-Modified-Since

last-modified 和 If-Modified-Since

  Last-Modified 与 If-Modified-Since 对应的,前者是响应头,后者是请求头。服务器要处理 If-Modified-Since 请求头与 Last-Modified 对比看是否有更新,如果没有更新就返回 304 响应,否则按正常请求处理。如果要在动态内容中使用它们,那就要程序来处理了。

  ps:servlet 取 If-Modified-Since 可以用 long last = requst.getDateHeader ("If-Modified-Since");

  2、用 Etag 头

  很多时间可能不能用时间来确定内容是否有更新。那可以用 Etag 头,etag 是以内容计算一个标识。计算的方式可以自己决定,比如可以用 crc32、md5等。

Etag 和 If-None-Match

Etag 和 If-None-Match

  Etag 与 If-None-Match 是对应的,前者是响应头,后者是请求头。服务器要判断请求内容计算得到的 etag 是否与请求头 If-None-Match 是否一致,如果一致就表示没有更新,返回 304 就可,否则按正常请求处理。可以参考:用 HttpServletResponseWrapper 实现 Etag 过滤器

  3、用 Expires 头,过期时间

  当请求的内容有 Expires 头的时候,浏览器会在这个时间内不去下载这个请求的内容(这个行为对 F5 或 Ctrl+F2 无效,用 IE7,Firefox 3.5 试了,有效的比如:在地址输入后回车)。

expires 过期时间

expires 过期时间

  在 servlet 中可以用 response.addDateHeader ("Expires", date.getTime ()); 添加过期内容。

  ps:在 httpwatch 中可以看到 Result 为 (Cached) 状态的。

  4、用 max-age 的 Cache-Control 头

  max-age 的值表示,多少秒后失效,在失效之前,浏览器不会去下载请求的内容(当然,这个行为对 F5 或 Ctrl+F2 无效)。比如:服务器写 max-age 响应:response.addHeader ("Cache-Control", "max-age=10");

  ps:如果你还要加一些 Cache-Control 的内容,比如:private,最好不要写两个 addHeader,而是一个 response.addHeader ("Cache-Control", "private, max-age=10"); 否则 ie 可能对 max-age 无效,原因它只读第一个 Cache-Control 头。

  小结:

  Last-Modified 与 Etag 头(即是方式 1 和2)还是要请求服务器的,只是仅返回 304  头,不返回内容。所以浏览怎么 F5 ,304 都是有效的。但用 Ctrl+F5 是全新请求的(这是浏览器行为,不发送缓存相关的头)。

  Expires 头与 max-age 缓存是不需要请求服务器的,直接从本地缓存中取。但 F5 会忽视缓存(所以使用 httpwatch 之类的 http 协议监察工具时,不要 F5 误认为 Expires 和 max-age 是无效的)。

  http 协议监察工具:

  Firebox:httpfox、live http header

  IE:httpwatch、iehttpheader

 

from:http://blog.chenlb.com/2009/07/http-caching-optimize-your-site.html 

posted @ 2011-12-15 13:46 Ryan.zhu 阅读(27) 评论(1) 编辑
  2011年12月8日
摘要: 【简单Web服务器搭建】基于Socket实现的最简单的Web服务器【ASP.NET原理分析】 通常,我们借助浏览器(通常是IE,FireFox或者Chrome)浏览网页,例如,我们在地址栏中输入DebugLZQ的博客网址http://www.cnblogs.com/DebugLZQ/,回车之后,就会在浏览器的窗口中看到Debug的主页,如下图所示: 在这个简单的操作背后影藏了巨大的复杂性。 我们在地址栏中输入的内容称为通用资源标记符(Universal Resource Identifier,URI)它有很多种样式,在Web中我们通常称为统一资源定位符(Uniform Resource Loc阅读全文
posted @ 2011-12-08 15:25 Ryan.zhu 阅读(64) 评论(0) 编辑
  2011年12月5日
摘要: CSS命名规则 头:header 内容:content/containe 尾:footer 导航:nav 侧栏:sidebar 栏目:column 页面外围控制整体布局宽度:wrapper 左右中:left right center 登录条:loginbar 标志:logo 广告:banner 页面主体:mai...阅读全文
posted @ 2011-12-05 15:52 Ryan.zhu 阅读(290) 评论(0) 编辑
  2011年11月30日
摘要: (一)基本概述现在B/S结构的系统越来越流行,然而由于B/S系统都是基于HTTP协议的,这就决定了它在实时应用方面的缺陷。因为服务器端的信息发生了任何变化都不会主动发送到客户端(曾经热及一时的“推”技术已经不了了之了),都需要客户端主动的去请求服务器端才能获得新数据。那么这里就存在一个问题了,客户端如何才知道服务器端数据发生了变化?何时才该去向服务器请求新数据呢?现在在B/S里通常的解决方案是通过客户端浏览器的定时刷新来定时向服务器请求新数据,但是这样存在一定的时间误差,在一些实时性要求比较高的系统(如生产线的监控等)里还是不能达到要求,并且在服务器端没有数据变化时客户端仍然会发出获取数据的请阅读全文
posted @ 2011-11-30 16:24 Ryan.zhu 阅读(215) 评论(0) 编辑
  2011年11月24日
摘要: 闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。下面就是我的学习笔记,对于Javascript初学者应该是很有用的。一、变量的作用域要理解闭包,首先必须理解Javascript特殊的变量作用域。变量的作用域无非就是两种:全局变量和局部变量。Javascript语言的特殊之处,就在于函数内部可以直接读取全局变量。 var n=999; function f1(){alert(n);} f1(); // 999另一方面,在函数外部自然无法读取函数内的局部变量。 function f1(){var n=999;} alert(n); ...阅读全文
posted @ 2011-11-24 15:53 Ryan.zhu 阅读(13) 评论(0) 编辑
  2011年11月3日
摘要: 因为最近再带两个实习的朋友~ 他们在理解委托这块 不明白能用来做什么 对这块理解的不好 更不用说委托扩展来的 拉姆达表达式 事件等了~ 但是这些很重要 在MVC EF4.1 里 都会有很多拉姆达表达式的影子 在做组件开发 用户控件开发 事件的运用 一定也是少不了的 稍微深入点儿的说 用于两个对象之间的通讯 用来解耦 用委托事件 是很不错的选择 而设计模式里的观察者模式 也是基于委托事件的应用 还有做winform 开发的 里的线程 WPF SL 的异步调用等 都是有这委托的影子的 所以 这个还是很重要的。也是一定要掌握的~ 希望通过这篇文章 能让大家更加了解委托以及如何运用~一.委托以及延伸先阅读全文
posted @ 2011-11-03 11:00 Ryan.zhu 阅读(9) 评论(0) 编辑
摘要: 我们会经常使用iframes来加载第三方的内容、广告或者插件。使用iframe是因为它可以和主页面并行加载,不会阻塞主页面。当然使用iframe也是有利有弊的:Steve Souders在他的blog里面有阐述:Using Iframes Sparingly:iframe会阻塞主页面的onload事件主页面和iframe共享同一个连接池 阻塞主页面的onload是这两个问题中最影响性能的方面。一般都是想让onload时间越早触发越好,一方面是用户体验过更重要的是google给网站的加载速度的打分:用户可以用IE和FF中Google工具栏来计时。 那么为了提高页面性能,怎样才能不阻塞主页...阅读全文
posted @ 2011-11-03 10:14 Ryan.zhu 阅读(16) 评论(0) 编辑
come soon on