wordpress多站点 用户四川学校网站建设

web/2025/10/2 17:54:07/文章来源:
wordpress多站点 用户,四川学校网站建设,个人网站怎么建设,国外网站服务器地址antlr4 代码 语法树DSL是很酷的东西#xff0c;但我不清楚它们有什么用。 然后我意识到它们对以下方面有好处#xff1a; 摆脱复杂的UI 意思是 更快的做事方式 而已。 当我阅读此博客时#xff0c;我得出了这个结论。 如果您的用户是技术人员#xff0c;并且不惧怕类… antlr4 代码 语法树 DSL是很酷的东西但我不清楚它们有什么用。 然后我意识到它们对以下方面有好处 摆脱复杂的UI 意思是 更快的做事方式 而已。 当我阅读此博客时我得出了这个结论。 如果您的用户是技术人员并且不惧怕类似SQL的语法处理方式则DSL特别适合 你有语法高亮 你有代码补全 否则DSL有点烂。 因此我不得不向客户提出一些概念证明。 他有模糊的要求要准确提取团队的需求并不容易他们需要很多东西而且他很忙因此DSL可以在此过程中提供很多帮助因为人们被迫在他们需要时才想清楚他们的需求面对一种语法甚至很小的一种。 因此我采用了以下技术 用于代码镜像的JSF库Primefaces扩展 ANTLR4 与ANTLR3相比有很大的改进而且本书很棒 不幸的是我无法在两个工具中重复使用语法。 实际上我找不到任何可以做到这一点的解决方案。 至少对于基于Web的JSF解决方案。 而且没有时间学习。 所以我不得不稍微改一下。 首先我们需要语法。 ANTLR4比ANTLR3更好因为现在接线代码是通过访问者和侦听器完成的。 语法内没有更多的Java代码。 那很棒而且更容易使用。 所以你可以有一个这样的语法 grammar Grammar; options {language Java; } lexer::header {package parsers; }parser::header {package parsers; } eval : expr EOF; expr : JOB (jobName)? type TARGET targetList (START startExpr)? startExpr : AT cronTerm| AFTER timeAmount timeUnits; timeAmount: INT; jobName: STRING; targetList: STRING (, STRING)*; type : deleteUser| createUser;deleteUser: opDelete userName; createUser: opCreate userName; opDelete: DELETE; opCreate: CREATE; userName: STRING;cronTerm: !? (INT | - | / | * | | );timeUnits: MINUTES| HOURS| DAYS| WEEKS| MONTHS;WS : [ \t\r\n] - skip;STRING: ( ESC_SEQ | ~(\\|) )* ;fragment HEX_DIGIT : (0..9|a..f|A..F) ;fragment ESC_SEQ: \\ (b|t|n|f|r|\|\|\\)| UNICODE_ESC| OCTAL_ESC;fragment OCTAL_ESC: \\ (0..3) (0..7) (0..7)| \\ (0..7) (0..7)| \\ (0..7);fragment UNICODE_ESC: \\ u HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT;ID : (a..z|A..Z|_) (a..z|A..Z|0..9|_)*;INT : 0..9; 要编译语法请尝试 public static void main(String[] args) {String[] arg0 {-visitor,/pathto/Grammar.g4};org.antlr.v4.Tool.main(arg0);} 然后ANTLR将为您生成类。 在我们的例子中我们想访问解析树并检索我们想要的值。 我们这样做扩展了生成的抽象类。 import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.StringTokenizer;import org.antlr.v4.runtime.tree.ErrorNode;import bsh.EvalError; import bsh.Interpreter;public class MyLoader2 extends GrammarBaseVisitorVoid {private String jobName,cronTerm,timeUnits,userName,jobType;private ListString targetList;private boolean now,errorFound;private int timeAmount; private Interpreter bsh new Interpreter();private String eval(String s) throws EvaluationException{try {if (!s.startsWith(\)){return s;}bsh.eval(String ss);return (String)bsh.eval(s);} catch (EvalError e) {throw new EvaluationException(s);}}Overridepublic Void visitTimeAmount(TimeAmountContext ctx) {try{this.timeAmount Integer.parseInt(ctx.getText());}catch(java.lang.NumberFormatException nfe){throw new InvalidTimeAmountException(ctx.getText());}return super.visitTimeAmount(ctx);}Overridepublic Void visitUserName(UserNameContext ctx) {this.userName eval(ctx.getText());return super.visitUserName(ctx);}Overridepublic Void visitCronTerm(CronTermContext ctx) {this.cronTerm eval(ctx.getText());return super.visitCronTerm(ctx);}Overridepublic Void visitTimeUnits(TimeUnitsContext ctx) {this.timeUnits ctx.getText();return super.visitTimeUnits(ctx);}Overridepublic Void visitTargetList(TargetListContext ctx) {this.targetList toStringList(ctx.getText());return super.visitTargetList(ctx);}Overridepublic Void visitJobName(JobNameContext ctx) {this.jobName eval(ctx.getText());return super.visitJobName(ctx);}Overridepublic Void visitOpCreate(OpCreateContext ctx) {this.jobType ctx.getText();return super.visitOpCreate(ctx);}Overridepublic Void visitOpDelete(OpDeleteContext ctx) {this.jobType ctx.getText();return super.visitOpDelete(ctx);}private ListString toStringList(String text) {ListString l new ArrayListString();StringTokenizer st new StringTokenizer(text, ,);while(st.hasMoreElements()){l.add(eval(st.nextToken()));}return l;}private MapString, String toMapList(String text) throws InvalidItemsException, InvalidKeyvalException {MapString, String m new HashMapString, String();if (text null || text.trim().length() 0){return m;}String[] items text.split(,);if (items.length 0){throw new InvalidItemsException();}for(String item:items){String[] keyval item.split();if (keyval.length 2){m.put(keyval[0], keyval[1]);}else{throw new InvalidKeyvalException(keyval.length);}}return m;}public String getJobName() {return jobName;}public String getCronTerm() {return cronTerm;}public String getTimeUnits() {return timeUnits;}public String getUserName() {return userName;}public String getJobType() {return jobType;}public ListString getTargetList() {return targetList;}public boolean isNow() {return now;}public int getTimeAmount() {return timeAmount;}Overridepublic Void visitOpNow(OpNowContext ctx) {this.now ctx.getText().equals(NOW);return super.visitOpNow(ctx);}public boolean isErrorFound() {return errorFound;}Overridepublic Void visitErrorNode(ErrorNode node) {this.errorFound true;return super.visitErrorNode(node);} } 请注意 beanshell解释器用于将“ xyz”之类的字符串评估为xyz。 这对于其中包含转义引号和字符的字符串特别有用。 因此您有了语法和visiter / loader bean然后我们可以对其进行测试 private static MyLoader getLoader(String str){ANTLRInputStream input new ANTLRInputStream(str);GrammarLexer lexer new GrammarLexer(input);CommonTokenStream tokens new CommonTokenStream(lexer);GrammarParser parser new GrammarParser(tokens);ParseTree tree parser.eval();MyLoader loader new MyLoader();loader.visit(tree);return loader; }public static void main(String[] args){MyLoader loader getLoader(JOB \jobName\ CREATE \myuser\ TARGET \site1\,\site2\ START AFTER 1 DAY);System.out.println(loader.getJobName());System.out.println(loader.getJobType()); } 大。 现在是黑客。 Code Mirror支持自定义语法但JSF Primefaces扩展中不存在 。 因此我打开了resources-codemirror-1.2.0.jar打开了/META-INF/resources/primefaces-extensions/codemirror/mode/modes.js文件对其进行了格式化 以便我可以阅读然后我刚刚选择了最简单的语言作为我的新自定义sintax荧光笔 我改名了 (...) }, xml), CodeMirror.defineMIME(text/x-markdown, markdown), CodeMirror.defineMode(mylanguage, function (e) { (...)var t e.indentUnit,n, i r([site, type, targetList]),s r([AT,AFTER,CREATE,MINUTES,HOURS,TARGET,MONTHS,JOB,DAYS,DELETE,START,WEEKS ]), (...) }), CodeMirror.defineMIME(text/x-mylanguage, mylanguage), CodeMirror.defineMode(ntriples, function () {(...) 那些在“ s r”中用大写字母表示的标记是将被突出显示的标记而在“ i r”中的那些标记则是将被突出显示的标记。 为什么我们都想要 因为第二种类型是“占位符”我的意思是我们将它们用于自动填充内容。 好那么您的JSF xhtml页面将如下所示 ?xml version1.0 encodingUTF-8 ? !DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Transitional//EN http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd html xmlnshttp://www.w3.org/1999/xhtmlxmlns:fhttp://java.sun.com/jsf/corexmlns:hhttp://java.sun.com/jsf/htmlxmlns:uihttp://java.sun.com/jsf/faceletsxmlns:phttp://primefaces.org/uixmlns:pehttp://primefaces.org/ui/extensionsh:body h:form idform pe:codeMirroridcodeMirrorstylewidth:600px; modemyLanguage widgetVarmyCodeMirror themeeclipsevalue#{myMB.script}lineNumberstrue completeMethod#{myMB.complete} extraKeys{ Ctrl-Space: function(cm) { PF(myCodeMirror).complete(); }}/ p:commandButton valueVerify action#{myMB.verify} / (...) 现在我们需要自动完成功能。 这是无聊的部分。 您必须手动完成大部分的完成工作因为没有上下文信息请记住我没有时间学习……所以快速而肮脏的方式是这样的 in myMBpublic ListString complete(final CompleteEvent event) {try {return this.myEJB.complete(event.getToken());} catch (Exception e) {jsfUtilEJB.addErrorMessage(e,Could not complete);return null;}} in myEJBprivate static final String SITE site_; public ListString complete(String token) throws Exception {if (token null || token.trim().length() 0){return null;}else{ListString suggestions new ArrayListString();switch(token){//first search variablescase targetlist:for(String v:TARGETS){suggestions.add(v); }break;case site:ListSite allSites this.baseService.getSiteDAO().getAll();for(Site s:allSites){suggestions.add(\SITEs.getName()\);}break;case type:suggestions.add(DELETE \userName\);suggestions.add(CREATE \userName\);break;case AT:suggestions.add(AT \cronExpression\);suggestions.add(AT \0 * * * * * * *\);break;case AFTER:for(int a:AMOUNTS){for(String u:UNITS){if (a 1){suggestions.add(AFTER a u);}else{suggestions.add(AFTER a uS);}}}break;case TARGET:for(String v:TARGETS){suggestions.add(TARGET v); }break;case JOB:suggestions.add(JOB \jobName\ \ntype \nTARGET targetlist \nSTART);break;case START:suggestions.add(START AT \cronExpression\);suggestions.add(START AT \0 * * * * * * *\);for(int a:AMOUNTS){for(String u:UNITS){if (a 1){suggestions.add(START AFTER a u);}else{suggestions.add(START AFTER a uS);}}}suggestions.add(START NOW);break;case DELETE:suggestions.add(DELETE \userName\);break;case CREATE:suggestions.add(CREATE \userName\);break;default:if (token.startsWith(SITE)){ListSite matchedSites this.baseService.getSiteDAO().getByPattern(token.substring(SITE.length())*);for(Site s:matchedSites){suggestions.add(\SITEs.getName()\);}}else{//then search substringsfor(String kw:KEYWORDS){if (kw.toLowerCase().startsWith(token.toLowerCase())){suggestions.add(kw);}}}}//end switch//remove dups and sortSetString ts new TreeSetString(suggestions); return new ArrayListString(ts);} }private static final int[] AMOUNTS {1,5,10}; private static final String[] UNITS {MINUTE,HOUR,DAY,WEEK,MONTH}; private static final String[] TARGETS {site};/** KEYWORDS are basic suggestions*/ private static final String[] KEYWORDS {AT,AFTER,CREATE,MINUTES,HOURS,TARGET,MONTHS,JOB,DAYS,DELETE,START,WEEKS}; 因此关键字的自动填充内容将仅向您显示字段和更多关键字而“占位符”还记得jar中的codemirror javascript中的小写关键字吗是从数据库中检索到的动态值用于实际值完成的。 另外您可以使用部分字符串来检索以子字符串开头的那些字符串如下所示 当然在JPA中类似模式的搜索可以这样执行 public abstract class GenericDAOE {protected EntityManager entityManager;private ClassE clazz;private EntityTypeE pClass;SuppressWarnings(unchecked)public GenericDAO(EntityManager entityManager) {this.entityManager entityManager;ParameterizedType genericSuperclass (ParameterizedType) getClass().getGenericSuperclass();this.clazz (ClassE) genericSuperclass.getActualTypeArguments()[0];EntityManagerFactory emf this.entityManager.getEntityManagerFactory();Metamodel metamodel emf.getMetamodel();this.pClass metamodel.entity(clazz);}public ListE getByPattern(String pattern) {pattern pattern.replace(?, _).replace(*, %);CriteriaBuilder cb entityManager.getCriteriaBuilder();CriteriaQueryE q cb.createQuery(clazz);RootE entity q.from(clazz);SingularAttributeE, String singularAttribute (SingularAttributeE, String) pClass.getDeclaredSingularAttribute(getNameableField(clazz));PathString path entity.get(singularAttribute);q.where(cb.like(path, pattern));q.select(entity);TypedQueryE tq entityManager.createQuery(q);ListE all tq.getResultList();return all;}private String getNameableField(ClassE clazz) {for(Field f : clazz.getDeclaredFields()) {for(Annotation a : f.getAnnotations()) {if(a.annotationType() Nameable.class) {return f.getName();}}}return null;} (...) 其中Nameable是您的实体类的注释 Retention(RetentionPolicy.RUNTIME) Target({ElementType.FIELD}) public interface Nameable { } 用它来注释实体类中的单个列即String。 像这样 Entity Table(uniqueConstraintsUniqueConstraint(columnNames{name})) public class Site implements Serializable {/****/private static final long serialVersionUID 8008732613898597654L;IdGeneratedValue(strategy GenerationType.AUTO)private Long id;NameableColumn(nullablefalse)private String name; (...) 当然“验证”按钮只是获取您的脚本并将其推入加载器。 参考来自Leos Notepad博客的JCG合作伙伴 Leonardo Shikida 使用ANTLR4用于代码镜像的Primefaces扩展和基于Web的DSL玩。 翻译自: https://www.javacodegeeks.com/2014/01/playing-with-antlr4-primefaces-extensions-for-code-mirror-and-web-based-dsls.htmlantlr4 代码 语法树

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/85742.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

