athas热更新代码

热更新

热更新有什么用?比如,生产环境有一个逻辑不小心写错了,导致资产损失。
如果修改代码,重新发布到生产环境,需要的时间比较长,而且生产环境重启,也可能会影响到其他的用户。
热更新,可以不用重启环境,修改代码对应的字节码,达到修改功能的目的。

一、jad反编译

星号*表示匹配任意路径,也可以直接写具体的路径。

#  --source-only,表示只打印源代码
jad --source-only *.TestController > TestController.java

在>符号后面,可以指定输出的路径以及编译后的文件,放在对应的路径。
最好指定输出的路径,找起来比较方便。
如下:

jad --source-only *.TestController > /arthas/TestController.java

二、修改代码

通过 vim 等编辑器修改第一步输出的文件 /arthas/TestController.java ,修改代码。

三、mc 内存编译

编译修改过后的代码。如下:
-d 指定输出的路径

[arthas@14388]$ mc /arthas/TestController.java -d /arthas
Memory compiler output:
E:\arthas\com\example\demo\controller\TestController.class
Affect(row-cnt:1) cost in 1734 ms.

四、热更新代码

retransform 热更新代码。

redefine也可以热更新。redefine命令与arthas其他增强命令trace/watch/tt等命令冲突,两者会相互重置。

所以推荐使用retransform命令;

[arthas@14388]$ retransform E:/arthas/com/example/demo/controller/TestController.class
retransform success, size: 1, classes:
com.example.demo.controller.TestController

Arthas热更新,有哪些要注意的?

  • Arthas热更新,不支持新增类的属性、方法参数
    只能在原来的方法上修改逻辑。

  • Arthas热更新,不支持依赖注入
    如果需要依赖注入,可以使用 ApplicationContxt 在方法中初始化对象。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
AT指令接收解析是指通过编写代码实现对AT指令的接收和解析过程。AT指令是一种用于与设备进行通信的命令,常用于调制解调器、GSM模块等设备。下面是一个简单的AT指令接收解析代码的示例: ```c #include <stdio.h> #include <string.h> #define BUFFER_SIZE 1024 void parseATCommand(char* buffer) { // 判断AT指令类型 if (strcmp(buffer, "AT") == 0) { printf("Received AT command: AT\n"); // 执行相应的操作 // ... } else if (strncmp(buffer, "AT+", 3) == 0) { printf("Received extended AT command: %s\n", buffer); // 解析参数并执行相应的操作 // ... } else { printf("Invalid AT command!\n"); } } int main() { char buffer[BUFFER_SIZE]; memset(buffer, 0, sizeof(buffer)); // 模拟接收到的AT指令 snprintf(buffer, BUFFER_SIZE, "AT"); parseATCommand(buffer); snprintf(buffer, BUFFER_SIZE, "AT+CGSN=1"); parseATCommand(buffer); return 0; } ``` 在上面的示例代码中,我们定义了一个parseATCommand函数来解析接收到的AT指令。首先,我们使用strcmp函数判断是否接收到了普通的AT指令,如果是,则打印"Received AT command: AT"并执行相应的操作。如果不是普通的AT指令,则使用strncmp函数判断是否接收到了扩展的AT指令,如果是,则打印"Received extended AT command: "并打印出接收到的指令,然后解析参数并执行相应的操作。如果既不是普通的AT指令,也不是扩展的AT指令,则打印"Invalid AT command!"。 在main函数中,我们用snprintf函数模拟了接收到的两个AT指令,并调用parseATCommand函数进行解析。通过这个简单的示例代码,我们可以实现对AT指令的接收和解析,并根据接收到的指令类型执行相应的操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值