<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Ares_xb的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Ares_xb</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Ares_xb]]></copyright><item><title><![CDATA[让 AI 真正“打断点“：java-debug，一个通用的 Java 远程调试 Agent Skill]]></title><link>https://blog.youkuaiyun.com/Ares_xb/article/details/167679739</link><guid>https://blog.youkuaiyun.com/Ares_xb/article/details/167679739</guid><author>Ares_xb</author><pubDate>Mon, 12 Oct 2026 11:22:03 +0800</pubDate><description><![CDATA[AI 排查 Java 问题常因“猜”而失效。java-debug 将断点调试能力封装为标准 Skill，使 Claude Code、Cursor 等 Agent 可远程连接 JVM，自动设断点、采集运行时数据（调用栈、变量、表达式求值），并基于真实现场下结论。相比传统 jdb，它支持线程级挂起、结构化交互、事件驱动等待，零外部依赖，安全可控。适用于线上偶发故障定位，让 AI 真正“看见”问题根源。]]></description><category></category></item><item><title><![CDATA[涌现（Emergence）：个体无序，整体有序的自然法则]]></title><link>https://blog.youkuaiyun.com/Ares_xb/article/details/159790540</link><guid>https://blog.youkuaiyun.com/Ares_xb/article/details/159790540</guid><author>Ares_xb</author><pubDate>Fri, 03 Apr 2026 10:52:53 +0800</pubDate><description><![CDATA[领域微观（无序）宏观（涌现规律）热力学分子随机运动温度、压强、相变电子量子随机行为电流、超导、能带、量子霍尔效应生物简单的单个蚂蚁/神经元蚁群智慧、意识化学单个分子反应化学振荡、自组装数学单次随机事件大数定律、正态分布、本福特定律经济个体自利行为市场均衡价格社会个人日常交流语言体系、城市结构交通单辆车的驾驶幽灵堵车、流量相变地球科学单粒沙子滚落幂律分布的雪崩、沙丘形态天文学单颗恒星运行银河系旋臂结构。]]></description><category></category></item><item><title><![CDATA[推广一下自己刚撸的 IDEA 插件—Bean Copy 助手]]></title><link>https://blog.youkuaiyun.com/Ares_xb/article/details/153274065</link><guid>https://blog.youkuaiyun.com/Ares_xb/article/details/153274065</guid><author>Ares_xb</author><pubDate>Tue, 14 Oct 2025 20:45:54 +0800</pubDate><description><![CDATA[这个插件一开始主要是写给自己用的，在阅读代码和排查bug的时候发现有很多项目使用了Bean Copy，Bean Copy有时候确实很好用， 但是它也会带来一些困扰比如源对象通过Bean Copy赋值给目标对象以后通过IDEA的引用是找不到字段读取和写入（Bean Copy）的地方的，这个插件可以解决这个问题。使用属性复制范围查找，会认为一次Bean Copy是对源对象和目标对象同名且同类型的字段读取和写入（对于源对象来说是读取对于目标对象来说是写入），实际上这个字段是没法被Copy过去的！]]></description><category></category></item><item><title><![CDATA[Java字节码与流量回放]]></title><link>https://blog.youkuaiyun.com/Ares_xb/article/details/153267581</link><guid>https://blog.youkuaiyun.com/Ares_xb/article/details/153267581</guid><author>Ares_xb</author><pubDate>Tue, 14 Oct 2025 17:11:34 +0800</pubDate><description><![CDATA[字节码是Java"一次编译，到处运行"的核心密码，JVM生态的技术皇冠。它让跨平台成为可能，让动态优化成为现实，是Spring等框架的底层灵魂，而基于字节码的流量回放技术是保障系统稳定性的终极武器。参考资料javasistasmjbossdubboasmbytebuddyskywalkinggreysarthas。]]></description><category></category></item><item><title><![CDATA[Java字节码改写之asm进阶使用]]></title><link>https://blog.youkuaiyun.com/Ares_xb/article/details/145612950</link><guid>https://blog.youkuaiyun.com/Ares_xb/article/details/145612950</guid><author>Ares_xb</author><pubDate>Thu, 13 Feb 2025 15:37:27 +0800</pubDate><description><![CDATA[在java世界里，字节码改写 + 反射可以让你变成“上帝”，你可以完成任何你想做的事情，而字节码改写中asm是当之无愧的老大哥，对字节码认识不深的小伙伴可以看看我这篇文章本文的目的是现有互联网上asm的资料不够体系和细致，其和传统java编程也非常的不一样，使用时有很多需要注意的地方，比如栈的平衡以及如何分析栈内操作数的状态。接下来以我最近对随机数方法的实际字节码改写需求为例带大家熟悉整个字节码改写过程.先描述下我的技术需求。]]></description><category></category></item><item><title><![CDATA[聊聊为什么java会有这么多的字节码改写方式（jdk/cglib/asm/javasist）？]]></title><link>https://blog.youkuaiyun.com/Ares_xb/article/details/145611478</link><guid>https://blog.youkuaiyun.com/Ares_xb/article/details/145611478</guid><author>Ares_xb</author><pubDate>Thu, 13 Feb 2025 14:29:15 +0800</pubDate><description><![CDATA[同样的javasist作为一个更高级的抽象层，这意味着会有一些性能开销，这在需要进行大量字节码操作的场合可能成为瓶颈，同时对于一些非常细致的字节码操作或者需要很细粒度控制的场景来说，它不够灵活，因此它更适合于简单或常见的字节码操作。字节码改写的方式有很多，不同的场景也有不同的选择，javasist开箱即用，asm可以锻炼你的java内功，赶进度时你所熟悉的方式则是最合适的。: 因为JDK动态代理不能直接代理类，而只能代理接口，这限制了其在一些情况下的使用灵活性，尤其是当需要代理没有接口的第三方类时。]]></description><category></category></item><item><title><![CDATA[你是否也在寻找二进制和字符串的高效转换算法？]]></title><link>https://blog.youkuaiyun.com/Ares_xb/article/details/142636622</link><guid>https://blog.youkuaiyun.com/Ares_xb/article/details/142636622</guid><author>Ares_xb</author><pubDate>Sun, 29 Sep 2024 15:29:44 +0800</pubDate><description><![CDATA[可以看出Base122 http://blog.kevinalbs.com/base122 是其中效率最高的一种算法，它诞生的目的是用在网页上替换Base64，作者给出了JS的实现https://github.com/kevinAlbs/Base122 ，但不幸的是没有人将其移植到Java中，因此Java的同学没办法直接使用此算法，同时很多迹象表明其与Base64相比稳定性差很多，所以如果想替换Base64同时又对稳定性有一定那么我们推荐你使用Base85算法，这里给出一版Java实现（]]></description><category></category></item><item><title><![CDATA[server.max-http-header-size与OOM不得不说的故事]]></title><link>https://blog.youkuaiyun.com/Ares_xb/article/details/136604000</link><guid>https://blog.youkuaiyun.com/Ares_xb/article/details/136604000</guid><author>Ares_xb</author><pubDate>Sun, 10 Mar 2024 16:19:07 +0800</pubDate><description><![CDATA[一开始我以为这会是个很简单的事情，毕竟很多人已经从1.x升级到2.x了，但当运维把测试环境的nacos升级到2.x后没多会涌现了一堆告警，全都是找不到dubbo的服务提供者，我这边立马登到nacos容器中查看，整个nacos的堆已经到了32G，且在一直不停地fullgc过了一会更是健康检查失败被k8s重启了，确认了是堆满了以后这边也是立马dump了一份堆快照到持久卷。看的出来是直接原因是有大量5M的byte数组，然后分析引用发现是tomcat的nio请求对象的消息头，难不成是因为请求的消息头非常大？]]></description><category></category></item><item><title><![CDATA[2025最新Java性能优化建议 应用 数据库 机器 网络]]></title><link>https://blog.youkuaiyun.com/Ares_xb/article/details/135846360</link><guid>https://blog.youkuaiyun.com/Ares_xb/article/details/135846360</guid><author>Ares_xb</author><pubDate>Thu, 25 Jan 2024 15:45:05 +0800</pubDate><description><![CDATA[反射缓存
高效随机数
高效字符串操作]]></description><category></category></item><item><title><![CDATA[过早优化是万恶之源——聊聊FastThreadLocal的Cache line padding]]></title><link>https://blog.youkuaiyun.com/Ares_xb/article/details/135605468</link><guid>https://blog.youkuaiyun.com/Ares_xb/article/details/135605468</guid><author>Ares_xb</author><pubDate>Mon, 15 Jan 2024 16:49:48 +0800</pubDate><description><![CDATA[故事今天就是围绕这一行展开的，众所周知基于时间局部性和空间局部性原理所以当处理器需要加载内存中的数据时，它会加载整个缓存行，而不仅仅是请求的特定数据，缓存行的大小通常是2的幂，例如64字节。而很明显上面的代码就属于第二种，试图通过行填充解决伪共享，看上去好像没什么问题，netty使用各种小技巧的地方也非常多，但这一行在https://github.com/raidyue/netty/commit/ef540815a98dac50769e38b39e5107dc5a313b47 中被改为了。]]></description><category></category></item><item><title><![CDATA[“傻傻”的JAVA编译器]]></title><link>https://blog.youkuaiyun.com/Ares_xb/article/details/135375630</link><guid>https://blog.youkuaiyun.com/Ares_xb/article/details/135375630</guid><author>Ares_xb</author><pubDate>Wed, 03 Jan 2024 23:50:11 +0800</pubDate><description><![CDATA[第二反应是计算结果溢出了int值所以导致了这个差异，于是我掏出JMH这个利器准备开始一轮验证，为了避免干扰，构造了不同的测试用例集用于纵向和横向的比较。Java的JIT是个非常有价值的东西，但有的时候它也可能“犯傻”，我们在平时写代码的过程中对于这些点倒也无需刻意去记忆，这本该是编译器自己要做的事情，祝愿Java的编译器越来越好吧。的顺序不一致所有字节码都是相同的，那么这个顺序为什么会有如此大的区别呢？在这里，由于需要保留更多的中间结果，我们观察到更多的“溢出”和对堆栈的更多访问。可以看到字节码上除了。]]></description><category></category></item><item><title><![CDATA[2025最新Java反射性能优化进阶]]></title><link>https://blog.youkuaiyun.com/Ares_xb/article/details/135169779</link><guid>https://blog.youkuaiyun.com/Ares_xb/article/details/135169779</guid><author>Ares_xb</author><pubDate>Sat, 23 Dec 2023 15:42:49 +0800</pubDate><description><![CDATA[反射性能详解]]></description><category></category></item><item><title><![CDATA[Prometheus agent jmx-exporter配置http接口和数据库连接池监控]]></title><link>https://blog.youkuaiyun.com/Ares_xb/article/details/129315601</link><guid>https://blog.youkuaiyun.com/Ares_xb/article/details/129315601</guid><author>Ares_xb</author><pubDate>Fri, 03 Mar 2023 11:29:32 +0800</pubDate><description><![CDATA[Prometheus agent jmx-exporter配置http接口和数据库连接池监控]]></description><category></category></item><item><title><![CDATA[约瑟环问题 Java解法]]></title><link>https://blog.youkuaiyun.com/Ares_xb/article/details/106287298</link><guid>https://blog.youkuaiyun.com/Ares_xb/article/details/106287298</guid><author>Ares_xb</author><pubDate>Fri, 22 May 2020 17:19:08 +0800</pubDate><description><![CDATA[约瑟环问题:

