Arthas单独记录篇

arthas一次方法追踪记录 调研spring-cloud-kubenetes,发现组件底层通过http请求k8s的apiserver服务查询k8s管理的service列表。 本地调用跟踪源码的结果url :https://kubernetes.default.svc/api/v1/services,由于未设置namaspace等信息所以url是最简单的url,源码会读取配置,然后最终生成url。然后想看看部署到k8s上的... 阅读详情

‌一、Arthas核心原理‌

‌1. 动态字节码增强(核心机制)‌
  • ‌Instrumentation API‌:通过java.lang.instrument挂载Agent
  • ‌ByteBuddy框架‌:运行时修改字节码(替代ASM)
  • ‌类重定义热更新‌:无需重启JVM实现代码注入
‌2. 架构分层‌

mermaidCopy Code

graph LR A[Client命令行] --> B[Telnet/HTTP协议] B --> C[Arthas Server] C --> D[JVMTI Agent] D --> E[目标JVM进程]


‌二、10大核心命令实战解析‌

‌1. dashboard - JVM全景监控‌

bashCopy Code

dashboard -i 2000 -n 5 # 每2秒刷新1次共5次

‌输出关键‌:

  • ‌线程拓扑‌:死锁线程标红
  • ‌内存分布‌:堆/非堆/GC次数
  • ‌主机负载‌:CPU/内存实时占用
‌2. thread - 线程诊断‌

bashCopy Code

thread -b # 自动检测死锁 thread 108 # 查看指定ID线程栈 thread --state BLOCKED # 过滤阻塞线程

‌3. watch - 方法观测(生产调试利器)‌

bashCopy Code

watch com.example.UserService getUserById '{params, returnObj}' -x 3

‌参数解析‌:

  • params:方法入参
  • returnObj:返回值
  • -x 3:展开嵌套层级
‌4. trace - 调用链路追踪‌

bashCopy Code

trace -j com.xxx.Service *Order* '#cost>100' # 追踪耗时>100ms的Order相关方法

‌5. ognl - 动态执行代码(紧急修复神器)‌

bashCopy Code

ognl '@com.xxx.Config@getInstance().setSwitch(false)' # 关闭功能开关

‌6. redefine - 热更新.class文件‌

bashCopy Code

redefine /tmp/FixLoginService.class # 上传修复后的class文件

‌限制‌:不可修改方法签名/添加字段

‌7. profiler - 火焰图生成‌

bashCopy Code

profiler start # 启动采样 profiler stop --format html # 生成HTML火焰图

‌8. heapdump - 内存快照‌

bashCopy Code

heapdump /tmp/dump.hprof # 比jmap更安全的在线dump

‌9. logger - 日志级别热更新‌

bashCopy Code

logger --name ROOT --level debug # 动态调整Root Logger级别

‌10. vmtool - 内存对象操作‌

bashCopy Code

vmtool --action getInstances --className User --limit 10 # 获取内存中User对象


‌三、生产环境救火案例‌

‌场景1:CPU瞬时飙高‌

bashCopy Code

# 1. 快速定位热点线程 thread -n 3 -i 1000 # 2. 观测可疑方法参数 watch com.xxx.OrderService processOrder params -x 2 # 3. 确认是否为无效循环 trace com.xxx.util.* *Loop

‌场景2:内存泄漏定位‌

bashCopy Code

# 1. 检查对象增长 vmtool --action getInstances --className UserVO --limit 1000 # 2. 追踪创建路径 stack com.xxx.UserService createUser # 3. 导出堆分析 heapdump /tmp/oom.hprof

‌场景3:接口超时分析‌

bashCopy Code

# 1. 追踪慢请求链路 trace -j com.xxx.Gateway *route* '#cost>500' # 2. 检查下游调用 watch com.xxx.HttpClient execute 'throwExp' -e


‌四、高级技巧‌

‌1. 管道符组合命令‌

bashCopy Code

