自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(55)
  • 收藏
  • 关注

ASP.NET应用技巧:非托管COM组件的使用

众所周知,asp.net是基于通用语言运行库创建的,也就是所谓的托管执行环境。生成的代码称为托管代码。编译器能够从源代码的描述中产生元数据信息,而运行库又从元数据中获得托管代码的信息。而我们编写的组件一般是在非托管环境下创建的,这些组件往往不包含元数据信息,那么我们怎么在托管代码中使用这些元数据信息呢?为了在托管环境中使用非托管代码,我们首先必须手工为这些现有的组件产生元数据信息。必须有一...

2011-07-29 17:21:00 70

设计模式之--责任链模式

在一些情况下,对一个消息(含事件)的响应和处理需要很多对象来参与,这些对象对消息的处理有前后顺序,形成一个处理链条,但对象是否真正处理消息有赖于在它之前的对象的处理策略,前一个对象处理后,后一个对象则不需参与处理,这就是责任链模式。现实中有很多类似的场景,比如上访,上访一般是从最基层的信访部门接受信访开始进行处理,如果下一级信访部门无法处理,则交给上一级部门进行处理,这样一级一级的处理,知道最高信...

2011-07-29 14:28:00 95

设计模式之--中介者模式

在很多情况下对象之间的交互是很复杂的,在开始设计的时候,你根本不知道它需要交互的对象是谁,是什么类型。我们知道如果要对象A与对象B之间能相互交互,A与B就会构成相互依赖,如果对象一多,这种依赖就会很复杂,况且很多时候我们都不知道需要互相交互的对象有哪些,因此,在设计的时候也没办法考虑这些情况。既然在设计的时候无法预先知道对象之间的交互具体情况,我们可以将这种交互放到一个“中间平台”进行,这个中间平...

2011-07-29 14:25:00 137

设计模式之--观察者模式

在日常生活中,有很多需要我们关注的事务(比如,股市,楼市等),这些事务我们可以称之为主题或者叫信息发布者,观察主题的目的是想了解主题的变化(消息)。一种方法当然是采用盯人策略,但这种方法有个固有的缺点,就是你盯住主题的时候,无法干其他事情,如果需要了解的主题比较多,这种办法就很麻烦了;另外一种就是主题广播,我想听的时候我就去听,不想听的时候我就不听,这种方式的好处就是可以使得观察者不用盯住主题,但...

2011-07-29 14:20:00 148

控件篇——树表格TreeGrid

介绍树表格控件结合了树控件和表格控件的特点,能够同时显示树状的数据和表格状数据。在ERP系统里,用来显示物料清单BOM、科目等非常适合。功能节点的折叠/展开,行号显示,列宽调整,列顺序调整,行多选,单元格编辑等...

2011-07-28 23:27:00 265

豆瓣FM-Hacker——豆瓣FM播放列表补全计划

作为一个豆瓣FM的重度用户和程序猿,能够为豆瓣FM编写Chrome扩展应用是一件让人兴奋的事情,这篇博文整理了豆瓣FM-Hacker的设计思想1、说明豆瓣FM-Hacker是一个Chrome扩展应用,主要用于嵌入豆瓣FM页面提供播放列表功能,即记录自打开豆瓣FM后播放的每首歌,并为每首歌曲提供了下载链接(QR二维条码)、播放、社会化分享、喜欢/取消喜欢和不再播放功能,效果图如下2、思路豆...

2011-07-28 13:54:00 162

WCF RIA Services---学习记录(1)

客户端得实体能否进行插入,修改和更新,在于对应的services服务端是否有对应的函数,可用Delete,Insert,Update元属性标签来指定对应方法。这种控制,估计是WCF RIA services安全的一部分。实际上,也只是简单的标签化,至于你的实际插入,修改和删除采不采用这些函数是无关紧要的。但至少可以通过这种标签来确定客户端能对你暴露的实体做什么事情,有个控制机制。其实通过这种方...

2011-07-28 11:23:00 104

设计模式之--访问者模式