17世纪的法国数学家加斯帕在《数目的游戏问题》中讲的一个故事，15个教徒和15个非教徒在深海上遇险，必须将一半的人投入海中，其余的人才能幸免于难，于是想了一个办法，30个人围成一个圆圈，从第一个人开始依次报数，每数到第九个人，就将他扔入大海，如此循环进行，直到仅剩余15个人为止。问怎样排法，才能使每次投入大海的都是非教徒

解析:

投海条件: 第九个人, 已投海不计入计算

结束条件: 15人

人的状态：已投海和未投海

看到两种状态就应该想到可以使用一个boolean数组记录状态, .]]></description><category></category></item><item><title><![CDATA[消失的数据——带你真正了解Spring的事务原理]]></title><link>https://blog.youkuaiyun.com/Ares_xb/article/details/105435558</link><guid>https://blog.youkuaiyun.com/Ares_xb/article/details/105435558</guid><author>Ares_xb</author><pubDate>Fri, 10 Apr 2020 17:10:53 +0800</pubDate><description><![CDATA[事情的起因是我最近写了一个多数据源的工具模块, 本来很愉快的运行着但当我把@Transactional这个大家耳熟能详的家伙放在我的方法上时灾难发生了，我的数据源切换失效了。这可急煞老夫了，迅速查看源码找到了罪魁祸首—DataSourceTransactionManager，它是Spring的默认事务管理器，在有事务时它的doBegin方法会把数据库连接缓存下来, 下次直接使用该连接, 而不是重新...]]></description><category></category></item><item><title><![CDATA[二叉树可视化]]></title><link>https://blog.youkuaiyun.com/Ares_xb/article/details/105047441</link><guid>https://blog.youkuaiyun.com/Ares_xb/article/details/105047441</guid><author>Ares_xb</author><pubDate>Mon, 23 Mar 2020 14:08:27 +0800</pubDate><description><![CDATA[#! /usr/bin/env python
# -*- coding: utf-8 -*-


