摘要: 前段时间看了《【面试】——反应迟钝的递归》中的三个递归算法,斐波那契数列优化后的算法思路确实不错,但是后面2个数列用递归的话,个人感觉有点得不偿失。能不用递归的话,尽量不用,因为有些算法完全可以用数学来解决。因此,本文中将这三个数列的最终算法总结如下。1、计算数组1,1,2,3,5,8,13...第30位的值递归算法如下:publicstaticintCalculateFibonacciSequence(intindex){if(index<=0){return0;}if(index==1||index==2){return1;}returnCalculateFibonacciSeque阅读全文
posted @ 2012-02-22 01:02 JasenKin 阅读(2458) 评论(23) 编辑
摘要: 一、前言上一篇随笔主要将实体转换成相应的Xml或者Xml对象,未考虑到属性的Attribute特性,以后有时间再整理一下。本文中的Xml匹配涉及到类的特性和属性的特性,并且对该类的匹配进行了相应的优化,尽量将反射引起的性能问题降低最低(其实,对于对象数量不是很多的Xml匹配,性能是可以忽略不计的)。 二、类图设计主要思路为:通过反射将与类名的节点匹配,然后匹配属性(属性特性名称或者属性名称)值,设计图如下所示: 类图中各个类的作用如下: PropertyAttribute、ClassAttribute、StringExtension、FuncDictionary的作用详见XmlAttri...阅读全文
posted @ 2012-02-19 11:38 JasenKin 阅读(1269) 评论(3) 编辑
摘要: 一、前言 上篇随笔主要是针对于Xml的特性Attribute与实体之间的匹配与转换。该篇随笔主要内容为将对象转换成相应的Xml以及XElement。这2篇随笔以不同的方式对Xml进行转换与匹配,每种匹配都采用不同的角度进行操作。本文主要为对象实体的转换,下篇侧重于Xml的匹配。 二、Xml转换 2.1 实体集合转换Xml实体集合转换Xml的方法为:public static string ToXml<T>(IList<T> entities, string rootName = "") where T : new(),通过传入的实体集合对象和Xml根阅读全文
posted @ 2012-02-19 09:46 JasenKin 阅读(1102) 评论(3) 编辑
摘要: 一、前言 可扩展标记语言 (XML) 是具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。XML是用来存储数据的,重在数据本身。本文中的代码是几个月前整理的,最近几个月的时间很少写随笔,除了工作以外,主要还是忙于整理自己的框架。这篇随笔主要是针对于XML的特性Attribute与实体之间的匹配与转换,其中的内容包括反射、XML以及LinqToXml,代码的内容也是想到什么就写什么,纯属练习下手感,仅供参考。下一篇随笔将以另外的形式来转换Xml为对象实体,当然,也是以反射为主,和本随笔中的思路差不多,主要是XML的格式和解决方案不同而已。对于.阅读全文
posted @ 2011-12-31 01:14 JasenKin 阅读(1378) 评论(3) 编辑
摘要: 一、前言IronRuby是.NET下的一个Ruby实现,此外还有Ruby.net这一开源项目,二者的主要区别是IronRuby利用了Microsoft最新推出的DLR,而Ruby.net则是完全利用原有的CLR实现的。IronRuby入门可参阅http://msdn.microsoft.com/zh-cn/magazine/dd434651.aspx。关于IronRuby的一些基本操作,本文不会涉及,本文仅仅是IronRuby对Ruby操作的一个具体实例。其中包括对所有Ruby类的类名,方法名以及参数列表的获取与显示相关的树结构。究其原因采用IronRuby来进行操作,主要是因为通过Ruby的阅读全文
posted @ 2011-10-24 23:00 JasenKin 阅读(1054) 评论(8) 编辑
摘要: /Files/jasenkin/AntlrProject.rar阅读全文
posted @ 2011-09-30 23:54 JasenKin 阅读(87) 评论(0) 编辑
摘要: 一、前言虚拟模式在许多情况下都很有用。 如果必须从已存在于内存中的非常大的集合填充一个 ListView 对象,则为每项创建一个 ListViewItem 对象会很浪费。 在虚拟模式下,从缓冲之中获取所需的数据进行加载,性能会有很大提高。 在其他情况下,可能需要经常重新计算 ListViewItem 对象的值,对整个集合进行此操作将产生不可接受的性能。如下为虚拟模式的一个应用示例(仿VS2010错误列表),截图如下:二、虚拟模式相关注意点1、设置一个缓存属性,来保存需要加载的数据: protected List<ListViewItem> CurrentCacheItemsSour阅读全文
posted @ 2011-08-22 00:00 JasenKin 阅读(1943) 评论(6) 编辑
摘要: 一、前言 插件模型指应用程序由一些动态的独立模块构成,每个模块均具有一个或多个服务,并满足一定的插件协议,能够借助主程序实现主程序-插件,插件-插件之间的通讯。它定义了一套公共的接口,通过接口与插件进行通信,主要是通过反射来获取相关的属性和方法,然后再执行指定的操作。其实,它也可以理解为定义一套通用的解决方案,通过反射来获取相应的程序集的相关类型,然后执行这些指定类型的相关操作。它是一种即插即用的方案,更新及维护简便。本文仅仅是描述插件开发的大体模型,设计比较简单,主要的步骤如下:(1)、定义公共的接口以及抽象类。(2)、定义和实现相关组件。(3)、实现通用程序集反射操作类。其中,公共的接口和阅读全文
posted @ 2011-07-15 13:29 JasenKin 阅读(2904) 评论(11) 编辑
摘要: 一、前言 紧跟着上一篇随笔,本文主要涉及到如何将xml与xsl动态转换成html,这个才是最关键的地方,所有的内容都是围绕这个主题来进行开展的。根据指定的xsl样式将List<T>转换相应的Html,相关的随笔如下:(一)、将List<T>转换成DataTable。(二)、将Xml与Xsl动态转换成Html。(三)、设置以及控制Xsl的内容样式。二、XslTransform的具体实现XslTransform主要的职责为:将xml与xsl动态转换成html。其中,XslCompiledTransform提供了很多方法可以进行相关的转换,但使用起来并不是十分方便,因此必须在阅读全文
posted @ 2011-05-25 07:29 JasenKin 阅读(1967) 评论(11) 编辑
摘要: 阅读全文
posted @ 2011-05-24 00:22 JasenKin 阅读(1936) 评论(20) 编辑
摘要: (一)前言继《对象属性之间的相互赋值 》后,关于集合对象属性的赋值,主要可以通过循环遍历集合中的对象来进行属性间的赋值。这些可以运用于不同对象之间、相关属性类似的情况。最常见的是web services与silverlight之间的对象赋值(对象之间的属性值只有一部分是需要的),这样可以减少silverlight对web services的依赖。(二)具体实现通过反射将源对象与目标对象之间的属性赋值。源对象的属性名、属性类型必须与目标对象的属性名、属性类型一致,并且源对象的属性必须是可读的,目标对象的属性是可写的(仅针对于需要赋值的属性来说)。具体的源代码如下:1publicclassObje阅读全文
posted @ 2011-05-13 08:33 JasenKin 阅读(1573) 评论(17) 编辑
摘要: (一)前言目前,在Silverlight中下载文件通常采用两种方式进行文件下载:1、客户端通过SaveFileDialog类进行文件下载,服务端使用字节数组(byte[])进行数据传递。2、客户端通过访问服务端的一般处理文件(.ashx)来进行文件下载。对于第1种方式下载,缺陷主要为:点击下载之后,弹出的SaveFileDialog对话框居然没有文件名!!!(必须自己手写文件名,这里Silverlight还有待提高)。Silverlight中的SaveFileDialog相关属性和方法如下:1publicsealedclassSaveFileDialog2{3publicSaveFileDia阅读全文
posted @ 2011-05-08 21:47 JasenKin 阅读(2512) 评论(8) 编辑
摘要: (一)前言由于项目的需求,必须用silverlight实现表格形式的预警图。在Silverlight中表格形式的最佳方式为Grid,虽然Grid提供了ShowGridLine属性,但是该线条为虚线,外观看起来很不协调。开始的时候,本人打算在每个Cell中采用Border来设置线条。这样虽然可以实现实线,但是每行每列都会涉及到单元格与单元格之间的重叠,以及第一列与最后一列、第一行与最后一行的线条控制需要复杂的算法来控制,因此这种方式肯定是行不通的(不是实现不了,而是将简单的问题复杂化了)。下面讲解的是另外一种方式,采用添加直线的方法来绘制实线。(二)类图设计下面所涉及的都是针对于特定情况下的Gr阅读全文
posted @ 2011-05-01 18:07 JasenKin 阅读(2719) 评论(16) 编辑
摘要: (一)前言当不同命名空间下的两个类具有相同的属性,并且需要进行相互赋值时,如下图中的Jasen.Core.Info类的实例与Jasen.Core.Test.Info类的实例需要相互赋值时,按照一般的思路直接赋值就可以了。通常,这种情况在调用Web Service的时候比较常见。当需要转换的类很多时,亦或者需要转换的属性很多时,我们就需要根据一定的规则来对这种场景来进行设计了,谁也不会傻布拉吉的一个一个属性的去给对象赋值。(二)ObjectMapper类负责对象之间相对应的属性间的赋值1///<summary>2///3///</summary>4publicclassO阅读全文
posted @ 2011-03-31 23:58 JasenKin 阅读(1641) 评论(6) 编辑
摘要: Xml作为数据存储的一种方式,当数据非常大的时候,我们将碰到很多Xml处理的问题。通常,我们对Xml文件进行编辑的最直接的方式是将xml文件加载到XmlDocument,在内存中来对XmlDocument进行修改,然后再保存到磁盘中。这样的话我们将不得不将整个XML document 加载到内存中,这明显是不明智的(对于大数据XML文件来说,内存将消耗很大,哥表示鸭梨很大)。下面我们将要讲的是如何...阅读全文
posted @ 2011-02-20 01:50 JasenKin 阅读(2746) 评论(12) 编辑
摘要: 一直以来对框架非常感兴趣,对大多数框架(目前本人看过的)来说一般分为三个部分:(1):拼接SQL语句(反射)。(2):执行CRUD操作,获取相应的DataTable、DataSet等等。(3):将相应的DataTable、DataSet转换成对象(反射)。因此可以将上述3个部分各个击破,一步一步来实现自己的框架,看的框架多了,也就成了路。反射在这里面被淋漓尽致的运用,哈哈,站在款哥的肩膀上.......阅读全文
posted @ 2011-02-15 00:37 JasenKin 阅读(3593) 评论(25) 编辑
摘要: 过年的这段时间一直没有闲着,总体来说可以分为以下2个部分的学习。 1:ORMCodeHelper的参考与学习。2:MVC3的学习。对于ORMCodeHelper(Keny的),完全的采用插件式开发,即插即用,个人感觉还是比较爽的,架构不错。它包括了SQL SERVER 2000,SQL SERVER 2005以及ORACLE的相关C#代码的生成。比哥一年前写的那个牛多了,哈哈,哥去年乱写了个网页版的(http://www.cnblogs.com/jasenkin/archive/2010/02/11/1667511.html),现在看一年前的代码,哥感叹,这个谁写的代码,TMD实在写的太烂了!阅读全文
posted @ 2011-02-09 01:16 JasenKin 阅读(3132) 评论(15) 编辑
摘要: 某天下班回来后,习惯性的打开博客园,看看首页有没有感兴趣的文章。在 不重复随机数列生成算法 这篇博文中,发现作者的思路不错。莫名其妙的突然想到如何获取随机颜色的算法以及以图形的方式显示出来,那时候刚好12点了,想睡又睡不着,连着猛写了2个小时代码,大概模型出来了。随后的几天,将近期想到的算法综合起来,因此就有了这么一篇文章。 这篇文章主要有如下3个简单的算法,本人将它们结合起来练习练习手感。(1)...阅读全文
posted @ 2011-01-24 00:26 JasenKin 阅读(2645) 评论(16) 编辑
摘要: 今天中午,大家都在睡觉的时候,本人忙里偷闲找了点资料看了下,箭头算法终于到了最终版本了。非常感谢各位前辈在网上的资料,特别是MFC,JAVA的资料比较多。这里终于也可以告一段落了。 以下是C#的箭头算法,源代码如下:[代码][代码] 具体是通过终点Point的坐标,以及计算出的2个角的坐标,然后通过绘制多边形来绘制箭头。显示效果如下: 这个已经是最终版本的算法,误差几乎可以忽略。上面的方法是可以调用的,大家可以试下,希望能够对各位有所帮助..........阅读全文
posted @ 2011-01-04 21:32 JasenKin 阅读(2894) 评论(10) 编辑
摘要: (一)序 继GC垃圾收集器模拟后,在这段时间境界有所突破,特别是编码风格以及代码质量有所提高,还有就是对程序的整体把握能力有了新的突破。至于突破的原因,归根于某位大虾******(哥被鄙视了N回,哈哈)。通过比较并且分析这位大虾与自己的代码的差距,本人学到了很多东西。有些东西只能意会,反而表达不出来。 以下的内容,本人昨天从早上一直写到晚上,主要是针对如何绘制月信息图(全部是随机的,包括月份数,单位大小等等,这些都是可以设置的,你仅仅需要传递一个需要转换的数据以及几个参数就可以了。连数据是间隔的也可以。)。这个是可以脱离于Winform的,因为本人已经将其分离出来了。还有一点需要说明:本人对W阅读全文
posted @ 2011-01-03 15:45 JasenKin 阅读(2341) 评论(7) 编辑
摘要: 。。。。。。。阅读全文
posted @ 2012-05-31 23:23 JasenKin 阅读(4) 评论(0) 编辑
摘要: 前段时间看了《【面试】——反应迟钝的递归》中的三个递归算法,斐波那契数列优化后的算法思路确实不错,但是后面2个数列用递归的话,个人感觉有点得不偿失。能不用递归的话,尽量不用,因为有些算法完全可以用数学来解决。因此,本文中将这三个数列的最终算法总结如下。1、计算数组1,1,2,3,5,8,13...第30位的值递归算法如下:publicstaticintCalculateFibonacciSequence(intindex){if(index<=0){return0;}if(index==1||index==2){return1;}returnCalculateFibonacciSeque阅读全文
posted @ 2012-02-22 01:02 JasenKin 阅读(2458) 评论(23) 编辑
摘要: 一、前言上一篇随笔主要将实体转换成相应的Xml或者Xml对象,未考虑到属性的Attribute特性,以后有时间再整理一下。本文中的Xml匹配涉及到类的特性和属性的特性,并且对该类的匹配进行了相应的优化,尽量将反射引起的性能问题降低最低(其实,对于对象数量不是很多的Xml匹配,性能是可以忽略不计的)。 二、类图设计主要思路为:通过反射将与类名的节点匹配,然后匹配属性(属性特性名称或者属性名称)值,设计图如下所示: 类图中各个类的作用如下: PropertyAttribute、ClassAttribute、StringExtension、FuncDictionary的作用详见XmlAttri...阅读全文
posted @ 2012-02-19 11:38 JasenKin 阅读(1269) 评论(3) 编辑
摘要: 一、前言 上篇随笔主要是针对于Xml的特性Attribute与实体之间的匹配与转换。该篇随笔主要内容为将对象转换成相应的Xml以及XElement。这2篇随笔以不同的方式对Xml进行转换与匹配,每种匹配都采用不同的角度进行操作。本文主要为对象实体的转换,下篇侧重于Xml的匹配。 二、Xml转换 2.1 实体集合转换Xml实体集合转换Xml的方法为:public static string ToXml<T>(IList<T> entities, string rootName = "") where T : new(),通过传入的实体集合对象和Xml根阅读全文
posted @ 2012-02-19 09:46 JasenKin 阅读(1102) 评论(3) 编辑
摘要: kawei阅读全文
posted @ 2012-01-31 18:20 JasenKin 阅读(52) 评论(0) 编辑
摘要: 一、前言 可扩展标记语言 (XML) 是具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。XML是用来存储数据的,重在数据本身。本文中的代码是几个月前整理的,最近几个月的时间很少写随笔,除了工作以外,主要还是忙于整理自己的框架。这篇随笔主要是针对于XML的特性Attribute与实体之间的匹配与转换,其中的内容包括反射、XML以及LinqToXml,代码的内容也是想到什么就写什么,纯属练习下手感,仅供参考。下一篇随笔将以另外的形式来转换Xml为对象实体,当然,也是以反射为主,和本随笔中的思路差不多,主要是XML的格式和解决方案不同而已。对于.阅读全文
posted @ 2011-12-31 01:14 JasenKin 阅读(1378) 评论(3) 编辑
摘要: /Files/jasenkin/CircularDependencyTool.zip阅读全文
posted @ 2011-11-08 07:31 JasenKin 阅读(44) 评论(0) 编辑
摘要: 一、前言IronRuby是.NET下的一个Ruby实现,此外还有Ruby.net这一开源项目,二者的主要区别是IronRuby利用了Microsoft最新推出的DLR,而Ruby.net则是完全利用原有的CLR实现的。IronRuby入门可参阅http://msdn.microsoft.com/zh-cn/magazine/dd434651.aspx。关于IronRuby的一些基本操作,本文不会涉及,本文仅仅是IronRuby对Ruby操作的一个具体实例。其中包括对所有Ruby类的类名,方法名以及参数列表的获取与显示相关的树结构。究其原因采用IronRuby来进行操作,主要是因为通过Ruby的阅读全文
posted @ 2011-10-24 23:00 JasenKin 阅读(1054) 评论(8) 编辑
摘要: 一、前言虚拟模式在许多情况下都很有用。 如果必须从已存在于内存中的非常大的集合填充一个 ListView 对象,则为每项创建一个 ListViewItem 对象会很浪费。 在虚拟模式下,从缓冲之中获取所需的数据进行加载,性能会有很大提高。 在其他情况下,可能需要经常重新计算 ListViewItem 对象的值,对整个集合进行此操作将产生不可接受的性能。如下为虚拟模式的一个应用示例(仿VS2010错误列表),截图如下:二、虚拟模式相关注意点1、设置一个缓存属性,来保存需要加载的数据: protected List<ListViewItem> CurrentCacheItemsSour阅读全文
posted @ 2011-08-22 00:00 JasenKin 阅读(1943) 评论(6) 编辑
摘要: 一、前言 插件模型指应用程序由一些动态的独立模块构成,每个模块均具有一个或多个服务,并满足一定的插件协议,能够借助主程序实现主程序-插件,插件-插件之间的通讯。它定义了一套公共的接口,通过接口与插件进行通信,主要是通过反射来获取相关的属性和方法,然后再执行指定的操作。其实,它也可以理解为定义一套通用的解决方案,通过反射来获取相应的程序集的相关类型,然后执行这些指定类型的相关操作。它是一种即插即用的方案,更新及维护简便。本文仅仅是描述插件开发的大体模型,设计比较简单,主要的步骤如下:(1)、定义公共的接口以及抽象类。(2)、定义和实现相关组件。(3)、实现通用程序集反射操作类。其中,公共的接口和阅读全文
posted @ 2011-07-15 13:29 JasenKin 阅读(2904) 评论(11) 编辑