响应式 网站建设免费广告行业网站建设

pingmian/2025/10/13 15:43:16/文章来源:
响应式 网站建设,免费广告行业网站建设,国家公示信息查询系统,工厂货源网Atitit. 提升软件开发效率and 开发质量---java 实现dsl 4gl 的本质and 精髓 O725 1. DSL主要分为三类#xff1a;外部DSL、内部DSL#xff0c;以及语言工作台。 1 2. DSL规则 2 2.1. DSL 整洁的代码 2 2.2. DSL必须以文本代码的形式出现 2 2.3. DSL的语法应该尽可能地接近… Atitit. 提升软件开发效率and 开发质量---java 实现dsl 4gl 的本质and 精髓  O725   1. DSL主要分为三类外部DSL、内部DSL以及语言工作台。 1 2. DSL规则 2 2.1. DSL  整洁的代码 2 2.2. DSL必须以文本代码的形式出现 2 2.3. DSL的语法应该尽可能地接近英语或者其他自然语言 2 3. DSL 文本形式 or 图形标识 2 4. 实现方式 2 4.1. 2. 管道抽象 2 4.2. 3. 层次结构抽象 3 4.3. 4. 异步抽象 3 5. 常见的dsl 4 5.1. css ,html.easyui 表单验证等.. 4 5.2. Rule Engine语言、drools,工作流Workflow语言等。  Jbpm 4 5.3. SQL hql  linq ,XQuery,正则表达式 4 5.4. 业务api.通用模块。工作流语言。。图形化编程.ant ,shell..Java 6注解,attilaxc#.常见的DSL还有规则引擎AOP实现,,框架api  ,,.xml..json..yaml 4 6. #--实现java内部 DSL 4 6.1. 参考在的语言  anno frm tapestry?? 4 6.2. Groovy 4 6.3. Ide整合的dsl--code templete 5 6.4. 方法链 5 返回this 5 返回中间对象 5 相比返回中间对象的的方式来说返回this的方式更加容易组织连贯接口的代码 6 6.5. 静态工厂方法static factory method和import对于创建简洁易读的DSL来说是不错的助手。 6 6.6. 元编程; 6 6.7. 编译工具可以使用lex,yacc,或者javacc,antlr 6 6.8. 使用框架 6 6.9. Std lib 7 7. DSL and 易读API的区别 7 8. Java实现dsl的限制 7 9. Java 实现dsl的优点 7 10. 结论 7 11. 参考 8   1. DSL主要分为三类外部DSL、内部DSL以及语言工作台。 2. DSL规则 2.1. DSL  整洁的代码 2.2. DSL必须以文本代码的形式出现 2.3. DSL的语法应该尽可能地接近英语或者其他自然语言 作者:: 老哇的爪子 Attilax 艾龙  EMAIL:1466519819qq.com 转载请注明来源 http://blog.csdn.net/attilax   3. DSL 文本形式 or 图形标识 ……或者为什么不使用图形标识文本型的DSLs有几大优势。首先是更加容易建立语言以及一个好的编辑器。其次文本型的工件比图形化的模型库更加 容易集成到现有的开发工具CVS/SVN diff/merge中。第三文本型的DSLs通常更容易被开发者接受因为“真正的开发人员不画图”。 如果对于系统的某些方面图形标识有助于看清楚架构元素之间的关系你可以使用类似于Graphviz或者Prefuse之类的工具。既然模型以一 种清晰而又干净的形式包含了相关的数据我们就可以轻易的将模型数据导出成GraphViz或者Prefuse工具能够阅读的形式。 4. 实现方式 4.1. 2. 管道抽象 在Shell中我们可以通过管道将一系列的小命令组合在一起实现复杂的功能。管道中流动的是单一类型的文本流计算过程就是从输入流到输出流的变 换过程每个命令是对文本流的一次变换作用通过管道将作用叠加起来。在Shell中很多时候我们只需要一句话就能完成log统计这样的中小规模问题。 和其他抽象机制相比管道的优美在于无嵌套。比如下面这段C程序由于嵌套层次较深不容易一下子理解清楚 //Cmin(max(min(max(a,b),c),d),e) 而用管道来表达同样的功能则清晰得多 #!/bin/bashmax a b | min c | max d | min e     4.2. 3. 层次结构抽象 除了管道这种“线性”结构外流畅接口还可用于构造层次结构抽象。比如用Javascript动态创建创建下面的HTML片段 div id’product_123’ class’product’img src’preview_123.jpg’ alt /ul liName: iPad2 32G/li liPrice: 3600/li/ul/div 若采用Javascript的DOM API  而下面流畅接口API则要有表现力得多 //Javascriptvar obj $.div({id:’product_123’, class:’product’})    .img({src:’preview_123.jpg’})    .ul()        .li().text(‘Name: iPad2 32G’)._li()        .li().text(‘Price: 3600’)._li()    ._ul() ._div(); 4.3. 4. 异步抽象 流畅接口不仅可以构造复杂的层次抽象还可以用于构造异步抽象。在基于回调机制的异步模式中多个异步调用的同步和嵌套问题是使用异步的难点所 在。有时一个稍复杂的调用和同步关系会导致代码充满了复杂的同步检查和层层回调难以理解和维护。这个问题从本质上讲和上面HTML的例子一样是由于多 数通用语言并未把异步作为基本元素/语义许多异步实现模式是向语言的妥协。针对这个问题我用Javascript编写了一个基于流畅接口的异步 DSL示例代码如下   5. 常见的dsl 5.1. css ,html.easyui 表单验证等.. 5.2. Rule Engine语言、drools,工作流Workflow语言等。  Jbpm   5.3. SQL hql  linq ,XQuery,正则表达式 5.4. 业务api.通用模块。工作流语言。。图形化编程.ant ,shell..Java 6注解,attilaxc#.常见的DSL还有规则引擎AOP实现,,框架api  ,,.xml..json..yaml     6. #--实现java内部 DSL 6.1. 参考在的语言  anno frm tapestry?? 实现方式1::: 实现方式2:::   6.2. Groovy 6.3. Ide整合的dsl--code templete 使用Java我们同时能利用强大且成熟的类似于Eclipse和IntelliJ IDEA的集成开发环境由于这些集成开发环境“自动完成auto-complete”、自动重构和debug等特性使得DSL的创建、使用和维护 来的更加简单。另外Java5中的一些新特性比如generic、varargs 和static imports可以帮助我们创建比以往任何版本任何语言都简洁的API。   6.4. 方法链 使用方法链接来创建DSL有两种方式这两种方式都涉及到链接中方法的返回值。我们的选择是返回this或者返回一个中间对象这决定于我们试图要所达到的目的。 返回this 在可以以下列方式来调用链接中方法的时候我们通常返回this · 可选择的 · 以任何次序调用 · 可以调用任何次数 我们发现运用这个方法的两个用例 1 相关对象行为链接 2 一个对象的简单构造配置 使用连贯接口再一次减少了代码噪音所带来的结果是更易读的代码。需要指出的很重要的一点是在返回this的时候链中任何方法都可以在任何时候被调用并且可以被调用任何次数。在我们的例子中color这个方法我们可想调用多少次就调用多少次并且每次调用都会覆盖上一次调用所设置的值这在应用程序的上下文中可能是合理的。   返回中间对象 从连贯接口的方法中返回中间对象和返回this的方式相比有这样一些优点 · 我们可以使用编译器来强制业务规则比如必需属性 · 我们可以通过限制链中下一个元素的可用选项通过一个特殊途径引导我们的连贯接口用户 · 在用户可以或必须调用哪些方法、调用顺序、用户可以调用多少次等方面给了API创建者更大的控制力 相比返回中间对象的的方式来说返回this的方式更加容易组织连贯接口的代码 对方法返回this的连贯接口建档比对返回中间对象的连贯接口建档来的简单的多尤其是在使用Javadoc来建档的情况下。    6.5. 静态工厂方法static factory method和import对于创建简洁易读的DSL来说是不错的助手。 dialog.table(results).selectCell(6, 8); // row 6, column 8 dialog.table(results).selectCell(row(6).column(8)); 6.6. 元编程;    1. 利用现有语言进行元编程;比如我们web开发常用的一些ssh框架而语言层面,lisp,ruby这些语言的宏编程直接提供元编程能力   6.7. 编译工具可以使用lex,yacc,或者javacc,antlr 等帮助我们建立新语言的描述和解释。比如antlr提供了词法描述语法描述各 种目标语言java,c,c的词法分析器语法分析器生成。利用他你可以实现一个完整的语言。在各种建模工具逆向工程比如通过代码生成图表描述 的工具uml,powerdesign)等都可以看到他的身影   6.8. 使用框架 Rails框架被称为基于Ruby的DSL用于管理Ruby开发的Web应用程序。Rails之所以被称为DSL原因之一在于Rails应用了一些Ruby语言的特性使得基于Rails编程看上去与基于通用目的的Ruby语言编程并不相同。 如果把Rails看作是一种语言它应该是基于Ruby、以Ruby为根基的同时它自身也有独立的特性。 Rails都看作一个很大的DSL   6.9. Std lib 7. DSL and 易读API的区别 在DSL和API两者间其实很难区分。在内部DSL的例子中他们本质上几乎是一样的。在联想到DSL这个词汇的时候我们其实是在利用主编程语言在有限的范围内创建易读的API。“内部DSL”几乎是一个特定领域内针对特定问题而创建的极具可读性的API的代名词。   8. Java实现dsl的限制 任何内部DSL都受它基础语言的文法结构的限制。比如在使用Java的情况下大括弧小括弧和分号的使用是必须的并且缺少闭包和元编程有可能会导致DSL比使用动态语言创建来的更冗长。     9. Java 实现dsl的优点 一般来说使用Java编写的DSL不会造就一门业务用户可以上手的语言而会是一种业务用户也会觉得易读的语言同时从程序员的角度它也会是一种阅读和编写都很直接的语言。和外部DSL或由动态语言编写的DSL相比有优势那就是编译器可以增强纠错能力并标识不合适的使用   10. 结论 Java适用于创建开发人员易读易写的、并且对于商业用户用样易读的内部领域特定语言。用Java创建的DSL可能比那些由动态语言创建的DSL来 的冗长。但好的一面是通过使用Java我们可以利用编译器来增强DSL的语义。另外我们依赖于成熟且强大的Java集成开发环境从而使DSL的创 建、使用和维护更加简单。     11. 参考 Paip.声明式编程以及DSL 总结 - attilax的专栏 - 博客频道 - CSDN.NET paip. dsl 编程语言优点以及 常见的dsl - attilax的专栏 - 博客频道 - CSDN.NET DSL 用于Java开发中 - linugb118--java space - BlogJava.htm atitit.提升开发效率--java实现DSL API设计新思维用流畅接口构造内部DSL _ IT瘾 转载于:https://www.cnblogs.com/attilax/p/5963921.html

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

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

