程序设计
文章平均质量分 77
月影
时势造英雄,英雄亦适时!
展开
-
我的AOP实现
起初听到AOP,觉得又是一个高深的技术,需要好好学学。第一次学习AOP,唯一学到的一点知识就是它的中文名称“面向切面的编程”。面向切面的编程?跟面向对象的编程有什么关系?我需要学习吗?后来其他的疑问充斥了我的大脑,这些疑问也就渐渐的远去了。 技术要为金钱服务,若干年后,为了这个目的。我不得不又去研究AOP。早就听说java的spring框架实现了AOP。可是我走了另一条路。没办法,原创 2008-10-27 16:20:00 · 1473 阅读 · 0 评论 -
使用visual studio开发android程序
要在visual studio中开发安卓应用,需要安装从xamarin官网下载安装xamarin for visual studio。安装完毕,会发现android sdk中的一步分安装失败,这是因为xamarin for visual studio虽然包含了android sdk安装,但是只是包含了一部分,具体的api level和android虚拟机镜像都需要联网下载。因为我们大天原创 2016-05-22 06:50:14 · 16770 阅读 · 0 评论 -
IEditableObject的一个通用实现
IEditableObject的一个通用实现IeditableObject是一个通用接口,用于支持对象编辑。当我们在界面上选择一个条目,然后对其进行编辑的时候,接下来会有两种操作,一个是保持编辑结果,一个取消编辑。这就要求我们保留原始值,否则我们只能到数据库里面再次查询。IeditableObject接口的三个方法定义为我们定义了这个行为规范: public interface IEditable原创 2014-04-29 10:29:27 · 2594 阅读 · 0 评论 -
创建自己的AutoMapper类,从此不用手动建立对象映射
AutoMapper-对象自动映射在企业应用开发中,很多时候都需要将一个对象转换为另一个对象,比如说在WCF应用的开发中,需要将一个Entity转换为一个Contract对象。大部分情况下,这两个对象会非常相似,有个相同的属性名和类型。如果每次我们都要手写这中转换代码,不但容易出错,而且工作量也非常可观。所以开发一个自动映射类还是非常必要的。我们把此类命名为AutoMapper,它应该实现以下原创 2014-04-24 15:47:01 · 11262 阅读 · 0 评论 -
自定义AsyncResult
.net中提供的APM编程模型主要为了实现两个需求:1. 非阻塞模型。例如一个UI客户端要运行一个复杂算法得到一个结果,这时候UI最好是不能卡住的,所以就需要使用APM模式。2. 节约线程资源在使用同步API来访问网络的时候,在结果返回之前,无论是UI线程还是线程池线程,客户端会有一个UI线程在等待。此线程浪费了内存资源,所以最好应该避免这么做,这时候也需要使用原创 2014-04-23 11:00:06 · 5829 阅读 · 0 评论 -
GC总结
内存基础知识下面的列表总结了重要的 CLR内存概念。· 每个进程都有其自己单独的虚拟地址空间。同一台计算机上的所有进程共享相同的物理内存,如果有页文件,则也共享页文件。· 默认情况下,32 位计算机上的每个进程都具有 2 GB 的用户模式虚拟地址空间。· 作为一名应用程序开发人员,您只能使用虚拟地址空间,请勿直接操控原创 2013-12-26 17:49:49 · 4930 阅读 · 0 评论 -
使用性能计数器监控应用程序
监控应用程序的性能的一个很好的办法就是使用Performance Counter。Windows提供了系统工具来显示PerformanceCounter收集的数据,在运行对话框中输入perfmon,就可以调出该工具来显示PerformanceCounter收集的数据。如果在工具中添加一个Performance Counter,就会发现,每一个Performance Counter都会属于一个目录,原创 2013-12-31 22:55:33 · 1989 阅读 · 0 评论 -
字符串搜索树
字符串搜索树支持使用字符串对对象建立索引,以便于查询。 这些字符串应该都是从对象的属性上获取的。而且可以按照指定的规则将字符串分解为单词。Insert方法用来在一个单词和指定对象之间建立关联。Remove方法用来在索引树中删除一个指定对象。Prune方法用于在删除了大量对象后,优化索引树,删除那些没有作用的节点。Find方法用来查找对象;支持通配符查找, 通配符为*,而且只能放在查原创 2013-03-14 11:00:20 · 1051 阅读 · 0 评论 -
一个简单的Undo Redo Framework
下面的代码构建了一个实现撤销和重做功能的框架。实现非常简单,只有三个类。ICommand类定义了一个可以重做和撤销的命令所需要实现的接口。CompositeCommand类实现了该类,封装了将一组Command作为单一命令撤销和重做的功能,这是一个Composite模式的一个简单原创 2011-07-20 15:59:06 · 919 阅读 · 0 评论 -
基于Dictionary的字符串格式化
基于名称的字符串格式化,从String.Format方法扩展功能原创 2011-05-03 16:27:00 · 2102 阅读 · 0 评论 -
再谈透明代理
创建一个对象,让它可以转换为任何接口,并且拦截所有调用。原创 2011-05-31 13:37:00 · 8789 阅读 · 1 评论 -
四叉树C#实现
四叉树是用于二维空间对象查找的一个数据结构,本实现包括了三个类:QuadTree,QuadTreeNode, QuadNodeItem。见名思意用于对外提供构建和查找功能的接口都定义在泛型的QuadTree中,QuadTreeNode类和QuadNodeItem类都做为QuadTree类的内部类型实现,对外不可见。原创 2010-12-10 14:54:00 · 9293 阅读 · 8 评论 -
解决事件会引起内存泄漏的问题:Weak Event Handlers
解决事件相关的问题: Weak Event Handlers问题回放如果使用不当,代理可能会造成内存泄漏。例如,我们为一个事件添加了处理函数,却忘记了移除该处理函数,而且声明事件的那个对象生命周期长于处理函数所在的对象,这时内存将会泄漏。见下图。 在上图中,对象“eventExposer”声明了事件“SpecialEvent”。然后对象“myForm”在该事件上添加了一个处理函翻译 2010-04-02 16:40:00 · 2840 阅读 · 2 评论 -
关于.NET应用程序中的资源
.NET应用程序中的资源几乎每个人都要使用资源,资源是任何可被跟随应用程序逻辑部署的非可执行数据。一个资源可以是在应用程序出错是显示的一个错误消息,或者是用户界面的一部分。资源可以包含多种形式的数据,包括字符串,图像和任何可被持久化到资源文件中的对象,这些对象必须是可序列化的。原创 2011-05-30 15:17:00 · 2134 阅读 · 2 评论