thread | grep 'http-nio' # 过滤Tomcat工作线程

‌2. 后台异步任务‌

bashCopy Code

trace -j com.xxx.Service *Async* > /tmp/trace.log & jobs # 查看后台任务

‌3. HTTP API远程调用‌

bashCopy Code

curl -XPOST http://127.0.0.1:8563/api -d 'command=watch com.xxx.* * {params}'


‌五、原理级注意事项‌

  1. ‌安全隔离‌:仅绑定localhost避免暴露(启动参数--telnet-ip 127.0.0.1)
  2. ‌字节码卸载‌:退出时自动清理增强类(通过reset命令强制重置)
  3. ‌JDK兼容性‌:
    • JDK 6+:基础功能支持
    • JDK 8+:完整功能(推荐)

以下是某电商系统通过Arthas解决生产环境OOM问题的完整案例,包含真实场景的命令和输出:


‌案例背景‌

  • ‌现象‌:订单服务凌晨3点触发java.lang.OutOfMemoryError: Java heap space
  • ‌环境‌:JDK8,堆内存配置-Xmx4G

‌1. 快速内存快照‌


bashCopy Code

[arthas@12345]$ heapdump /tmp/oom_heap.hprof -live Dumping heap to /tmp/oom_heap.hprof... Heap dump file created [3.7GB, 12s]

‌关键输出‌:文件大小接近堆上限,说明内存几乎耗尽


‌2. 分析大对象分布‌


bashCopy Code

[arthas@12345]$ vmtool --action getInstances --className java.util.HashMap --limit 1 @HashMap[][ @HashMap[ table=@Node[][ @Node[key=@String[user_123], value=@Order[...]], @Node[key=@String[user_456], value=@Order[...]], ... 50000+ elements ] ] ] Affect(row-cnt:1) cost in 235 ms

‌关键输出‌:发现一个HashMap持有5万+订单对象


‌3. 追踪对象引用链‌


bashCopy Code

[arthas@12345]$ ognl '@com.xxx.CacheHolder@userOrderCache' -x 2 @ConcurrentHashMap[ @String[global_cache]:@HashMap[size=50032], ... ]

‌关键输出‌:定位到静态变量CacheHolder.userOrderCache持续增长


‌4. 确认泄漏点‌


bashCopy Code

[arthas@12345]$ stack com.xxx.CacheHolder addOrder --cycle 10 Press Q or Ctrl+C to abort. Affect(class-cnt:1 , method-cnt:1) cost in 28 ms ts=2025-09-02 03:15:00;thread_name=pool-1-thread-3 @com.xxx.CacheHolder.addOrder() at com.xxx.OrderService.process(OrderService.java:112) at com.xxx.OrderController.create(OrderController.java:45)

‌关键输出‌:订单处理线程不断向静态缓存写入数据但无清理逻辑


‌5. 解决方案‌

‌修复代码‌:


javaCopy Code

// 原问题代码 public class CacheHolder { public static Map<String, Order> userOrderCache = new ConcurrentHashMap<>(); } // 修复后代码 public class CacheHolder { private static Map<String, Order> userOrderCache = new ConcurrentHashMap<>(); public static void addOrder(String userId, Order order) { userOrderCache.put(userId, order); // 添加LRU淘汰机制 if(userOrderCache.size() > 10000) { userOrderCache.remove(userOrderCache.keySet().iterator().next()); } } }


‌验证效果‌


bashCopy Code

[arthas@12345]$ vmtool --action getInstances --className java.util.HashMap --limit 1 @HashMap[][ @HashMap[size=9872] ] Affect(row-cnt:1) cost in 112 ms

‌修复后‌:缓存大小稳定在1万以内,OOM问题消失


‌根本原因‌

  1. 静态缓存userOrderCache未设置上限
  2. 促销期间订单量激增导致缓存爆炸式增长
  3. 缓存对象被GC Roots强引用无法回收

