- 博客(24)
- 收藏
- 关注
原创 C#中的相等性判断(RefrenceEquals、Equals)
/// ///等同性的数学定义:自反、对称、传递 /// /// /// RefrenceEqual: /// static bool ReferenceEquals(object objA, object objB); /// 值类型调用永远返回false(原因在于装
2013-08-01 00:36:43
779
原创 C#实现简单优先队列
using System;using System.Collections.Generic;namespace fofo.DataStructor{ public class PriorityQueue where T: IComparable//, new() { private const int DEFAULT_CAP = 100;
2013-07-22 14:09:56
715
原创 算法分析: 最长有效括号的长度
提名来自庞果网:http://hero.pongo.cn/home/index题目详情给定只包含括号字符'('和 ')''的字符串,请找出最长的有效括号内子括号的长度。举几个例子如下:例如对于"( ()",最长的有效的括号中的子字符串是"()" ,有效双括号数1个,故它的长度为 2。 再比如对于字符串") () () )",其中最长的有效的括号中
2013-06-25 20:01:59
1172
2
原创 算法分析:幸运数
题目来源自庞果网:http://hero.pongo.cn/Question/Details?ID=53&ExamID=51 题目详情如果一个数各个数位上的数字之和是质数,并且各个数位上的数字的平方和也是质数,则称它为幸运数。给定x,y,求x,y之间( 包含x,y,即闭区间[x,y])有多少个幸运数。 例如1到20之间有4个幸运数,它们是11,12,14,16,像因
2013-06-23 18:29:02
1634
原创 CentOS下安装MFS
CentOS 5.6 x64, 安装的Moosefs版本为最新的1.6.26,整体上MFS安装配置都比较简单MFS文件系统的构成:1、 元数据服务器。在整个体系中负责管理管理文件系统,目前MFS只支持一个元数据服务器master,这是一个单点故障,需要一个性能稳定的服务器来充当。希望今后MFS能支持多个master服务器,进一步提高系统的可靠性。IP:192.168.52.5
2013-06-19 11:15:09
1123
原创 TPL使用异步编程模型(APM)实现简单网页抓取
using System;using System.Collections.Generic;using System.Linq;using System.Net;using System.Threading;using System.Threading.Tasks;namespace fofo.NetSpider{ public class SimpleNetSpider
2013-06-04 12:50:11
626
原创 设计模式与原则:观察者模式
设计模式和原则索引 using System;////// 观察者模式:/// 观察者模式定义了一系列对象之间的一对多的依赖关系,当一个对象(Subject)状态改变时/// 它的所有的依赖者(Observer)都会收到通知/// 观察者模式提供了一种设计方式,让主题(Subject)和观察者(Observer)之间松耦合///
2013-06-02 16:00:40
575
原创 设计模式和原则:策略模式
设计模式和原则索引 using System;////// 策略模式: /// 策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化./// 此模式主要用来将应用中需要变化的部分独立出来,以让系统更具有弹性/// 重心不在算法的实现///
2013-06-02 14:28:19
544
原创 设计模式和原则:单例模式
设计模式和原则索引using System;////// Singleton模式,对象只能有一个实例,且实例由对象自身创建,外部无法实例化单例对象/// 适用于某个对象在系统中致应该有一个实例的情况(可以控制执行的顺序)/// /// 为什么是Singleton 而不是静态类,Singleton是实例行为,可以实现实例级别上的行为(如继承)/// 而不只是静态函数的集
2013-05-24 12:51:56
467
原创 设计模式和原则索引
设计模式和原则:原则篇(一)设计模式和原则:原则篇(二)设计模式和原则:简单工厂模式设计模式和原则:抽象工厂模式设计模式和原则:策略模式设计模式与原则:观察者模式
2013-05-24 11:52:41
506
原创 设计模式和原则:抽象工厂模式
设计模式和原则索引using System;////// 抽象工厂模式是工厂模式的升级,此模式为一个产品家族提供了统一的创建接口,适用于:/// >系统有多于一个的产品族,而系统只消费其中某一产品族/// >同属于同一个产品族的产品是在一起使用的,这一约束必须在系统的设计中体现出来/// >系统中同类型的产品以同样的接口出现/// /
2013-05-24 11:31:25
626
原创 设计模式和原则:简单工厂模式
设计模式和原则索引using System;////// 简单工厂根据传入的参数生成某个对象的实例,通常可能生成的对象/// 都有一个公共的父类/// /// 下例:/// 系统有2个Service,工厂根据参数生成对应的Service(OrderService或ProductService)///namespace fofo.DesignPattern.
2013-05-24 11:28:20
563
原创 设计模式和原则:原则篇(二)
设计模式和原则索引二、基于接口,而不是实现编程让类型间的依赖基于接口,来最小化类型间的依赖。在代码变化的可能性较大时,这种设计方法非常适合。>应用接口还是抽象类?要根据具体情况判断,如果你希望接口附带一些行为,就是用抽象类,否则使用接口,DotNet不支持多重继承,使用interface则基类还有选择的余地。接口可以是.Net中的Interface也可以是一个基类。
2013-05-21 16:38:31
474
原创 设计模式和原则:原则篇(一)
设计模式和原则索引一个成功的系统源自一个良好的设计,往往应用了各种设计模式,同时满足各种设计原则。这篇结合了别人的经验总结和自己的心得体会,未必齐全,也未必完全适应方方面面。一、高内聚、低耦合 这是系统结构化设计的基本原则。 1.高内聚表示一个模块应该完成一系列极为相关的操作,高内聚的模块一般外部依赖都很少,这也意味着系统有较高的可维护性和可重用性。
2013-05-16 10:57:45
476
原创 C#特性的应用(简易横切关注点实现)
在系统开发时,经常会有些横越多个模块的行为,使用传统的软件开发方法并不能够有效的模块化,一般这些行为我们称为横切关注点,如日志、异常、特殊的权限检查等,这里不细讨论横切关注点这个话题,我们用一个例子来说说特性在这个方面的使用,假如有一个系统有很多业务服务组成,每个业务服务的访问权限只有具体服务开发人员根据需求才能确定,而具体的用户权限情况由专门用户管理模块管理,我们用特性和反射来实
2013-05-13 18:12:19
733
原创 利用扩展方法实现参数检查
在方法中我们经常需要检查方法的传入参数以避免运行时错误,如果参数的检查项比较多,经常要写出很臃肿的代码,也会出现很多重复的代码。 扩展方法可以很方便的解决这个问题,如下:using System;using System.Data;namespace fofo.Extensions{ public static class DataSetExtension
2013-05-07 09:39:41
569
原创 动态创建表达式树
表达式树是一种数据结构,以数据形式表示语言级代码。.Net平台引入的"逻辑即数据"概念。所有的数据都存储在树结构中,每个结点表示一个表达式(Expression)。要想手动生成表达式树我们需要引用System.Linq.Expressions 命名空间,最重要的一个类是Expression,它是所有表达式的基类。using System;using System.Collecti
2013-05-03 16:35:07
925
转载 创建常量、原子性的值类型
概述本文是《Effective C#》一书第七节的读书笔记。通过这篇文章,我主要想向大家说明一个我们平时可能不太会注意到的问题:创建具有常量性和原子性的值类型。从类型设计谈起从Class到Struct假如我们要设计一个存储收信人地址的类型(Type), 我们管这个类型叫 Address。它应该包含这样几个属性:Province 省City 市Zip
2013-04-27 16:59:37
474
原创 Oracle EXECUTE IMMEDIATE语句
1.当执行SQL语句时,不要用分号,当执行PL/SQL块时,在其尾部用分号2.不支持返回多行的查询,使用临时表来存储记录或者用REF cursors.sample:1. USING 子句 declare starff varchar2(10) := 'TS00001'; table_name varchar2(12) := 'TV00001_VIOL'
2013-04-22 14:21:23
540
原创 SQL优化(Oracle)
1. 选择有效率的表名排序 在FROM子句中包含多个表的情况下,选择条数最少的表做基础表(第一个被访问的表、FROM子句最后面的表) 如果有3个以上的表连接查询,选择交叉表(被其他表引用的表)做基础表2.WHERE子句的执行顺序 采用自后而前的顺序解析WHERE子句,根据这个原则,那些可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾3.用EXIS
2013-04-12 14:54:27
430
转载 常用算法之一:动态规划算法
在数学与计算机科学领域,动态规划用于解决那些可分解为重复子问题(overlapping subproblems,想想递归求阶乘吧)并具有最优子结构(optimal substructure,想想最短路径算法)(如下所述)的问题,动态规划比通常算法花费更少时间。上世纪40年代,Richard Bellman最早使用动态规划这一概念表述通过遍历寻找最优决策解问题的求解过程。1953年,Rich
2013-04-02 18:16:11
1004
原创 DotNet(C#)实现事件远程注册和触发
背景:以前做过一套分布式任务管理架构来为某网站提供数据计算服务,该网站每次数据计算可以分解为几百个小任务进行,而每个任务可能需要访问的数据量很大,所以系统有一个管理平台,用来显示系统的运行状态,或某类计算节点的运行压力,用户也可以在平台上执行一些管理功能,为了应对平台上频繁的功能追加,在系统核心模块添加了事件处理模块,每当用户需要在平台添加某个功能,只需要开发对应功能的一个功能
2013-04-02 15:40:43
994
转载 常用算法之一:分治算法
一、基本概念 在计算机科学中,分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。这个技巧是很多高效算法的基础,如排序算法(快速排序,归并排序),傅立叶变换(快速傅立叶变换)…… 任何一个可以用计算机求解的问题所需的计算时间都与其
2013-04-01 18:06:47
425
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人