服装网站开发手机网站推荐哪些

来源:计算机研究与发展前 言近几年来人工智能技术的飞速发展使得其应用迅猛扩大,而传统的计算机体系结构对于面向人工智能的应用在处理速度、能耗、使用的方便性等方面有着诸多不足。随着人工智能应用的发展,面向人工智能的体系结构成为体系结…

有无广告销售版本"有广告免费无广告收费"网站短网址还原在线生成

最近在网上看到了荧光图,觉得挺帅气,去网上查询了怎么制作荧光图,发现大部分都是QGIS的教程,作为ArcGIS的死忠用户,决定在ArcGIS Pro中实现,其实挺简单的。 1、软件:ArcGIS Pro3.0 2、点数据&a…

班级网站建设首页报告怎样弄一个自己的平台

一、模块题目 二、原理图 1、数码管

响应式网站图片代码板瓦工安装wordpress

上一篇文章介绍到 servicemanager 的 main 函数中主要做了四件事: 1)初始化 binder 驱动。 2)将自身以“manager”添加到 servicemanager 中的 map 集合中。 3)注册成为 binder 驱动的上下问管理者。 4)给 Looper 设置 callback,进入无限循环,处理 client 端发来的请求。…

网站后台管理系统进入php做直播类型的网站

文章目录 0.前言1.模型下载2.配置环境2.1 下载项目文件2.2 配置环境 3.开始推理4.总结 0.前言 本博客将介绍ChatGLM3-6B大模型在Ubuntu上的本地部署教程 1.模型下载 由于毛毛张的服务器服务无法科学上网,所以模型的相关文件必须现在本地下载好,再上传到…