以下是某金融系统通过Arthas解决生产环境CPU 100%问题的完整案例,包含真实命令和输出:


‌案例背景‌

  • ‌现象‌:风控服务CPU持续100%,接口超时
  • ‌环境‌:JDK11,4核8G容器

‌1. 定位高CPU线程‌


bashCopy Code

[arthas@67890]$ thread -n 3 -i 2000 Threads Top 3, interval=2000ms, cpuUsage=99.8% [1] risk-thread-pool-3 (Running, cpuUsage=92.7%) at com.xxx.RiskEngine.calculate(RiskEngine.java:155) at com.xxx.RiskEngine$$Lambda$45/0x00000008000b6840.run(Unknown Source) [2] risk-thread-pool-1 (Running, cpuUsage=5.1%) at com.xxx.RiskEngine.calculate(RiskEngine.java:148) [3] GC task thread#0 (ParallelGC, cpuUsage=1.2%) at jdk.internal.misc.Unsafe.park(Native Method)

‌关键输出‌:risk-thread-pool-3线程占用92.7% CPU,定位到RiskEngine.calculate方法


‌2. 生成火焰图‌


bashCopy Code

[arthas@67890]$ profiler start -d 30 -f /tmp/cpu_flame.svg Started [cpu] profiling for 30 seconds [arthas@67890]$ profiler stop profiler output file: /tmp/cpu_flame.svg [CPU flame graph]: 89% samples in com.xxx.RiskEngine.calculate

‌火焰图分析‌:89% CPU时间消耗在calculate方法中的正则匹配逻辑


‌3. 动态观察方法参数‌


bashCopy Code

