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

环保局 网站建设淘宝摄影培训推荐

环保局 网站建设,淘宝摄影培训推荐,wordpress 第三方应用,一个网站如何做外链风控规则引擎#xff08;一#xff09;#xff1a;Java 动态脚本 日常场景 共享单车会根据微信分或者芝麻分来判断是否交押金汽车租赁公司也会根据微信分或者芝麻分来判断是否交押金在一些外卖 APP 都会提供根据你的信用等级来发放贷款产品金融 APP 中会根据很复杂规则来判…风控规则引擎一Java 动态脚本 日常场景 共享单车会根据微信分或者芝麻分来判断是否交押金汽车租赁公司也会根据微信分或者芝麻分来判断是否交押金在一些外卖 APP 都会提供根据你的信用等级来发放贷款产品金融 APP 中会根据很复杂规则来判断用户是否有借款资格以及贷款金额。 在简单的场景中我们可以通过直接编写一些代码来解决需求比如 // 判断是否需要支付押金 return 芝麻分 650这种方式代码简单如果规则简单且不经常变化可以通过这种方式在业务改变的时候重新编写代码即可。 在金融场景中往往会根据不同的产品不同的时间对接的银行等等多个维度来配置规则单纯的直接编写代码无法满足业务需求而且编写代码的方式对于运营人员来说无论实时性、可视化都很欠缺。 在这种情况往往会引入可视化的规则引擎允许运营人员可以通过可视化配置的方式来实现一套规则配置具有实时生效、可视化的效果。减少开发和运营的双重负担。 这篇主要介绍一下如何实现一个可视化的表达式的定义和执行。 表达式的定义 在上面说到的使用场景中可以了解中至少需要支持布尔表达式。比如 芝麻分 650居住地 不在 国外年龄在 18 到 60 之间名下无其他逾期借款 … 在上面的例子中可以将一个表达式分为 3 个部分 规则参数 (ruleParam)对应的操作 (operator)对应操作的阈值 (args) 则可以将上面的布尔表达式表示为 芝麻分 650 {ruleParam: 芝麻分,operator: 大于,args: [650] }居住地 不在 国外 {ruleParam: 居住地,operator: 位于,args: [国内] }年龄在 18 到 60 之间 {ruleParam: 年龄,operator: 区间,args: [18 60] }名下无其他逾期借款 {ruleParam: 在途逾期数量,operator: 等于,args: [0] }表达式执行 上面的通过将表达式使用 json 格式定义出来下面就是如何在运行中动态的解析这个 json 格式并执行。 有了 json 格式可以通过以下方式来执行对应的表达式 因为表达式的结构已经定义好了可以通过手写代码来判断所有的情况实现解释执行, 这种方案简单但增加操作需要修改对应的解释的逻辑, 且性能低 /* {ruleParam: 在途逾期数量,operator: 等于,args: [0] } */ switch(operator) {case 等于:// 等于操作break;case 大于:// 等于操作break;... }在第一次得到 json 字符串的时候直接将其根据不同的情况生成对应的 java 代码并动态编译成 Java Class方便下一次执行该方案依然需要处理各种情况但因为在第一次编译成了 java 代码性能和直接编写 java 代码一样 使用第三方库实现表达式的执行 使用第三方库实现动态表达式的执行 在 Java 中有很多表达式引擎常见的有 jexl3mvelspring-expressionQLExpressgroovyaviatorognlfeljsel 这里简单介绍一下 jexl3 和 aviator 的使用 jexl3 在 apache commons-jexl3 中该表达式引擎比较符合人的书写习惯其会判断操作的类型并将参数转换成对应的类型比如 3 4 和 “3” 4 这两个的执行结果是一样的 aviator 是一个高性能的 Java 的表达式类型其要求确定参数的类型比如上面的 “3” 4 在 aviator 是无法执行的。 jexl3 更适合让运营手动编写的情况能容忍一些错误情况aviator 适合开发来使用使用确定的类型参数来提供性能 jexl3 使用 加入依赖 dependencygroupIdorg.apache.commons/groupIdartifactIdcommons-jexl3/artifactIdversion3.2.1/version /dependency// 创建一个带有缓存 jexl 表达式引擎 JexlEngine JEXL new JexlBuilder().cache(1000).strict(true).create();// 根据表达式字符串来创建一个关于年龄的规则 JexlExpression ageExpression JEXL.createExpression(age 18 age 60);// 获取需要的参数java 代码太长了简写一下 MapString, Object parameters parameters {age: 30}// 执行一下 JexlContext jexlContext new MapContext(parameters);boolean result (boolean) executeExpression.evaluate(jexlContext);以上就会 jexl3 的简单使用 aviator 引入依赖 dependencygroupIdcom.googlecode.aviator/groupIdartifactIdaviator/artifactIdversion5.3.1/version /dependencyExpression ageExpression executeExpression AviatorEvaluator.compile(age 18 age 60);// 获取需要的参数java 代码太长了简写一下 MapString, Object parameters parameters {age: 30}boolean result (boolean) ageExpression.execute(parameters);注意 aviator 是强类型的需要注意传入 age 的类型如果 age 是字符串类型需要进行类型转换 性能测试 不同表达式引擎的性能测试 Benchmark Mode Cnt Score Error Units Empty thrpt 3 1265642062.921 ± 142133136.281 ops/s Java thrpt 3 22225354.763 ± 12062844.831 ops/s JavaClass thrpt 3 21878714.150 ± 2544279.558 ops/s JavaDynamicClass thrpt 3 18911730.698 ± 30559558.758 ops/s GroovyClass thrpt 3 10036761.622 ± 184778.709 ops/s Aviator thrpt 3 2871064.474 ± 1292098.445 ops/s Mvel thrpt 3 2400852.254 ± 12868.642 ops/s JSEL thrpt 3 1570590.250 ± 24787.535 ops/s Jexl thrpt 3 1121486.972 ± 76890.380 ops/s OGNL thrpt 3 776457.762 ± 110618.929 ops/s QLExpress thrpt 3 385962.847 ± 3031.776 ops/s SpEL thrpt 3 245545.439 ± 11896.161 ops/s Fel thrpt 3 21520.546 ± 16429.340 ops/s GroovyScript thrpt 3 91.827 ± 106.860 ops/s总结 这是写的规则引擎的第一篇主要讲一下 如何讲一个布尔表达式转换为 json 格式的定义方便做可视化存储和后端校验如何去执行一个 json 格式的表达式定义 在这里也提供了一些不同的表达式引擎和性能测试如果感兴趣的可以去尝试一下。 下一篇主要讲一下在引擎里面规则参数、操作符是如何设计的也讲一下可视化圆形的设计
http://www.hkea.cn/news/14486790/