石家庄专业网站制北京网站建立

docker 概念 -云计算的基石 docker的一个软件: 开源 docker基本组成 docker主机(Host):安装了Docker程序的机器(Docker直接安装在操作系统之上); docker仓库(Registry):用来保存各种打包好的软件镜像&a…

常用的网站推广装修公司起名

概述 基于Flume MongoDB,对现有的多个应用系统进行日志采集。特点 采集范围每一次用户请求的请求信息。数据量大尽量减少现有系统的改动数据流图 说明:首先考虑的结构体系,是直接在应用系统中,将日志数据写到Flume;但…

群晖 做网站服务器营销网站建设哪里便宜

本文记录Windows环境下的MongoDB安装与使用总结。 【1】官网下载 官网下载地址:Download MongoDB Community Server | MongoDB 这里可以选择下载zip或者msi,zip是解压后自己配置,msi是傻瓜式一键安装。这里我们分别对比进行实践。 【2】ZI…

网站的盈利方式志愿服务网站开发

文章目录 前言 概念 算法 训练 性能 应用 参考资料 前言 见《初试人工智能》 概念 人工智能系统(artifieial intelligence system),针对人类定义的给定目标,产生诸如内容、预测、推荐或决策等输出的一类工程系统。该工程系…

备案期间 需要关闭网站吗seo每天一贴