[arthas@67890]$ watch com.xxx.RiskEngine calculate '{params,returnObj,throwExp}' '#cost>100' -x 3 -n 5 Press Q or Ctrl+C to abort. Affect(class-cnt:1 , method-cnt:1) cost in 53 ms ts=2025-09-02 10:30:00; cost=423ms; method=calculate params[0]=@RiskRequest[ rule="/^(a*)+$/", # ← 灾难性回溯正则 data="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa!" ] returnObj=null throwExp=null

‌关键输出‌:发现输入数据触发正则/^(a*)+$/的灾难性回溯


‌4. 验证问题‌


bashCopy Code

[arthas@67890]$ ognl '@com.xxx.RiskEngine@PATTERN_CACHE' -x 1 @ConcurrentHashMap[ @String["default"]:Pattern.compile("/^(a*)+$/"), ... ]

‌输出确认‌:风险规则缓存了危险正则表达式


‌5. 解决方案‌

‌修复代码‌:


javaCopy Code

// 原问题代码 public class RiskEngine { private static final Map<String, Pattern> PATTERN_CACHE = new ConcurrentHashMap<>(); public static Pattern getPattern(String regex) { return PATTERN_CACHE.computeIfAbsent(regex, Pattern::compile); } } // 修复后代码 public class RiskEngine { private static final Map<String, Pattern> PATTERN_CACHE = new ConcurrentHashMap<>(); private static final int REGEX_COMPLEXITY_LIMIT = 20; // 新增复杂度限制 public static Pattern getPattern(String regex) { if (regex.length() > REGEX_COMPLEXITY_LIMIT) { throw new IllegalArgumentException("Regex too complex"); } return PATTERN_CACHE.computeIfAbsent(regex, Pattern::compile); } }


‌验证效果‌


bashCopy Code

[arthas@67890]$ thread -n 3 Threads Top 3, cpuUsage=45.3% [1] http-nio-8080-exec-1 (Running, cpuUsage=12.1%) at java.base@11.0.13/java.lang.Thread.sleep(Native Method) [2] risk-thread-pool-2 (Waiting, cpuUsage=8.7%) at jdk.internal.misc.Unsafe.park(Native Method) [3] GC task thread#0 (ParallelGC, cpuUsage=3.2%) at jdk.internal.misc.Unsafe.park(Native Method)

‌修复后‌:CPU使用率降至正常水平(<15%)


‌根本原因‌

  1. 危险正则表达式/^(a*)+$/导致指数级回溯
  2. 风控规则引擎未对输入正则做复杂度校验
  3. 恶意构造的输入触发CPU爆满
爱上Java诊断利器Arthas之Arthas idea plugin 的前世今生 一、背景 爱上Java诊断利器Arthas之Arthas idea plugin 前世今生,arthas 对于小哥来说,已经不可分割了,在我的日常开发、线上问题排查中扮演了非常重要的角色。作为小开发的我,日常需要排查线上运营同学提的各种bug、各种线上问题诊断、日常运维、线上问题优化等等一堆的问题。在刚刚来公司前期是比较恐惧运维任务的,代码不熟悉、各种问题比较多…几乎崩溃的状态,运维的一周基本... 阅读详情

相关推荐

arthas学习图文记录

🚀 优质资源分享 🚀 学习路线指引(点击解锁) 知识定位 人群定位 🧡 Python实战微信订餐小程序 🧡 进阶级 本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。 💛Python量化交易实战💛 入门级 手把手带你打造一个易扩展、更安全、效率更高的量化交易系统 Arthas 是阿里开源的 Java 诊断工具。在线排查问题,无需重启;动态跟踪 Java 代码;实时监控 JVM 状态。Arthas 支持 JDK 6+,支持 Lin

xuhss_com的博客 726

Arthas单独记录篇二——命令

Arthas是一款强大的Java诊断工具,提供多种安装方式和丰富命令。安装支持在线脚本、包管理器、离线包、Docker及Maven/Gradle依赖等。主要命令包括:dashboard实时监控系统状态;thread分析线程问题;monitor统计方法调用;trace追踪调用链路;watch查看方法参数/返回值;stack分析调用路径;memory查看内存使用;jvm获取JVM信息;heapdump生成内存快照;jad反编译代码;mc编译代码;redefine热更新类。这些命令可快速诊断性能问题、内存泄漏等,

code_fly 992

arthas使用 笔记

arthas使用 笔记

qq_40691438的博客 1583

Arthas基础使用篇

Arthas:快速入门

七叔的博客 2万+

【Arthas】记录一次使用Arthas优化接口速度的经历

一般这里都都比较快,但是本次我们是测试高可用,然后故意宕机了一台,因此我这里如果宕机了太耗时,我们这里查看相关的源码发现这里可以优化一下。这样去判断端口是否通畅,但是如果断开的机器比较多,或者总条数比较多,或者网络比较慢,都会导致这里耗时,这里可以进行异步并行处理。然后继续查看下面的耗时方法,发现这个方法会循环调用,查看代码果然发现是循环调用,而且是在循环中调用一个耗时的方法,调用模式如下。然后查看这个方法的耗时,发现主要耗时在KafkaConsumer:partitionsFor方法上。

九师兄 559

5分钟搞定:用Pyannote和Whisper实现带说话人分离的语音转文字(附完整代码)

本文详细介绍了如何快速构建一个集成了说话人分离功能的语音转文字系统。通过结合OpenAI的Whisper模型进行高精度语音识别和Pyannote模型实现说话人分离,并提供了完整的代码实现、环境搭建指南以及核心的对齐与合并逻辑,帮助开发者高效处理会议录音、访谈等多说话人音频,实现自动化转录。

threejs5artist的博客 635

Arthas 日常记录

Arthas 是一个 Java 诊断程序 , [Arthas 官方](https://arthas.aliyun.com/doc/http-api.html#%E4%BC%9A%E8%AF%9D%E4%BA%A4%E4%BA%92) 已经很详细的描述了命令的使用 , 如果想整体学习可以查看.

black-ant 1238

先进半导体材料与器件Chapter3

Chapter3 异质结双极晶体管(HBT) 作者:毛茏玮 / Saint 掘金:https://juejin.im/user/5aa1f89b6fb9a028bb18966a 微博:https://weibo.com/5458277467/profile?topnav=1&wvr=6&is_all=1 GitHub:github.com/saint-000 知乎:https:/...

一个会写代码的烤鸭 5802

记录arthas使用方法

记录arthas使用方法

ceshiyuan001的博客 923

OSGEarth 基于鼠标位置缩放

说明 osgearth 原有漫游器EarthManipulator 不支持此功能,所以需要修改此漫游器代码,其中主要原理就是在缩放的同时也要改变当前漫游器中心焦点的位置,从而保持鼠标指定点的位置缩放是不改变。 核心代码修改部分 EarthManipulator 的头文件zoom方法添加参数view /** * Zoom the camera using delt...

Rsoftwaretest的专栏 3782

Unity 升级引擎版本后构建报错:script class layout is incompatible between the editor and the player

Unity升级引擎版本后,项目报错:script class layout is incompatible between the editor and the player。

学习与分享 593

Arthas

文章目录Arthas启动/重进入启动常见问题生产环境修改代码、更新场景实时修改生产环境日志级别场景便捷地修改JVM参数其他命令更好用的工具 Arthas 启动/重进入 启动 # 一般arthas的jar包下载都会放在默认当前位置下,如果当前为root角色 # cd ~ # cd .arthas/lib/3.4.3/arthas # 需要管理权限才可以启动,也可以进入 cd .arthas/lib/版本/arthas,再执行 sudo java -jar arthas-boot.jar 重进入 重进

本博客已迁移到 https://jacksparrow414.com 4982

主流算力卡性能对比分析

超大规模AI训练/HPC:优先选择NVIDIA H100或AMD MI300X,需关注显存带宽和多卡互联能力。企业级AI训练:NVIDIA A100性价比更高,生态成熟。国内自主可控需求:华为昇腾910B是首选,支持液冷和低功耗设计。本地AI推理/游戏:NVIDIA RTX 4090或RTX 5090性价比突出,但需注意显存容量限制。边缘计算/低功耗场景:华为昇腾310或清微智能TX536(能效比6.3TOPS/W@INT8)更合适。

m0_69867914的博客 7796

arthas之tt/options命令基本使用

arthas之tt/options命令基本使用

兮动人 1583

《AI应用架构师:解锁AI智能体于经济学研究洞察经济趋势的关键密码》

当经济学家还在为“疫情后的消费复苏曲线”“ChatGPT对就业的长期影响”等非线性问题挠头时,AI应用架构师已经用AI智能体搭建了一个“数字经济沙盘”:里面有会砍价的消费者、会算成本的企业、会调政策的政府,每个智能体像真实角色一样思考决策,甚至能模拟出“政策出台3个月后失业率的微妙变化”。这篇文章将带你从架构师视角拆解:如何用AI智能体破解经济学研究的3大痛点(数据爆炸、非线性复杂、动态演化)?如何设计能“活起来”的经济智能体?如何用智能体模拟出能指导现实的经济趋势?

AI天才研究院 902

宇树G1开发实践--PPT汇报(基础版)

本文介绍了一套基于宇树G1人形机器人的PPT自动演示系统,可实现"一键启动、自动演讲"功能。系统通过多线程同步技术,将音频播放与机器人动作完美结合,支持12种预设社交互动动作。硬件依赖宇树G1机器人、外接音响和网络连接,软件采用Python SDK和ALSA音频工具。核心功能包括音频文件自动排序、外接音响播放控制、机器人动作执行及音画同步。使用时需配置网络接口和音频设备号,运行后自动按顺序播放音频并执行随机动作。系统特别强调了安全注意事项,并提供了常见问题解决方案,适用于展会、汇报等需要

m0_47999117的博客 510

arthas 记录

例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考提示:这里对文章进行总结:例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

qq_42516605的博客 450

解锁机器人动态平衡算法:从原理到实践

机器人的动态平衡,是指机器人在运动过程中,面对各种复杂的动态变化和外界干扰,依然能够维持稳定状态,不发生倾倒或失去控制的能力。它就像是一位技艺精湛的舞者,在舞台上翩翩起舞时,无论做出多么复杂的动作,都能巧妙地调整身体姿态,始终保持平衡,展现出优美的舞姿。在实际应用中,机器人的动态平衡对于其稳定运行起着至关重要的作用。以双足机器人为例,当它行走在不平整的地面上时,地面的起伏会使机器人的重心不断发生变化。如果没有良好的动态平衡能力,机器人就很容易因为重心偏移而摔倒,无法完成行走任务。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 3838

selectlist 使用_记录一次 Arthas 使用

【Arthas 官方社区正在举行征文活动,参加即有奖品拿~点击投稿】前言疫情期间,在家办公,每天都是 007,感觉自己已经升级为熊猫特工了,心累,身体疲惫!!!今天终于有时间休息一下,然后记录一下在家办公期间 Arthas 的简单使用。下载安装方式一:推荐使用 IDEA 插件下载 Cloud Toolkit 来使用 ArthasCloud Toolkit 是阿里云发布的免费本地 IDE 插件,帮助...

weixin_39949297的博客 159

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

arthas使用记录

arthas的一些使用命令记录

qq_27114455的博客 611

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Arthas使用教程

arthas对原本进程的影响,本质上arthas对进程的影响是很小的,但是对于一些命令的执行我们要额外关注下,比如trace的时候尽量不要一次性监听多个类。其中每个方法前面的百分号是这个方法执行耗时占了整个链路的百分比,后面是相关具体耗时,可以看到上图中setPreAndAvailNum耗时是比较久的,占用了6ms多,由于arthas无法动态监听下一级方法(新版本已经提供,但是感觉效果一般,具体可以查看相关文档),所以需要我们手动添加该方法的监听命令。其它的使用可以参考文档中的相关参数。

Evan 1664

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Arthas进阶

很多时候我们都知道一个方法被执行,但这个方法被执行的路径非常多,或者你根本就不知道这个方法是从那里被执行了,此时你需要的是 stack 命令。观察当前对象中的属性,如果想查看方法运行前后,当前对象中的属性,可以使用target关键字,代表当前对象。这里重点要说明的是观察表达式,观察表达式的构成主要由ognl 表达式组成,所以你可以这样写 "如果方法调用的次数很多,那么可以用-n参数指定捕捉结果的次数。这里输出结果中,第一次输出的是方法调用前的观察表达式的结果,第二次输出的是方法返回后的表达式。

白羊座的橙子 1049

命令记录|arthas

列出我自己常用到的arthas命令,一是系统整理总结经验,二是为了后面查找方便。

niceHack的博客 1444

记录一次 Arthas 使用

【Arthas 官方社区正在举行征文活动,参加即有奖品拿~点击投稿】 前言 疫情期间,在家办公,每天都是 007,感觉自己已经升级为熊猫特工了,心累,身体疲惫!!! 今天终于有时间休息一下,然后记录一下在家办公期间 Arthas 的简单使用。 下载安装 方式一:推荐使用 IDEA 插件下载 Cloud Toolkit 来使用 Arthas Cloud Toolkit 是阿里云发布的免费本地 IDE 插件,帮助开发者更高效地开发、测试、诊断并部署应用。通过插件,可以将本地应用一键部署到任意服务器,甚至云.

阿里巴巴云原生的博客 439

arthas02-arthas执行结果保存日志

arthas执行结果保存日志 1 方式一:命令行开启默认日志 执行结果保存日志 默认情况下arthas执行结果是不保存日志的,当然我们通过arthas提供的命令行options进行开启: #### 关闭日志打印 [arthas@44607]$ options save-result false NAME BEFORE-VALUE AFTER-VALUE ------------...

1万+
上一篇: 锁原理——java与mysql
下一篇: atomic常用类方法
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值