- 博客(25)
- 资源 (5)
- 收藏
- 关注
原创 路径规划(最短路径)算法C#实现
以前空闲的时候用C#实现的路径规划算法,今日贴它出来,看大家有没有更好的实现方案。关于路径规划(最短路径)算法的背景知识,大家可以参考《C++算法--图算法》一书。 该图算法描述的是这样的场景:图由节点和带有方向的边构成,每条边都有相应的权值,路径规划(最短路径)算法就是要找出从节点A到节点B的累积权值最小的路径。 首先,我们可以将“有向边”抽象为Edge类:
2005-09-29 14:01:00 1922
原创 推荐所有的.NET开发人员阅读《J2EE Development without EJB》
出手自Rod Johnson的《J2EE Development without EJB》是一本难得的好书,无论是对于Java程序员,还是.NET程序员。特别是对于.NET程序员,.NET平台的企业级应用还不是很多,.NET平台上的实用性的架构也远远不及J2EE这么成熟,所以我们.NET开发人员绝对有必要Open自己,到Java的世界去看看。 .NET世界里很多处于探索和试
2005-09-29 11:01:00 940
原创 EsbAOP应用--权限管理
前文介绍了异常关闭器的AOP实现,而权限管理也是一个AOP可以大展拳脚的地方,下面就来看看如何使用EsbAOP实现权限管理。 首先要解决的问题是如何判断用户是否拥有调用某个操作的权限,这个判断是由各个应用程序自己实现了,为了统一对权限的判断,所以我们指定了接口IPermissionVerifier: /// /// IPermissionVerifier
2005-09-28 12:01:00 1111
原创 EsbAOP应用--异常关闭器
以我自己的异常处理经验,我通常会在UI事件处理函数或线程启动函数中截获所有的异常,然后对截获的异常作特定的处理--很多情况下,是显示一个错误信息给用户,或记录异常日志!在这“很多情况下”,我都需要做相同的工作,首先是用try...catch把UI事件处理函数或线程启动函数中的所有代码围起来,然后,可能就是MessageBox.Show(ex.Message)或其它的处理。
2005-09-28 08:01:00 793
原创 EnterpriseServerBase的AOP--EsbAOP实现
EsbAOP是EnterpriseServerBase类库中的轻量级AOP框架,它实现了AOP的主要思想--对方法调用进行截获,并加入自定义的预处理、后处理。 EsbAOP与其它很多开源的AOP实现有些不同,其不同之处主要在于EsbAOP并没有严格的实现AOP理论的各种设施,但是EsbAOP非常实用,在后续的文章中,大家可以看到EsbAOP是如何运用于实际的系统开发中的。
2005-09-28 08:01:00 1376
原创 企业开发基础设施--事件通知服务(Remoting双向通信)
事件通知服务用于解决多个应用程序之间的事件发布与预定的问题。在.NET平台上,跨应用程序的事件发布/预定通常以Remoting作为底层的通信基础,在此基础之上,事件通知服务使用中介者模式来简化跨应用程序的事件通知问题。 本文采用的解决方案中,有两个重要组件:事件服务器EventServer和事件客户端EventClient。EventServer作为中介者,并作为一个独立的
2005-09-26 15:01:00 1615
原创 关于跨程序集的反射
在开发中,经常会遇到这种情况,在A.dll中需要反射B.dll中的类型,如果稍不注意,就会产生运行时错误。关于跨程序集的反射,记住两点就可以:(1)如果使用typeof,编译能通过,则跨程序集的反射一定可以正常运行。可以说,typeof是支持强类型的。比如Type supType = typeof(EnterpriseServerBase.DataAccess.IDBAcce
2005-09-23 12:01:00 1073
原创 异步调用轻量级封装AsynCaller
当UI动作引发一个耗时的计算时,我们经常需要将这个耗时的过程放到后台线程中去完成,然后获取该过程的结果。使用.NET提供的默认设施,无论是使用Thread还是使用异步调用,细节都比较繁琐。在前几天的blog上也看到了有些兄台的解决方案,但是觉得还不够好用,于是自己封了一个AsynCaller。 AsynCaller通过事件来通知外部异步调用的结果,IAsynCaller
2005-09-23 09:01:00 974
原创 企业开发基础设施--类厂服务
类厂服务的主要功能是简化创建具体工厂任务,使工厂访问代码和工厂创建代码解藕。类厂服务是以抽象工厂模式为基础,并且在其上进行再综合。 在正式进入正题之前,为了方便后面的叙述,先要澄清一些概念,把上下文(Context)搭建起来,然后,我们再在这个上下文中进行讨论。 首先是两个基本定义:族和系列。(这两个概念是我自创的,不知道常用的术语是什么,知道的朋友请留言告诉我:))
2005-09-13 17:01:00 1495
原创 企业开发基础设施--序
所谓企业开发基础设施,指的是为那些几乎所有的企业开发都会遇到的共同的基础性的问题提供服务的设施,比如事务、日志、权限等等。其中很多设施都会以AOP的方式实现,有些则可能以类库的方式提供。我也一直在积累这方面的AOP组件和类库。 曾经做过一些关于日志、权限管理的AOP实现,这几天正在研究“类厂服务”,于是就有了写这个“企业开发基础设施”系列文章的想法,把自己的一些思想拿出来和
2005-09-13 17:01:00 1032
原创 直观而简单的解决方案--软件设计的永恒追求
人们都善于用直观简单的方式来理解事物,我也坚信,所有优秀的解决方案都是直观而简单的,我喜欢直观而简单的解决方案,也许在找到直观简单的解决方案之前,我们已经尝试了用很多复杂费解的方式来解决问题。如果你不能把我们程序的解决方案用通俗易懂的方式给隔壁卖青菜的阿伯解释清楚的话,说明,这个解决方案还不够好――还不够简单和直观。宇宙够复杂了吧,可是霍金却创作《时间简史》系列的科普读物
2005-09-13 09:01:00 679
原创 面向对象与面向组件小议
所有的软件技术和思想的出现都是为了解决所在的那个年代软件开发的复杂性,对象技术和组件技术也不例外。当然还有很多其它技术,像DBC(契约式编程)、AOP、MDA等,这些思想都在影响我们设计/实现程序的方式,但无可否认的是,当今最主流的编程技术是对象技术和组件技术。 面向对象技术已经成熟的发展将近20年了,关于这方面的经典书籍和论文也随处可见。为了解决更大的系统的复杂度,组件
2005-09-13 09:01:00 744
原创 我是程序员
相比于写代码,我更喜欢写能自动产生代码的生成器,和许多人一样,我讨厌写重复的代码,这种重复包括字面的重复和结构的重复、还有思想的重复。 在日常的开发过程中,一旦我发现一种需要经常使用的元素(类/结构/方法),我就将它整理出来,所谓整理主要是做这样的工作:重构、最大限度降低这个元素与其它元素的耦合性、最大限度地扩展该元素的适用范围、精简算法。然后将整理得
2005-09-13 09:01:00 761
原创 项目管理实战之团队管理
一个系统不仅需要优秀的分析和设计,更需要一个良好的过程将其从蓝图转化为实现。这个过程中最重要的是对团队的管理,也就是人的管理。一个优秀的团队和一个糟糕的团队的效能是天壤之别,她们之间的比例不是1:100或1:1000这样量化的数字能够表示的。就像一个团队建造了一幢摩天大楼屹立于云霄,而另一个团队的建筑物还没有10米高便开始摇摇欲坠!这是质的差别,也是团队灵魂的差别。 而团
2005-09-12 11:01:00 1118
原创 【申明】主战场全面迁移到cnblogs!http://www.cnblogs.com/zhuweisky
主战场全面迁移到cnblogs!http://www.cnblogs.com/zhuweisky
2005-09-11 13:34:00 2131
原创 【申明】XCodeFactory终于有了自己的小窝!
在cnblogs上开辟了xcodefactory的专栏:http://xcodefactory.cnblogs.com csdn blog上的xcodefactory FAQ将停止使用,以后所有关于xcodefactory的讨论将全部转移到http://xcodefactory.cnblogs.com
2005-09-11 13:28:00 2015
原创 软件的艺术之美源于权衡(Trade-off)
软件架构师的主要职责是什么?是抉择、是权衡。把软件称为艺术一点都没有夸张,可以说软件是科学、工程、与艺术的结合体。软件的艺术体现在权衡上。在这一期的《程序员》杂志上看到了一篇“鱼与熊掌--完美主义架构师的梦魇”,其中关于权衡要素的论述正切合我之所想,现将主要部分转摘如下,如果想了解更详细内容,请在本期程序员阅读全文。(1)Time or Space 时间 vs. 空间
2005-09-11 10:01:00 721
原创 使用C#自动注册自定义文件类型
在我们自己编写的应用中,经常会用自定义类型的文件的来保存与应用相关的数据,如何改变我们的自定义类型的文件的图标?如何双击自定义类型文件的时候启动相应的应用程序了?本文将告诉你如何通过程序来完成这些功能! 比如.xcf文件就是XCodeFactory应用程序的项目文件。如果没有向Windows注册表注册该文件类型,那么.xcf文件的图标将是windows的文件
2005-09-11 09:01:00 1031
原创 异常处理经验谈
1.异常处理相对于返回错误代码的一个最大优点在于,异常可以被自动传递,这样,在编程时异常更加难以被忽视。2.通常,只在最上层(一般是UI层)捕捉异常。如果要在其它层捕捉异常,除非是下列情况之一: (1)能够处理该异常,或者 (2)能够忽略该异常,或者 (3)需要转换该异常为其它特定异常后抛出新异常3.UI层捕获异常后,可以 (1)将无关紧要的异常忽略。 (2)将异常转换为错误
2005-09-10 16:02:00 653
原创 函数设计之美--函数需要返回错误码吗(一)?
很久以前我就考虑这样一个问题:有这样一个函数,它的功能是从一个整数集合中返回最大的那个数,如何设计这个函数的签名了?当时没有得出令自己满意的答案,所以就搁浅了。今天重新思考,终于有所悟!现在把我思索的整个过程展现于此。最直观的函数签名设计如下:int GetMaxElement(ArrayList eleList) ;乍看之下,很好,很直接的反映了意图。稍微深入一点就
2005-09-10 11:02:00 763
原创 全面转战博客园
以前一直在csdn的blog上活动(http://blog.csdn.net/zhuweisky),由于种种原因,现在全面迁移到博客园来,感觉这里的氛围更好一些。借此机会先和各位博客打个招呼,多多指教!但愿我们的博客园越办越好,成为博客们温馨的家!
2005-09-10 00:02:00 717
原创 XCodeFactory3.0Beta1推出 !
XCodeFactory3.0新特点:(1)全新的操作界面(2)对项目的整个数据层进行管理,一个xcf项目对应一个.net项目。允许一个项目中关联多个数据库。(3)可以完全加载存在的数据库 ,实现无缝的双向操作:数据库 XCF(4)更简单的部署(执行安装程序XCodeFactory3.0Beta Setup.exe),自动升级。(5)生成的代码更加简洁易用。截图:(1)操作主界面(2)快捷菜单(
2005-09-09 11:54:00 2373 3
原创 函数设计之美--函数需要返回错误码吗(一)?
很久以前我就考虑这样一个问题:有这样一个函数,它的功能是从一个整数集合中返回最大的那个数,如何设计这个函数的签名了?当时没有得出令自己满意的答案,所以就搁浅了。今天重新思考,终于有所悟!现在把我思索的整个过程展现于此。最直观的函数签名设计如下:int GetMaxElement(ArrayList eleList) ;乍看之下,很好,很直接的反应了意图。稍微深入一点就发
2005-09-08 23:45:00 3106 3
原创 我购买的计算机书籍清单
准备转战广州,一柜子书成了负担,于是决心将其转让,列了个清单,一看还真不少(还有几本舍不得卖的就没列出来),呵呵一.C++系列(1)C++面向对象多线程编程 -- 人民邮电出版社 ,原价:68.00(2)C++ Templates中文版 -- 人民邮电出版社 ,原价:62.00(3)COM原理与应用 -- 清华大学出版社 ,原价:39.00(4)深度探索C++对
2005-09-06 20:48:00 3432 1
原创 自动注册自定义文件类型
在我们自己编写的应用中,经常会用自定义类型的文件的来保存与应用相关的数据,比如.xcf文件就是XCodeFactory应用程序的项目文件。如果没有向Windows注册表注册该文件类型,那么.xcf文件的图标将是windows的文件默认图标,并且你双击一个a.xcf文件,也不会自动启动XCodeFactory应用程序来加载a.xcf文件。如何使.xcf文件的图标变成我自己喜爱的图标、
2005-09-01 09:49:00 2604 1
OVCS视频会议源码(Windows、Linux、Android、iOS、Web、银河麒麟、统信UOS)
2023-06-20
即时通讯系统GGTalk 8.0 源码(Windows、Linux、Android、iOS)
2022-10-14
C#网络电子白板(支持pdf,word,ppt课件) 源码
2015-09-10
企业即时通信系统 - OrayTalk 2.1
2014-09-24
ESFramework通讯框架
2012-05-24
IM聊天系统源码(C#),支持桌面客户端和Silverlight客户端
2011-04-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人