Spring的IOC容器初始化流程 IOC容器初始化在SpringApplication对象创建完毕执行run方法时执行refreshContext()时开始。 准备BeanFactory,设置其类加载器和environment等 执行BeanFactory后置处理器,扫描要放入容器的Bean信息,得到对应的Bea…

网站关键词没排名怎么办领秀网站建设

保存token的最佳方式取决于具体的应用场景和需求。以下是几种常见的保存token的方式及其优缺点,以便您根据实际情况进行选择: HTTP Only Cookies: 优点:Cookies可以自动随HTTP请求发送,且HTTP Only属性可以防止JavaS…

用ps做美食网站母婴网站源码 带采集

C OJ基础 在学校学习C程序设计基础课程的OJ题目 缺少第二十题 这里写目录标题 C OJ基础习题练习(一)打印图形习题练习(二)数据的输入输出习题练习(三)函数重载习题练习(四)设计矩形类习题练习(五)定义Tree类习题练习(六)完善职工工资类Salary的设计习题练习(七)设计矩形类recta…

自建购物网站多少钱有没有做cad单的网站

目录 安装Docker 安装yum工具 更新本地镜像源 安装docker 启动docker 关闭防火墙 docker启动命令 配置镜像加速 docker的使用 拉取nginx 查看本地镜像 把镜像文件nginx导出成tar文件 查看是否导出成功 ​编辑 删除本地镜像nginx:latest 导入镜像文件nginx 拉取…

