付威 付威的网络博客

字节码判断方法参数的个数

Jvm 如何确定方法的参数的个数 找到 Method 的 DescriptionIndex 的属性,找到对应的描述,例如: public class AddMain { public static void main(String[] args) { int c = add(100,200); System.out.println(c); ...

手写一个简单的JVM--02.模拟运行JVM

模拟JVM指令的运行 模拟JVM的运行,需要有两个个方面的知识准备 JVM的结构 字节码的含义 JVM的结构 对于JVM的结构,在很多地方都有描述,此处不再赘述,具体结构如下: 方法区 重点说下方法区,方法区有两个实现 永久代(1.7以前),永久代分配到堆上 元空间(1.8),元空间在直接内存上面(分配的快,回收的慢,元空间加载后不会被回收) 我们...

手写一个简单的JVM--01. 解析Class文件

java的运行过程 在运行一段 java 代码的时候需要经过编译,验证,加载和运行,具体如下图: 对于 Java 源码变成字节码的编译过程,我们暂且跳过不讨论。 想弄清楚 java 代码的运行原理,其实本质就是 java 字节码如何被 jvm 执行。 下面我们就从两个方面去认识字节码: 字节码是什么? 字节码如何被执行的? 我们先写一个简单的 java 程序...

排序算法系列--先写一个js动画

目前实现了冒泡排序和插入排序 能够实现加速和减速 后续功能慢慢增加

JVM指令的速记

在学习的JVM的时候,最重要的是认识JVM的指令,JVM指令很多,为了方便记忆,可以根据前缀和功能进行分类: 例如:nop指令代表是一个空指令,JVM收到指令后,什么都不用做,等待下一个指令。 const把数据推至栈顶 const的范围从0x01–0x0f,负责把数据推送到栈顶。例如:iconst_0负责吧整型的0推送到栈顶。 fconst_0负责把float的0推送到栈顶。cons...

手写Java类解析器-02.读取常量池

前面说到读取魔数和版本号,今天讨论下读取常量池,我们可以借助javap -verbose的命令查看对应的class文件的内容。 javap -verbose AppMain.class >>AppMain.txt 输出的内容: Classfile /Users/fuwei/work/rzclassreader/target/classes/org/rz/AppMai...

手写Java类解析器-01.class文件的基本结构

java的运行过程 在运行一段java代码的时候需要经过编译,验证,加载和运行,具体如下图: 这个系列的文章是为了探讨Java字节码是什么样的结构,如何能够准确的表达我们代码的含义。 为了探讨我们的源代码和Java字节码的关系,我们先写一段代码,尽量多用上java的关键字和特殊的方法,以便我们测试和对比: package org.rz; public class AppMain ...

将博客搬至CSDN

将博客搬至CSDN

设计模式---05.访问者模式

访问者模式 访问者模式是一种对象和对象的访问者分开的一种设计模式,在一个对象稳定的情况下,使用访问者模式可以更好的扩展对数据的访问。 相当于是我们在对象里面安插了一个“眼”,这个眼能够被外面实现,然后能拿到当前对象的各个属性。 举个例子 组装一台电脑,对于组装的对于组装者来说,只关心一个电脑零件构成(CPU,内存,鼠标键盘)。而对于电脑的消费者,关心的是电脑各个零件的价格以及总价。 ...

一个秒杀系统的设计

一直想写一个秒杀系统的设计,网上有烂大街的教程,虽然有的写得很不错,但是还是自己设计的来的清楚,基本思路就是拦截+负载+缓存+异步,流程如下(文字改天补上):

window下解决端口占用问题

window下解决端口进程的命令: netstat -ano | findStr 8080 找到对应的线程pid,比如10025 使用taskKill /F /pid 10025杀死线程

设计模式--04.装饰者模式

在23种设计模式中,装饰者模式在游戏开发的过程中,使用的很是频繁。因为这个设计模式,把所有的业务的逻辑封装的对应的实体类中,从而为主流程减负了。首先看下一个应用场景 装饰者模式的应用 我们都知道有一款经典游戏90坦克,这个游戏中,玩家坦克来操作坦克打击AI敌人,在没打死一个红色坦克就会掉下来一个装备,这个装备可以提升移动速度,增加攻击力。 我们首先定义玩家坦克是player对象,再定义...

消息中间件--04. Kafka常用的命令

启动zookeeper $ bin/zkServer.sh start conf/zoo.cfg & $ bin/zkCli.sh 启动Kafka 我们启动两个实例: $ bin/kafka-server-start.sh -daemon config/server.properties $ bin/kafka-server-start.sh -daemon config...

杂文--01. 未选择的路

未选择的路 (罗伯特·弗罗斯特) 黄色的树林里分出两条路 可惜我不能同时去涉足 我在那路口久久伫立 我向着一条路极目望去 直到它消失在丛林深处 但我却选择了另外一条路 它荒草萋萋,十分幽寂 显得更诱人,更美丽 虽然在这条小路上 很少留下旅人的足迹 那天清晨落叶满地 两条路都未经脚印污染 呵,留下一条路等改日再见 但我知道路径延绵无尽头 恐怕我难以再回返 ...

消息中间件--03. Kafka文件存储机制

kafka的文件系统 我们知道Kafka是一个Topic下有多个partition,具体结构如下: 下面我们就探究下Kafka的partition的组成到底是什么。 partition的目录 假定我们在指定的一个集群中有两个Broker,有2个topic(testTopic,testTopic1),每个topic的都有2个partition,在不同的partition中互为对方的...

消息中间件--02. Kafka架构

几个概念 broker:集群中的每一台服务器,称为Broker topic或者subject:队列名 partition:一个队列中的消息可以存储到多台broker上面,一个broker中的分区,称为partition kafka的架构 消息队列的流程从生产者生产消息,通过TCP协议的网络请求发送到Kafka集群,然后Consumers来进行消费,具体如下图: 其中生产者和消...

作者:付威

真正的热爱是不图回报

推广信息

付威星球 知识星球
付威公众号 公众号

信息

推荐博客

如需添加到列表,请邮件到laofu_online@163.com