`
答案在风中
  • 浏览: 65539 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

版本控制与过滤器设计

阅读更多
    2013年的第一篇博客,祝大家新年快乐。有段时间没维护博客了,太懒了,也不知道该写些什么,写学习心得感觉不如看书来的直接,写技术应用吧又没那么多货。最近不是很忙,前天抽空把过滤部分的代码剥离了个原型出来,谈不上复杂高深,权当抛砖引玉,大家有好的想法欢迎交流学习。
    之前我博客中谈到关于过滤器与缓存,需要指出一点我们所需要过滤掉的数据并非是毫无用处的脏数据,而是在某些特定环境下不合适的数据。例如DB内存放了一个榜单A,对与某个应用的不同版本v1、v2、v3能处理的分别是A的一个子集B、C、D。应对这种情况,有几种处理方式:
    第一种,在分别根据版本1、2、3在DAO层维护三份数据,也即需要不同的查询指令(可以认为这也是一种过滤),毫无疑问这种方案是成立的,然而问题是如果每个版本应用都需要维护不同的数据接口维护以及代码的整洁度都会受到影响;
    第二种,在DB为每个版本维护不同的数据源,即在数据创建时为不同版本创建合适的数据列表,这种设计在最初情况下可能是生效的,可是版本迭代以及数据更新将会给数据维护和运营造成巨大压力;
    第三种,便是我采用的过滤器方案。这一方案是也是建立在方案一和方案二至上的,我使用sql来完成对数据的筛选(查询满足某系条件的数据集合),对不同端无法公用的数据当然需要分别维护,在此基础上我引入了过滤器来解决客户端版本迭代功能差异对数据的不同要求。假设DAO层取出数据集合A,在Facade层通过对版本的识别,对于v1我过滤掉A-B部分,对于v2过滤掉A-C(缓存可以施加在过滤完成之后的数据至上)。这种方式的好处是:1.为版本向后兼容提供了便利,倘若数据集合A在不断扩大,响应的v1版本需要过滤的条件也增多,只需要新增入新的过滤器便能够完成这一工作;2.为代码复用提供可能性,对与v1、v2可能存在共有的过滤条件,针对该条件设计的过滤器便可以进行复用。
    说完过滤器,再简单谈谈版本控制,版本控制最重要的是要做到兼容,向前的兼容自然不必说,未来的需求永远无法预知所以向后的兼容也很重要。我们采用了功能码来区分每个不同版本对数据的要求差异,为什么不用版本号区分?如果采用版本号,意味着需要给每个版本建立分支,维护难度太大。例如v1支持功能b能处理的数据为B,v2支持功能b、c能处理的数据为C(C包含B),v3支持功能b、c、d能处理的数据为A(A包含C),对于v1、v2、v3我分别设定了一个功能码1、11、111,左起每一位1分别表示支持bcd功能,v1的码值为1支持功能b那么就需要过滤掉A-C、C-B这部分数据,对于v2需要过滤掉A-C,v3支持全量的数据A无需过滤。当数据集A扩充至X,v1的码值是不改变的1,支持数据也为B,需要过滤的数据则为X-A、A-C、C-B,即新增了过滤X-A数据的filter,而这个filter对于版本v2、v3同样适用,这就完成了向后兼容以及代码复用的设计需求。
     附件里是我剥出来的代码,没有把根据功能码进行版本控制这部分功能放在里面(这个实现不困难,大家有兴趣可以自己试试)。有不足指出欢迎大家指出讨论。
1
2
分享到:
评论

相关推荐

    基于单片机的自洁式空气过滤器反吹控制系统设计.pdf

    文章所描述的自洁式空气过滤器反吹控制系统设计,通过采用单片机技术,实现了对过滤器的自动化清洁和远程监控。该系统结构简单、稳定可靠,并且具有良好的可扩展性,能够满足现代工业生产对空气过滤和远程监控的严格...

    设计模式-拦截过滤器

    - **视图控制器的生命周期管理**:在显示或隐藏视图控制器时,可以添加过滤器来处理过渡动画、数据刷新等问题。 - **用户认证与授权**:在用户访问特定功能或资源之前,可以通过过滤器检查其权限,确保安全。 - **...

    毕业论文设计--水处理系统中过滤器的plc控制系统设计.doc

    水处理系统中过滤器的PLC控制系统设计 水处理系统中的过滤器PLC控制系统设计是当前污水处理控制系统的热门话题。传统的继电器—接触器控制系统已经不能满足工业污水处理系统的控制要求,逐渐被DCS、现场总线控制、...

    基于S7-200 PLC的板式过滤器的系统设计.pdf

    2. 系统设计目标与功能:设计一个基于S7-200 PLC的板式过滤器控制系统,目的是将污油过滤成为净油。系统要求具备自动化控制、显示当前过滤箱内的压力值、报警及监控功能。为了适应调试、试车和维修等实际操作,系统...

    过滤器(java编写的过滤器)

    ### 过滤器的生命周期与执行流程 过滤器具有自己的生命周期方法,主要包括`init()`、`doFilter()`和`destroy()`。当Web容器加载过滤器时,会调用`init()`方法进行初始化;每当有请求符合过滤器的映射规则时,就会...

    水处理系统中过滤器的plc控制系统设计-毕业论文.doc

    水处理系统中过滤器的PLC控制系统设计是指在水处理系统中使用可编程逻辑控制器(PLC)来控制过滤器的运行。这个系统的设计需要考虑到过滤器的工作原理、控制系统的硬件和软件设计等方面。 首先,过滤器的工作原理是...

    拦截器和过滤器的区别

    在现代软件开发过程中,特别是Web应用程序中,为了实现灵活高效的业务逻辑处理及控制流管理,常常会使用到两种设计模式:拦截器(Interceptor)与过滤器(Filter)。这两种技术虽然在功能上有一定的相似之处,但其...

    过滤器的编写

    过滤器模式是一种设计模式,它允许我们通过一系列的处理步骤(即过滤器)来改变输入数据,以满足特定的需求。在Web应用程序中,过滤器通常作为Servlet容器的一部分,如Tomcat或Jetty,它们在请求到达目标Servlet...

    JAVA Web中过滤器

    在JAVA Web开发中,过滤器(Filter)是一个至关重要的组件,它主要负责在请求被Servlet处理之前或之后执行一些预处理或后处理...在实际项目中,根据需求合理设计和使用过滤器,能够大大提升应用程序的质量和用户体验。

    过滤器.zip

    这里提到的"过滤器.zip"文件包含了一系列的示例项目,从filter_demo到filter_demo5,它们可能是为了帮助用户理解和实践过滤器机制而设计的。接下来,我们将深入探讨过滤器的相关知识点。 过滤器在Java Web应用中,...

    矿用高压全自动反冲洗过滤器的设计

    针对当前煤矿开采中反冲洗过滤器存在的人为干预和控制困难问题,一种全新的纯机械结构的高压全自动反冲洗过滤器被研发出来。这款过滤器的独特之处在于它能够利用自身的压差来实现在线反冲洗和排污,无需人工操作,...

    水处理系统中过滤器的plc控制系统设计--本科毕业论文.doc

    水处理系统中过滤器的PLC控制系统设计是本科毕业论文的主题,论文主要讨论了污水处理控制系统的发展和PLC控制系统在水处理系统中的应用。 知识点1:污水处理控制系统的发展 * 早期污水处理控制系统主要采用继电器...

    PLC海水过滤器反冲洗自动控制系统分析.pdf

    在海水过滤器的反冲洗自动控制系统中,PLC的应用尤为重要,它可以实现海水过滤器的自动启停,有效避免了手动操作的不便和可能带来的误差,提高了海水过滤系统的运行效率和可靠性。 二、海水过滤器反冲洗自动控制...

    水处理系统中过滤器的plc控制系统设计-大学论文.doc

    水处理系统中过滤器的PLC控制系统设计 PLC(Programmable Logic Controller, 可编程逻辑控制器)是一种广泛应用于工业控制领域的自动化控制设备。随着社会和电子技术的快速发展,控制要求不断精密,传统的继电器—...

    JavaWeb中过滤器的三个小案例

    在JavaWeb开发中,过滤器...在实践中,开发者可以根据需求灵活设计过滤器,实现更多复杂的功能,如日志记录、性能监控等。同时,注意过滤器的配置和顺序也会影响其效果,合理配置过滤链,可以使过滤器发挥更大的作用。

    自动卷绕式空气过滤器的优化设计

    自动卷绕式空气过滤器设计时应充分考虑用户的操作习惯和方便性,比如设置清晰的操作指示、简化操作流程、设置紧急停止按钮、便于观察运行状态的窗口等。这不仅提高了用户体验,也降低了误操作的概率。 6. 控制多样...

    水处理系统中过滤器的PLC控制系统设计说明.doc

    【水处理系统中过滤器的PLC控制系统设计】 在水处理系统中,过滤器是至关重要的组成部分,负责去除水中的悬浮物和颗粒物质,确保水质的清洁。传统的继电器-接触器控制系统由于其局限性,已经无法满足现代工业污水...

    servlet过滤器技术实例,

    Servlet 3.0及以上版本引入了动态过滤器链,允许在运行时添加和移除过滤器,增强了过滤器的灵活性。 六、实际项目中的使用 在实际项目中,我们经常结合Spring框架使用过滤器。例如,Spring Security就是通过过滤器...

Global site tag (gtag.js) - Google Analytics