上一页 1 2 3 4 5 6 7 8 9 10 ··· 17 下一页
摘要: 当Form包含自定义控件,或UserControl存在嵌套时,外层的对象就会接收不到KeyDown等事件了,但是,我们可以通过override基类的ProcessDialogKey方法来达到同样的效果,比如:Code highlighting produced by Actipro CodeHi... 阅读全文
posted @ 2010-07-10 15:00 zhuweisky 阅读(1690) 评论(0) 推荐(0) 编辑
摘要: 1.缘起:从IMultiTree到IAgileMultiTree,一切进展得都不错。但是,还有改进的地方。多叉树的一个优点在于,根据指定的节点能够非常迅速地找到其所有的子节点。但是缺点在于,根据节点值的ID定位到目标节点不够快,因为需要对所有的节点进行遍历操作。当节点非常多、层次非常深时,这种定位操... 阅读全文
posted @ 2010-06-30 10:18 zhuweisky 阅读(4201) 评论(7) 推荐(1) 编辑
摘要: 如果我使用TcpListener绑定本地的7000端口,并启动监听。然后,再使用TcpClient绑定本地7000端口,此时需要开启TcpClient的地址重用设置:Code highlighting produced by Actipro CodeHighlighter (freeware)h... 阅读全文
posted @ 2010-05-26 11:42 zhuweisky 阅读(2441) 评论(3) 推荐(0) 编辑
摘要: 1.缘起: 我们还是以多叉树IMultiTree章节介绍的那个例子来继续讲解。假设,在系统运行的过程中,集团又成立了分公司D及其下属的一些单位,这些资料已经被存入了数据库中,但是这些信息在我们当前正在运行的MultiTree实例中并不存在,如果此时向MultiTree实例请求与D分公司相关的信息,那... 阅读全文
posted @ 2010-05-12 09:54 zhuweisky 阅读(2442) 评论(2) 推荐(4) 编辑
摘要: 1.缘起:假设我们要描述一个集团公司的组织结构,这个集团公司的体系分为如下几层:集团、公司、子公司、部门、小组。即一个集团由多个公司构成,每个公司又有几个子公司构成,每个子公司拥有多个部门,每个部门又内分为几个小组。很明显,这种体系结构就是一个多叉树。我设计了ESBasic.ObjectManage... 阅读全文
posted @ 2010-04-18 15:08 zhuweisky 阅读(3761) 评论(5) 推荐(3) 编辑
摘要: 对于集合的遍历,使用foreach是非常方便的,但是Emit动态生成foreach的代码就要复杂很多。它涉及到以下几个方面:(1)IEnumerable<> 是所有可枚举类型的基础接口。(2)IEnumerator<>,通过IEnumerable<> 接口的GetEnumerator方法可以获取枚举器IEnumerator<>,而对集合元素的遍历正是... 阅读全文
posted @ 2010-04-02 11:42 zhuweisky 阅读(2113) 评论(2) 推荐(0) 编辑
摘要: 我们在使用GDI+实现类似画图板这样的系统时,经常需要支持平移、滚动条、缩放等功能、解决绘制时的闪烁,对于缺乏GDI+开发经验的朋友,经常会在这些问题上纠缠一段或长或短的时间。在这里,我将自己的经验小结一下,给后来的朋友作个参考。1.如何解决绘制闪烁?(1)所有的绘制动作都应该Paint事件中完成。  比如,即使我们要拖动一个View object,通常在MouseMove事件中处理拖动行为,但是... 阅读全文
posted @ 2010-03-26 15:02 zhuweisky 阅读(3994) 评论(2) 推荐(4) 编辑
摘要: 1.缘起: 当数据源中的数据量多到一定程度时,我们在查询时就经常使用分页策略。如果数据源是一个完整的整体,这没有什么大不了的,我们经常就在做类似的事情。但是,如果数据源不是一个完整的整体,而是由很多有序的片段构成的,并且不同的片段可能位于不同的位置(比如,位于不同的服务器节点上的内存中),甚至,每个... 阅读全文
posted @ 2010-03-10 14:21 zhuweisky 阅读(2471) 评论(4) 推荐(1) 编辑
摘要: 1.缘起:假设我们的会员管理系统有一个排行榜的功能,需要每隔一段时间就对系统中的所有会员(假设会员数有100万)的积分进行排序,然后对其中的前100名进行某些奖励。 这是一个典型的TopN算法――对巨大数量的对象进行排序,然后只需要取出最Top的前N名(N比对象总数小很多),作为排行榜的数据。 解决... 阅读全文
posted @ 2010-01-18 10:00 zhuweisky 阅读(2672) 评论(4) 推荐(2) 编辑
摘要: 1.缘起: 假设我们有一个订单系统,现在这个系统要增加一个功能――允许客人查核他认为有问题的订单的详细信息。当客人觉得自己的某个订单不对劲时,他首先会从订单系统查询这个订单的详细信息,然后打电话告诉我们的客服有问题的订单的编号,客服再去查核,如果属实,客服还要进一步上报,如果该订单非常重要,则可能需... 阅读全文
posted @ 2010-01-05 10:13 zhuweisky 阅读(3541) 评论(6) 推荐(3) 编辑
摘要: 1.缘起:假设我们有一个会员管理系统,需要向各方提供查询会员基础资料的功能。会员一经注册,其基础资料就将不再发生变化(如会员帐号、身份证ID、注册时间等等)。基于这样的需求,我们可以将会员的基础资料“永久地”缓存在内存中,从而提升对任何一个会员基础资料的查询速度。我设计了ESBasic.Object... 阅读全文
posted @ 2009-12-21 16:38 zhuweisky 阅读(3419) 评论(5) 推荐(1) 编辑
摘要: 1.缘起:ESBasic中许多管理对象的容器都用到了这个ESBasic.ObjectManagement.IObjectRetriever接口,所以单独将其提出来介绍一下。当我们向对象容器(Container)请求某个对象时,也许目标对象还未加载到容器中,这可能是因为容器在初始化的时候就没有加载这个... 阅读全文
posted @ 2009-12-10 09:12 zhuweisky 阅读(2373) 评论(0) 推荐(1) 编辑
摘要: 1.缘起: 为了提升系统的性能或减轻数据库的压力等原因,我们经常在系统中使用缓存来把那些经常使用的数据保留在内存中。如果因为某些原因,缓存中这些经常使用的数据不能及时与数据源进行同步更新,那么采用定时刷新缓存中的数据有可能就是一种合适的选择。 如果你的缓存是定时刷新,那么你就需要自己为其维护一个定时... 阅读全文
posted @ 2009-11-21 10:09 zhuweisky 阅读(3626) 评论(4) 推荐(0) 编辑
摘要: 1.缘起: 对象池应该是一个“历史悠久”的概念了,像我们经常说的线程池、还有ADO.NET中的数据库连接池等,都属于对象池的应用。 我们的应用有时也会碰到需要使用对象池的情况,我举个例子说明一下。假设,我们需要记录某个类MyClass的每个方法每次被调用时方法执行所消耗的时间,而且,这个类是使用在多... 阅读全文
posted @ 2009-11-11 09:43 zhuweisky 阅读(3240) 评论(3) 推荐(0) 编辑
摘要: 1.缘起: 假设我们的订单处理系统所要处理的订单是有优先级的,也就是说,不同的订单类型所要求被处理的紧迫程度不同,对那些优先级高的注单要先处理,对于优先级低的注单可稍后处理。对于处于同一优先级的订单了,就按照其到达的先后顺序进行处理。 这是一个典型的管理具有优先级的对象的需求,注单就是具有优先级(W... 阅读全文
posted @ 2009-11-04 16:03 zhuweisky 阅读(2650) 评论(5) 推荐(1) 编辑
摘要: 1.缘起: 假设我们的订单系统需要管理所有未处理的订单,而客人经常需要查询属于自己的未处理的订单列表。另外,可能客服人员也需要根据订单ID迅速地找到对应的未处理订单。基于第一个需求,我们就可以将未处理的订单依据客人的帐号进行分组管理。 我设计了ESBasic.ObjectManagement.Man... 阅读全文
posted @ 2009-10-27 15:09 zhuweisky 阅读(2563) 评论(5) 推荐(2) 编辑
摘要: 1.缘起:我们经常需要对一些动态对象进行管理,最常见的例子就是在线用户管理。当一个用户成功登陆到服务器后,我们就需要将其管理起来;当他退出后,就不再需要再管理他了。这就是所谓动态对象的含义,这些对象并不是一直需要被管理,只有当其被激活后,才需要被管理。它们总是在“激活”状态和“非激活”状态之间不断地... 阅读全文
posted @ 2009-10-21 09:43 zhuweisky 阅读(3286) 评论(6) 推荐(2) 编辑
摘要: 1.缘起:假设我们的用户管理系统要求用户的ID和Name都必须是唯一的,并且用户的ID和Name一经确定就不能被修改。而且管理系统经常需要根据ID来查找Name,也经常需要根据Name来查找ID。根据这样的需求,我们可以考虑使用一个Dictionary来将ID和Name缓存起来,通常ID作为Key,... 阅读全文
posted @ 2009-10-15 10:49 zhuweisky 阅读(2839) 评论(4) 推荐(4) 编辑
摘要: 1.缘起: 对于需要进行线程同步的地方,我们经常用的就是.NET内置的lock关键字和ReaderWriterLock类。lock的功能相对简单,因为它不区分读写,也就是说如果都在lock块中,读线程都会阻塞另一个读线程,在很多读远远多于写的应用中,这会极大地折损性能。所以我们也经常需要使用读写分离... 阅读全文
posted @ 2009-10-10 16:16 zhuweisky 阅读(3460) 评论(6) 推荐(1) 编辑
摘要: 1.缘起:假设我们的C/S系统中服务端与客户端之间采用UDP进行通信,那么服务端如何知道每个客户端当前是否仍然在线了?有可能某个客户端一直没有退出,但是在很长一段时间内都没有与服务端作任何通信,那么服务端就应该认为这个客户端已经离线了吗?为了能让服务端掌握每个客户端是否在线的状态,我们可以这样做,只... 阅读全文
posted @ 2009-09-30 09:20 zhuweisky 阅读(4649) 评论(9) 推荐(7) 编辑
上一页 1 2 3 4 5 6 7 8 9 10 ··· 17 下一页