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

网站开发中怎么设置快捷键类似百科式的网站建设

网站开发中怎么设置快捷键,类似百科式的网站建设,营销培训,好一点网站建设公司前言 项目中部署到多个煤矿的上#xff0c;每一种煤矿的情况都相同#xff0c;涉及到支架的算法得写好几套#xff0c;于是想到用脚本实现差异变化多的算法#xff01;一开始想到用java调用js脚本去实现#xff0c;因为这个不需要引入格外的包#xff0c;js对我来说也没…前言 项目中部署到多个煤矿的上每一种煤矿的情况都相同涉及到支架的算法得写好几套于是想到用脚本实现差异变化多的算法一开始想到用java调用js脚本去实现因为这个不需要引入格外的包js对我来说也没啥学习成本后来发现js的方法的参数中没办法使用java的对象传参。如果要把java对象分解成多个基本类型的参数传递的话js的代码实现就变复杂和臃肿了。于是改用groovy脚本去实现后来经过两个小时的实现终于调通groovy的语法和java类似学习成本很低且groovy可以引入java的类使用java的对象调用java的方法也很简单下面给出实现的代码图文教程。 Groovy简介 Groovy是一种基于JVMJava虚拟机的动态编程语言它具有Java的兼容性和许多强大的功能可以用来快速开发Java应用程序。 以下是Groovy的一些主要特点 静态类型Groovy是静态类型的语言这意味着你可以在编译时检测到许多常见的错误从而提高代码的质量和可维护性。动态类型同时Groovy也是动态类型的语言这意味着你可以在运行时动态地改变变量的类型这使得Groovy代码更加灵活和易读。强大的语法Groovy的语法比Java更简洁、更易读。它支持多种编程范式如面向对象编程和函数式编程。与Java无缝集成Groovy可以与Java代码无缝集成这意味着你可以在Groovy代码中使用Java类库反之亦然。这使得Groovy成为Java开发者的强大工具。简洁的语法与Java相比Groovy的语法更为简洁。它支持许多Java不支持的特性如可选的括号、可选的类型声明等。强大的元编程能力Groovy具有强大的元编程能力它允许你在运行时动态地修改代码。这使得Groovy成为快速开发原型或快速实现想法的有力工具。测试驱动开发Groovy支持测试驱动开发TDD它使得你可以快速编写测试代码并以此驱动你的业务逻辑代码。闭包Groovy支持闭包这是一种可以包含代码块的语法结构可以作为参数传递给函数也可以赋值给变量。运行时类型检查虽然Groovy是动态类型的语言但它也支持运行时类型检查这使得你可以在运行时捕获许多类型错误。AST变换Groovy允许你直接操作Java字节码这使得你可以在编译时对代码进行修改。这是许多静态类型语言无法提供的功能。 总的来说Groovy是一种强大、灵活且易于使用的编程语言无论你是一个Java开发者还是一个想要使用JVM的语言的人你都可以从Groovy中受益。 教程 引入依赖 首先在springboot项目中引入groovy的依赖maven引入配置如下 dependencygroupIdorg.codehaus.groovy/groupIdartifactIdgroovy-all/artifactIdversion2.4.11/version/dependencyjava加载使用脚本工具类 新建一个ScriptProvider脚本使用类代码如下 import groovy.lang.GroovyClassLoader; import groovy.lang.GroovyObject; import lombok.extern.slf4j.Slf4j; import org.eclipse.milo.opcua.stack.core.types.builtin.DataValue; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component;import java.io.File; import java.io.IOException; import java.util.List;/*** author Lenovo*/ Component Slf4j public class ScriptProvider {private GroovyObject groovyObject;Value(${app.work-face})private void loadScript(String name){try (GroovyClassLoader classLoader new GroovyClassLoader()) {Class? groovyClass classLoader.parseClass(new File(etc/name.groovy));groovyObject (GroovyObject) groovyClass.newInstance();} catch (InstantiationException | IOException | IllegalAccessException e) {log.error(e.getMessage());}}public void overloadScript(String filePath){try (GroovyClassLoader classLoader new GroovyClassLoader()) {Class? groovyClass classLoader.parseClass(new File(filePath));groovyObject (GroovyObject) groovyClass.newInstance();} catch (InstantiationException | IOException | IllegalAccessException e) {log.error(e.getMessage());}}public double calStentHeight(int i, ListDataValue dataValues){Object[] objects new Object[]{i,dataValues};Object resultgroovyObject.invokeMethod(calStentHeight,objects);return Double.parseDouble(result.toString());}public double revisedStentHeight(int i, ListDataValue dataValues){Object[] objects new Object[]{i,dataValues};Object resultgroovyObject.invokeMethod(revisedStentHeight,objects);return Double.parseDouble(result.toString());}public Object revisedStentStroke(int i, ListDataValue dataValues) {Object[] objects new Object[]{i,dataValues};Object resultgroovyObject.invokeMethod(revisedStentStroke,objects);return Double.parseDouble(result.toString());} } 代码解析 在spring配置文件中配置不同的脚本名通过Value(“${app.work-face}”) 注解 在项目启动时加载对应的groovy脚本文件。invokeMethod(“calStentHeight”,objects); calStentHeight 是groovy脚本中定义的方法objects数组是groovy脚本中方法的参数objects数组数组的元素顺序和方法的参数保持一致。new File(“etc/”name“.groovy”) 是读入项目根目录下etc文件夹下的某个groovy脚本文件打成jar运行的时候读取的是jar同级目录下etc文件夹下的某个groovy脚本文件。 groovy脚本 创建一个groovy脚本以4703.groovy为例代码如下 import org.eclipse.milo.opcua.stack.core.types.builtin.DataValuedef calStentHeight(int i,ListDataValue dataValues){return dataValues.get(i).getValue().getValue(); }def revisedStentHeight(int i,ListDataValue dataValues){double ddataValues.get(i).getValue().getValue();int stentNoi1;if(stentNo2||stentNo92){if(d3.6){d3.6;}if(d0){d3.3;}}else{if(d1.9){dstentNo3?1.9:dataValues.get(i-1).getValue().getValue();}if(d0){d1.9;}}return d; }def revisedStentStroke(int i,ListDataValue dataValues){double ddataValues.get(i).getValue().getValue();int stentNoi1;if(stentNo2||stentNo92){if(d900D){d900D;}if(d0D){d0D;}}else{if(d900D||d0D){ddataValues.get(i-1).getValue().getValue();;}}return d; }代码解析 DataValue对象是java opc开源工具获取opc点位对应值返回的对象。groovy的方法内部可以向java一样编写 java调用groovy脚本的方法 在springboot中调用groovy脚本中的方法示例代码如下 Resourceprivate ScriptProvider scriptProvider;StentsDTO.putStentHeight(key.getPointAddress(),scriptProvider.calStentHeight(i,dataValues));objValue scriptProvider.revisedStentHeight(i,dataValues);代码解析 通过Resource注解将ScriptProvider类注入到spring的容器中通过ScriptProvider的实例对象调用内部方法。 groovy脚本修改监听类实现 java无法是实现对具体某个文件操作事件的监听只能实现文件夹和文件夹下的文件的事件的监听。我们可以通过监听文件夹监听实现对文件的监听。代码如下代码中只有文件修改事件的监听 import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component;import java.io.IOException; import java.nio.file.*;/*** author tarzan*/ Component AllArgsConstructor Slf4j public class FileSystemWatcher {private final ScriptProvider scriptProvider;public void modifyWatch(){try {watch(StandardWatchEventKinds.ENTRY_MODIFY);} catch (IOException | InterruptedException e) {log.error(e.getMessage());}}private void watch(WatchEvent.KindPath eventKind) throws IOException, InterruptedException {// 定义你想要监听的路径Path path Paths.get(etc);// 创建 WatchServiceWatchService watchService FileSystems.getDefault().newWatchService();// 将路径注册到 WatchService并指定你想要监听的事件类型path.register(watchService, eventKind);while (true) {// 获取下一个文件系统事件WatchKey key watchService.take();for (WatchEvent? event : key.pollEvents()) {// 获取事件类型WatchEvent.Kind? kind event.kind();if (kind StandardWatchEventKinds.OVERFLOW) {continue;}// 获取发生事件的文件WatchEventPath ev (WatchEventPath) event;Path fileName ev.context();// 打印出发生事件的文件名和事件类型boolean eventFlag!fileName.toFile().getName().endsWith(~);if(eventFlag){log.info(etc/fileName be modified);scriptProvider.overloadScript(etc/fileName);}}//睡眠1秒Thread.sleep(1000);// 重置 WatchKey以便接收下一个事件boolean valid key.reset();if (!valid) {break;}}}}代码解析 代码通过监听etc文件当监听到etc文件夹下的文件进行修改操作或者覆盖操作的事件就会重新加载修改后的grooy脚本文件。 结语 如果你对文章有疑问或者更好的见解请在评论区留言如果文章对你有帮助请点赞收藏
http://www.w-s-a.com/news/484836/

