
1、C#
文章平均质量分 67
广州接入
毕业于北京交通大学计算机系,一直从事企业应用开发,有十多年的SaaS平台产品研发经验。擅长系统架构,需求分析。
展开
-
string.Format字符串格式化说明(转)
string.Format字符串格式化说明<br />先举几个简单的应用案例:<br />1、格式化货币(跟系统的环境有关,中文系统默认格式化人民币,英文系统格式化美元)<br />string.Format("{0:C}",0.2) 结果为:¥0.20 (英文操作系统结果:$0.20)<br />默认格式化小数点后面保留两位小数,如果需要保留一位或者更多,可以指定位数<br />string.Format("{0:C1}",23.15) 结果为:¥23.2 (截取会自动四舍五入)<br />格式化多个Ob转载 2010-10-02 08:26:00 · 3620 阅读 · 0 评论 -
从1..n中间选取任意组合,其和为m,列出所有组合的算法。
<br /> 采用递推方法,并将每次的结果保存,并做为下一个的计算的基础。<br /> /// <summary><br /> /// 从1..n中间选取任意组合,其和为m<br /> /// </summary><br /> /// <param name="n"></param><br /> /// <param name="m"></param><br /> private void ListComboD原创 2010-11-30 11:00:00 · 2519 阅读 · 0 评论 -
设计模式-单例模式
单例模式的目的是保证类在系统中只被实例化一次,由该唯一的实例来为系统提供服务.单例模式主要用于保证服务的统一,比如获取统一的编号服务,模仿Oracle的序列生成等.但单例的使用需要谨慎,特别是在需要作负载均衡的地方,因为这种程序级的单例模式实际上只能保证在一个应用中为单例.如果被原创 2011-07-22 20:03:23 · 5164 阅读 · 1 评论 -
设计模式之-生成器模式
在产品结构比较复杂,构造过程比较繁琐,一次性构造比较难的时候,我们可以采取分而治之的原则,将产品组件化,每个组件由专门的厂商来生产,最后的产品指派给制定的车间进行最后装配.这种方式其实是现代制造业的一种典型的模式.比如汽车,飞机的制造等.这样做的好处是: 1.产品的部件由专原创 2011-07-22 20:09:27 · 3677 阅读 · 0 评论 -
设计模式之--生成器模式与抽象工厂模式的比较
从形式上来讲,通过角色合并,方法功能的转变,抽象工厂可以和生成器模式形式上取得一致(比如抽象工厂只处理一个产品族,工厂方法都处理同一个产品)。但注意,这仅仅是形式上的,实际上,抽象工厂和生成器模式有着本质的区别:1、生成器模式是为了构造一个复杂的产品,而且购造这个产品遵循一定的规原创 2011-07-22 20:12:53 · 8025 阅读 · 3 评论 -
设计模式之-原型模式
原型提供了另外一种创建对象的方式:通过已有的对象的自身提供的克隆功能来创建新的对象。这样做的好处很明显:1.使用克隆来创建对象的用户不需要知道对象的构造细节;2.性能上有利。但采用克隆来生成对象也要注意需要克隆的内容,如果采用全复制的话,有些业务上可能会产生逻辑错误,比如对象ID原创 2011-07-22 20:19:34 · 3071 阅读 · 0 评论 -
设计模式之-策略模式
如果一个类(CA)的方法存在不同的算法(F),而这些算法用户都可能用到,那么就可以将这种算法独立出来自我演变,既提供一个算法的抽象接口,再定义具体的算法类,而CA保持对算法的一个引用,CA中的方法不直接实现算法,而是调用用户所选的算法类中的算法来实现,这就是策略模式。也既定义一系原创 2011-07-25 22:16:46 · 3258 阅读 · 0 评论 -
设计模式之-桥模式
顾名思义,桥的作用就是将两条相互独立的路桥接到一起,而两条路可以保持各自的相对独立。在程序设计中,“桥”模式中的桥只是一种形象的比喻。根据桥模式的定义,桥模式实现了一个主题(可以是一个类,也可以是一中设计上的概念)的抽象部分和实现部分的分离(有的地方定义为抽象与具体行为的分离)。原创 2011-07-24 21:11:20 · 3644 阅读 · 0 评论 -
设计模式之-装饰模式
装饰的含义就是在原有的物件上增加饰品,使得物件能呈现出不同的特征。当然在类设计中,采用装饰模式,是用来为类增加新的特征和行为。结构如下: * * | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|原创 2011-07-25 22:27:31 · 3355 阅读 · 1 评论 -
设计模式之--组合模式
有时候我们需要维护一些对象,这些对象具有一定的层次结构,它们之间虽然差异很大,但在使用的时候我们希望能构一致的对待,比如Windows控件,绘图中的图形等,这个时候我们就可以采用组合模式来进行管理。组合模式就是将要管理的对象按树型结构来进行组织,表示成一种“整体-部分”的层次结构原创 2011-07-26 20:52:16 · 4056 阅读 · 0 评论 -
设计模式之-代理模式
代理模式(Proxy) ,英文又叫Surrogate。 代理在日常生活中很普遍,比如办身份证代理,产品销售代理,通信收费代理等,在计算机中也普遍存在,比如上网代理,远程调用代理,注册申请代理等。在代理过程中主要涉及的角色包括代理者,被代理者和事务,通过代理者和被代理者在是否原创 2011-07-26 20:43:45 · 2323 阅读 · 0 评论 -
设计模式之--适配器模式.
在日常生活中,我们时常会遇到一些兼容性的问题,比如我的笔记本的电源插头就是欧标的,在很多场合我都没法用,买一个可以用的插座当然是可选手段,但到那里去都拿这么大个家伙一是不方便,二也未必有地方可以插,所以我只好买个电源适配插座带在身上。再比如电脑的输入电压一般都只有20伏左右,而日原创 2011-07-26 21:00:57 · 3796 阅读 · 0 评论 -
设计模式之--命令模式
命令模式的意图一是将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;二是对请求排队或记录请求日志,以及支持可撤消的操作。简略图如下:命令模式通过对命令的封装,将命令的请求(调用者Invoker)和执行(接收者Receiver)进行了责任分离,委派给不同的对象,不仅原创 2011-07-28 08:42:13 · 3789 阅读 · 4 评论 -
设计模式之--访问者模式
《设计模式》一书对于访问者模式给出的定义为:表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。从定义可以看出结构对象是使用访问者模式必须条件,而且这个结构对象必须存在遍历自身各个对象的方法。设想一个场景,就是学校,学校里有老原创 2011-07-28 09:18:49 · 4388 阅读 · 1 评论 -
WCF RIA Services---学习记录(1)
客户端得实体能否进行插入,修改和更新,在于对应的services服务端是否有对应的函数,可用Delete,Insert,Update元属性标签来指定对应方法。这种控制,估计是WCF RIA services安全的一部分。实际上,也只是简单的标签化,至于你的实际插入,修改和删除采不原创 2011-07-28 11:23:43 · 2504 阅读 · 0 评论 -
设计模式-门面模式
就象字面含义一样,门面模式的作用是为了简化用户对一系列相关对象及操作的使用。比如用户买包子,馒头一样,用户并不需要知道包子,馒头的制造过程和细节,也不需要进入厨房,而只需要在门面,向服务员进行购买,拿包子,找钱,打包的事情都有服务员来完成,用户最后只需要得到要买的东西和找零的钱即原创 2011-07-28 08:10:02 · 5115 阅读 · 0 评论 -
设计模式之--中介者模式
在很多情况下对象之间的交互是很复杂的,在开始设计的时候,你根本不知道它需要交互的对象是谁,是什么类型。我们知道如果要对象A与对象B之间能相互交互,A与B就会构成相互依赖,如果对象一多,这种依赖就会很复杂,况且很多时候我们都不知道需要互相交互的对象有哪些,因此,在设计的时候也没办法原创 2011-07-29 14:25:57 · 5335 阅读 · 1 评论 -
设计模式之--观察者模式
在日常生活中,有很多需要我们关注的事务(比如,股市,楼市等),这些事务我们可以称之为主题或者叫信息发布者,观察主题的目的是想了解主题的变化(消息)。一种方法当然是采用盯人策略,但这种方法有个固有的缺点,就是你盯住主题的时候,无法干其他事情,如果需要了解的主题比较多,这种办法就很麻原创 2011-07-29 14:20:29 · 5629 阅读 · 3 评论 -
给动态数据集的字段值变化加事件,更好的模拟DataTable
在前面的Silverlight实战示例7(兼集合属性的妙用)系列中,我们模拟了一个复杂实体的处理,这个复杂实体类似于aspnet的Datatable,但不是很完全,这里我们增加一些代码,使得这种模拟更纯粹:1、在DynamicDataField里增加public Dynami原创 2011-09-02 22:19:13 · 3468 阅读 · 1 评论 -
silverlight学习日记--第一个试水架构
采用微软提供的silverlight+wcf ria service+ado.net entity或者是linqtosql对于开发小的,且业务逻辑不太复杂的系统来说确实很简单,也很快,在这两天的学习中,有些小体会,但采用已有的框架(比如,nhibernate,sprint.net原创 2011-07-22 20:59:05 · 2638 阅读 · 0 评论 -
解剖实体框架(6)---总结
1、实体应该要简单,层次最好平面化,这样有利于实体在各种通信中穿越(比如Webservices,WCF,Remoting,WCF RIA等);2、虽然实体应该平面化,但并不代表不能有继承层次,因为这种层次可以获得很多管理和架构的好处。3、采用根据实体(包括配置文件)动态构原创 2011-08-05 22:34:53 · 3312 阅读 · 0 评论 -
WPF属性绑定测试(索引器方式)
小结: 如果属性绑定路径上的任何可通知变化属性发生改变,其路径及以下路径都视为发生了变化,不管是否是可通知变化属性,都会重新绑定新值。看来微软对于绑定的机制是下了功夫的,如果采用简单的反射,路径寻找的方式,如果页面元素比较多,层次比较多,效率肯定有问题的,看来有时间得反编译原创 2011-09-02 21:39:36 · 5256 阅读 · 0 评论 -
解剖实体框架(4)--实体的管理
实体的管理主要包括如下功能: A) 实现实体的缓存; B) 实现实体的新增,修改,删除,查询等功能; C)刷新缓存与数据库同步 D) 将缓存语句与数据库同步上面是一些基本的功能,下面是一个基本示例:public enum EntityState原创 2011-08-05 21:21:03 · 3810 阅读 · 0 评论 -
解剖实体框架(5)--给实体管理类增加一点特色
/// /// 扩展实体管理类 /// public static class EntityMgmtExtension { public static IEnumerable Select(this EntityMgm原创 2011-08-05 22:01:33 · 2999 阅读 · 0 评论 -
面向对象编程--我的虚函数实现方法
如下图所示: 类,即代表类也代表函数表,我们看是怎么调用的.注意如下规则:1、每个类的信息都保存在内存里(类型加载后);2、每个类都会保存其继承的父类或实现的接口的类型指向。3、每个实例都保持一个对实例实际类型(类类型)的指向(指针), 还保持原创 2011-08-07 20:05:22 · 1835 阅读 · 0 评论 -
学习JQuery后的一个实际应用--页面表单验证(适合大规模应用)
该表达验证的功能如下:1、针对每个表单输入控件,用户可设置自定义级别和基本级别的匹配表达式和相应的提示信息;2、用户离开表单输入控件时会自动校验,如果校验非法,该控件的边框底色会变红3、如果在保存按钮上注册检查所有表单输入控件的代码,则会在点击按钮保存时检查所有输入表原创 2011-08-07 20:14:11 · 2853 阅读 · 0 评论 -
设计模式之---非虚模式
非虚模式的是将调用接口与实际执行函数分离,调用接口不支持继承(没有多态功能),而将实现多态的功能交给具体的保护性执行函数,这样就使得调用接口统一,同时不损失多态的好处。具体做法如下: /// /// 基类 /// public clas原创 2011-08-09 19:57:47 · 1776 阅读 · 0 评论 -
权限数据的缓存探讨
最近在做权限访问的封装,我们的权限分为用户(角色),对象,操作,行级4个层次。在权限数据方面,我们的处理方式是一次性获取相关权限数据(SQL比较复杂一点),并按对象,操作,行级组织成层次结构,然后对这部分数据进行了缓存,而且是客户端和服务器端同时缓存,这样做虽然便于用户权限访问方原创 2011-09-07 07:02:39 · 4261 阅读 · 0 评论 -
WCF RIA Service实体嵌套问题(更正一下前面的动态数据集模拟)
至少在目前为止,经过测试,我发现一个实体A引用了另外一个实体成员B,如果另外一个成员B又引用实体成员A,如果A为null,没问题,如果A不为空,与B形成实例上的循环引用,就会导致客户端访问提示找不到调用方法的错误,我觉得应该是这个循环引用导致返回客户端时进行序列化时,导致无限循环原创 2011-09-08 22:19:53 · 2725 阅读 · 0 评论 -
归并排序(MergeSort)两种实现方式比较
前面我写的归并排序实现,虽然原理上没什么问题,但算法实现不是很理想,今天没什么事情,重新优化了一下,这里比较一下:1) 第1种方式,我采用了辅助存储来进行归并,代码如下:private void MergeSort1(int[] A, int iS, int iE)原创 2011-09-11 20:47:37 · 3156 阅读 · 0 评论 -
Spring系列(6)---总结(1)
Spring当然不仅仅只包括我们前面看到的这些技术,但其核心的思想主要是IOC+AOP这两块。在前面的几块中我们着重讲了AOP,最后简单介绍了一下IOC.这个系列介绍到这儿,基本涉及了Spring主要思想和技术,并建立了自己的一个简单的AOP模型。(一)我们首先来看看我们用到原创 2011-08-14 18:05:00 · 2741 阅读 · 0 评论 -
合并(归并)排序(MergeSort)
//用来计数,测试执行循环次数. int count; private void button1_Click(object sender, EventArgs e) { R原创 2011-09-10 00:35:28 · 3210 阅读 · 0 评论 -
一个拓扑结构题得实现(2011baidu校招研发部门的面试题目)
题目来自于QQ群友,今天无聊,试着把算法写出来活动一下脑子,题目如下:有一个单入口,单出口的有向无环图。给出一个算法,在已有结点之间插入若干结点,使得从入口结点到出口结点经过的任意路径长度一致,详细描述你的算法思路,并分析其时间复杂度和空间复杂度。分析:这个题的解显然是无原创 2011-09-12 00:09:17 · 3896 阅读 · 0 评论 -
归并排序(MergeSort)的原理及延伸性思考
前面一篇博文写了归并排序的算法实现,虽然做了些注释,但没有写归并排序的原理,这篇就补上,同时对归并所隐含的思想做一个探讨。1)归并排序的原理 为了便于说明,这里我们提到的已排好序的序列都是指从小到大的升序(对于降序其实原理是一样的。 假设有两个已排好序的原创 2011-09-10 11:59:45 · 13922 阅读 · 1 评论 -
计数排序实现及比较
计数排序利用的是数组的随机访问特性,将要排序的数k转换成数组的下标K,该数组中以k为下标的值A[k]代表这个数K的个数。这种排序非常快,但应用条件比较苛刻。主要受需要排序的序列规模(n),序列最大值(max(n))影响,如果max(n)过大,算法空间复杂度比较高,也是该算法的原创 2011-09-13 23:11:10 · 2227 阅读 · 0 评论 -
快速排序(QuickSort)的C#实现(采用随机化主元方式)
算法代码如下:/// /// 快速排序的分隔,即:对于一个指定的主元x,找到位置i,使得i的左边元素都小于等于x,右边都大于等于x. /// /// /// ///原创 2011-09-11 21:14:21 · 2467 阅读 · 0 评论 -
Silverlight中字典集合的妙用
Silverlight4的属性绑定支持索引器,利用这个特性就可以实现VM对V提供更为方便的支持,而且对于基本类型的字典还可以穿越WFC RIA服务,对于DataTable之类的动态数据,就可以利用这个特性不仅可以穿越服务,还可以动态绑定到Silverlight客户端.动态实体原创 2011-08-19 19:15:07 · 3798 阅读 · 6 评论 -
Silverlight应用框架雏形:MVVM+WCF RIA Service + 业务逻辑层+自写的实体框架
经过1个月的学习,从接触Silverlight到现在完成一个初具企业级应用框架的实现,确实感觉比较累。本来底层定型很快,但由于选型时争论比较长,拖了点时间,而我本来只负责底层,但由于客户端小组进展比较慢(原因一言难尽),这个星期我开始接手这方面的工作,经过几天的努力,在UI组兄弟原创 2011-08-19 19:56:23 · 7188 阅读 · 8 评论 -
设计模式之--责任链模式
在一些情况下,对一个消息(含事件)的响应和处理需要很多对象来参与,这些对象对消息的处理有前后顺序,形成一个处理链条,但对象是否真正处理消息有赖于在它之前的对象的处理策略,前一个对象处理后,后一个对象则不需参与处理,这就是责任链模式。现实中有很多类似的场景,比如上访,上访一般是从最原创 2011-07-29 14:28:05 · 6197 阅读 · 1 评论 -
Silverlight的MVVM模式
M是模型层,实际上就是客户端得数据服务层,而V是页面,即视图层,VM是视图的模型层,也可以看做是M和V之间的桥接层。我们知道在数据库编程中,特别是Delphi中的数据库编程中,数据感知控件一定令人印象深刻:界面控件只要设置一个数据源(DataSource),然后设定本控件要绑原创 2011-08-16 20:21:03 · 2871 阅读 · 0 评论