
【dotNet】
文章平均质量分 78
vinoYang
work @ Tencent. http://vinoyang.com
展开
-
浅谈.net和Java的异常类型设计
最近在自学Java,看到Java的检查型异常设计时,心中不免有些疑惑。疑惑使用检查型异常的必要性。注:本人现在从事的.net开发。C#在设计上借鉴了Java,但是,C# 并没有引入所谓的检查型异常。 在网上看到一些关于Java中是否该采用检查型异常的机制。真是众说纷纭,但是还是可以总结为,对这个设计的批评声更多。其实,我没有在真正项目中使用Java开发的经验,更没有过在方法签名中声明检查型原创 2011-06-26 21:35:00 · 1772 阅读 · 0 评论 -
Math.Round()——面试题小结
Math.Round();原创 2011-03-11 19:58:00 · 2405 阅读 · 0 评论 -
C#检测外键冲突的代码
删除时检测外键冲突原创 2010-06-15 11:29:00 · 3763 阅读 · 0 评论 -
改造asp.net日历控件为弹出式日期选择控件和GridView呈现长文本字段的两个技巧
asp.net中自带了一个非常不错的日历控件,但在其呈现方式上还是稍有欠缺。现在我们用一个小技巧,可以轻松创建一个弹出式日期。自此你再也不用去网上找那个带了很多脚本代码的JS制作的弹出式日期控件了。 实现,方式很简单:只需在页面中加入一点Javascript和一些CSS,就可以制作一个简单的弹出式日期选择器。其中,.aspx代码如下: 无标题页 <原创 2010-04-10 21:13:00 · 13671 阅读 · 4 评论 -
GridView控件自定义分页的实现
前人栽树,后人乘凉,话不多说,代码如下: 实现方式一:.aspx: 共 条/ 页原创 2009-10-05 17:15:00 · 4380 阅读 · 0 评论 -
分布式命令模式——互联系统的一种可扩展的命令模式
分布式命令模式是一种用来解决架构设计的建议模式。相比设计通常的应用而言,在互联系统中应该更多地考虑使用它。这种模式的目标是让独立系统与互联系统都有相同的设计。这种模式允许开发者将精力集中在设计一个遵循命令模式的通常的应用上,而不需要考虑该应用将与其他的系统相连。这种模式在设计命令时将开发者从考虑传输和通信协议中解放出来,并且能保持系统的简洁性。当某些命令被执行时,设计者不需要担心怎样发送必要的数据翻译 2011-11-07 22:59:25 · 3924 阅读 · 0 评论 -
C#如何识别引用的真实类型(一)——转载
知识储备,如果您已经十分熟习这些,可以跳过 1 什么是引用? 引用是一个数据结构,包含了一个计算机内存堆地址的值,就类似C++中的指针一样,本文中所有出现有关"引用"字句,读者都可以把它理解成C,C++中的指针 再说一遍,引用 与 指针 是不同的,例如 GC在回收内存的时候,会修改引用的值,但本文的重点并不是讲述 引用 与 指针的差别,所以,读者可以把所有在这里出现的 "引用" 理解转载 2010-03-19 22:52:00 · 1224 阅读 · 0 评论 -
细说Cookies
什么是Cookies?Cookies是一些小文件,它们被创建在客户端的系统里,或者被创建在客户端浏览器的内存中(如果是临时性的话)。用它可以实现状态管理的功能。我们可以存储一些少量信息到可以短的系统上,以便在需要的时候使用。最有趣的事情是,它是对用户透明的。在你的web应用程序中,你可以到处使用它,它极其得简单。Cookies是以文本形式存储的。如果一个web应用程序使用cookies,那么服原创 2011-12-11 21:55:37 · 10478 阅读 · 23 评论 -
使用ASP.NET实现Windows Service定时执行任务
我们怎样才能在服务器上使用asp.net定时执行任务而不需要安装windows service?我们经常需要运行一些维护性的任务或者像发送提醒邮件给用户这样的定时任务。这些仅仅通过使用Windows Service就可以完成。Asp.net通常是一个无状态的提供程序,不支持持续运行代码或者定时执行某段代码。所以,我们不得不构建自己的windows service来运行那些定时任务。但是在一个共享的原创 2011-11-05 10:12:39 · 23643 阅读 · 0 评论 -
多映射通用集合类(C#实现)--支持一键多值存储
.net的通用Dictionary集合类有一个“键”唯一约束。考虑这样一种情况:你想在Dictionary中存Author Name以及Articles。首先,你想加入Bob->Article_Good_One,而当你想加入Bob->Article_Good_Second,你将得翻译 2011-09-25 21:10:57 · 11884 阅读 · 1 评论 -
asp.net的10个提升性能或扩展性的秘密(一)
简介Asp.net有很多值得你挖掘的“秘密”,当你发现了它们,将会给你网站的性能和可扩展性带来巨大提升!例如,对于Membership以及Profile提供程序有一些秘密的瓶颈,它们很容易被解决,从而使认证和授权更加快速。另外,asp.net的http管线可以为每一个请求作处理,防止执行了某些不必要的代码而遭受攻击。不只是这些,asp.net工作进程能够突破默认限制,从而完全发挥它的威力。在浏翻译 2011-10-07 22:33:48 · 4091 阅读 · 0 评论 -
异步调用Web服务方法
基于Ajax技术构建的门户是web 2.0这一代中最为成功的Web应用程序。而这块市场上iGoogle和Pageflakes这两大站点已经走在了时代的前列。当你打开Pageflakes,将会看到如下的界面:接下来就是界面上的各个“部件”去向服务器请求各种web服务,而服务器作为代理,则代为向外部web服务发出请求。(这是因为ajax调用无法跨越,所以常通过代理来请求数据)原创 2011-11-19 20:14:54 · 6324 阅读 · 0 评论 -
面试题:产生一个长度为100的数组,为数组中的每一项随机填充1-100之间的数并且保证不重复
面试题:产生不重复随机数原创 2011-03-16 13:17:00 · 13353 阅读 · 5 评论 -
细说Cache
什么是缓存?Web 应用程序通常都是被多个用户访问。一个Web站点可能存在一个“重量级”的加载,它能够使得站点在访问的时候,拖慢整个服务器。当站点被大量用户同时访问的时候,访问速度缓慢是大部分网站共同存在的问题。为了解决这个问题,我们可以使用一个更高级别的硬件配置,负载均衡器,高带宽,但是加载并不是拖慢站点唯一的“罪魁祸首”,所以我们需要提供一种方案,它也同样能够加速数据访问以及提升性能。而采原创 2011-12-21 21:25:43 · 15462 阅读 · 13 评论 -
asp.net使用httphandler打包多CSS或JS文件以加快页面加载速度
介绍使用许多小得JS、CSS文件代替一个庞大的JS或CSS文件来让代码获得更好的可维护性,这是一个很好的实践。但这样做反过来却损失了网站的性能。虽然你应该将你的Javascript代码写在小文件中并且将大的CSS文件分割到小文件中,当一个浏览器请求那些JS以及CSS文件,它却翻译 2011-10-02 18:45:23 · 6435 阅读 · 7 评论 -
Asp.net 构建可扩展的的Comet Web 应用(一)
说明这篇文章用来提供在asp.net中使用comet的一种理论上的解决方案。它包含了Comet技术在服务端的实现以及怎样去解决可扩展的问题。我将在不久以后发表一般文章,使用我接下来要讲到的Comet 线程池技术演示一个小游戏,来提供客户端的代码。它可能会给你在真实的环境下解决翻译 2011-08-31 22:28:52 · 8054 阅读 · 2 评论 -
Asp.net实现即时消息通讯(Ajax)
以下是最近搞的一个用asp.net实现的即时消息的小功能,由于消息的即时性,和网络的无状态无连接。因此曾一时间无法想到很好的解决方法,很多人都说可以使用socket编程来实现使用端口进行点对点即时通信。 可是,暂时没有看到现成实现的例子。于是,我还是使用了像实现简易聊天室那样的方式,使用了一个Application对象,全局维护一个用户消息表来实现从一个客户端到服务器,再从服务器到另一个客原创 2010-04-05 15:48:00 · 10842 阅读 · 7 评论 -
快速可扩展的Ajax流代理——提供持续下载跨域数据
简介由于浏览器禁止跨域的XMLHTTP调用,所有的Ajax网站都必须有一个服务端代理来从外部域比如Flickr或者Digg来抓去内容。对客户端Javascript代码来说,一个XMLHttp的调用将请求传递给宿主在相同域里的服务端代理,然后由代理来从外部服务器上下载内容,并回传给客户端。通常,所有从外部服务器获取内容的Ajax站点都采用这种代理方案,除了一些罕见的使用JSONP的人。当网站上的翻译 2011-10-20 22:32:43 · 3632 阅读 · 2 评论 -
PDFKit.NET 数字签名与文档处理
PDFKit.NET 2.0 是一个百分百的.net组件,用来创建以及操作PDF文档。这篇文章我将专注于它的“数字签名”功能。数字签名可以被用来认证PDF的源文件(谁签名过它)并且提供一个PDF文档的完整性(看文档在被签名过后被是否更改过)。我将展示怎样使用一个或多个数字签名技术翻译 2011-09-12 15:59:18 · 3576 阅读 · 0 评论 -
asp.net显示高清缩略图
如题: 添加命名空间如下:using System.Drawing;using System.Drawing.Drawing2D;using System.Drawing.Imaging;using System.IO;----------------------------------------------------------------------------------原创 2009-10-27 13:49:00 · 4482 阅读 · 6 评论 -
关于FormView在编辑模板下找不到控件的问题
FormView编辑模板找不到控件的问题原创 2010-07-09 21:39:00 · 3317 阅读 · 2 评论 -
性能优化之页面缓存(以Javascript方式缓存页面部件)
本篇文章为大家讲解一个关于客户端缓存页面的技巧——以Javascript的方式来缓存页面的静态“部件”。如果整个页面能够被缓存到浏览器上,一个满载HTML的巨大页面也能运行地很棒。你可以使用Http响应缓存头来解决这个问题,要么将它们手工注入你的代码,要么在aspx页面上使用@OutputCache标签来申明:但是,浏览器上的这些缓存记录一般只能维持一天的时间。如果你有一个既有原创 2011-11-27 15:07:09 · 8738 阅读 · 0 评论 -
对比.net使用Java的匿名类对工厂方法模式提供更优雅的实现
工厂模式的意图:定义一个用户创建对象的接口,让子类决定实例化哪一个类。Factory Method使一个类的实例化延迟到其子类。结构图:场景:这里制造两个手机product:Nokia、Motorola,为了制造这两个Product需要使用两个Creator(Factory)来制原创 2011-07-09 22:02:56 · 1720 阅读 · 0 评论 -
浅谈跨网站脚本攻击(XSS)的手段与防范(简析新浪微博XSS攻击事件)
本文主要涉及内容:什么是XSSXSS攻击手段和目的XSS的防范新浪微博攻击事件什么是XSS跨网站脚本(Cross-sitescripting,通常简称为XSS或跨站脚本或跨站脚本攻击)是一种网站应用程序的安全漏洞攻击,是代码注入的一种。它允许恶意用户将代码注入到网页上,其他用户在观看网页时就会受到影响。这类攻击通常包含了HTML以及用户端脚本语言。XSS攻击通常原创 2012-01-13 20:24:16 · 10763 阅读 · 1 评论 -
asp.net:AJAX+LINQ+TreeView 动态填充多级节点
演示示例为一个学生信息查看菜单:先选择部门,再选择班级,最后选择学生姓名,查看学生信息;效果图: 采用TreeView的SelectedNodeChanged事件作为一个包含用来显示学生信息的Lable的UpdatePanel的触发器,如下:原创 2010-01-28 21:16:00 · 2443 阅读 · 1 评论 -
从零开始学.net多线程系列(三)——同步
本文将涉及如下内容 Wait HandlesEventWaitHandleSeamphoresMutex Critical Sections Miscellaneous Objects这篇文章重点说明多个不同的线程之间的同步问题。WaitHandles首先,我们必须认识到,当你尝试着理解怎么才能使多个线程在一起协调地很好,最关键的问题是怎样排序这些操作。例如,我们有如下的这些问题:1、 我们翻译 2012-01-01 22:15:30 · 4423 阅读 · 2 评论 -
开发自己的Web服务处理程序(以支持Ajax框架异步调用Web服务方法)
当你添加Asp.net AJAX功能到你的Web程序的时候,你需要在Web.config中做一些改变,需要你显式地移除默认的ASMX处理程序并且添加asp.net ajax框架自己的脚本处理器来作为ASMX处理程序。在上一篇异步调用Web服务方法中,我们谈论过,ajax框架的asmx(ScriptHandler)是不支持异步调用Web服务方法的,所以为了让asp.netajax支持异步Web方法调原创 2011-12-04 18:30:46 · 4457 阅读 · 0 评论 -
asp.net的10个提升性能或扩展性的秘密(二)
简介Asp.net有很多值得你挖掘的“秘密”,当你发现了它们,将会给你网站的性能和可扩展性带来巨大提升!例如,对于Membership以及Profile提供程序有一些秘密的瓶颈,它们很容易被解决,从而使认证和授权更加快速。另外,asp.net的http管线可以为每一个请求作处理,防止执行了某些不必要的代码而遭受攻击。不只是这些,asp.net工作进程能够突破默认限制,从而完全发挥它的威翻译 2011-10-13 21:29:41 · 3639 阅读 · 0 评论 -
C#内部类
在《Java编程思想》中花了一章的篇幅介绍,内部类的相关特性。而在C#的书籍中很少有提交内部类的介绍。这篇文章,就简要介绍一下,C#中的内部类。我们新建一个测试类文件,定义一个类:OuterClass。在其内部定义一个类:InnerClass1(暂且将其访问级别设置为publ原创 2011-08-14 00:27:58 · 19254 阅读 · 4 评论 -
关于更清楚地了解.net的垃圾回收机制
对非托管资源的隐式控制是由析构方法提供的,它会在对象销毁时由垃圾回收器调用。析构方法应该只释放对象占用的资源,而不应该引用其他对象。请注意,如果只有托管引用,就无需也不应该实现析构方法,它只适用于处理非托管资源。因为析构方法需要一定的开销,应该在需要它的方法中才实现。不能直接调用对象的析构方法,垃圾回收器会为我们调用的。****析构方法的工作原理*****垃圾回收器会维护一个含原创 2010-03-21 17:59:00 · 1150 阅读 · 0 评论 -
asp.net的缓存机制
缓存是把应用程序中的需要频繁、快速访问的数据保存在内存中的编程技术,通常用来提高网络的响应速度。在ASP.NET中使用Cache类来管理缓存。下面详述控件级数据缓存功能和页面级数据缓存功能的实现: (1)数据库缓存依赖数据库缓存依赖由SqlCacheDependency类管理;数据库缓存依赖的优点:1、提高数据呈现速度,每次获取数据后,系统根据用户设置的缓存时间,在有效期内,将原创 2009-10-14 14:38:00 · 3019 阅读 · 0 评论 -
《C#面向对象设计模式纵横谈》——1、面向对象设计模式与原则|第一讲
设计模式描述了软件设计过程中某一类常见问题的一般性的解决方案。 面向对象设计模式描述了面向对象设计过程中、特定场景下、类与相互通信的对象之间常见的组织关系。 示例场景:我们需要设计一个人事管理系统,其中的一个功能是对各种不同类型的员工,计算其当月的工资——不同类型的员工,拥有不同的薪金计算制度。 结构化做法1。获得人事系统中所有可能的员工类型2。根据不同的员工类型所对应原创 2010-02-03 21:58:00 · 1421 阅读 · 0 评论 -
使用强类型数据集进行有效编码——转载
曾经有人告诉我优秀的开发人员的特点是希望能够有效地利用时间。开发人员不断追求更容易更快速的编码方式,以及减少错误数量的方法。使用 ADO.NET 中的强类型数据集对象可以帮助您做到这一点。本月我将从正反两方面来讨论使用强类型数据集对象开发基于 Microsoft® .NET Framework 的应用程序。我将从什么是强类型数据集及其如何扩展数据集、数据表和 DataRow 类开始谈起。在这一转载 2010-03-19 19:11:00 · 1329 阅读 · 0 评论 -
从零开始学.net多线程系列(二)
线程的生命周期下面的图片展示了大部分线程的通常状态,以及当一个线程从某种状态切换成另一种状态时发生的某些动作:这里有一个关于线程状态的列表:状态描述Running线程已经被启动,并且没有被阻塞,没有挂起的ThreadAbortException.StopRequested线程正在请求停止,该状态只供内部使用。SuspendRequested现在正在请求暂停。Background线程将被作为后台线程翻译 2011-11-25 21:10:26 · 6310 阅读 · 0 评论 -
从零开始学.net多线程系列(一)
本篇涉及话题:什么是进程时间片多线程的进程线程本地存储(TLS)中断线程睡眠和时钟中断线程退出/完成什么是AppDomain为什么你应该使用AppDomain给AppDomain设置数据NUnit与AppDomain线程优先级启动线程回调回顾与展望----------------------------------------------------------------------------翻译 2011-11-11 23:04:25 · 17511 阅读 · 5 评论 -
使用AOP 使C#代码更清晰
简介如果你很熟悉面向方面编程(AOP),你就会知道给代码增加“切面”可以使代码更清晰并且具有可维护性。但是AOP通常都依赖于第三方类库或者硬编码的.net特性来工作。虽然这些实现方式的好处大于它们的复杂程度,但是我仍然在寻找一种实现AOP的更为简单的方式,来试我的代码更为清晰。我将它们单独移出来,并命名为AspectF。Aspect Oriented Programming (AOP)原创 2011-10-30 21:55:11 · 40646 阅读 · 10 评论 -
工厂方法模式实现多功能日志记录
有时,我们在开发的时候,会遇到一些关于日志记录的功能。并且,它们可能是独立于系统业务逻辑的,那么我们就可以将日志做成组件的形式,以方便复用。以下采用工厂方法模式,来实现日志组件的设计,并保证对功能的扩展不会改变已有的实现。我们实现三种日志记录类型:错误日志记录、按钮点击日志记录、原创 2011-07-24 23:28:12 · 2910 阅读 · 0 评论 -
C#-continuation-passing style(CPS)
C#-continuation-passing style(CPS)原创 2011-02-24 16:54:00 · 2867 阅读 · 0 评论 -
C# 自定义异常类型(摘自CLR Via C# 3th Edition)
C# 自定义异常类型原创 2011-02-05 20:07:00 · 2935 阅读 · 0 评论 -
使用asp.net Ajax控件PopupControlExtender与GridView联合显示详情列表
众所周知,由社区开发的AjaxControlToolkit,为asp.net展现富客户端效果和提高web程序性能带来了很大的帮助。里面有大量的实现各种功能的控件可供直接使用。 PopupControlExtender就是其中的一个。我们称呼其为“弹出控件”。它主要的功能是原创 2010-06-13 15:00:00 · 4819 阅读 · 0 评论