'''
画二叉树
'''


from tree import ergodic_calculate
import turtle

class TreeNode:
    def __init__(self, val, left=None, right=None):
        self.val ...]]></description><category></category></item><item><title><![CDATA[根据任意两种遍历(前序、中序、后序)构造完整二叉树]]></title><link>https://blog.youkuaiyun.com/Ares_xb/article/details/105046914</link><guid>https://blog.youkuaiyun.com/Ares_xb/article/details/105046914</guid><author>Ares_xb</author><pubDate>Mon, 23 Mar 2020 13:50:33 +0800</pubDate><description><![CDATA[#! /usr/bin/env python
# -*- coding: utf-8 -*-

'''
遍历推算
根据前序+中序/前序+后序/中序+后序重建二叉树
'''

import operator

pre_list_result = []
inorder_list_result = []
postorder_list_result = []


class Node:
    def ...]]></description><category></category></item><item><title><![CDATA[Mybatis批量插入实测]]></title><link>https://blog.youkuaiyun.com/Ares_xb/article/details/100161072</link><guid>https://blog.youkuaiyun.com/Ares_xb/article/details/100161072</guid><author>Ares_xb</author><pubDate>Fri, 30 Aug 2019 16:13:53 +0800</pubDate><description><![CDATA[众所周知，在jdbc中的批量插入默认情况下仍是以单条数据循环操作数据库的，而非真正意义上的批量操作，只有在设置rewriteBatchedStatements=true的情况下才会进行真实的批量操作，那么问题就来了，mybatis是对jdbc的二次封装，那么它的批量插入又是怎么样的呢？
