自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(179)
  • 收藏
  • 关注

转载 虚拟机经典问题

Java 是如何在保证可移植性的前提下提供高执行效率的?Java 程序最为常见的执行方式,是预先编译为一种名为 Java 字节码的中间代码格式。这种代码格式无法直接运行在 CPU 之上,而是需要借助 JVM 来执行。换句话说,只要某个平台提供了合乎 JVM 规范的实现,它便能执行这份 Java 字节码。这也就是我们经常说的“一次编写,到处运行”。主流的 Open...

2019-01-22 14:43:00 184

转载 内部类语法糖之添加获取方法

class X{ private int a = 1; private int b = 2; class Y{ public void t2() { int x = a; int y = new X().b; } }}解语法糖后结...

2019-01-07 16:30:00 220

转载 暂时

堰塞湖是由火山熔岩流,冰碛物或由地震活动使山体岩石崩塌下来等原因引起山崩滑坡体等堵截山谷,河谷或河床后贮水而形成的湖泊。由火山熔岩流堵截而形成的湖泊又称为熔岩堰塞湖。FAB(代工厂)市场需求(或者潜在的市场需求)的变化是非常快的,尤其是消费类电子产品。这类产品不同于DRAM,在市场上总是会有大量的需求。也正是这种变化多端的市场需求,催生了两个种特别的半导...

2018-12-24 19:54:00 221

转载 C++学习知识点

所谓的学习,知识只是一部分,理解知识是如何被抽象和提炼的过程,才是更重要的1、c++代码里面的\(反斜杠)C语言的宏要求只能在同一行,是不能跨行的。这里的反斜杠就是告诉编译器,我这里虽然换行了,但其实还是一行,是同一个宏的意思。2、##与#的区别3、hpp与cpp与h的区别4、C++中 #ifdef 和#endif的作用转载于:h...

2018-12-15 18:34:00 123

转载 ubuntu-12.04.5下编译openjdk8

bash ./configure --with-target-bits=64 --with-boot-jdk=/usr/java/jdk1.7.0_80/ --with-debug-level=slowdebug --enable-debug-symbols ZIP_DEBUGINFO_FILES=0make all ZIP_DEBUGINFO_FILES=0...

2018-12-12 20:34:00 112

转载 有意思的App

掘金javadoop专业相机也羡慕奖 – Focos说个睡前故事 so easy 奖 – 洪恩双语绘本效率蹭蹭上升奖 – Sorted³时光隧道走一回奖 – NOMO 相机设计师也爱用奖 – 马卡龙玩图自认为优秀的产品可以去少数派、Price Tag、爱范儿、最美应用这样的平台去自荐中国独立 iOS 和 macOS 开发者图...

2018-12-11 16:26:00 112

转载 Java语法糖之内部类

例1:class Outer { public void md1(final int a) { final int b = 1; class LocalA { int c = a; } class LocalB extends LocalA { LocalB() { super(); } } }}...

2018-11-11 09:44:00 145

转载 Javac常量池的解读