《设计模式》一书对于访问者模式给出的定义为:表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。从定义可以看出结构对象是使用访问者模式必须条件,而且这个结构对象必须存在遍历自身各个对象的方法。设想一个场景,就是学校,学校里有老师和学生,老师和学生可以称为两种元素,我们可以对这些元素进行很多操作(注意,这些操作都是外部性质的,不属于元素本身,...

2011-07-28 09:18:00 164

设计模式之--命令模式

命令模式的意图一是将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;二是对请求排队或记录请求日志,以及支持可撤消的操作。简略图如下:命令模式通过对命令的封装,将命令的请求(调用者Invoker)和执行(接收者Receiver)进行了责任分离,委派给不同的对象,不仅使得调用者和执行者之间实现了解耦(命令的请求方就不需要知道接收方的接口,也不需要知道命令是如何执行的具体情况),还使...

2011-07-28 08:42:00 109

设计模式-门面模式

就象字面含义一样,门面模式的作用是为了简化用户对一系列相关对象及操作的使用。比如用户买包子,馒头一样,用户并不需要知道包子,馒头的制造过程和细节,也不需要进入厨房,而只需要在门面,向服务员进行购买,拿包子,找钱,打包的事情都有服务员来完成,用户最后只需要得到要买的东西和找零的钱即可。门面模式将一系列复杂而相关的操作封装成一个简单的操作接口。比如就编译子系统来说,有很多的操作如,词法扫描、语法分析...

2011-07-28 08:10:00 132

Google Checkout支付历程

这几天终于搞定了Google Checkout支付问题,为了方便还在为Google Checkout支付头疼的童鞋,特此发个博文分享一下。前段时间由于需要在Chrome web store上面发布插件,而Chrome web store现在针对第一次发布应用的开发人员有一个要求:先支付5$,其实Google不差这5$,只是为了让开发人员认真对待应用的发布,Google的本意是好的,却害苦了我们这...

2011-07-27 13:05:00 626

设计模式之--适配器模式.

在日常生活中,我们时常会遇到一些兼容性的问题,比如我的笔记本的电源插头就是欧标的,在很多场合我都没法用,买一个可以用的插座当然是可选手段,但到那里去都拿这么大个家伙一是不方便,二也未必有地方可以插,所以我只好买个电源适配插座带在身上。再比如电脑的输入电压一般都只有20伏左右,而日常电源基本都是220伏,所以就需要一个电源适配器,来降低电压。这些都是为了解决不同标准之间的兼容性问题。设计模式中的适...

2011-07-26 21:00:00 72

设计模式之--组合模式

有时候我们需要维护一些对象,这些对象具有一定的层次结构,它们之间虽然差异很大,但在使用的时候我们希望能构一致的对待,比如Windows控件,绘图中的图形等,这个时候我们就可以采用组合模式来进行管理。组合模式就是将要管理的对象按树型结构来进行组织,表示成一种“整体-部分”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。组合模式的结构图如下:角色: 组件接口:提供一致的访问接口,注意组...

2011-07-26 20:52:00 116

设计模式之-代理模式

代理模式(Proxy) ,英文又叫Surrogate。 代理在日常生活中很普遍,比如办身份证代理,产品销售代理,通信收费代理等,在计算机中也普遍存在,比如上网代理,远程调用代理,注册申请代理等。在代理过程中主要涉及的角色包括代理者,被代理者和事务,通过代理者和被代理者在是否参与事务,可以将代理分为职责代理和接口代理,所谓职责代理就是代理者完全行使被代理者的职责,被代理者不参与事务过程(至少在代理期...

2011-07-26 20:43:00 292

Fixcel电子表单——新功能(一)

前言Fixcel整合到EBMIDE后,表单、报表这块的架构已经基本确定了,接下来的工作内容之一就是加强和完善Fixcel的功能。新增控件选择框选择框用于编辑布尔值的数据,是常用的基础控件之一。支持“True/False”,“Yes/No”,“是/否”,“对/错”等常用格式化输出。日期框能够手动输入日期或者通过日期控件选择日期。金额框一般用于会计单据的金额显示,支持金...

2011-07-26 14:39:00 161

EBMIDE——ORM数据实体编辑器

利用Fixcel的表单引擎,能够轻易地实现各种配置文件的编辑,例如ORM引擎的数据实体映射编辑,这比人手编辑配置xml要方便的多。以下是Fixcel里定义的数据实体表单模板相关文章EBMIDE——相关文章索引...

2011-07-26 14:24:00 101

设计模式之-装饰模式

装饰的含义就是在原有的物件上增加饰品,使得物件能呈现出不同的特征。当然在类设计中,采用装饰模式,是用来为类增加新的特征和行为。结构如下: * * | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄| * | Component |<-------------------------------------------------------------------| * |--------------------...

2011-07-25 22:27:00 73

设计模式之-策略模式

如果一个类(CA)的方法存在不同的算法(F),而这些算法用户都可能用到,那么就可以将这种算法独立出来自我演变,既提供一个算法的抽象接口,再定义具体的算法类,而CA保持对算法的一个引用,CA中的方法不直接实现算法,而是调用用户所选的算法类中的算法来实现,这就是策略模式。也既定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。 * * | ̄ ̄ ̄ ̄ ̄...

2011-07-25 22:16:00 88

c语言创建单链表 遍历单链表

/************************************************************************//* huziaa@gmail.com/ *//***********************************************...

2011-07-24 23:59:00 374

设计模式之-桥模式

顾名思义,桥的作用就是将两条相互独立的路桥接到一起,而两条路可以保持各自的相对独立。在程序设计中,“桥”模式中的桥只是一种形象的比喻。根据桥模式的定义,桥模式实现了一个主题(可以是一个类,也可以是一中设计上的概念)的抽象部分和实现部分的分离(有的地方定义为抽象与具体行为的分离)。抽象部分的基类和实现部分的基类充就当着桥(接口对接)的作用,而抽象部分的子类和实现部分的子类就是桥两边的路,可以各自相对...

2011-07-24 21:11:00 115

学无止境,温故而知新

从开始学习这些常用的设计模式到现在有8年多时间了,每次回头看看这些设计模式都有新的收获,有新的理解,从实践中来,到实践中去,再到理论上来,如此反复,获益不少。也许是自己比较笨,又比较喜欢技术的缘故吧,这次把原来的笔记拿出来再看看,体会一下技术发展的脉络,希望能有所收获。作为一位Coder,也以此纪念一下自己的码字母的人生。...

2011-07-22 22:21:00 132

怀念Delphi--希望它能雄起!

前些天跟一个人聊起我自己的一个系统,我说是delphi做的,他说那太落后了,然后说了一堆,我只能汗。虽然我现在主要在dotnet平台上做事情,但我对delphi还是有感情的,毕竟用了那么多年,而且至今我觉得从开发速度上来说,至少在桌面系统开发方面,无人能及。Delphi至少有几个地方还是非常的经典:1、UI组织,Delphi的Form是可以继承的,这个东东非常有用,在提高开发速度方面简直就一个...

2011-07-22 21:44:00 115

silverlight学习日记--第一个试水架构

采用微软提供的silverlight+wcf ria service+ado.net entity或者是linqtosql对于开发小的,且业务逻辑不太复杂的系统来说确实很简单,也很快,在这两天的学习中,有些小体会,但采用已有的框架(比如,nhibernate,sprint.net等)一向来都不是我的风格,因为我比较喜欢可控性,虽然说这些框架都是非常好的东西,但毕竟:一、它们都是为全世界服务的,...

2011-07-22 20:59:00 107

设计模式之-原型模式

原型提供了另外一种创建对象的方式:通过已有的对象的自身提供的克隆功能来创建新的对象。这样做的好处很明显:1.使用克隆来创建对象的用户不需要知道对象的构造细节;2.性能上有利。但采用克隆来生成对象也要注意需要克隆的内容,如果采用全复制的话,有些业务上可能会产生逻辑错误,比如对象ID冲突等。克隆分为深度克隆和浅度克隆。一般来讲使用浅度克隆比较好,不会使得业务逻辑变得很复杂。=======...

2011-07-22 20:19:00 114

设计模式之--生成器模式与抽象工厂模式的比较

从形式上来讲,通过角色合并,方法功能的转变,抽象工厂可以和生成器模式形式上取得一致(比如抽象工厂只处理一个产品族,工厂方法都处理同一个产品)。但注意,这仅仅是形式上的,实际上,抽象工厂和生成器模式有着本质的区别:1、生成器模式是为了构造一个复杂的产品,而且购造这个产品遵循一定的规则(相同的过程),而抽象工厂则是为了创建成族的产品(系列产品),同族产品的构造在逻辑上并不存在必然的联系(唯一必然的...

2011-07-22 20:12:00 368

设计模式之-生成器模式

在产品结构比较复杂,构造过程比较繁琐,一次性构造比较难的时候,我们可以采取分而治之的原则,将产品组件化,每个组件由专门的厂商来生产,最后的产品指派给制定的车间进行最后装配.这种方式其实是现代制造业的一种典型的模式.比如汽车,飞机的制造等.这样做的好处是: 1.产品的部件由专门的生产厂商来生产,这样分工更加明确,更加精细,生产专业化,可以降低成本; 2.整个产品的生产更加简单,也可增加零件的复用....

2011-07-22 20:09:00 141

设计模式-单例模式

单例模式的目的是保证类在系统中只被实例化一次,由该唯一的实例来为系统提供服务.单例模式主要用于保证服务的统一,比如获取统一的编号服务,模仿Oracle的序列生成等.但单例的使用需要谨慎,特别是在需要作负载均衡的地方,因为这种程序级的单例模式实际上只能保证在一个应用中为单例.如果被多个应用加载,还是会被多次实例化. 同时如果采用懒汉式还需要注意线程安全. 多例模式跟单例模式类似,但在实现上要复杂很...

2011-07-22 20:03:00 118

简单工厂,工厂方法,抽象工厂之比较

创建模式的目的就是为了解决使用和生产责任分离,当然能使用这种模式的前提就是用户并不关心"产品"的创建逻辑和过程,用户只需要对创建的结果进行使用.在这种情况下,将使用和创建分离就增加了程序的灵活性,因为"产品"的构建对用户来说是透明的,如果需要对创建过程增加功能(比如增加创建权限检查),不会影响到用户的使用. 模式的应用有两个基本的目的,一是复用,二是适应变化.而且这两个目的在很大程度上也是统一 ...

2011-07-22 19:56:00 89

CS与BS技术的融合--业务系统开发的趋势

对于业务系统的开发而言,特别是大型的业务系统开发,利用CS架构开发,无论是用户体验还是开发速度上都有着很大的优势,但部署、应用范围及带宽都存在着很大的局限,虽然cs三层架构的引入,多多少好解决了一些问题,也还是存在着一些问题,特别是在界面美观上,CS理论上在UI上可以做得很好,但在这方面,BS程序有着与生俱来的优势,CS程序要做得美观,对于大型业务系统来说,有难度,而且显得有点不务正业。对于...

2011-07-21 13:44:00 634

设计模式之-工厂方法模式

从简单工厂模式我们可以看出,在简单工厂模式中,增加新的产品类,是需要修改工厂类的,这不符合开放-封闭原则.而且在写工厂类的时候必须知道具体产品类的细节.也不符合由上相下的设计原则,如果要延后关注细节,则必须利用继承或者接口的技术来实现.将简单工厂模式中的工厂抽象,增加抽象工厂角色,这样用户,抽象工厂,抽象产品,用户就形成了最顶层的设计层面,具体的实现由具体的工厂来创建具体的产品.着就是工厂方法模...

2011-07-21 07:35:00 111

设计模式之--简单工厂模式

角色:用户,工厂,产品.目的是使得用户将产品的消费和生产分开.在编程中就是将类的创建和使用分开.从而达到责任分离,其实这也是所有创建模式的目的之一.做法是工厂类根据用户的要求(参数)来返回不同的类的实例.工厂实现:采用参数化的静态方法为用户提供类实例的创建,如下所示:public static ProductType FactoryMethod(参数){ 根据参数返回需要类的实例.}...

2011-07-21 07:27:00 120

暂时告别 CSDN 博客,移居 GAE(http://88250.b3log.org)

CSDN 博客又改版了,前台访问速度提升了不少,可后台功能却越来越弱,甚至是感到有些受限。Google App Engine 提供了一个免费、开放的平台给程序员,经过一年的开发,B3log Solo 也逐渐稳定了。所以,决定暂时告别 CSDN 博客,移居完全属于自己的博客:http://88250.b3log.org,虽然长城屹立不倒。----"用人不疑,疑人不用"那是一种无奈,"...

2011-07-17 14:18:00 99

MFC创建和销毁窗口时,各个函数的调用顺序

MFC应用程序中处理消息的顺序1.AfxWndProc() 该函数负责接收消息,找到消息所属的CWnd对象,然后调用AfxCallWndProc2.AfxCallWndProc() 该函数负责保存消息(保存的内容主要是消息标识符和消息参数)供应用程序以后使用, 然后调用WindowProc()函数3.WindowProc() 该函数负责发送消息到OnWndMsg()函数,如果未被处理,则调用...

2011-07-15 09:32:00 90

Prof-UIS初探

最近试试Prof-UIS界面库(www.prof-uis.com)的用法,其帮助感觉不是很好。结合其Samples,把一些学习笔记记录如下。先说一下Prof-UIS。在运行其Samples或者将这个界面库用到其它Project中之前,需要编译ProfUISDLL(对于静态库ProfUISLIB),但是运行某些Samples,比如Skinable,提示说需要用到ProfSkinDll,于是先编译它...

2011-07-14 16:13:00 170

VC 类成员属性的一种简洁实现

一般来说对于标准C 而言是不存在成员属性这个概念的,以前大家都是用GetXXX/SetXXX来访问或取得数据,好象也没有感觉到任何不便。但是当我们用过C#之类的语言之后,我们总觉得C 这个方式太老土了。于是我们想...一般来说对于标准C 而言是不存在成员属性这个概念的,以前大家都是用GetXXX/SetXXX来访问或取得数据,好象也没有感觉到任何不便。但是当我们用过C#之类的语言之后,我们总觉得...

2011-07-14 14:48:00 183

VC++ 实现全屏

实现全屏的函数如下,作为主框架窗口的成员函数,调用即可。void CMainFrame::FullScan(){static bool isfull=true;static CRect m_OldWndRect;static CMenu m_OrgMenu;if(isfull==true){GetWindowRect(&m_OldWndRect);//得到原窗口位置//隐藏工具栏和状态栏...

2011-07-14 14:34:00 253

深入理解Bloom Filter

Bloom Filter是1970年由Bloom提出的,最初广泛用于拼写检查和数据库系统中。近年来,随着计算机和互联网技术的发展,数据集的不断扩张使得 Bloom filter获得了新生,各种新的应用和变种不断涌现。Bloom filter是一个空间效率很高的数据结构,它由一个位数组和一组hash映射函数组成。Bloom filter可以用于检索一个元素是否在一个集合中,它的优点是空间效率和查询时...

2011-07-13 12:40:00 333

数据库系统概论(萨师煊 王珊)课本例子 基表的MYSQL 语言实现

为实现试验数据库系统概论 (萨师璇 王珊)课本的全部实例,下面把用到的三个基表的MYSQL 语言实现列在下面。Create table STUDENT ( Sno char (10) not null, Sname char(10) not null, Ssex Char (2), Sage int,Sdept char (10), Primary key(Sno)) ENGINE =INNOD...

2011-07-12 21:51:00 226

需求和设计也应该进行模拟运行。

在传统的软件开发模式中,系统模拟运行一般都只发生在软件实现以后,很少有人会在需求和设计阶段做这个事情。这其实是国内大部分大型软件系统开发失败,或者开发成功后用户却不买帐的原因。这个经验其实来之于我刚工作不久的一个ERP项目,整个ERP项目团队才4-5个人,由于第一次做这么大的项目,我们比较谨慎, 整个需求出来后,我们并没有急于设计和开发,而是针对我们的需求分析结果(简要的概要设计),我们与客户方的...

2011-07-11 22:24:00 110

字符串转成16进制整数的函数

sscanf(s, "%x", &hex_val);sprintf(buf, "0x%x", hex_val);

2011-07-11 16:17:00 234

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除