笔者对其进行了性能上的简单测试，大致进行四种情况的实验：
1.默认情况;
2.开启了rewriteBatched...]]></description><category></category></item><item><title><![CDATA[编程浅谈-以一个初出茅庐的Java程序员视角]]></title><link>https://blog.youkuaiyun.com/Ares_xb/article/details/93630694</link><guid>https://blog.youkuaiyun.com/Ares_xb/article/details/93630694</guid><author>Ares_xb</author><pubDate>Tue, 25 Jun 2019 16:43:57 +0800</pubDate><description><![CDATA[编者是一个从事Java开发的普通软件攻城狮，迄今为止，粗粗算来不过刚刚进入编程的世界不过两年，但在这两年的光阴里，每当我抬头仰望星空(苦命加班)时脑海里总有这样一个疑问——“什么是编程”？

对于这个问题百度百科是这么说的，编程，是编定程序的中文简称，就是让计算机代为解决某个问题，对某个计算体系规定一定的运算方式，使计算体系按照该计算方式运行，并最终得到相应结果的过程。为了使计算机能够理解人的意图...]]></description><category></category></item><item><title><![CDATA[10进制数转换为负进制数(Python实现)]]></title><link>https://blog.youkuaiyun.com/Ares_xb/article/details/90205528</link><guid>https://blog.youkuaiyun.com/Ares_xb/article/details/90205528</guid><author>Ares_xb</author><pubDate>Tue, 14 May 2019 14:30:16 +0800</pubDate><description><![CDATA[最近加Python群的时候看到一个验证——群号用负7进制如何表示，我看了一愣，忽然想起来进制确实也可以是负的只不过我们的工作学习中很少涉及，故此写了个程序计算负进制数的转换，值得一提的是python语法的设计上与传统的C/Java/C++不同，

整除的时候所求得的商 C/C++/Java 是向零取整（负数向上、正数向下取整），Python 是下取整，详细代码见如下：


#! /usr/bin...]]></description><category></category></item></channel></rss>