interface IA{ public void md();}public class Test07 implements IA{ final double d = 2.0d; final float f = 2.0f; final int i = 10000; final byte b = 10; String s = "maz...

2018-10-30 08:09:00 142

转载 Javac中的nullcheck

Javac会通过调用引用对象的getClass()来判空,主要有几处:(1)JCMethodInvocation()方法中,如下实例:class A{ class B{}}public class Test06 extends A.B{ public Test06(A a){ a.super(); }}要保证a不能为nul...

2018-10-26 13:03:00 160

转载 Javac中的方法

例1:interface IA{ void m(int a); }abstract class AC implements IA{ // 这个抽象方法覆盖了 IA中的方法m public abstract void m(int a); // public <T,X> void fk(){} // public void f...

2018-10-15 18:16:00 67

转载 Resolve类中错误体系的处理

标红的表示要走3步骤,也就是:final List<MethodResolutionPhase> methodResolutionSteps = List.of( MethodResolutionPhase.B...

2018-10-15 15:31:00 378

转载 Javac中对import关键字进行的处理

参考文章:(1)关于类的符号输入过程第二篇ImportScope中存储的为ImportEntry,继承了Scope.Entry类并且多定义了个origin属性,也就是符号的最终来源。除此之外还对getOrigin()方法进行了覆写,返回origin属性,这是由于静态导入的原因,举例如下:package com.test19;pub...

2018-10-15 10:08:00 257

转载 JLS中表达式的所有文法

3.8.IdentifiersIdentifier: IdentifierChars but not a Keyword or BooleanLiteral or NullLiteralIdentifierChars: JavaLetter IdentifierChars JavaLetterOrDigit...

2018-10-13 14:02:00 92

转载 研究CondItem

转载于:https://www.cnblogs.com/extjs4/p/9765214.html

2018-10-10 11:03:00 81

转载 虚拟机其它需要解释的指令

checkcast checks that the top item on the operand stack (a reference to an object or array) can be cast to a given type. For example, if you write in Java:return ((String)obj);then the ...

2018-10-09 09:30:00 83

转载 第十章-语义分析之静态类型检查(2)

2、表达式的有效性检查Java编译器在进行表达式有效性检查时,会同时给出对这个表达式的符号及类型的期望,同时也会给出表达式运行后的实际类型,在分析过程还会保存上下文环境,如下给出了这几个变量的定义:/** Visitor argument: the current environment. */Env<AttrContext> en...

2018-10-07 19:22:00 251

转载 第十五章-class类文件结构

参考博文:(1)关于class的签名Signature(2)关于访问标识(3)关于Class中的Signature属性(4)附录1 常量池解析(5)附录2 方法解析(6)Class文件结构(7)关于class的签名Signature(8)1、简介Java是一门跨平台的语言,可以做到“一次编写,到处运行(Write Once ...

2018-10-06 15:27:00 130

转载 第十四章-字节码生成

参考博文:(1)分析Item(2)Gen对于数组Array的处理(3)Gen对于break、continue与return的处理(4)虚拟机比较指令(5)Gen类的字符串操作(6)Gen中的switch分析及lookupswitch与tableswitch指令(7)关于Gen生成try-catch-finally(8)Java的运算符(9)...

2018-10-06 15:23:00 138

转载 第十三章-语义分析之语法糖去除

参考以下博文:(1)Javac语法糖之内部类(2)Javac语法糖之EnumSwitch(3)Javac语法糖之TryCatchFinally(4)Javac语法糖之增强for循环(5)Javac语法糖之其它(6)解语法糖之私有构造函数(7)lower类的accessCode解读(8)invokespecial与invokevirtual指令...

2018-10-05 05:48:00 123

转载 第十二章-语义分析之数据流检查

参考:(1)javac后期需要重点阅读的类(2)Flow类注释解读(3)Flow中的Switch分析(4)Flow类中的resolveBreaks与resolveContinues1、简介1、语句的活跃性分析2、异常检查3、变量赋值局部变量在使用前必须进行初始化,而声明在类中的成员变量,包括静态与非静态成...

2018-10-03 09:22:00 160

转载 第十一章-泛型编程

泛型相关的文章:(1)Java 泛型类型的一些限制(2)https://blog.csdn.net/yi_Afly/article/details/52002594(3)Types方法之upperBound-lowerBound-isUnbounded-containsType(4)javac的泛型(5)javac之Inferring Type Argument...

2018-09-30 18:10:00 107

转载 第十章-语义分析之静态语法检查(1)

参考博文:(1)Check类之duplicate declaration checking/Class name generation/Type Checking(2)静态检查是指在编译过程中完成各种一致性检查。由于Java是静态类型的语言,所以在编译阶段,可以对各种表达式进行类型检查,以保证类型符合其上下文对它的期望。静态检查主要包含了类型检查及语法检...

2018-09-29 10:17:00 1987

转载 第九章-语义分析之引用消解

1、Javac语义分析简介语义分析主要是由com.sun.tools.javac.comp.Attr类来完成的,这个类中主要完成的任务有:(1)名称消解(name resolution)(2)类型检查(3)常量折叠除此之外,还需要针对具体的语法树节点进行独特的语义分析,例如声明在方法内的一个局部变量,要判断这个变量是否有非法修饰符声明,这个变量被本地类引用时...

2018-09-29 09:10:00 376

转载 第八章-注解的实现

参考博文:(1)关于注解Annotation第一篇 (2)关于注解Annotation第二篇(3)Annotate类(4)JavacProcessingEnvironment类解读(5)Java的注解相关的命令调用步骤:(1)调用JavacProcessingEnvironment的doProcessing()方法其中的主要逻辑代码如下...

2018-09-27 19:44:00 167

转载 第七章-填充符号表

解析和填充符号表这个过程主要由com.sun.tools.javac.comp.Enter及com.sun.tools.javac.comp.MemberEnter两个类来实现的。这两个类会将遇到的所有的定义填充到符号表中,并且把这写符号和相应的范围(scope)联系在一起。实现方法是就是通过前面讲解的Visitor(访问者)类来实现的,由上而下的遍历AST(抽象语法树),访问所有...

2018-09-27 16:37:00 887

转载 第六章-Javac符号表

需要参考:(1)Architecture of a Java Compiler(2)关于符号Symbol第一篇(3)关于符号Symbol第二篇(4)关于类型Type(5)关于作用域范围Scope(6)Java语义分析阶段的一个主要工作是符号表的管理。符号表(symbol table)也称为环境(environment),其作用是将标识符映射到它们的...

2018-09-25 19:06:00 879

转载 第五章-语法分析之抽象语法树的建立

参考博文:(1)Java的运算符前几章讲解了将Java源文件分解为Token序列,并且也介绍了组成抽象语法树的各个实现类,那么如何根据Token序列分析出具体的树节点并最终形成一棵抽象语法树是语法分析的重点任务,也是本章着重要讲解的知识点。语法分析简单来说就是接收词法分析的Token序列,判断他们是否符合JLS中定义的语言的文法产生,并最终生成一个抽象语...

2018-09-25 15:22:00 3180

转载 第四章-语法分析之认识树节点

上一章我们得到了Token序列,而语法分析就是根据Token序列构造抽象语法树的过程,抽象语法树是一种用来描述程序代码语法 结构的树形表示方式,这种结构化的表示方式将为后面语义分析、代码生成阶段提供极大的便利。语法树的每一个节点都代表了程序代码中的一个语法结构,如包、类型、修饰符、运算符、接口、返回值甚至代码注释等都可以是一个语法结构。Javac中,每个语法树节点都对应着一个具体的...

2018-09-25 08:14:00 1460

转载 第三章-词法分析

(1)词法分析概述词法分析将Java源文件的字符流转变为对应的Token流。涉及到的主要类的继承关系如下图所示。Lexer表示词法分析器,而实现这个接口的Scanner与DocCommentScanner可以将输入的ASCII字符流与Unicode转义字符转换为合法的Token流。其中的DocCommentScanner词法分析器扩展了Scanner的功...

2018-09-24 13:48:00 169

转载 第二章-文件加载与输出

如对源文件的加载,对jar中依赖的class文件进行加载,并且需要将最终生成的class文件进行写出。这就需要一个统一的文件模块来处理,其中涉及到的主要类如下:1、Paths、Path2、ZipArchive3、BaseFileObject4、JavacFileManager(1)实例对象的获取(2)常用API1、概述编译一个Java源代...

2018-09-23 12:09:00 189

转载 第一章-Javac编译器介绍

1、Javac概述编译器可以将编程语言的代码转换为其他形式,如Javac,将Java语言转换为虚拟机能够识别的.class文件形式。而这种将java源代码(以.java做为文件存储格式)转换为class文件格式的过程一般也称为编译器的前端。要将字节码变为机器码还需要后端编译器,如JIT编译器(Just In Time Compiler)。或者还可以通过AOT编译器直接将...

2018-09-23 06:57:00 246

转载 CompoundScope说明

A class scope adds capabilities to keep track of changes in relatedclass scopes - this allows client to realize whether a class scopehas changed,eitherdirectly (because a new member has bee...

2018-08-21 08:24:00 72

转载 SimpleVisitorMemberType类的visitClassType解读

举个例子,如下:class CA<T>{ public T getVal(){ return null; }}interface IA{}interface IB{}public class Test10<T extends CA<? extends Number>&IA&IB>{ p...

2018-08-19 14:43:00 167

转载 Attr类中进行类型推断

涉及到重要的类的继承关系如下图所示。关于抛出的异常继承体系:转载于:https://www.cnblogs.com/extjs4/p/9496194.html

2018-08-18 09:14:00 69

转载 分析Item

分析Item例子1:class Parent { /* <init>() { super(); // JCES树节点,Item(void) px = 0; // JCES树节点,AssignItem(lhs = MemberItem(px)) } */ int px = 0;}public class ...

2018-08-15 06:17:00 176

转载 Gen对于数组Array的处理

举个例子,如下:public void t() { String[][] a = new String[][] { { "x", "y" } }; String[] b = new String[10]; String[] c = new String[] { "x", "y" ...

2018-08-14 08:48:00 228

转载 Gen对于break、continue与return的处理

void tryItOut () {}void wrapItUp () {}void tryFinally() { for (int i = 0; i < 2; i++) { try { tryItOut(); } finally { wrapItUp(); return; } }}生成的...

2018-08-12 17:50:00 158

转载 Attr的visitNewClass()方法解读

在visitNewClass()方法中有如下注释:We are seeing an anonymous class instance creation.In this case, the class instance creation expressionE.new <typeargs1>C<typargs2>(args) { ... }...

2018-08-12 10:32:00 120

转载 虚拟机比较指令

if eq = 153,// 0x99 当栈顶int型数值value=0 时跳转if ne = 154,// 0x9a 当栈顶int型数值value!=0 时跳转if lt = 155,// 0x9b 当栈顶int型数值value<0 时跳转if ge = 156,// 0x9c 当栈顶int型数值value>=0 时跳转if gt =...

2018-08-12 09:31:00 106

转载 Gen类的字符串操作

public void t(String d){ final String str = "b"; String s = "a"+"c"+str+d;}class文件反编译后内容如下:public void t(String d) { String str = "b"; (new StringBuilder...

2018-08-11 14:34:00 126

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除