文章分类 - old .Net
摘要:1.字符串判断是否为空很多人都喜欢用字符串直接判断,比如一个变量:string str = "";if( str != "" )这样其实直接使用 if( str.Length == 0 )来判断效率更快,当然最好还是使用微软封装好了的string.IsNullOrEmpty(string value...
阅读全文
摘要:托管代码是指用.net framework支持的语言写的代码。.net framework为了让这些代码可以执行,提供了数个核心运行服务,因此这些代码必须向CLR提供最基本的信息,这些信息就叫做“元数据”。在程序中表现为在类前或函数前中括号内的数据。可通过继承System.Attribute来创建自
阅读全文
摘要:1、什么是弱引用?通常情况下,一个实例如果被其他实例引用了,那么他就不会被GC回收,而弱引用的意思是,如果一个实例没有被其他实例引用(真实引用),而仅仅是被弱引用,那么他就会被GC回收。2、弱引用的用处。如果建立了一个类“Class人”,他有个属性 “手”。private Class手 _手; public Class手 手 { get { return _手; } } 而在Class手,我希望能够访问“父”,就是人,例如手在收到烫伤后,立即通知“父”:人的子对象“大脑”一个消息“好痛啊”。这个时候,就需要在Class手中定义一个“人”属性,并在Class人初始化时将自己传入。_手 ...
阅读全文
摘要:现在ORM已经是一门非常成熟的技术了,相信用的人不少.加上Linq to sql和Entity Framework的推波助澜.现在还用DataSet和DataTable的人已经越来越少了.不过,如果项目里面不用ORM工具,就不得不回归到DataSet时代吗?也许,我们没法改变项目的决策,但是,我们可以自己制造工具。这里先忽略掉那些麻烦的sql,调用那个存储过程之类的事情,假设我们已经通过各种手段(不管你是SqlHelper的拥护者还是enterprise library的支持者,或者是自己动手丰衣足食的DIY派),得到了一个IDataReader实例(什么,你不知道IDataReader接口?
阅读全文
摘要:1.知道现在编程什么是最宝贵的?数据库连接,它其实是很耗费资源的。这里我们就连接池这个问题我们来一起讨论讨论吧。数据库连接池是为了更有效地利用数据库连接的最重要措施。它对于一个大型的应用系统的性能至关重要,特别是Web应用。ADO.NET Data Provider(以下简称Data Provider)会帮我们管理连接池,所以有人说使用连接池就像游儿童池一样轻松。但并不是说有了Data Provider程序员就万事无忧的,不正确地使用连接池可能导致你的应用在池里淹死。2.什么是ADO.NET连接池?ADO.NET连接池是Data Provider提供的一个机制,使得应用程序使用的连接保存在连接
阅读全文
摘要:这篇博文给大家分享的是,如何使用VS自带的性能分析工具来分析我们编写的.NET程序,一边找出程序性能的瓶颈,改善代码的质量。在实际开发中,性能真的很重要,往往决定一个产品的生死~良好的用户体验的基础之一也是程序要有好的性能~下面以一个大家熟悉比较极端的例子,来说明编写代码时考虑性能的重要性。这里DebugLZQ用的是10.0版本的VS。示例程序代码如下: using System;using System.Collections.Generic;using System.Linq;using System.Text; namespace VS2010性能测试{ class Program...
阅读全文
摘要:C#中有三种值(value),分别是值类型实例的值、引用类型实例的值和引用。值类型表达式的值是数据本身。引用类型表达式的值是引用。引用的值是一个数据块,指向引用类型的实例。注意,上面我说的都是值类型表达式和引用类型表达式,包括局部变量和成员(如字段、属性、索引器)等。现在,我们来考虑以下问题:值类型总是存储在栈上吗?值类型的局部变量总是存储在栈上吗?值类型要么存储在栈上,要么存储在堆上,是这样吗?引用的值是引用类型实例所在的地址吗?对于上面这些问题,您的答案是什么呢?误区:值类型到底存储在哪?在谈到值类型和引用类型的区别时,很多初学者常说值类型分配在方法的调用栈(或线程栈)上,引用类型分配在托
阅读全文
摘要:请参考:http://bbs.51aspx.com/showtopic-9504.htmlhttp://bbs.51aspx.com/showtopic-44661.html
阅读全文
摘要:需要时Ctrl+F用关键字查找吧using System;using System.Collections.Generic;using System.Text;using Microsoft.Win32; //对注册表操作using System.Collections; //使用Arraylistusing System.Security.Cryptography;//加密解密using System.IO; //文件操作using System.Runtime.InteropServices;//调用DLL DllImportusing System.Management; //获...
阅读全文
摘要:根据上次的评测结果,我们了解了几种字符串拼接方式的性能高低。从中可以看出,广受追捧的StringBuilder性能似乎并不是最好的,String.Concat方法有时候有时候更适合使用。那么为什么String.Concat方法性能那么高,StringBuilder又为什么落败,而我们又有没有什么可以改进的做法呢?为此,我们不妨动用.NET Reflector这一利器,看一下两者是怎么实现的。String.Concat为什么这么快String.Concat方法有多个重载,其中我们关注那个接受字符串数组作为参数的重载,它是实现的核心。代码如下:public static string Concat
阅读全文
摘要:首先先声明 除了对字符串的操作比较多之外 随便用哪种其实对系统的性能都差不太多看到这个标题是不是觉得很奇怪呢?字符串连接的性能,这个话题已经被谈了一遍又一遍,一次又一次,似乎已成定论,这又有什么好谈的呢?不过说来奇怪,根据我的实验结果在网上进行搜索,却找不到答案。因此,我现在和大家一起重新再作一次实验并观察结果。在文章最后我也会给出完整的代码,您可以自由地运行,修改,尝试,我们再一起进行交流。说起字符串拼接,最简单的方式便是使用最普通的连接操作“+”,以及StringBuilder了。为此,我们准备一些测试代码:private static readonly string STR = &quo
阅读全文
摘要:为什么要用多线程: 让计算机“同时”做多件事情,节约时间 后台运行程序,提高程序的运行效率,也不会使主界面出现无响应的情况 可以让一个程序“同时”处理多个事情 计算机CPU大部分时间处于空闲状态,浪费了CUP资源进程与线程:运行的一个程序就叫进程,一个进程至少有一个线程(默认UI线程),同一个进程中的多个线程之间可以“并发”执行线程是程序中的一个执行流,每个线程都有自己的专有寄存器(栈指针、程序计数器等),但代码区是共享的,即不同的线程可以执行同样的函数多线程是指程序中包含多个执行流,即在一个程序中可以同时运行多个不同线程来执行不同的任务(代码),也就是说允许单个程序创建多个并执行的线...
阅读全文
摘要:using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.ServiceModel;using System.Runtime.InteropServices;namespace MyWeather{ public partial class Form1 : Form { [StructLa...
阅读全文
摘要:[转载]HttpModule和HttpHandler 区别与比较HttpModule概述暂时先不考虑我们自己实现Http Module的情况。在.Net中,Http Module 是实现了IHttpModule接口的程序集。IHttpModule 接口本身并没有什么好大写特写的,由它的名字可以看出,它不过是一个普普通通的接口而已。实际上,我们关心的是实现了这些接口的类,如果我们也编写代码实 现了这个接口,那么有什么用途。一般来说,我们可以将Asp.Net中的事件分成三个级别,最顶层是 应用程序级事件、其次是页面级事件、最下面是控件级事件,事件的触发分别与 应用程序周期、页面周期、控件周期紧密相
阅读全文
摘要:IIS 6的核心在于工作进程隔离模式,而应用程序池则是定义工作进程如何进行工作,因此,可以说应用程序池是整个IIS 6的核心。和IIS 5中只能使用单个应用程序池不同,工作在工作进程隔离模式的IIS 6可以创建多个应用程序池,不同的应用程序池之间是完全隔离的,某个应用程序池停止服务时不会影响到其他应用程序池。在使用应用程序池之前,你应该确定你所需要的应用程序池数量。可能有很多朋友会认为,既然不同的应用程序池之间是完全隔离的,那么我只需要为每个Web站点创建一个应用程序池就可以了。这个办法在IIS服务器上具有较少的Web站点数量时可以使用,但是如果IIS服务器上具有很多Web站点数量,那么这个办
阅读全文
摘要:在.net 编程环境中,系统的资源分为托管资源和非托管资源。 对于托管的资源的回收工作,是不需要人工干预回收的,而且你也无法干预他们的回收,所能够做的只是了解.net CLR如何做这些操作。也就是说对于您的应用程序创建的大多数对象,可以依靠 .NETFramework 的垃圾回收器隐式地执行所有必要的内存管理任务。 对于非托管资源,您在应用程序中使用完这些非托管资源之后,必须显示的释放他们,例如System.IO.StreamReader的一个文件对象,必须显示的调用对象的Close()方法关闭它,否则会占用系统的内存和资源,而且可能会出现意想不到的错误。 我想说到这里,一定要清楚什么是...
阅读全文

浙公网安备 33010602011771号