ASM在游戏服务器的使用

简介: ASM在游戏服务器的使用

ASM 是一个 Java 字节码操控框架。它能够以二进制形式修改已有类或者动态生成类。ASM 可以直接产生二进制 class 文件,也可以在类被加载入 Java 虚拟机之前动态改变类行为。ASM 从类文件中读入信息后,能够改变类行为,分析类信息,甚至能够根据用户要求生成新类。

不过ASM在创建class字节码的过程中,操纵的级别是底层JVM的汇编指令级别,这要求ASM使用者要对class组织结构和JVM汇编指令有一定的了解。

而EsotericSoftware的reflectasm帮忙跨过了这个障碍,使用ASM起来非常方便。

方法级别的反射原本如下写法:

 

Method method=instance.getClass().getMethod("addName");
method.setAccessible(true); 
method.invoke(instance,  "Awesome McLovin");
method.setAccessible(false);

 

 

 

 

用Reflectasm后,调整为如下,是不是很简单呢?

Object instance =...
MethodAccess access = MethodAccess.get(instance.getClass());
int addNameIndex = access.getIndex("addName",access.getParameterTypes());
access.invoke
目录
相关文章
[ASM教程]#2生成类
使用classWriter生成类
60 0
|
网络协议 Serverless 测试技术
使用ASM管理Knative服务(3):在Knative on ASM中使用自定义域名
对于Knative服务,服务的DNS名默认格式为:{服务名}.{服务所在命名空间}.{默认域名},Knative会默认使用example.com作为服务的域名。Knative on ASM支持使用自定义域名作为默认域名。本文介绍如何在Knative Serving中使用自定义域名。
226 0
使用ASM管理Knative服务(3):在Knative on ASM中使用自定义域名
|
缓存 Prometheus Kubernetes
服务网格ASM使用FAQ之(2):使用ASM实现服务慢启动模式以支持预热功能
### 背景 在未启用慢启动预热能力时, 每当新目标Pod加入时,请求方都会向该Pod发送一定比例的流量, 不支持新 Pod 的渐进式流量增加。这对于需要一些预热时间来提供全部负载的服务可能是不可取的,并且可能会导致请求超时、数据丢失和用户体验恶化。 作为一个实际示例,上述问题体现在基于 JVM 的 Web 应用程序中,这些应用程序使用水平 pod 自动缩放。当服务刚启动时,它会被大量请求淹没
328 0
|
弹性计算 运维 Kubernetes
阿里云服务网格ASM公测来袭系列之一:快速了解什么是ASM
阿里云服务网格(Alibaba Cloud Service Mesh,简称 ASM)正式发布公测版本。该产品提供了一个全托管式的服务网格平台,兼容于社区 Istio 开源服务网格,用于简化服务的治理,包括服务调用之间的流量路由与拆分管理、服务间通信的认证安全以及网格可观测性能力,从而极大地减轻开发与运维的工作负担。
1945 0
阿里云服务网格ASM公测来袭系列之一:快速了解什么是ASM
|
SQL Web App开发 数据库
|
SQL Oracle 关系型数据库
|
SQL 测试技术 数据库
|
SQL Oracle 关系型数据库
|
存储 前端开发 Oracle
11204 ASM 在线存储迁移。
2.1停止数据库 shutdown immediate 2.2 扫描磁盘 echo 1 > /sys/class/fc_host/host3/issue_lip echo 1 > /sys/class/fc_host/host4/issue_lip 3,更改磁盘属性 chown oracle:oinstall /dev/mapper/3PART* 4,备份ocr .
1039 0
|
Oracle 关系型数据库 数据库
【ASM】ASMSNMP用户已存在
【ASM】ASMSNMP用户已存在 During Oracle Grid Infrastructure for a cluster installation, the ASMSNMP account is created and its status is set to OPEN.
1059 0