模式的快速匹配与查找
2015-12-05 16:45
253 查看
伦理片 http://www.dotdy.com/
src="http://dl2.iteye.com/upload/attachment/0113/5617/1cc17fde-d2cc-3949-968a-38b308595fc5.png" border="0" >通过观察可以得到一个规律,需要匹配的字段(上图中的“渠道”,“省份”,“运营商”)要么是一个确定的数,要么是ALL(表示所有)。那么我们把上图转换成下面的这张:(这个图和上面的图不是一一对应哦。)
其实就是把上面的固定值替换成1,ALL替换成0。3个匹配字段,2个不同的值,根据数学的排列组合,总共的模式有2的3次方=8种:
这些组合还有一些顺序,比如最后匹配的是最模糊的(0,0,0),最上面的是最精确的(1,1,1),这个顺序可以根据业务需求来。
好,默认已经设计好了,下面来看我们怎么在程序中使用。
为了更加形象我还是举前面的例子:
1、首先配置需要匹配的数据:
加载到内存的MAP中,存放的格式(数据之间用下划线“_”隔开)如下:
2、假设现在有一个客户端请求过来,对应的数据,渠道:QD2;省份;ZJ;运营商是:YD。然后根据上面的8种模式以及顺序,在内存中组合(具体的组合方法有很多中,比如:把模式定义成二维数组通过循环把对应的数据填进去,遇到0则跳过,1则添加对应的数据)成下面的形式把(放到List里面):
影音先锋电影 http://www.iskdy.com/
3、通过List循环匹配第1步中的MAP,就能快速找打了,像例子中的第一条就匹配上了获得了值100,匹配上了之后立马跳出循环。
总结,这种模式可以扩展多个字段,字段越多模式就越多,每种模式的顺序需要根据具体的业务需求来确定。
欢迎访问个人网站pengmj.com,更多原创文章可阅!
相关文章推荐
- H5中需要掌握的 ANIMATION 动画效果
- TS科普22 PAT PMT PES关系
- android(26)(使用开源框架xutils实现多线程断点下载)
- 信息安全系统设计基础第十三周学习总结
- OC中的字符串(NSString)、字符串数组(NSArray)和字典(NSDictionary)
- Facade(外观)设计模式
- 查看端口
- lintcode 主元素
- 在PHP中$_SESSION的使用方法
- Python爬虫入门五之URLError异常处理
- 函数指针
- 函数指针
- 【已解决】Android Studio项目编译出错,可以运行
- [探测与发现]星际之门计划
- 另一篇并查集
- sql加索引和删除索引,提高效率等
- 宏与内联函数的区别
- Const #define
- DB Initialization(数据库初始化)[EF Code-First系列]
- LeetCode Unique Binary Search Trees