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

网站开发和推广方案网页图片怎么居中

网站开发和推广方案,网页图片怎么居中,十大网站开发公司,住建部网站统计城乡建设统计信息系统登录目录 1. OpenRewrite处理流程概述 2. OpenRewrite访问者模式的应用 2.1 访问者模式简介 2.2 OpenRewrite框架如何应用访问者模式 2.2.1 抽象访问者具体访问者 2.2.2 抽象元素具体元素 3. LST无损语义树构造 4. 配方#xff08;Recipe#xff09;执行流程 …目录 1. OpenRewrite处理流程概述 2. OpenRewrite访问者模式的应用 2.1 访问者模式简介 2.2 OpenRewrite框架如何应用访问者模式 2.2.1 抽象访问者具体访问者 2.2.2 抽象元素具体元素 3. LST无损语义树构造 4. 配方Recipe执行流程 4.1 执行入口 4.2 LargeSourceSet说明 4.3 配方执行时序图 4.4 配方执行结果表示 OpenRewrite通过将不同类型的源文件构建为Lossless Semantic Trees (LST无损语义树的数据结构能够准确和全面地表示源文件的元数据和语义信息。构造完LST后通过应用访问者模式将LST数据结构本身与访问LST元素的操作解耦使得我们能够灵活的自定义各种访问操作而又不改变LST数据结构。 本文主要对OpenRewrite框架设计和原理进行解析分析OpenRewrite框架中是如何运用访问者模式进行架构设计的然后进一步分析访问逻辑的具体执行过程以便更清楚的掌握OpenRewrite内部执行机理拨开云雾见月明进而更好的指导OpenRewrite开发实践。 关于OpenRewrite的介绍和Recipe简单开发实践请参考前述文章 大规模自动化重构框架--OpenRewrite浅析 OpenRewrite实现一个简单的配方Recipe 1. OpenRewrite处理流程概述 OpenRewrite作为自动化重构的框架其内部处理流程是通过配方Recipe来触发执行的顶层处理流程如下 Recipe允许使用者自定义重构逻辑的封装类内部通过getVisitor方法返回构造好的访问器进而执行访问器的重构规则Tree作为LST无损语义树的顶层抽象元素是所有文件类型中元素的顶层接口类SourceFile所有不同类型文件解析后顶层具体元素的父接口比如Java源文件解析为J.CompilationUnit是SourceFile的具体实现子类LargeSourceSet需要改写的源文件集合的封装类内部可以包含不同文件类型的源文件TreeVisitor顶层访问器接口针对不同的文件类型派生了不同的子类访问器接口比如针对Java语言定义了JavaVisitorChangeset/Result源文件集合LargeSourceSet经过配方Recipe中的访问器TreeVisitor访问后的结果集包含了重构前before和重构后after的表示 2. OpenRewrite访问者模式的应用 2.1 访问者模式简介 在具体说明OpenRewrite框架中访问者模式是如何应用的之前先简单回顾下访问者模式的基本要素 访问者Visitor模式将作用于某种数据结构中的各元素的操作分离出来封装成独立的类使其在不改变数据结构的前提下可以添加作用于这些元素的新的操作为数据结构中的每个元素提供多种访问方式。 访问者模式包含的核心类包括 抽象访问者Visitor定义一个访问具体元素的接口为每个具体元素类对应一个访问操作 visit() 该操作中的参数类型标识了被访问的具体元素。具体访问者ConcreteVisitor实现抽象访问者角色中声明的各个访问操作确定访问者访问一个元素时该做什么。抽象元素Element声明一个包含接受操作 accept() 的接口被接受的访问者对象作为 accept() 方法的参数。具体元素ConcreteElement实现抽象元素角色提供的 accept() 操作其方法体通常都是 visitor.visit(this) 另外具体元素中可能还包含本身业务逻辑的相关操作 2.2 OpenRewrite框架如何应用访问者模式 在介绍完访问者模式的基本概念后下面说明下访问者模式在OpenRewrite框架中是如何运用的。 2.2.1 抽象访问者具体访问者 在OpenRewrite中抽象访问者为抽象基类TreeVisitor并且针对不同类型的访问对象定义了不同类型的访问器各访问器的整体类图继承结构如下 JavaVisitor针对Java源代码文件的访问器支持访问Java源代码中的各种元素比如包名Package、类声明ClassDeclaration、方法声明MethodDeclaration、变量声明VariableDeclarations等PropertiesVisitor针对Properties属性文件的访问器支持访问属性文件中的键值对、注释等元素YamlVisitor和PropertiesVisitor访问器类似支持对yaml类型文件的访问XmlVisitor针对Xml类型文件的访问器支持访问Xml文件的各种元素包括Tag、属性Attribute等MavenVisitor针对Maven Pom文件的访问器由于Pom文件也属于Xml格式文件所以这里MavenVisitor继承了XmlVisitorJsonVisitor针对Json格式文件的访问比如元素JsonKey、JsonValue等 除此之外OpenRewrite还提供了针对上述不同类型访问器的XXXIsoVisitor版本的访问器区别之处是Iso版本的各个visit方法返回的是被访问元素本身如果访问逻辑不改变被访问元素类型使用Iso版本可以规避手动类型转换的工作对使用者更友好。 在如上各种类型的访问器中 通过isAcceptable方法判断该访问器是否可以应用到被访问元素上通过各种visit方法实现不同类型元素的访问 2.2.2 抽象元素具体元素 在OpenRewrite框架中顶层抽象元素是接口Tree并且针对不同的文件类型扩展了不同的顶层抽象元素其整体类图如下 JJava项目的顶层抽象元素接口其子类包括J.CompilationUnit、J.ClassDeclaration、J.Package等具体Java元素PropertiesProperties属性文件中元素的顶层抽象元素子类包括具体元素键值对Properties.Entry等XmlXml文件中元素的顶层抽象元素子类包含了具体元素声明XmlDecl、Tag等Yamlyaml文件中元素的顶层抽象元素子类包括Document、Entry等JsonJson格式文件中元素的顶层抽象元素子类包括具体元素Member、JsonObject、Array等 在顶层元素Tree中定义了抽象方法isAcceptable和accept并交由子类具体实现 isAcceptable用于判断是否可以接受访问器参数的访问accept接受访问器参数的访问执行访问器中的具体访问逻辑 针对Java语言这里图示下各种具体元素的类图如下 3. LST无损语义树构造 OpenRewrite自动化重构主要涉及2个流程 1将源文件解析为LST的过程根据不同的源文件类型调用对应的Parser解析器类构造差异化的各种元素 2LST构造完成后调用配方Recipe中的访问器执行自动化代码重构 不同类型源文件对应的Parser解析器类图如下 JavaParser针对Java源文件代码的解析器顶层抽象接口具体实现子类是针对不同JDK版本的解析器解析器隔离解析不同JDK版本的语法特性比如Java8Parser解析JDK8版本内部实现委托给ReloadableJava8Parser进行解析最终将Java源代码文件解析为J.CompilationUnit顶层元素 PropertiesParser针对Properties属性文件的解析器类最终解析为Properties.File顶层元素 XmlParser针对Xml类型文件的解析器类最终解析为Xml.Document顶层元素 ......其它类似 4. 配方Recipe执行流程 4.1 执行入口 配方的实际执行入口是RecipeRun run(LargeSourceSet before, ExecutionContext ctx, int maxCycles, int minCycles) LargeSourceSet表示输入源文件集合封装类包含配方执行重构的文件列表ExecutionContext配方执行上下文可以用于全局参数传递等用途maxCycles指定配方最大执行周期次数minCycles指定配方最小执行周期次数RecipeRun封装了配方执行后的结果内部包含了结果集Changeset 4.2 LargeSourceSet说明 这里展开LargeSourceSet的类图如下可以看出其内部包含了ListSourceFile源文件集合 4.3 配方执行时序图 配方Recipe执行过程的时序图细化如下  其中RecipeScheduler封装了配方调度执行的具体细节内部会委托给RecipeRunCycle配方单次执行的封装对象最大执行次数可在调度时进行指定执行实际的源文件改写 RecipeRunCycle封装了配方单次执行的主体逻辑其中主要包含了以下3个方法 1scanSources 对源文件集合进行前置扫描通常用于在源文件实际改写前通过扫描源文件集合获取一些上下文信息用于重构逻辑中辅助判断或者元数据获取 2generateSources 用于在源文件实际改写前生成新的源文件并添加到源文件集合中进而执行后续的文件改写操作 3editSources 执行实际的源文件改写操作这里会调用配方Recipe中定义的访问器对源文件各具体元素进行visit执行重构逻辑该部分也是开发者可以覆写重构逻辑的地方 4.4 配方执行结果表示 配方执行完成后的结果存放到了RecipeRun类中其中字段changeSet存放了所有变更的结果集ListResult对象Result中又保存了变更前before和变更后after的源文件 最终将重构后after的源文件进行输出完成了自动化重构的处理流程。
http://www.eeditor.cn/news/120605/