相关文章

八方资源网做网站优化怎么样网页设计与制作教程第5版答案

标题:基于STM32F103C8T6单片机的1秒定时器设计与应用 摘要: 本文主要探讨了如何在STM32F103C8T6微控制器上利用内部定时器实现精确的1秒钟定时功能,并通过实际项目实施,验证其稳定性和可靠性。首先介绍了STM32F103C8T6单片机的特…

温州建设信息网站招聘求职网站html模板

一、VMware Workstation 虚拟机 先得安装 VM 虚拟机,没有的可以参考这篇文章安装 VM 虚拟机 如何在 VM 虚拟机中安装 Win10 操作系统保姆级教程(附链接)https://eclecticism.blog.csdn.net/article/details/135713915 二、Deft 镜像 下载…

网络app开发网站建设价格枣庄网站建设多少钱

一、原理图1. RS485接口6KV防雷电路设计方案图1 RS485接口防雷电路接口电路设计概述:RS485用于设备与计算机或其它设备之间通讯,在产品应用中其走线多与电源、功率信号等混合在一起,存在EMC隐患。本方案从…

长春网站建设大概需要多少钱建站技术服务

转载自 吃透这套架构演化图,从零搭建Web网站也不难 前言工作也有几多年了,无论是身边遇到的还是耳间闻到的,多多少少也积攒了自己的一些经验和思考,当然,博主并没有太多接触高大上的分布式架构实践,相对比较…

