自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

bugstack虫洞栈

微信(小傅哥):fustack | 博客:https://bugstack.cn

原创 手写类似dubbo的rpc框架第三章《rpc框架》

案例介绍 结合上面两章节,本章将实现rpc的基础功能;提供一给rpc中间件jar给生产端和服务端。 技术点; 1、注册中心,生产者在启动的时候需要将本地接口发布到注册中心,我们这里采用redis作为注册中心,随机取数模拟权重。 2、客户端在启动的时候,连接到注册中心,也就是我们的redis...

2019-05-16 18:27:29 282 0

原创 手写类似dubbo的rpc框架第二章《netty通信》

案例介绍 在我们实现rpc框架的时候,需要选择socket的通信方式。而我们知道一般情况下socket通信类似与qq聊天,发过去消息,什么时候回复都可以。但是我们rpc框架通信,从感觉上类似http调用,需要在一定时间内返回,否则就会发生超时断开。 这里我们选择netty作为我们的socket框架...

2019-05-16 18:25:28 304 0

原创 手写类似dubbo的rpc框架第一章《自定义配置xml》

案例介绍 本案例通过三个章节来实现一共简单的rpc框架,用于深入学习rpc框架是如何通信的,当前章节主要介绍如何自定义xml文件并进行解析。想解析自定义的xml首先定义自己的xsd文件,并且实现spring的NamespaceHandlerSupport、BeanDefinitionParser,...

2019-05-16 18:23:47 376 0

原创 用Java实现JVM第九章《本地方法调用》

案例介绍 本章主要介绍用java实现一些本地方法类库,并初始化本地方法,之后通过反射命令来调用本地方法。 Java虚拟机和Java类库一起构成了Java运行时环境。Java类库主要用Java语言编写,一些无法用Java语言实现的方法则使用本地语言编写,这额方法叫作本地方法。 OpenJDK类库中...

2019-05-06 14:40:12 357 0

原创 用Java实现JVM第八章《数组和字符串》

案例介绍 本章主要介绍如何实现让虚拟机处理数组和字符串,在虚拟机功能增强后,我们可以执行数组类型计算和输出字符串。本章需要新增实现数组指令;newarray、anewarray、arraylength、aload、astore、multianewarray、ldc,同时需要需要开发字符串池方法等。...

2019-05-06 14:39:44 175 0

原创 用Java实现JVM第七章《方法调用和返回》

案例介绍 本章节主要用java实现;方法调用指令、返回指令、解析方法符号引用、参数传递等。实现新的指令后我们的虚拟机就可以执行稍微复杂的运算并输出结果。 从调用的角度来看,方法可以分为两类:静态方法(或者类方法)和实例方法。静态方法通过类类调用,实例方法则通过对象引用来调用。静态方法是静态绑定的...

2019-05-06 14:39:14 214 0

原创 用Java实现JVM第六章《类和对象》

案例介绍 本案例通过java代码实现jvm规范中指令集和解释器,完成后就可以开始执行1到100的加和计算。 Java虚拟机顾名思义,就是一台虚拟的机器,而字节码(bytecode)就是运行在这台虚拟机器上的机器码。我们已经知道,每一个类或者接口都会被Java编译器编译成一个class文件,类或接...

2019-05-06 14:38:45 186 0

原创 用Java实现JVM第五章《指令集和解释器》

案例介绍 本案例通过java代码实现jvm规范中指令集和解释器,完成后就可以开始执行1到100的加和计算。 Java虚拟机顾名思义,就是一台虚拟的机器,而字节码(bytecode)就是运行在这台虚拟机器上的机器码。我们已经知道,每一个类或者接口都会被Java编译器编译成一个class文件,类或接...

2019-05-06 14:38:09 209 0

原创 用Java实现JVM第四章《运行时数据区》

案例介绍 本案例初步实现运行时数据区里;线程、Java虚拟机栈、帧、操作数栈、局部变量表。 在运行Java程序时,Java虚拟机需要使用内存来存放各种各样的数据。Java虚拟机规范把这些内存区域叫作运行时数据区。运行时数据区可以分为两类:一类是多线程共享的,另一类则是线程私有的。多线程共享的运行...

2019-05-06 14:37:40 154 0

原创 用Java实现JVM第三章《解析class文件》附[classReader拆解]

案例介绍 按照如下虚拟机规范,本文主要介绍java版本jvm提取class字节码方式。在java中没有无符号类型,例如js中byte取值是0~256、java中是-128 ~ +172,所以在实际处理字节码时[虚拟机规范u1、u2、u4],需要进行转换。 [java虚拟机规范]每个Class文件...

2019-05-06 14:37:06 203 0

原创 用Java实现JVM第三章《解析class文件》

案例介绍 本案例主要介绍通过java代码从class文件中解析;class文件、常量池、属性表; 作为类(或者接口)信息的载体,每个class文件都完整地定义了一个类。为了使java程序可以“编写一次,处处运行”,Java虚拟机规范对class文件格式进行了严格的规定。但是另外一方面,对于从哪里...

2019-05-06 14:36:29 175 0

原创 用Java实现JVM第二章《搜索class文件》

案例简述 本章节主要了解Java虚拟机从哪里寻找class文件并且读取class内字节码 环境准备 1、jdk 1.8.0 2、IntelliJ IDEA Community Edition 2018.3.1 x64 3、Notepad++ (插件安装HEX-Editor,用于查看class字节)...

2019-05-06 14:35:47 213 0

原创 用Java实现JVM第一章《命令行工具》

背景描述 为了更好的学习jvm阅读过《Java虚拟机规范》、《自己动手写Java虚拟机》,尤其是《自动动手写java虚拟机》可以更加清晰的看到全貌。对于程序开发者来说学习一个新东西最好事必躬亲,亲力亲为的做出一些demo,只有输出了结果心里才踏实。 案例简述 本章节主要是通过编写java代码,从m...

2019-05-06 14:34:59 401 0

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