大家好,今天小编关注到一个比较有意思的话题,就是关于java语言 编译原理的问题,于是小编就整理了3个相关介绍Java语言 编译原理的解答,让我们一起看看吧。
有什么好的编译原理的书籍?
编译原理方面比较好的书有三本,分别是龙书、虎书、鲸书,这三本书是编译原理方面很权威的三本书,以动物命名是因为他们三本的封面上分别印了这三种动物。这三本书的全名如下:
1.龙书(Dragon book) 书名是Compilers: Principles,Techniques,and Tools
2.鲸书(Whale book) 书名是:Advanced Compiler Design and Implementation
3.虎书(Tiger book) 书名是:Modern Compiler Implementation in J***a/C++/ML,Second Edition 至于翻译过来的中文本你去网上搜一下
J***a的注解是什么原理?
首先,从一个简单的注解开始,@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
String value() default "";
}
使用j***ap -verbose命令查看这个注解的class文件,发现这个注解被编译成了接口,并且继承了j***a.lang.annotation.Annotation接口,接口是不能直接实例化使用的,当在代码中使用这个注解,并使用getAnnotation方法获取注解信息时,JVM通过动态代理的方式生成一个实现了Test接口的代理对象实例,然后对该实例的属性赋值,value值就存在这个代理对象实例中。
如果顺着getAnnotation方法继续跟踪源代码,会发现创建代理对象是在AnnotationParser.j***a中实现的,这个类中有一个annotationForMap方法。在annotationForMap方法内部使用Proxy.newProxyInstance方法在运行时动态创建代理,AnnotationInvocationHandler实现了InvocationHandler接口,当调用代理对象的value()方法获取注解的value值,就会进入AnnotationInvocationHandler类中的invoke方法,深入invoke方***发现,获取value值最终是从AnnotationInvocationHandler类的memberValues属性中获取的,memberValues是一个Map类型,key是注解的属性名,这里就是“value”,value是使用注解时设置的值。
因为回答中不能插入源码做讲解***,更多详细内容可以关注『J***a实战技术』主页的原创文章《J***a注解是如何玩转的,面试官和我聊了半个小时》。
区块链技术的是用什么编程语言进行开发的?
C++、Go、python、J***a。
比特币(BTC)系列
BTC系列包含比特币、莱特币等。使用C++开发,学习比特币系统仅仅用于学习区块链原理,很难在比特币系统上进行继续开发。学习比特币原理时可以使用J***a、javascript、Python、Go任何一种语言。
以太坊
以太坊的开发***用了C++和Go语言,在其上的智能合约,官方推荐Solididy语言,类似于J***ascript。而开发Dapp,可以***用C++、Go、Python、J***a开发。
超级账本
超级账本中的Fabric系统是用Go语言开发的。学习Fabric开发,可以使用Go和J***a语言。
到此,以上就是小编对于j***a语言 编译原理的问题就介绍到这了,希望介绍关于j***a语言 编译原理的3点解答对大家有用。