![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java学习
Ti_an_Di
这个作者很懒,什么都没留下…
展开
-
安装thrift一直报失败
Making all in javamake[3]: Entering directory '/opt/thrift-0.13.0/lib/java'./gradlew assemble-Prelease=true-Pthrift.version=0.13.0--console=plainTask :copyDependencies UP-TO-DATETask :comp...原创 2019-11-12 14:18:00 · 1007 阅读 · 0 评论 -
读郑雨迪《深入拆解Java虚拟机》 -- 第八讲 JVM是如何实现invokedynamic的
本文转自https://time.geekbang.org/column/article/12564以前,我们赛马 只能由马参加,但是对于一些年轻人里流行的鸭子类型(duck typing),只要跑起来像马的,它就是一只马,也可以参加赛马比赛。class Horse { public void race() { System.out.println("Horse....转载 2018-09-16 20:34:49 · 1317 阅读 · 2 评论 -
Java反射API简介
通常来说,使用反射API的第一步便是获取Class对象。在Java中常见的有这么三种。使用静态方法Class.forName来获取 调用对象的getClass()方法 直接用类名 + ".class"来访问。对于基本类型来说,它们的包装类型(wrapper classes)拥有一个名为“TYPE”的final静态字段,指向该基本类型对应的Class对象。例如,Integer.TYPE指向...转载 2018-08-25 14:38:59 · 1167 阅读 · 0 评论 -
读郑雨迪《深入拆解Java虚拟机》 -- 第七讲 JVM是如何实现反射的
本文转自https://time.geekbang.org/column/article/12192反射是Java语言中一个相当重要的特性,它允许正在运行的Java程序观测,甚至是修改程序的动态行为。举例来说,我们可以通过Class对象枚举该类中所有的方法,我们还可以通过Method.setAccessible(位于java.lang.reflect包,该方法继承自AccessibleOb...转载 2018-08-25 14:42:16 · 948 阅读 · 5 评论 -
读郑雨迪《深入拆解Java虚拟机》 -- 第五讲 JVM是如何执行方法调用的?(下)
本文转自https://time.geekbang.org/column/article/12098这里我们来聊一聊Java虚拟机中虚方法调用的具体实现。首先,我们来看一个模拟出国边检的小例子abstract class 乘客{ abstract void 出境(); @Override public String toString(){...}}cla...转载 2018-08-17 15:02:42 · 690 阅读 · 1 评论 -
读郑雨迪《深入拆解Java虚拟机》 -- 第六讲 JVM是如何处理异常的
本文转自https://time.geekbang.org/column/article/12134众所周知,异常处理的两大组成要素是抛出异常和捕获异常。这两大要素共同实现程序控制流的非正常转移。抛出异常可分为显示和隐式两种。显示抛异常的主体是应用程序,它指的是在程序中使用“throw”关键字,手动将异常实例抛出。隐式拋异常的主体则是Java虚拟机,它指的是Java虚拟机在执行过程中,碰到...转载 2018-08-20 10:17:31 · 2465 阅读 · 1 评论 -
读郑雨迪《深入拆解Java虚拟机》 -- 第四讲 JVM是如何执行方法调用的?(上)
本文转自https://time.geekbang.org/column/article/11539在写Java代码的时候,我们可能会遇到可变长参数方法的重载造成的坑。(官方文档建议避免重载可变长参数方法)实例代码如下void invoke(Object obj, Object... args){...}void invoke(String s, Object obj, Objec...转载 2018-08-12 10:52:56 · 715 阅读 · 4 评论 -
读郑雨迪《深入拆解Java虚拟机》 -- 第二讲 Java的基本类型
本文转自https://time.geekbang.org/column/article/11503 Java不仅是一门面向对象的语言,它还引进8种基本数据类型来支持数值运算。Java这么做的原因多半是工程上的考虑,因为使用基本数据类型可以在内存使用和运算效率两方面获得显著提升。今天,我们来了解一下基本数据类型在Java中的实现public class Foo { publi...转载 2018-07-31 22:22:42 · 1548 阅读 · 2 评论 -
读郑雨迪《深入拆解Java虚拟机》 -- 第三讲 Java虚拟机是如何加载Java类的
本文转自https://time.geekbang.org/column/article/11523我们把Java虚拟机加载Java类比作盖房子。那么我们盖房子,首先需要请建筑师出个方案,然后去市政部门报备、验证,通过后才可以开始盖房子。盖好房子还要装修,之后才能住人。从class文件到内存中的类,按先后顺序需要经过加载、链接以及初始化三大步骤。其中,链接过程中同样需要验证;而内存中的类没...转载 2018-08-05 00:50:07 · 675 阅读 · 2 评论 -
读郑雨迪《深入拆解Java虚拟机》 -- 第一讲 Java代码是怎么运行的
本文转自https://time.geekbang.org/column/article/11289Java代码有很多运行方式。在开发工具中运行 双击jar文件运行 在命令行中运行 在网页中运行当然,上述运行方式都离不开JRE, 也就是Java运行时环境。JRE仅包含Java程序的必须组件,包括Java虚拟机以及Java核心类库等。而我们Java程序员经常接触到的JDK(J...转载 2018-07-21 16:45:05 · 4740 阅读 · 3 评论