当前位置:网站首页>配置筛选机
配置筛选机
2022-07-01 21:45:00 【haohaounique】
在文章中,比较多的灵感来源于筛选谷物花生,筛选机等筛选机的结构
比较多的开发工作中,涉及业务分支和同一业务不同逻辑的,会比较适合下面模型:从大到小(漏斗结构) 或从小到大(倒漏斗结构) 或一次性选择(选择维度,获取维度参数)

维度:可以统一看成一个关键的参数或者多个参数组成的参数
1.基于A维度下,做选择或者在维度下设计维度参数
2.不做维度配置,但根据维度来做相同业务逻辑的不同操作
具体表设计如下:
配置同一业务的顶级类-->具体业务类--->获取具体的处理模型--->获取具体的参数表达式
create table check_expression
(
id int auto_increment
primary key,
business_type varchar(20) null comment '业务类型',
check_model varchar(20) null comment '校验模型',
check_expression text null comment '表达式',
check_expression_name varchar(200) null comment '表达式名称',
status tinyint default 1 null comment '0-失效 1-生效',
create_time datetime null comment '创建时间',
create_by varchar(60) null comment '创建人',
update_time datetime null comment '更新时间',
update_by varchar(60) null comment '更新建人'
)
comment '校验表达式';
create table check_config
(
id int auto_increment
primary key,
business_key varchar(100) null comment '业务key',
business_type varchar(20) null comment '业务类型',
business_name varchar(100) null comment '业务名称',
check_word varchar(100) null comment '校验关键字',
check_word_name varchar(100) null comment '校验关键字名称',
check_model varchar(20) null comment '校验模型',
check_model_name varchar(200) null comment '校验模型名称',
check_class varchar(500) null comment '业务类',
check_expression text null comment '校验表达式',
check_order tinyint default 1 null comment '校验顺序',
check_msg text null comment '提示语',
status tinyint default 1 null comment '0-无效 1-生效',
fresh_status tinyint default 0 null comment '0-未刷新 1-刷新中,2-已刷新',
try_times tinyint default 0 null comment '刷新次数,线程池处理',
fresh_time datetime default CURRENT_TIMESTAMP null comment '上次刷新时间',
create_time datetime null comment '创建时间',
create_by varchar(60) not null comment '创建人',
update_time datetime null comment '更新时间',
update_by varchar(60) null comment '更新建人'
)
comment '校验配置' auto_increment = 9;
create index id_business_key
on check_config (business_key);
create index id_business_type
on check_config (business_type);
create index id_check_model
on check_config (check_model);
create index id_create_by
on check_config (create_by);
create index id_fresh_status
on check_config (fresh_status);
create index id_status
on check_config (status);
create table business_class
(
id int auto_increment
primary key,
business_type varchar(20) null comment '001-校验',
business_model varchar(20) null comment '业务模型',
business_name varchar(200) null comment '业务名称',
business_class varchar(500) null comment '业务类',
status tinyint default 1 null comment '生效状态',
create_time datetime null comment '创建时间',
create_by varchar(60) null comment '创建人',
update_time datetime null comment '更新时间',
update_by varchar(60) null comment '更新建人'
)
comment '业务配置类' auto_increment = 9;
create index id_business_model
on business_class (business_model);
create index id_business_type
on business_class (business_type);
create index id_status
on business_class (status);核心代码(此处仅展示配置化校验代码):
思想:第一步获取核心配置
第二步:根据配置做业务处理
List<CheckConfig> checkList = checkConfigService.getCheckList(map, map.get("business_key"));
boolean checkResult = checkConfigService.checkConfigList(checkList, map); public boolean checkConfigList(List<CheckConfig> checkList, Map<String, String> map) {
if (CollectionUtils.isNotEmpty(checkList)) {
for (CheckConfig checkConfig : checkList) {
ICheckService checkService = CACHE_CHECK_CLASS.getIfPresent(checkConfig.getCheckClass());
if (checkService == null) {
checkService = SpringBeanUtils.getBeanByName(checkConfig.getCheckClass(), ICheckService.class);
if (checkService == null) {
throw new BusinessException(500, CommonUtils.getStringBuilder().append("checkConfigList bean未配置:").append(checkConfig.getCheckClass()).toString());
}
CACHE_CHECK_CLASS.put(checkConfig.getCheckClass(), checkService);
}
boolean param = checkService.checkParam(checkConfig, map);
if (param) {
map.put("check_code", CODE_500);
map.put("check_result", Boolean.FALSE.toString());
map.put("check_msg", checkConfig.getCheckMsg());
map.put("remark", CHECK_NOTICE_MSG);
return true;
}
}
}
return false;
}以上文章读懂不是很简单也不是很难;能够理解对于开发会是非常便捷的,不仅能优化别人同时也能优化自己(毕竟在实际项目中运用)
边栏推荐
- LIS (longest ascending subsequence) problem that can be understood [easy to understand]
- 黑马程序员-软件测试--06阶段2-linux和数据库-01-08第一章-linux操作系统阶段内容说明,linux命令基本格式以及常见形式的说明,操作系统的常见的分类,查看命令帮助信息方法,
- PHP reflective XSS, reflective XSS test and repair
- [deep learning] use deep learning to monitor your girlfriend's wechat chat?
- 详解JMM
- In the past 100 years, only 6 products have been approved, which is the "adjuvant" behind the vaccine competition
- 【MySQL】索引的创建、查看和删除
- News classification based on LSTM model
- [monomer] recommended configuration of streaming information i-bpsv3 server
- QT版本华睿相机的Demo程序实现
猜你喜欢

Yan Rong looks at how to formulate a multi cloud strategy in the era of hybrid cloud

MySQL系列之事务日志Redo log学习笔记
![[deep learning] use deep learning to monitor your girlfriend's wechat chat?](/img/03/ecf50eacc91c0633b0d9689cdad2c2.png)
[deep learning] use deep learning to monitor your girlfriend's wechat chat?

Go - exe corresponding to related dependency

Getting started with the lockust series

Significance and measures of security encryption of industrial control equipment

I received a letter from CTO inviting me to interview machine learning engineer

100年仅6款产品获批,疫苗竞争背后的“佐剂”江湖

Application of real estate management based on 3D GIS

企业架构与项目管理的关联和区别
随机推荐
The leader of the cloud native theme group of beacon Committee has a long way to go!
【juc学习之路第9天】屏障衍生工具
PHP reflective XSS, reflective XSS test and repair
flink sql 命令行 连接 yarn
GenICam GenTL 标准 ver1.5(4)第五章 采集引擎
One of the basic learning of function
CIO's discussion and Analysis on the definition of high-performance it team
QT版本华睿相机的Demo程序实现
Unity 使用Sqlite
Classify boost libraries by function
Gaussdb (DWS) active prevention and troubleshooting
Use of vscode
内存导致的电脑游戏中显示hdmi无信号 从而死机的情况
收到一封CTO来信,邀约面试机器学习工程师
从MLPerf谈起:如何引领AI加速器的下一波浪潮
Mysql——》MyISAM存储引擎的索引
Four methods of JS array splicing [easy to understand]
locust 系列入门
【MySQL】数据库优化方法
Why must digital transformation strategies include continuous testing?