随笔分类 -  [22] C#.Net开发

摘要:一、前言在通常的表达式中,二元运算符总是置于与之相关的两个运算对象之间,所以,这种表示法也称为中缀表示。每一运算符都置于其运算对象之后,称为后缀表达式,后缀表达式又叫做逆波兰表达式。它的优势在于只用两种简单操作,入栈和出栈就可以搞定任何普通表达式的运算。其运算方式如下:如果当前字符为变量或者为数字,则压栈,如果是运算符,则将栈顶两个元素弹出作相应运算,结果再入栈,最后当表达式扫描完后,栈里的就是结果。二、一般算法将一个普通的中序表达式转换为逆波兰表达式的一般算法是:(1)首先构造一个运算符栈,此运算符在栈内遵循越往栈顶优先级越高的原则。(2)读入一个用中缀表示的简单算术表达式,为方便起见,设该 阅读全文
posted @ 2013-07-14 21:26 jasen.kin 阅读(4336) 评论(4) 推荐(4) 编辑
摘要:最近一年多来,一直比较忙,最近一段时间终于空闲了,把以前没写的都补上.....这边随笔主要是计算一系列数据的间隔数据。从一堆数据中查询出每个区间的起始数据,结束数据以及数据个数,同时可以设置相应精度(小数位数)。区间数据数据结构1、区间数据主要包括当前区间的起始数据,结束数据以及数据个数。结构如下: public struct IntervalData { private TKey _startValue; private TKey _endValue; private TValue _count; public Interv... 阅读全文
posted @ 2013-07-13 12:13 jasen.kin 阅读(8590) 评论(2) 推荐(3) 编辑
摘要:样本方差与样本标准差1、定义:样本中各数据与样本平均数的差的平方和的平均数叫做样本方差;样本方差的算术平方根叫做样本标准差。 注:样本方差和样本标准差都是衡量一个样本波动大小的量,样本方差或样本标准差越大,样本数据的波动就越大。标准差与标准方差1、定义:方差是各个数据与平均数之差的平方和的平均数。在概率论和数理统计中,方差用来度量随机变量和其数学期望(即均值)之间的偏离程度。标准差在概率统计中最常使用作为统计分布程度上的测量。标准差定义为方差的算术平方根,反映组内个体间的离散程度。加权平均1、定义:加权平均数(weighted average)是不同比重数据的平均数,就是把原始数据按照合理的比 阅读全文
posted @ 2013-07-13 00:10 jasen.kin 阅读(11308) 评论(0) 推荐(1) 编辑
摘要:中位数(Median)1、定义:一组数据按从小到大(或从大到小)的顺序依次排列,处在中间位置的一个数(或最中间两个数据的平均数,注意:和众数不同,中位数不一定在这组数据中)。 注:当个数为基数时,取最中间位置的数;当个数为偶数时,取最中间两个数的平均数。2、从小到大排序,可以先用冒泡排序,然后取中位数,那么先看下冒泡排序算法,代码如下: public static void BubbleSort(this IList array) { if (array == null || array.Count == 0) { ... 阅读全文
posted @ 2013-07-12 23:36 jasen.kin 阅读(22124) 评论(0) 推荐(4) 编辑
摘要:看到的一道题,用递归获取XML元素.... static void Main(string[] args) { string xmlContent = @" ... 阅读全文
posted @ 2013-07-02 23:58 jasen.kin 阅读(2334) 评论(6) 推荐(1) 编辑
摘要:一、前言对于枚举Enum,大家都非常熟悉,但枚举出现的场景非常多的时候,是不是可以抽象出一个通用的解决方式。代码大家都会写,但并不是所有人都喜欢写重复的代码,老是用Ctrl+C和Ctrl+V累不累啊?很多人和我一样,非常不喜欢写重复的代码,代码写多了,BUG就多。对于常见的场景,大部分人都喜欢抽象出来,写一套通用的,每个地方都可以用,而且不易出错。当然,你喜欢Ctrl+C和Ctrl+V,本人也没有办法....二、int值,string值转换成Enum如下,一个简单枚举: public enum ExchangeType { [EnumFieldAttribute("不... 阅读全文
posted @ 2013-07-01 00:12 jasen.kin 阅读(8333) 评论(10) 推荐(6) 编辑
摘要:一、前言类似如下字符串"ID", "NameValue", "CodeValue", "ExchangeTypeValue", 6, "invalid""ID2", "NameValue2", "CodeValue2", "ExchangeTypeValue2", 6, "invalid".......有可能是文件中存在的,或者调用其他程序返回的结构化数据,那么该如何解析?当其他场景中,只是返回顺 阅读全文
posted @ 2013-06-28 22:45 jasen.kin 阅读(6420) 评论(0) 推荐(0) 编辑
摘要:一、前言(1)对于Thread的Abort方法,如果线程当前正在执行的是一段非托管代码,那么CLR就不会抛出ThreadAbortException,只有当代码继续回到CLR中时,才会引发ThreadAbortException。当然,即便是在CLR环境中ThreadAbortException也不会立即引发。(2)对于BackgroundWorker的CancelAsync方法,需要设置WorkerSupportsCancellation属性为True,在执行方法内部检测CancellationPending标识,用户负责退出。(3)对于CancellationTokenSource,场景主 阅读全文
posted @ 2013-06-20 23:37 jasen.kin 阅读(5561) 评论(3) 推荐(3) 编辑
摘要:一、前言上一篇绘制矩形圆角的方式不够完善,感觉写的太过于复杂,将简单的问题复杂化了,本文对此进行了相应的改进,增强对各个圆角的半径的控制。绘制后的圆角效果图如下: 二、圆角半径设计 对于矩行而言,圆角分为左上角、右上角、左下角和右下角。每一个角都会存在相应的半径,用于控制每一个圆角的绘制。设计如下:1publicstructArcRadius2{3privateint_rightBottom;4privateint_rightTop;5privateint_leftBottom;6privateint_leftTop;78publicstaticreadonlyArcRadiusEmpty=. 阅读全文
posted @ 2012-09-22 15:16 jasen.kin 阅读(5769) 评论(13) 推荐(6) 编辑
摘要:一、前言 本文主要介绍C# GDI+如何绘制矩行的圆角,其中涉及到如何使用位操作来处理组合的技巧。GDI+的本质在于,它能够替代开发人员实现与显示器及其它外部设备的交互。对于控件美化而言,需要达到自己期望的效果,GDI+必不可少。绘制后的圆角效果图如下:二、圆角枚举与相应组合处理设计对于矩行而言,圆角分为左上角、右上角、左下角和右下角。组合情况就分为无圆角、一个圆角、二个圆角、三个圆角以及四个圆角。枚举需要满足该组合情况,没必要在枚举中将 全部组合列出,只需要通过位操作就能计算出属于哪种组合。枚举类设计如下:1[Flags]2publicenumRoundStyle3{4None=0,5Top 阅读全文
posted @ 2012-08-26 22:12 jasen.kin 阅读(19236) 评论(16) 推荐(6) 编辑
摘要:前段时间看了《【面试】——反应迟钝的递归》中的三个递归算法,斐波那契数列优化后的算法思路确实不错,但是后面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 jasen.kin 阅读(6369) 评论(23) 推荐(14) 编辑
摘要:一、前言上一篇随笔主要将实体转换成相应的Xml或者Xml对象,未考虑到属性的Attribute特性,以后有时间再整理一下。本文中的Xml匹配涉及到类的特性和属性的特性,并且对该类的匹配进行了相应的优化,尽量将反射引起的性能问题降低最低(其实,对于对象数量不是很多的Xml匹配,性能是可以忽略不计的)。 二、类图设计主要思路为:通过反射将与类名的节点匹配,然后匹配属性(属性特性名称或者属性名称)值,设计图如下所示: 类图中各个类的作用如下: PropertyAttribute、ClassAttribute、StringExtension、FuncDictionary的作用详见XmlAttri... 阅读全文
posted @ 2012-02-19 11:38 jasen.kin 阅读(3033) 评论(4) 推荐(2) 编辑
摘要:一、前言 上篇随笔主要是针对于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 jasen.kin 阅读(7865) 评论(6) 推荐(3) 编辑
摘要:一、前言 可扩展标记语言 (XML) 是具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。XML是用来存储数据的,重在数据本身。本文中的代码是几个月前整理的,最近几个月的时间很少写随笔,除了工作以外,主要还是忙于整理自己的框架。这篇随笔主要是针对于XML的特性Attribute与实体之间的匹配与转换,其中的内容包括反射、XML以及LinqToXml,代码的内容也是想到什么就写什么,纯属练习下手感,仅供参考。下一篇随笔将以另外的形式来转换Xml为对象实体,当然,也是以反射为主,和本随笔中的思路差不多,主要是XML的格式和解决方案不同而已。对于. 阅读全文
posted @ 2011-12-31 01:14 jasen.kin 阅读(5580) 评论(3) 推荐(5) 编辑
摘要:一、前言虚拟模式在许多情况下都很有用。 如果必须从已存在于内存中的非常大的集合填充一个 ListView 对象,则为每项创建一个 ListViewItem 对象会很浪费。 在虚拟模式下,从缓冲之中获取所需的数据进行加载,性能会有很大提高。 在其他情况下,可能需要经常重新计算 ListViewItem 对象的值,对整个集合进行此操作将产生不可接受的性能。如下为虚拟模式的一个应用示例(仿VS2010错误列表),截图如下:二、虚拟模式相关注意点1、设置一个缓存属性,来保存需要加载的数据: protected List<ListViewItem> CurrentCacheItemsSour 阅读全文
posted @ 2011-08-22 00:00 jasen.kin 阅读(12900) 评论(8) 推荐(6) 编辑
摘要:一、前言 插件模型指应用程序由一些动态的独立模块构成,每个模块均具有一个或多个服务,并满足一定的插件协议,能够借助主程序实现主程序-插件,插件-插件之间的通讯。它定义了一套公共的接口,通过接口与插件进行通信,主要是通过反射来获取相关的属性和方法,然后再执行指定的操作。其实,它也可以理解为定义一套通用的解决方案,通过反射来获取相应的程序集的相关类型,然后执行这些指定类型的相关操作。它是一种即插即用的方案,更新及维护简便。本文仅仅是描述插件开发的大体模型,设计比较简单,主要的步骤如下:(1)、定义公共的接口以及抽象类。(2)、定义和实现相关组件。(3)、实现通用程序集反射操作类。其中,公共的接口和 阅读全文
posted @ 2011-07-15 13:29 jasen.kin 阅读(10536) 评论(12) 推荐(9) 编辑
摘要:一、前言 紧跟着上一篇随笔,本文主要涉及到如何将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 jasen.kin 阅读(3436) 评论(11) 推荐(8) 编辑
摘要:(一)前言继《对象属性之间的相互赋值 》后,关于集合对象属性的赋值,主要可以通过循环遍历集合中的对象来进行属性间的赋值。这些可以运用于不同对象之间、相关属性类似的情况。最常见的是web services与silverlight之间的对象赋值(对象之间的属性值只有一部分是需要的),这样可以减少silverlight对web services的依赖。(二)具体实现通过反射将源对象与目标对象之间的属性赋值。源对象的属性名、属性类型必须与目标对象的属性名、属性类型一致,并且源对象的属性必须是可读的,目标对象的属性是可写的(仅针对于需要赋值的属性来说)。具体的源代码如下:1publicclassObje 阅读全文
posted @ 2011-05-13 08:33 jasen.kin 阅读(3637) 评论(17) 推荐(3) 编辑
摘要:(一)前言目前,在Silverlight中下载文件通常采用两种方式进行文件下载:1、客户端通过SaveFileDialog类进行文件下载,服务端使用字节数组(byte[])进行数据传递。2、客户端通过访问服务端的一般处理文件(.ashx)来进行文件下载。对于第1种方式下载,缺陷主要为:点击下载之后,弹出的SaveFileDialog对话框居然没有文件名!!!(必须自己手写文件名,这里Silverlight还有待提高)。Silverlight中的SaveFileDialog相关属性和方法如下:1publicsealedclassSaveFileDialog2{3publicSaveFileDia 阅读全文
posted @ 2011-05-08 21:47 jasen.kin 阅读(4763) 评论(8) 推荐(13) 编辑