相关文章:

  • 五个常见的电子商务网站网址优秀的个人网站
  • 旅游网站网页设计图片广西建设安全员证查询网站
  • 桂林卖手机网站哪里接单做网站
  • 贾汪徐州网站开发龙岩网站建设设计服务
  • 西乡移动网站建设天津线上推广公司哪个好
  • 微信网页上的网站怎么做浏览器网页版进入
  • 网站 信用卡支付接口装饰公司logo
  • 龙岩网站设计 贝壳下拉姑苏美食标题网页设计素材
  • 百度网站免费优化软件下载wordpress分类标签插件
  • 网站安全设置教程公司展厅
  • 小白自己做网站快速建站哪个平台好
  • 企业网站的维护工作要怎么做网站开发实训的心得
  • 政务信息公开和网站建设自评听说上海又要封了
  • 福州 网站建设 快搜网络创意网站
  • 江西省美丽乡村建设公布网站天元建设集团有限公司单位代码
  • 广州网站设计成功柚米企业运营策划公司
  • 牡丹区建设局网站专业做网站 台州玉环
  • 公司网站 百度北京企业建设网站公司哪家好
  • asp网站 手机登录乐清网站开发
  • php网站开发意思上海网站优化排名公司
  • 重庆城乡规划和建设局网站橙色可以做哪些网站
  • 上海网站制作怎么选什么网站做谷歌联盟好
  • 杭州网站设计我选柚v米科技wordpress 多店铺
  • 如何看网站点击量seminar是什么意思
  • 建设工程管理网站网络优化网站 s
  • 优酷 做视频网站还能成功吗现成ppt免费下载
  • 网站主题下载手工制作大全简单漂亮
  • 响应式网站psd自己怎么做网址开网站
  • 什么是网站什么是网页c2c网站管理系统
  • 威海网站建设whhl即时设计是什么软件