遵循Spring大纲的XML(反)序列化 SpringFox --ESBasic 可复用的.NET类库(27)
(题外话:前面连续N篇介绍都是一些应用比较复杂的类,这篇来个简单易懂的) 1.缘起: .NET Framework提供的Soap序列化的方式可以实现对象的xml序列化和反序列化(object <=> xml) ,但是它有三个缺点: (1) 它要求对象的类型定义时必须打上[Serializa...
Round缓存管理器RoundCacheManager--ESBasic 可复用的.NET类库(26)
1.缘起: 在增量自动获取器章节的缘起部分,我们曾提到增量缓存,本节我们将深入探讨它以及用于管理增量缓存的管理器。我们还是以增量自动获取器章节提到的例子作为基础,并做更进一步的讨论。 OK,现在让我们开始这有趣的旅程。 首先,基于前面例子给出的上下文,我们知道IIncreaseAutoRetriev...
增量自动获取器 IIncreaseAutoRetriever -- ESBasic 可复用的.NET类库(25)
1.缘起: 假设我们的订单报表系统,需要能够实时地统计当天的已成交订单的报表。最直观的解决方案就是,当每次接收到查询报表的请求时,就从存储设备读取当天所有已成交的订单,然后再进行分析计算给出结果。这是可行的,而且得到的结果也是非常实时的。 但是,这种方式无疑也是非常低效的,因为我们报表数据的统计过程可能相当复杂,而且,可能是成千上万的用户在同时查询报...
层级结构缓存IHiberarchyCache -- ESBasic 可复用的.NET类库(24)
1.缘起: 从IMultiTree到IAgileMultiTree,一切进展得都不错。但是,还有改进的地方。多叉树的一个优点在于,根据指定的节点能够非常迅速地找到其所有的子节点。但是缺点在于,根据节点值的ID定位到目标节点不够快,因为需要对所有的节点进行遍历操作。当节点非常多、层次非常深时,这种定位操作可能会严重的影响效率。 ...
灵巧多叉树 IAgileMultiTree -- ESBasic 可复用的.NET类库(23)
1.缘起: 我们还是以多叉树IMultiTree章节介绍的那个例子来继续讲解。假设,在系统运行的过程中,集团又成立了分公司D及其下属的一些单位,这些资料已经被存入了数据库中,但是这些信息在我们当前正在运行的MultiTree实例中并不存在,如果此时向MultiTree实例请求与D分公司相关的信息,那么将一无所获。除非,你手动地将D分公司及其下属单位的节点值添加...
片段整合提取器 ScatteredSegmentPicker -- ESBasic 可复用的.NET类库(21)
1.缘起: 当数据源中的数据量多到一定程度时,我们在查询时就经常使用分页策略。如果数据源是一个完整的整体,这没有什么大不了的,我们经常就在做类似的事情。但是,如果数据源不是一个完整的整体,而是由很多有序的片段构成的,并且不同的片段可能位于不同的位置(比如,位于不同的服务器节点上的内存中),甚至,每个片段内的数据还会随着时间的变化而变化的。 &nbs...
TopN排行榜容器 TopNOrderedContainer -- ESBasic 可复用的.NET类库(20)
1.缘起: 假设我们的会员管理系统有一个排行榜的功能,需要每隔一段时间就对系统中的所有会员(假设会员数有100万)的积分进行排序,然后对其中的前100名进行某些奖励。 这是一个典型的TopN算法――对巨大数量的对象进行排序,然后只需要取出最Top的前N名(N比对象总数小很多),作为排行榜的数据。 &n...
热缓存 IHotCache --ESBasic 可复用的.NET类库(19)
1.缘起: 假设我们有一个订单系统,现在这个系统要增加一个功能――允许客人查核他认为有问题的订单的详细信息。当客人觉得自己的某个订单不对劲时,他首先会从订单系统查询这个订单的详细信息,然后打电话告诉我们的客服有问题的订单的编号,客服再去查核,如果属实,客服还要进一步上报,如果该订单非常重要,则可能需要更进一步上报复查等。 ...
智能字典缓存 ISmartDictionaryCache-- ESBasic 可复用的.NET类库(18)
1.缘起: 假设我们有一个会员管理系统,需要向各方提供查询会员基础资料的功能。会员一经注册,其基础资料就将不再发生变化(如会员帐号、身份证ID、注册时间等等)。 基于这样的需求,我们可以将会员的基础资料“永久地”缓存在内存中,从而提升对任何一个会员基础资料的查询速度。 我设计了ESBasic...
对象获取器IObjectRetriever -- ESBasic 可复用的.NET类库(17)
1.缘起: ESBasic中许多管理对象的容器都用到了这个ESBasic.ObjectManagement.IObjectRetriever接口,所以单独将其提出来介绍一下。 当我们向对象容器(Container)请求某个对象时,也许目标对象还未加载到容器中,这可能是因为容器在初始化的时候就没有加载这个对象,也有可能是因为这个对象是容器初始化以后新增到数据库(当然也有可能是其它的持久化存储)的。....
本页面内关键词为智能算法引擎基于机器学习所生成,如有任何问题,可在页面下方点击"联系我们"与我们沟通。
开发与运维
集结各类场景实战经验,助你开发运维畅行无忧
+关注