随笔分类 - .NET Framework
摘要:.NET的垃圾回收器是用一种叫代的原理,假设以下三种情况成立,则提出了代的概念。越是新的对象,他的生存周期就越短越是老得对象,它的生存周期就越长回收一部分堆对象比回收全部堆对象性能高第一步:当声明A-E 五个对象,它们在堆栈的分配情况(垃圾回收机制没有扫描之前),稍后,C和E对象变的不可达第二步:当CLR初始化时,它为第零代分配了256K的空间(可能不同),代越高分配的内存越多。假设A-E分配了占用完了256k的内存,当F对象又被声明时,回收器就会进行第零代回收,C和E被回收,A,B,D被提升到一代。第三步:F-K对象被分配到第零代,稍后,B,H和J变的不可达。如图,第四步:但是垃圾回收器会检
阅读全文
摘要:一、弱引用: 我们设计全局缓存时,使用静态或全局字段来引用某个对象,做到一次创建多次使用。比如: class Program { private static DataCache _cache; public static DataCache Cache { get { if(_cache == null) _cache = new DataCache(); return _cac...
阅读全文
摘要:1. 解决线上.NET应用程序的如下问题:崩溃CPU高程序异常程序Hang死2. 安装WinDbg:http://msdn.microsoft.com/en-us/windows/hardware/gg463009.aspx3. 配置WinDbg:运行WinDbg->菜单->File->Symbol File Path->按照下面的方法设置_NT_SYMBOL_PATH变量:在弹出的框中输入“C:\MyCodesSymbols; SRV*C:\MyLocalSymbols*http://msdl.microsoft.com/download/symbols”(按照这样设
阅读全文
摘要:CLR Profile能够看到应用程序的内存堆栈情况并且能够查询垃圾回收机制的行为。利用CLR Profile可以确定你的代码哪儿分配了太多内存,从而导致垃圾回收机制的执行,哪些代码长时间的占有内存。不过CLR Profile不适合在生产环境下使用,因为如果用它,会使你的应用程序的性能下降10倍甚至100倍。请从http://download.microsoft.com/download/4/4/2/442d67c7-a1c1-4884-9715-803a7b485b82/clr%20profiler.exe下载CLR ProfileCLR Profile 可以做:查看托管堆上的对象查看托管堆
阅读全文
摘要:原因 :The Cast method only supports reference and boxing conversions. Use Select instead:就是说cast<>()方法只支持装箱和拆箱操作,其他强制类型转换不支持。比如:你要完成以下代码,会抛出异常的: static void Main(string[] args) { Hashtable st = new Hashtable(); st.Add("a",12); st.Add("b",13); st.Add("c", 14); double
阅读全文
摘要:去MSN中国面试,几个问题,回答的不好。虽然很基础,~(@^_^@)~比如什么是CLR?为什么有C#委托?.NET的优点.为什么选.NET作为平台开发?以及怎样优化SQL语句?一条SQL语句是怎样请求运行的?Silerlight的优点?相比Flash?第一个问题什么是CLR:首先要清楚的是,.NET平台与C#不是一回事.对开发人员来讲他有俩个概念:首先,它是C#,VB.net等程序运行的平台;其次,它因为为这些语言提供了丰富的类库(称之为基类库) 对于一个将要面向.NET平台进行开发的人来说,了解一下.NET平台的整个构成是非常有必要的,如图1所示即说明了.NET平台的整体结构:这个图就是著名
阅读全文
摘要:一。需求:要实现跨域的文件传输,需要解决以下两点:必须能够穿越防火墙,大文件的传输(>400M)。目的地的客户端必须能够随时检查到传输来的文件并进行处理。必须提供队列的可靠的消息传递。基于以上的问题我们提出了以下的解决方案。二。基本结构:三。 基本流程:导出数据的基本流程:导入基本流程图:三。Code,利用到了Service Broker ,WCF,Windows Service。Service Broker 简介Service Broker 体系结构Service Broker整个实践过程创建简单的Window Service 实例WCF 基本概念WCF通道模型WCF绑定WCF契约编程
阅读全文
摘要:1。 新建一个Window Service类型项目:2。 增加Window Service 业务功能。用一个计时器模拟xml文件解析,具体实现省,并记日志。Service1代码:using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Diagnostics;using System.ServiceProcess;using System.Text;namespace WindowsService1{ public partial class
阅读全文
摘要:通知正在等待的线程已发生事件。无法继承此类。 AutoResetEvent 允许线程通过发信号互相通信。通常,此通信涉及线程需要独占访问的资源。线程通过调用 AutoResetEvent 上的 WaitOne 来等待信号。如果 AutoResetEvent 处于非终止状态,则该线程阻塞,并等待当前控制资源的线程通过调用 Set 发出资源可用的信号。调用 Set 向 AutoResetEvent 发信号以释放等待线程。AutoResetEvent 将保持终止状态,直到一个正在等待的线程被释放,然后自动返回非终止状态。如果没有任何线程在等待,则状态将无限期地保持为终止状态。可以通过将一个布尔值传递
阅读全文
摘要:using Newtonsoft.Json;using Newtonsoft.Json.Converters;//把Json 字符串反序列化为对象目标对象 = JavaScriptConvert.DeserializeObject(JSON字符串, typeof (目标对象));//把目标对象序列化为Json字符串string Json字符串 = JavaScriptConvert.SerializeObject(目标对象);代码:protected void Page_Load(object sender, EventArgs e) { Student student = new Stude
阅读全文
摘要:1, .NET继承本质论 (地址引用):http://www.cnblogs.com/pbwf/archive/2008/03/27/1125451.html 2, .NET Delegate 和 Event实质 (地址引用):http://developer.51cto.com/art/200909/150396.htm3, .NET多线程编程:C#多线程编程(1):线程的启动 多线程编程(2):线程的同步 多线程编程(3):线程池ThreadPool
阅读全文
摘要:很多系统都有其自身的垃圾回收,其回收机制大体是相同的。它们使程序员从跟踪内存使用的繁重任务中解脱出来。虽然大多数回收器都要求应用程序不时地暂停从而释放不再使用的内存。但C#中的回收器效率还是很高的。 垃圾回收器的基本假定: 1.被分配内存空间的对象最有可能被释放。在方法执行时,就需要为该方法的对象分配内存空间,搜索最近分配的对象集合有助于花费最少的代价来尽可能多地释放内存空间。 2.生命期最长的对象释放的可能性最小,经过几轮垃圾回收后,对象仍然存在,搜索它时就需要进行大量的工作,却只能释放很小的一部分空间。 3.同时被分配内存的对象通常是同时使用,将它们彼此相连有助于提高缓存性能和回收效率 .
阅读全文