河北省水利建设市场网站网站外包合作

Oracle 发布对 Visual Studio Code 的 Java 插件支持,这个扩展插件通过基于 OpenJDK 的 javac 编译器和调试器接口的语言服务器,为流行的多语言集成开发环境提供 Java 支持。 VS Code 扩展的核心是Java语言服务器:这是一个使用语言服务器协议…

免费网站优化怎么做康定网站建设公司

AC通道:http://www.lydsy.com/JudgeOnline/problem.php?id2844 这题貌似HDU上有一道差不多的题,不过我没做过,也就没管了。 首先讲一个线性基的东西,大概就是这样: 然后就是一个什么性质:S异或起来会出现重…

做网站有必要用wordpress网站建设运营推广

转载公众号 | 美团技术团队常识性概念图谱,是围绕常识性概念建立的实体以及实体之间的关系,同时侧重美团的场景构建的一类知识图谱。本文介绍了美团常识性概念图谱构建的Schema,图谱建设中遇到的挑战以及建设过程中的算法实践,最后…

济南网站建设哪家便宜有一个做ppt的网站吗

原题链接: 198. 打家劫舍 题目描述: 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入&a…

定制制作网站价格表wordpress sql查询分类

1 type_traits 的概述 type_traits 是 C 标准模板库(STL)中的一个头文件,它定义了一系列模板类,这些模板类在编译期获取某一参数、某一变量、某一个类等的类型信息,主要用于进行静态检查。通过使用 type_traits&#…

