上一页 1 ··· 3 4 5 6 7 8 9 10 11 12 下一页
摘要: .NET Remoting是用来远程调用对象的,何为远程?其实不一定非要在两台相隔千里的机器上。只要是不同应用程序域的对象调用就是属于远程调用。通常源应用程序域就叫做服务器端,本地应用程序域就叫客户端。.NET Remoting大致可以分为三个部分:1.宿主应用程序(域),服务程序运行的环境(服务对象所在的AppDomain),它可以是控制台应用程序,Windows窗体程序,Windows 服务,或者是IIS的工作者进程等。上例中为 NewDomain。2.服务程序(对象),响应客户请求的程序(或对象),通常为继承自MarshalByRefObject的类型,表现为一个程序集。上例中为 De. 阅读全文
posted @ 2011-03-10 10:59 雁北飞 阅读(243) 评论(0) 推荐(0) 编辑
摘要: 首先来了解下应用程序与的概念。应用程序域:windows操作系统运行的基本单位是进程,而进程是直接运行于非托管的环境下的,我们的.NET应用程序最终也是需要运行在进程之上。可是我们得知.NET应用程序是要运行在托管环境下的,进程的运行环境是非托管的。这时就需要一个中介者,运行于非托管的进程之上,并向我们的.NET应用程序提供托管环境,这就是AppDomain应用程序域。而且一个进程可以有若干个应用程序域。这样可以减少进程频繁切换带来的性能开销。在以前的windows程序下我们不能直接跨越进程来访问另外一个进程的对象,这属于进程的隔离级别,在.NET应用程序下,我们不能直接跨越应用程序来访问另外 阅读全文
posted @ 2011-03-10 10:19 雁北飞 阅读(173) 评论(0) 推荐(0) 编辑
摘要: .net的引用类型相互赋值是使他们的引用指向同一个堆栈。如:Object A=new Object(); Object B=A;这是A和B的引用时指向同一个堆地址的。如果我们想实现在堆上分配相同结构的堆,但是地址不同,这就需要借助到浅拷贝和深拷贝了。浅拷贝通过object的MemberwiseClone 方法创建一个浅表副本,方法是创建一个新对象,然后将当前对象的非静态字段复制到该新对象。如果字段是值类型的,则对该字段执行逐位复制。如果字段是引用类型,则复制引用但不复制引用的对象;因此,原始对象及其复本引用同一对象。public object NoDeepClone(){ClassA cla. 阅读全文
posted @ 2011-03-09 22:10 雁北飞 阅读(176) 评论(0) 推荐(0) 编辑
摘要: 在.NET中,系统资源是分为两种的,一种是托管资源,一个是非托管资源。对于托管资源,.NET的GC回收器能在某些特定的时刻(如内存不足的时候)对其进行回收。而非托管资源是必须进行显示释放的,GC回收器并不能对其进行回收。在.NET下,对一个类声明虚构函数的时候,C#编译器会将其编译为对Finalizer方法的调用。而有实现Finalizer方法和没有实现Finalizer方法在GC的回收过程中是有区别的。没有显示Finalizer的情况下:GC在回收的过程中,会去扫描一张表,该表记录着有实现Finalizer的类,若发现该类的实列没有再被引用并且在表中找不到记录,则直接对其进行回收。如果类实. 阅读全文
posted @ 2011-03-09 12:25 雁北飞 阅读(186) 评论(0) 推荐(0) 编辑
摘要: 上周五接到一个任务,就是PHP组会传递一些数据过来,我要完成的任务就是将这些数据库导出然后插入数据库,周四下午恰好在学习XML的序列化。于是经过讨论后决定传递过来的数据用XML格式,我对其进行反序列化,然后插入数据库。但是后来发现,这样反序列化后,得到的是一个数组对象。最简单的方法就是用一个for循环将其一个个插入数据库,但是觉得这样的效率太低了。于是在网上找了下关于批量插入数据库的资料。找到两个可行方案,接下来对这两个可行方案进行备忘。 1.用ADO.NET的一个新特性:SqlBulkCopy.将传递过来的xml文件读入到DataSet中,当然还要对这个xml进行数据格式上的Xsd验证。代. 阅读全文
posted @ 2011-03-08 11:56 雁北飞 阅读(2210) 评论(1) 推荐(1) 编辑
摘要: 1.在进行sql时间查询匹配的时候,用builder.AppendFormat(" and CheckTime>='{0}'",searchInfo.CheckTime.ToString("yyyyMMdd"))这样比较合理,能利用到索引。 2.string a="1"; bool b=Convert.ToBoolean(a);抛出异常,也就意味着TryPrase返回为假。 3.DateTime.ToString("yyyy-MM-dd HH:mm:ss");和DateTime.ToStrin 阅读全文
posted @ 2011-03-03 23:25 雁北飞 阅读(292) 评论(0) 推荐(0) 编辑
摘要: 在90W条数据的情况下。没有非集簇索引的插入统计开销是: 其中逻辑扫描次数是3次。 在有集簇索引的情况下是:其中逻辑扫描是15次。 可以得出在非聚簇索引对insert 语句的执行影响效率更大。 阅读全文
posted @ 2011-02-28 10:51 雁北飞 阅读(214) 评论(0) 推荐(0) 编辑
摘要: 简要介绍.NET下多线程应用程序中可以用来同步资源访问的功能和类。Lock关键字: lock 关键字可以用来确保代码块完成运行,而不会被其他线程中断。这是通过在代码块运行期间为给定对象获取互斥锁来实现的。 lock 语句以关键字 lock 开头,它有一个作为参数的对象,在该参数的后面还有一个一次只能由一个线程执行的代码块。例如:View Code 1 public void Function()2 {3 System.Object lockThis = new System.Object();4 lock(lockThis)5 {6 // Access thread-sensitive re. 阅读全文
posted @ 2011-02-28 10:19 雁北飞 阅读(147) 评论(0) 推荐(0) 编辑
摘要: 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 6 namespace ObjectDemo 7 { 8 class Program 9 {10 static void Main(string[] args)11 {12 Person person = new Person { age = 10, Name = "wuxiaoqian" };13 Console.WriteLine("Age={0},Name={1}&qu 阅读全文
posted @ 2011-02-25 17:06 雁北飞 阅读(142) 评论(0) 推荐(0) 编辑
摘要: 在博客园的一篇文章http://www.cnblogs.com/yuyijq/archive/2011/02/22/1960273.html#2033074里面说到对于I/O密集型不需要创建一个专门的线程来执行。用异步会更合理一些。 笔者这样认为的:ThreadPool.QueueUserWorkItem((state) => {Download();});这样不高效,虽然Download的方法放到一个辅助线程来执行。但是这个线程在等待I/O请求时也是没有做其他事情。笔者认为用异步调用更高效。于是就不明白,为什么用异步调用更高效?不明白之处:下面这个是MSDN的原话:如果调用“Begin 阅读全文
posted @ 2011-02-25 11:10 雁北飞 阅读(299) 评论(0) 推荐(0) 编辑
上一页 1 ··· 3 4 5 6 7 8 9 10 11 12 下一页