相关文章:

  • 医疗器械公司网站建设查询网站死链接
  • 网站如何做地面推广网站代理如何做
  • 南京网站建设电话导入数据wordpress
  • 微信小程序做网站西部数码网站管理助手3.1
  • 网站开发需要学企业管理咨询合同模板
  • 网站刷流量对网站有影响吗分类用wordpress
  • 昆山市有没有做网站设计的wordpress模板免费下载
  • 国内好看的网站设计项目经理招聘网最新招聘信息
  • 传统网站建设架构昆明网站开发公司电话
  • 招聘网站代做wordpress dopt
  • 旅游网站建设答辩ppt模板吉林省建设标准化网站
  • 更新wordpress 504win7优化大师
  • 桂林有名网站制作公司apache创建WordPress
  • 做网站 图文教程百度竞价推广投放
  • 公司网站建设服务费怎么做账软件外包服务内容
  • 网站做支付宝和网银接口连云港建设网站公司
  • 网站推广的渠道有嵌入式应用软件开发流程
  • 公司建立网站的作用有卡片式多图流的WordPress主题模板
  • 不懂的做网站软件工程培训班出来好就业吗
  • 新乡哪有做网站的做网站 网上接单
  • ppt怎么做网站上海网站推广珈维
  • 银川网站seo广州专业网站建设后台管理便捷
  • 记事本做网站如何添加图片seo是什么工作内容
  • 英文商城网站建设基于android的移动互联网开发
  • 写作网站virwordpress的html
  • 甘肃网站建设域名注册公司基础微网站开发咨询
  • 政务网站建设的重要性北京软件开发公司推荐
  • 朝阳区社区建设网站网站建设公司宣传语
  • 长沙网站设计建设长春企业网站设计
  • 手机网站专题页巴音郭楞网络营销