当前位置: 首页 > news >正文

网站关键词长度网站建设的方法有哪些

网站关键词长度,网站建设的方法有哪些,深圳网站建设推进,手机做无水印短视频网站spring boot策略模式实用: 告警模块 0 涉及知识点 策略模式, 模板方法, 代理, 多态, 反射 1 需求概括 场景: 每隔一段时间, 会获取设备运行数据, 如通过温湿度计获取到当前环境温湿度;需求: 对获取回来的进行分析, 超过配置的阈值需要产生对应的告警 2 方案设计 告警的类…

spring boot策略模式实用: 告警模块

0 涉及知识点

策略模式, 模板方法, 代理, 多态, 反射

1 需求概括

  • 场景: 每隔一段时间, 会获取设备运行数据, 如通过温湿度计获取到当前环境温湿度;
  • 需求: 对获取回来的进行分析, 超过配置的阈值需要产生对应的告警

2 方案设计

告警的类别往往容易变化, 比如今天只有温度过高告警, 明天可能就要增加一个温度过低告警, 所以设计最好可以满足开闭原则, 方便后续对功能进行删减;

大概的图示

整体思路如下:

  • 顶层接口Handler定义了两个方法, check用于校验是否应该产告警, 入参可以选择传入告警配置和需要判定对象, handle方法主要用于告警的具体处理过程, 如之前是否存在告警等;
  • 统一抽象类AbstractHandler中, 重写handle方法, 作为模版方法, 一般不同的告警处理流程是相近的, 可以抽象处理, 如都要判断进行判断当前是否已存在告警等; 抽象类中还可以抽象出通用的方法和声明通用属性;
  • 各个具体实现类, 如TemperatureHandler等, 各类告警的具体实例对象, 如果告警判定方式或处理流程上有不同, 可以选择性的重写check方法或handle方法, 由于java的多态, 程序运行时会选择正确处理方式;

为了保证模块的完整性, 增加代理类屏蔽告警的内部处理逻辑, 外部统一通过代理类调用;

3 代码实现

  • 接口

    /*** 顶级接口* @author lixiyuan*/
    public interface Handler {boolean check(AlarmConfig config, Object data);void handle(AlarmConfig config, Integer id, Object data);
    }
    
  • 抽象类

    /*** 抽象类, 抽取通用字段/方法, 实现模板方法* @author lixiyuan*/
    public class AbstractHandler implements Handler {@Autowiredprivate CurrentAlarmService currentAlarmService;@Overridepublic boolean check(AlarmConfig config, Object data) {return false;}@Overridepublic void handle(AlarmConfig config, Integer id, Object data) {// 获取当前存在的告警CurrentAlarm current = currentAlarmService.getCurrentAlarmById();// 比较阈值boolean check = check(config, data);// 为true发生告警if (check) {if (current == null) {// 创建告警currentAlarmService.save();} else {// 更新告警currentAlarmService.update();}} else {if (current != null) {// 结束告警currentAlarmService.finish();}}}/*** 反射获取属性值*/protected String getValueByField(Object obj, String fieldName) {if (obj == null) {return "";}try {Field field = obj.getClass().getDeclaredField(fieldName);field.setAccessible(true);Object value = field.get(obj);return value == null ? "" : value.toString();} catch (NoSuchFieldException | IllegalAccessException e) {System.out.println();throw new RuntimeException(e);}}/*** 如果判定方法比较通用, 也可以在这里定义好, 各个子类调用一下就行*/protected boolean commonCompare() {return false;}
    }
    
  • 实现子类

    /**** @author lixiyuan*/
    @Component
    public class HumidityHandler extends AbstractHandler {@Overridepublic boolean check(AlarmConfig config, Object data) {// 通过反射获取实时数据String humidity = getValueByField(data, "humidity");// 拿到配置中的阈值,然后比较, 略return false;}
    }/**** @author lixiyuan*/
    @Component
    public class TemperatureHandler extends AbstractHandler {@Overridepublic boolean check(AlarmConfig config, Object data) {// 通过反射获取实时数据String humidity = getValueByField(data, "temperature");// 拿到配置中的阈值,然后比较, 略return false;}
    }
    

    代码详见: [完成代码](nanqiangli/wushixian (github.com))

http://www.tj-hxxt.cn/news/24237.html

相关文章:

  • wordpress多网站整合在一个后台网站策划是什么
  • 国家企业信用信息公示网官方seo整体优化
  • dz网站数据备份恢复最近疫情最新消息
  • 搬瓦工vps做网站速度怎么样百度引流免费推广怎么做
  • 已有域名 做网站网络广告网站
  • 重庆网站托管外包公司哪家好推广链接怎么自己搞定
  • asp.net网站开发四酷全书种子搜索神器
  • 网站外链建设seo tdk
  • 网站做多久搜索引擎优化的定义是什么
  • 一般做美食网站的产品需求职业技能培训机构
  • 西安网站建设工程常德网站建设制作
  • 制作宣传册用什么app沈阳专业seo关键词优化
  • 怎样低成本做网站推广网络推广大概需要多少钱
  • 沈阳网站建设小工作室广州企业推广
  • 营销型网站建设考试答案推广普通话宣传标语
  • 数商云是外包吗关键词优化seo公司
  • 中企动力科技股份有限公司厦门分公司沙洋县seo优化排名价格
  • 网站开发的运行可行性专业公司网络推广
  • 购物商城英语seo综合查询网站源码
  • 做网站商城怎么样百度人工服务24小时电话
  • 做网站页面一般用什么软件友情链接实例
  • 中交建设招标有限公司网站360提交入口网址
  • 广西自治区政府网站建设要求太原关键词排名优化
  • 网页设计免费模板图片关键词排名优化易下拉技术
  • 网站开发是网站后台开发吗经典营销案例
  • nodejs做网站能保护源代码吗网络营销与直播电商专业介绍
  • 微博网站开发友情手机站
  • 网站备案好弄吗推广计划书范文
  • 做网站确定什么主题好搜索引擎优化英文简称
  • 手机网站优化排名seo站长网怎么下载