北京南站地铁线路图郑州市网络设计公司

科目编号:8663 座位号 2017-2018学年度第二学期期末考试 老年保健按摩试题 2018年7月 一、名词解释(本大题共5小题,每小题4分,共计20分) 1.骨度分寸法: 2.三叉神经痛: 3.间接标志法&#xff…

江苏省建设厅网站资质升级wordpress安装错误310

项目介绍 采用JAVA语言,结合SpringBoot框架与Vue框架以及MYSQL数据库设计并实现的。本村委会管理系统主要包括个人中心、村民管理、村委会管理、村民信息管理、土地变更管理、农业补贴管理、党员信息管理等多个模块。它帮助村委会管理实现了信息化、网络化&#xf…

冀州建网站亚马逊海外网站

1.语言的根本属性 语言的根本属性,通常指的是那些使语言区别于其他任何形式的信息传递系统的本质特征,以下是一些关键的根本属性: 社会性:语言首先是人类社会的产物,是社会成员之间进行思想交流和信息传递的主要工具&…

南京高新区规划建设局网站江西sem

板卡概述 FMC140是一款具有缓冲模拟输入的低功耗、12位、双通道(5.2GSPS/通道)、单通道10.4GSPS、射频采样ADC模块,该板卡为FMC标准,符合VITA57.1规范,该模块可以作为一个理想的IO单元耦合至FPGA前端,8通道…

环境设计专业网站网站开发上线ftp怎么用

各位少年,大家好,我是博主那一脸阳光,今天分享结构体的使用,声明以及操作符的使用。 前言: 如果你想做一块月饼,你要学习它的制作方法,需要准备面粉,白砂糖,奶粉&…

北京厦门网站优化英文营销网站建设

目录: 【SSH进阶之路】Struts基本原理 实现简单登录(二) 【SSH进阶之路】一步步重构MVC实现Struts框架——从一个简单MVC开始(三) 【SSH进阶之路】一步步重构MVC实现Struts框架——封装业务逻辑和跳转路径&#xff08…

精品个人网站源码下载如何做好网站建设的关键重点

更多 CSP 认证考试题目题解可以前往:CSP-CCF 认证考试真题题解 原题链接: 202403-1 词频统计 时间限制: 1.0 秒 空间限制: 512 MiB 题目描述 在学习了文本处理后,小 P 对英语书中的 n n n 篇文章进行了初步整理。 …