成都php网站制作程序员空壳网站清理

文章目录 roles批量替换文件 role 的依赖关系role 的实际案例 roles tasks 和 handlers ,那怎样组织 playbook 才是最好的方式呢?简 单的回答就是:使用 Roles Roles 基于一个已知的文件结构,去自动的加载 vars,tasks 以…

电脑制作网站用哪个软件深圳网页搜索排名提升

从事分布式服务器开发工作的都会遇到,linux下open_file的值默认是1024;max user processes的值默认是4096,在实际用于中,这两个值严重不足,常常需要调整这两个值。默认配置如下: 可以通过以下两种方式修改&…

开封网站开发自建商城网站

P2656 采蘑菇 题意&#xff1a; 有n个点&#xff0c;m个单向边&#xff0c;每个边都有边权&#xff0c;如果经过这个边&#xff0c;可以获得其边权&#xff0c;而其边权会变成原来的p倍(0.1<p<0.8)&#xff0c;向下取整 从s点出发&#xff0c;问最多可以采到的蘑菇 题…

php网站开发意思谢闵行

本文讲解Qt图像处理-基于OpenCv的图像二值化处理 一、概述 图像二值化原理 图像二值化就是将图像上的像素点的灰度值设置为0或255,也就是将整个图像呈现出明显的黑白效果的过程。图像的二值化使图像中数据量大为减少,从而能凸显出目标的轮廓。 要得到二值化图像,首先要把…

淄博网站建设公司有几家用绿色做图标的网站

1.首先在你需要实现下拉刷新页面的json文件中写入"enablePullDownRefresh": true。 2.在js文件的onPullDownRefresh() 事件中实现下拉刷新。 实现代码 onPullDownRefresh() {console.log(开始下拉刷新)wx.showNavigationBarLoading()//在标题栏中显示加载图标this.d…

手机网站的模板下载软件seo实战密码第四版

如题&#xff1a;有时候我们使用putty连接linux的时候执行某个命令运行程序的时候&#xff0c;关闭putty就会出现应用程序也关闭的情况&#xff1b;这里建议就使用如下命令nohup youcommand &(&可加可不加)这个时候默认会在你当前目录创建一个nohup中创建一个nohup.out…

阿里云服务器怎么发布网站建设网站的五个步骤

最近在学习爬虫&#xff0c;做个笔记吧 今天爬xx政府网站-政策法规栏目的数据 咱们首先需要找到数据从哪里来&#xff0c;鼠标右键->检查&#xff08;或者快捷键一般为F12&#xff09;检查元素&#xff0c;搜索关键词 eg.【违法案例】 回车&#xff0c; 如果没有的话&am…

农产品信息网站的建设在线视频网站 一级做爰片

Ant 相信大家都不陌生&#xff0c;你可以把它理解为使用 xml 格式描述的一系列命令处理工具。它是一种基于Java的build工具。理论上来说&#xff0c;它有些类似于&#xff08;Unix&#xff09;C中的make、有些类似于基于shell命令编写的sh脚本文件。Ant 用 Java 的类来扩展。&a…

网站安全建设视频直播需要哪些设备

在 C 中&#xff0c;析构函数&#xff08;Destructor&#xff09;是一个特殊的成员函数&#xff0c;用于在对象生命周期结束时执行清理工作和资源释放。析构函数的名称与类名相同&#xff0c;前面加上波浪号&#xff08;~&#xff09;&#xff0c;不接受任何参数&#xff0c;也…

个人网站免费的吗墨子学院seo

面试题14&#xff1a;什么是 RAII 编程方法 RAII&#xff08;Resource Acquisition Is Initialization&#xff09;是C的发明者 Bjarne Stroustrup 提出的概念,也称为资源获取就是初始化&#xff0c;是一种管理资源、避免泄漏的编程方法。 它的基本思想是在对象的构造函数中获…

吉林省住房建设安厅网站宜春做网站 黑酷seo

赛题介绍 在生鲜商超中&#xff0c;一般蔬菜类商品的保鲜期都比较短&#xff0c;且品相随销售时间的增加而变差&#xff0c; 大部分品种如当日未售出&#xff0c;隔日就无法再售。因此&#xff0c; 商超通常会根据各商品的历史销售和需 求情况每天进行补货。 由于商超销售的蔬…