Java
文章平均质量分 89
JAVA 相关的应用
嘿嘿帆
这个作者很懒,什么都没留下…
展开
-
AST 浅析
前言Aspect 语法难懂?ASM 字节码操作繁琐?APT 难以精准找到切入点?你该试试 AST 了!编辑器级别,效率高,更轻量。一、概念在开始上手之前,我们先了解下几个简单的概念:什么是 AST ?AST 的作用?我们知道,编程语言再怎么变,不变的是由「类型」「运算符」「流程语句」「函数」「对象」组成的本质,这些本质概念表达了底层的运算与逻辑,那么这么多编程语言,要怎么抽离出这个逻辑本质呢?答案就是:转化为统一的结构!这个统一的结构不依赖于源语言的语法,只代表源语言中...转载 2021-09-23 11:17:26 · 1294 阅读 · 0 评论 -
抽象语法树AST的全面解析(三)
AST操作前面两篇文章写到了抽象语法树的生成过程和语法树的节点访问,这篇文章来写一下如何操作抽象语法树。操作AST可以完成什么事情?拿到了抽象语法树,等于我们拿到了整份的代码,我们可以对所有的代码进行扫描,可以在特定的代码中写入一些逻辑:清除或者添加日志; 对象调用的非空判断; 编写我们特定的语法规则,对不符合规则的代码进行修改或优化; 增删改查。。。AST的优缺点优点:AST操作属于编译器级别,对程序运行完全没有影响,效率相对其他AOP更高;缺点:没有官方文档,操作比较复杂,转载 2021-09-22 15:26:38 · 1124 阅读 · 1 评论 -
抽象语法树AST的全面解析(二)
JCTree类(com.sun.tools.javac.tree.JCTree)的简要分析上一篇文章讲解了抽象语法树的来源和获取时机,接下来要分析一下抽象语法树的内部结构。抽象语法树由JCTree的内部类(如JCCompilationUnit,JCClassDecl,JCMethodDecl等)作为语法节点构成。我们可以通过调用JCTree的accept()方法来访问抽象语法树的所有语法节点。public abstract void accept(JCTree.Visitor var1);转载 2021-09-22 15:16:11 · 899 阅读 · 0 评论 -
抽象语法树AST的全面解析(一)
Javac编译概述将.java源文件编译成.class文件,这一步大致可以分为3个过程:1、把所有的源文件解析成语法树,输入到编译器的符号表;2、注解处理器的注解处理过程;3、分析语法树并生成字节码。javac编译过程.pngParse and Enter1.词法分析: 通过Scanner将源码的字符流解析成Token流通过词法分析器分析源文件中的所有字符,将所有的...转载 2021-09-22 15:00:13 · 2447 阅读 · 0 评论 -
Java 拦截器
一、引言 既然要用拦截器,首先先得简单了解一下什么是拦截器: 概念:java里的拦截器是动态拦截Action调用的对象,它提供了一种机制可以使开发者在一个Action执行的前后执行一段代码,也可以在一个Action执行前阻止其执行,同时也提供了一种可以提取Action中可重用部分代码的方式。 作用域:动态拦截Action调用的对象(也就是我们的controller层) 我们日常开发中,经常会遇到这个场景:在访问系统功能前,需要用户登录,不登陆的话无法使用我们的系统,那么如果在每个方法转载 2021-09-06 11:30:40 · 19964 阅读 · 1 评论 -
注解
目录@PostConstruct那么Java提供的@PostConstruct注解,Spring是如何实现的呢?@PostConstruct@PostConstruct注解好多人以为是Spring提供的。其实是Java自己的注解。Java中该注解的说明:@PostConstruct该注解被用来修饰一个非静态的void()方法。被@PostConstruct修饰的方法会在服务器加载Servlet的时候运行,并且只会被服务器执行一次。PostConstruct在构造函数之后执行,...转载 2020-12-10 14:36:14 · 75 阅读 · 0 评论