相关文章:

  • 风景网站的制作网站ip地址查询域名
  • 怎样看网站是谁做的马鞍山什么房产网站做的好
  • 西安推荐企业网站制作平台软装设计方案ppt
  • 网站静态页模板专业网站设计开发公司
  • 手机免费在线搭建网站短网址生成防红
  • 天津网站设计网站制作如何新建wordpress
  • 山东省建设备案网站审批国际新闻最新消息10条简短
  • 成都市建设网扬尘监控网站短域名转换
  • 怎么做手机网站潍坊建设银行网站
  • 做网站分什么软件品牌设计培训
  • 太原网站设计排名设计本装修效果图
  • 网站个人中心模板石家庄网站系统开发
  • 优秀的电子商务网站教育公司网站建设文案
  • 网站开发市场成本网站链接推广工具
  • 猪八戒做网站排名常州seo博客
  • wordpress 网站遭篡改如何优化公司的网站
  • 汉中公司做网站网站建设的风格设置
  • 网站建议怎么写怎么做网页连接
  • 站长工具seo综合查询下载安装软件平台搭建包括哪几个方面
  • 做网站怎么存放视频支付功能网站建设
  • 庆阳手机网站设计兰州网站的优化
  • 企业网站托管有必要吗项目管理资格证书
  • 检索类的网站建设个人博客网页模板图片
  • 贵阳网站建设搜q479185700做网站有什么语言好
  • 制作公司主页网站贵阳网站建设技术托管
  • 广西建设网站网址多少钱南京江北新区地图
  • 网站建设及优化 赣icp外包服务美剧
  • wordpress添加菜单深圳优化网站排名
  • 免费下载建设银行官方网站重点专业建设验收网站
  • 建行官方网站登录怎样制作悬浮的WordPress