首页 文章 精选 留言 我的

精选列表

搜索[规则链],共10000篇文章
优秀的个人博客,低调大师

小而美的规则编排引擎!

一 LiteFlow v2.6.14今天正式发布! 之前有很多人说组件的定义能不能不要那么耦合化,Java的单继承机制让组件无法再继承另外的类了。希望我这里做下调整。 在2.6.14这个版本中LiteFlow支持了声明式组件,也是这个版本的最主要的特性。 声明式组件让使用者在定义组件时有了一种新的选择。同时这个对我来说,也是为以后全面迈向声明式打下了一个基础。 更加方便,更加解耦,更加轻量同时更加强大是LiteFlow这个框架一直追求的。 如果你是第一次知道这个项目,可以去官网或相关的主页进行了解: 项目官网: https://liteflow.yomahub.com gitee托管仓库: https://gitee.com/dromara/liteFlow github托管仓库: https://github.com/dromara/liteflow 二 这个版本做了很长时间。声明式内部主要使用动态代理来实现。起初使用cglib,但是后来发现了cglib的一堆坑,查官方文档花了不少时间。后来果断抛弃了cglib,转而投向了byteBuddy。用了之后才发现byteBuddy果真是动态代理的一大神器,从功能上来说,比cglib强了不少,后续打算专门出篇文章来讲下byteBuddy这个字节码处理框架。 新特性介绍以及文档:https://liteflow.yomahub.com/docs/user-detail-guide/user-detail-guide-declare-component 新的版本测试用例已经增加到了384个,更多的测试用例,是大家放心使用LiteFlow的基础。每发布一个版本,我也会进行大量测试用例的撰写,用以保证质量。如果遇到小的问题,可以到群里进行反馈,我会第一时间进行修复。 三 本次更新列表如下: 特性 #I54VBS 从设计上改善NodeComponent,支持声明式组件 https://gitee.com/dromara/liteFlow/issues/I54VBS 增强 #I57IEJ requestId更换算法,看上去更加整洁 https://gitee.com/dromara/liteFlow/issues/I57IEJ 修复 #I576ZY 修复processor异常后 ICmpAroundAspect里面的aferProcess不能正常执行的问题 https://gitee.com/dromara/liteFlow/issues/I576ZY 四 如果你对这个项目感兴趣或是使用中遇到问题,可以加社区群进行反馈,社区群非常活跃,有不少开源和业界大佬,也能进行一些技术课题上的讨论,希望对技术感兴趣的你能加入社区。 加群方式为:https://liteflow.yomahub.com/blog/group-chat 开源不易,为了开源项目的更好推广,如果你的项目中用了LiteFlow框架并且还觉得不错的话,希望可以在以下地址登记你的公司,登记的公司都会更新到文档中的用户一栏中。 https://gitee.com/dromara/liteFlow/issues/I3CM7N 当然你也可以选择请我喝杯咖啡:P,这会是对我以及我努力成果的最大肯定! https://liteflow.yomahub.com/blog/donation

优秀的个人博客,低调大师

LiteFlow v2.6.12 版本发布,轻量小巧的规则引擎!

前言 LiteFlow v2.6.12版本正式发布!依赖包已发布中央仓库。 自从上次v2.6.11稳定版发布以来,社区使用反馈相对比较平稳。这次的升级是小版本升级。修复了社区用户在使用中遇到的一些bug。 所有的版本升级都是平滑向下兼容的,你可以不作任何的改动,直接升级到最新版本。每一次的新版本发布,我们都会作大量的验证和通过全部的测试用例。所以只要是正式版本,可以放心的升级。 如果你是第一次知道这个项目,可以去官网或相关的主页进行了解 项目官网: https://liteflow.yomahub.com gitee托管仓库: https://gitee.com/dromara/liteFlow github托管仓库: https://github.com/dromara/liteflow 关于测试用例 其实关于如何更好的理解LiteFlow的每个特性,我更建议大家去PULL下源码,结合下文档自己跑下测试用例。会理解的更为透彻。 测试用例目前总共有5个模块,大部分场景都有覆盖。 关于文档 之前在发布v2.6.11版本的时候,我对文档也进行一小部分的重整。把部分章节进行了合并归类,使新手阅读起来,更加条理清晰,同时也对文档进行了查缺补漏,补充了一些文档。 另外我每天在群里回答小伙伴提出的各种问题,时间一长,有很多人问出的问题都非常类似。为了避免重复问题的答应,我把大家经常问的问题整理了一下,并到了问题汇总和答疑中。希望小伙伴提问题,可以先在这章寻找下有没有你想要的答案,如果没有再在群里提问。 v2.6.12更新日志 增强 #I4YRVI 添加可执行实体对象作为构建流程的中间载体 https://gitee.com/dromara/liteFlow/issues/I4YRVI 修复 #I4YNN6 在某些高版本的springboot中,bean的重复注册会有问题 https://gitee.com/dromara/liteFlow/issues/I4YNN6 支持 为了开源项目的更好推广,如果你的项目中用了LiteFlow框架并且还觉得不错的话,希望可以在以下地址登记你的公司,登记的公司都会更新到文档中的用户一栏中。 https://gitee.com/dromara/liteFlow/issues/I3CM7N 当然你也可以选择请我喝杯咖啡:P,这会是对我以及我努力成果的最大肯定! https://liteflow.yomahub.com/blog/donation

优秀的个人博客,低调大师

PixiJS+自定义Shader实现不规则图片扫光效果

本来打算用原生WebGL来实现,但是水平有限,关于WebGL能讲的干货并不多,而且繁琐的准备工作对没有了解过的小伙伴也过于枯燥乏味,于是干脆用已经封装好大部分底层细节的PixiJS来实现了。 相信很多前端在做一些活动页面的时候都碰到过扫光效果的需求,有很多dom+css的奇技淫巧可以做到,比如 ①直接用一个光照图片从原图上飞过,用加了overflow:hidden 的元素限制显示区域。 ②把一张已经渲染出光照的图片盖在原图上,通过css的clip方法来裁剪出光照区域。 ③简单粗暴地使用 序列帧/gif/视频 来完成动画。 ④使用css的filter滤镜来添加高光。 当然基于①、②、③的原理,在canvas2D上也能方便地实现个功能。 虽然,但是,精zuan益niu求jiao精jian的我肯定不能满足于这些小打小闹的实现方式,图像处理自然shader就可以排上用场了。 js相关逻辑很简单: const stats = new Stats() document.body.appendChild(stats.domElement) let pageWidth = 0 let pageHeight = 0 const $canvas = document.querySelector('canvas') const renderer = new PIXI.Renderer({ view: $canvas, width: pageWidth, height: pageHeight, transparent: true, autoDensity: true, antialias: true }) let uniforms = null const stage = new PIXI.Container() stage.name = 'stage' const sprite = new PIXI.Sprite() sprite.name = 'sprite' sprite.anchor.set(0.5, 0.5) sprite.position.set(0, 0) stage.addChild(sprite) let pauseAt = 0 const ticker = new PIXI.Ticker() const loop = function () { stats.begin() // 性能监控 // 移动光线 if (uniforms) { if (uniforms.offsetX >= 2.3) { uniforms.offsetX = 0 pauseAt = performance.now() } else if (!pauseAt || performance.now() - pauseAt > 1000) { uniforms.offsetX += 0.01 pauseAt = 0 } } renderer.render(stage) stats.end() } ticker.add(loop) const img = 'pyro.png' const loader = new PIXI.Loader() loader.add([img]) loader.onComplete.add(async () => { // 获取材质 sprite.texture = loader.resources[img].texture // 获取片元着色器代码 const res = await fetch('./fragmentShader.frag') const fragStr = await res.text() // 添加 uniforms 变量 uniforms = { offsetX: 0.0, size: [sprite.width, sprite.height] } // 使用默认顶点着色器来创建过滤器 const filter = new PIXI.Filter(null, fragStr, uniforms) sprite.filters = [filter] // 开始动画循环 ticker.start() }) loader.load() const onResize = (e) => { pageWidth = document.body.clientWidth pageHeight = document.body.clientHeight sprite.position.set(pageWidth * 0.5, pageHeight * 0.5) renderer.resize(pageWidth, pageHeight) } onResize() window.onresize = onResize 需要提到的几点: ① pauseAt是为了让两次扫光的周期间隔一段时间,我这里是1秒 ② 传入Filter的 uniforms.size 属性是为了获取争取的采样坐标。PixiJS在片元着色器中提供的内置varying变量vTextureCoord 使用的是 input coords,而不是 filter coords。即Filter的贴图尺寸是2的幂,比原贴图要大。 这里是默认顶点着色器的源码,可以看到它传递vTextureCoord前十如何计算出来的。 这是片元着色器的代码: varying vec2 vTextureCoord; uniform vec2 inputPixel; uniform sampler2D uSampler; uniform vec2 size; uniform float offsetX; // 光束偏移距离(归一化) void main(void) { vec2 uv = vTextureCoord.xy * inputPixel.xy / size.xy; vec4 color = texture2D(uSampler, vTextureCoord); float y = uv.y; float x = uv.x - offsetX; if (color.a >= 1.0) { // 一粗一细两束光线 if ((y < -x && y > -x - 0.1) || (y < -x - 0.2 && y > -x - 0.25)){ color = mix(color, vec4(1.0), 0.5); } } gl_FragColor = color; } ①vec2 normalizedCoords = vTextureCoord.xy * inputPixel.xy / size.xy; 用于把过滤器贴图缩放到原贴图的尺寸内; ② 这里画了一粗一细两束光线,分别是 y=-x 与 y=-x-0.1 两个函数图围起来的区域,和y=-x-0.3 与 y=-x-0.25 两个函数图围起来的区域; ③mix函数的原型是genType mix (genType x, genType y, genType a),结果会返回线性混合的x和y,即 x*(1−a)+y*a,我这里是以0.5的比例混合 最终效果如下: 完整代码戳这里 在线演示1、在线演示2

优秀的个人博客,低调大师

智能的IT 运营改变了混合多云管理的游戏规则

通过认知与自动化相结合的运营平台,实现企业混合多云架构智能运维的转型目标 数字化转型正在使企业面对一个动态的、多功能的、同时又复杂的混合多云环境。最近一项 IBM 市场开发与洞察 (MD&I) 研究发现,89% 的组织希望在未来两年内增加或保持云提供商的数量,而托管云服务的使用预计将增加两倍。但是,由于企业依赖更多平台来迁移和优化云中的工作负载,IT 运营会变得更加复杂。 企业需要更智能的IT 运营,其具有前瞻性、可预测性,并能够进行数据驱动决策,从而有助于建立新的、敏捷的业务模型,并支持创新计划,从而保持企业的领先地位。 传统IT 运营面临的挑战 IT 数据是碎片化和竖井式的,因此相互关联和分析的过程极其耗时; 如果不投资昂贵的数据科学技能,几乎不可能得出任何有意义的洞察或者根因分析; 确定正常基线行为和预测未来趋势的能力有限; 现在的工具和流程是被动的,根本没有能力预先解决可能发生的问题 CIO 们需要简单、直观和360°的IT 服务视图 一个集成的健康诊断系统,提供深层次的可执行的洞察; 挖掘如何更快地解决问题、优化基础设施环境和减少IT 支出的机会; 提供一个减少或消除数据转换、分析和展现中的人工成本的解决方案; 通过数据驱动的决策对项目和运营进行优先级排序,以增强业务服务体验 借助智能IT支持数据洞察 为了应对这一挑战,企业正转向通过提供端到端可见性和可操作的控制台跨混合多云环境进行自助服务管理。通过使用完全托管的IT 分析解决方案提供AIOps 即服务的交付模式,该方案可提取企业IT 运营数据,并采用预先构建的机器学习模型进行数据的统计、分析,提供深刻洞察及自动化服务。 AIOps 不仅意味着能够看到数据,而且能够在数据背后拥有一些智能操作,以便提供您自己看不见的洞察。它筛选数据以查找相关性、模式、趋势和风险,进行先发制人的管理。” 了解更多IBM混合多云战略,请访问:http://cloud.51cto.com/act/ibm202010/cloud#p3 【责任编辑: 张燕妮 TEL:(010)68476606】

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册