自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(885)
  • 收藏
  • 关注

原创 字节码操作工具——ByteBuddy应用(1)创建一个类并定义方法

用法类型是否需要重启说明否推荐方式,动态生效。因为此时类尚未加载或通过实现重新加载redefine 未加载类否使用redefine 已加载类条件生效需支持静态创建类是属于新类,需手动调用。

2025-07-24 10:17:59 121

原创 字节码操作工具——ByteBuddy介绍

ByteBuddy 是一个基于 Java 的 字节码操作库,用于在 运行时或构建时创建/修改 Java 类。它通过链式 API(Fluent API)封装了底层的 ASM 操作,使字节码操作更简单、直观、强大。简而言之:ByteBuddy = 操作字节码,但不必写字节码。

2025-07-24 10:02:03 122

原创 字节码操作工具——概述

通过前面的几个demo,我们知道java agent只提供了一个机制,本身只能拦截类加载,只有结合字节码操作才能发挥作用。

2025-07-24 09:42:35 304

原创 字节码操作工具——ByteBuddy应用(2)安全检查

12345。

2025-07-23 15:11:03 43

原创 demo(一)在方法执行前后打印日志(2)动态注入

前面用静态注入实现了在方法执行前后打印日志,这需要修改主项目的启动命令。

2025-07-23 14:25:34 90

原创 字节码操作工具——为什么需要字节码工具(以打印方法调用日志为例)

看下控制台日志打印:可以看到,[my agent class]打印了调用的类名。为什么没有打印拦截器名称?如我已有一个现成的maven工程security-jwt0demo,现修改VM启动命令加载我的agent包,上面打印的日志太多了,把java自带的也打印出来了,这里加个过滤只打印主项目代码的className。Java Agent 的核心功能是通过。之后启动主项目,打印了很多的日志。

2025-07-23 11:30:39 169

原创 java agent注入方法——静态 Instrumentation和动态Instrumentation

在 Java Agent 的使用中,和是两种注入方式。

2025-07-23 10:21:26 388

原创 java agent使用方法

编写 Agent 代码 → 打包为 JAR → 启动时用。

2025-07-23 09:48:26 67

原创 java agent原理

一、原理借助java.lang.instrument,开发者可以构建一个独立于应用程序的代理(Agent),用来监测和协助运行在JVM上的程序,甚至能够动态的修改和替换某些类的定义。这样的特性实际上提供了一种虚拟机级别的AOP实现。而java.lang.instrument包是基于JVMTI机制实现的:JVMTI(Java virtual machine tool interface)是一套由java虚拟机提供的一套代理程序机制,可以支持第三方工具程序以代理的方式连接和访问JVM。

2025-07-23 09:38:25 660

原创 java agent介绍&常见应用

对于已加载的类,需要调用retransformClass函数,然后经由redefineClasses函数,在读取已加载的字节码文件后,若该字节码文件对应的类关注了ClassFileLoadHook事件,则调用ClassFileLoadHook事件。后续流程与类加载时字节码替换一致。通过以上描述可以看出在字节码文件加载的时候,会触发ClassFileLoadHook事件,该事件调用TransFormClassFile,通过经由instrument的addTransformer注册的方法完成整体的字节码修改。

2025-07-22 15:32:17 780

原创 Mysql 8新特性

是 MySQL 8.0 中用于语句的一个子句,用来控制表结构变更时的算法行为,表示“即时”变更,不需要重建整个表,也不需要复制数据。是目前最快的表结构变更方式,执行速度极快。✅ 优点:极快,无需锁表,适合在线DDL❌ 限制:仅支持部分简单的变更操作🔍 建议:尽可能使用INSTANT,但加上IF EXISTS来安全处理。

2025-07-22 09:23:35 172

原创 监控项目(一)方法概述

可以暴露各类运行时指标。(2)开启暴露的端点。

2025-07-21 10:26:29 151

原创 spring cache(四)新老数据双删问题

但是如果有getByName(String name)的查询,cache key xxx:userName,并且userName可以被修改,那么对于updateByName(UserDTO userDTO),不仅要删除newName对应的newEntity的所有cache key,还要删除oldName对应的oldEntity对应的所有cache key。

2025-07-17 10:42:47 151

原创 spring datasource的一些连接参数

autoReconnect=true&useAffectedRows=true&characterEncoding=UTF-8&allowMultiQueries=true&useSSL=true&rewriteBatchedStatements=true&jdbcCompliantTruncation=false

2025-07-01 15:08:15 146

原创 Collection集合List(二)常用API

如果。

2025-06-25 14:58:55 210

原创 sql_mode(二)宽松模式和严格模式的区别

case严格模式宽松模式单插 NULL 到NOT NULL列(该列无默认值)报错报错单插NOT NULL列(该列无默认值),不指定列报错报错单插 NULL 到NOT NULL列(该列有default值)报错报错单插NOT NULL列(该列有默认值),不指定列成功,使用默认值成功,使用默认值批量插入 NULL 到NOT NULL列(该列无默认值)报错成功,转成空字符串批量插 NULL 到NOT NULL列(该列有default值)报错成功,转成空字符串。

2025-06-18 16:59:13 389

原创 har文件如何打开

har文件(HTTP Archive)是一种用于记录 Web 浏览器与网站之间所有请求和响应的文件,通常用于调试网络问题,格式为 JSON。你可以用以下几种方式打开.har。

2025-06-11 09:39:15 589

原创 sql_mode(一)介绍

sql_mode是 MySQL 用于控制 SQL 语法行为和数据校验规则的一个系统变量。它会影响:插入非法或不完整数据时是否报错GROUP BY的严格性日期和时间的处理方式是否允许NULL自动转换为0等。

2025-06-06 10:56:43 445

原创 spring event事件(四)内部事件(1)ApplicationReadyEvent

是 Spring Boot 提供的一个事件,它表示:整个 Spring 应用上下文已完全启动,Spring Boot 应用已准备好接受请求。

2025-05-20 16:57:05 308

原创 SpringBean模块(三)具有生命周期管理能力的类(1)AutowireCapableBeanFactory

【代码】SpringBean模块(三)生命周期管理能力相关的类(1)AutowireCapableBeanFactory。

2025-05-20 16:44:22 157

原创 IntelliJ配置相关类库(三)JavaProgramPatcher

一、介绍二、使用。

2025-04-24 14:23:58 404

原创 spring/springboot SPI

是 **Spring Boot 自动装配机制(SPI 扩展)**的核心配置文件,用于注册一些在 Spring Boot 启动过程中被自动加载的类。

2025-04-22 14:35:53 428

原创 springboot启动流程

7. 创建 ApplicationContext(如 AnnotationConfigApplicationContext)8. 调用 ApplicationContextInitializer(可以修改 context)|—— EnvironmentPostProcessor 调用(修改配置)11. 执行 BeanPostProcessor(Bean 级生命周期钩子)6. 加载 application.properties/yml。1. JVM 启动 -> main() 方法执行。

2025-04-22 13:55:15 158

原创 aws sdk

但目前使用最广泛的是。

2025-04-21 17:45:03 374

原创 aws服务(四)文件存储服务S3 介绍&使用&代码集成

Amazon S3是 Amazon Web Services 提供的一种对象存储服务(Object Storage),用于在云中存储和检索任意数量的数据。它以高可用性、高扩展性和高持久性著称,非常适合用来存储网站资源、数据备份、日志文件、大数据、机器学习输入输出等。

2025-04-21 14:50:25 541

原创 IntelliJ配置相关类库(二)LineMarkerProvider

是 IntelliJ 平台插件开发中的一个接口,它的作用是在编辑器左侧的“行标记区域”(就是代码行号左边那一栏)添加各种图标、标记或导航链接。比如Java 类中看到的:小绿色三角形(可以点击运行 main 方法)方法重写的箭头图标(点击能跳到父类方法)自定义的注解标识各种插件加的导航小图标这些都是通过或其变种(如)来实现的。

2025-04-14 14:48:08 505

原创 intellij入门(二)如何创建

选择 File | New | Project,或者选择Project Structure--Modules--New Module 创建一个新工程,然后在 IntelliJ IDEA 中打开这个项目,它已经包含了所有必要的依赖和配置。默认情况下,IntelliJ IDEA 会为 Kotlin 项目创建。注意,如果你在创建 IntelliJ IDEA 插件项目时只看到。中,添加 IntelliJ Platform 插件依赖,然后。目录,这是因为在创建项目时选择了。(项目存放路径): 选择合适的位置。

2025-04-02 16:02:44 885

原创 intellij常用类库(PsiMethod)

属于 IntelliJ IDEA 的。

2025-04-01 09:35:05 311

原创 SpringBean模块(一)定义&如何创建&生命周期

在 Spring 框架中,Bean是指由Spring 容器管理的Java 对象。Spring 负责创建、配置和管理这些对象,并在应用程序运行时对它们进行依赖注入(Dependency Injection,DI)。通俗地讲,Spring Bean 就是 Spring 容器中的一个组件,它可以是一个普通的 Java 类,但被 Spring 管理起来后,就称为 "Bean"。2、核心特点由 Spring 容器管理Bean 的生命周期由 Spring 负责,不需要手动创建和销毁。

2025-03-28 13:37:50 674

原创 SpringBean模块(二)bean初始化(2)和容器初始化顺序的比较--引入ApplicationContextInitializer

前面介绍了获取容器可以借助ApplicationContextAware的setApplicationContext方法,初始化接口可以借助一些注解也可以借助bean的初始化方法,那么他们的执行顺序是什么样的呢?

2025-03-28 10:05:40 188

原创 Springbean(二)@Component及其派生注解自动注入(2)使用注意和加载问题

一、class使用,abstratc class和interface不使用。

2025-03-27 14:47:46 386

原创 idea问题(三)pom文件显示删除线

1、现象。

2025-03-20 09:17:52 553

原创 IntelliJ 配置文件(1)plugin.xml

在 IntelliJ IDEA 插件开发中,plugin.xml是插件的配置文件,它包含了关于插件的所有基本信息、扩展点、依赖关系等。该文件使用 XML 格式进行定义。以下是plugin.xml。

2025-03-18 14:26:31 449

原创 IntelliJ 配置相关类库(一)Action

在 IntelliJ IDEA 插件开发中,Action是一个重要的概念,它定义了用户可以在 IDE 中执行的操作,如菜单项、工具栏按钮、快捷键等。配置Action需要在插件的plugin.xml文件中进行配置,并且通常会涉及到在代码中定义相应的 Action 类。Action是实现插件功能的类, 一个Action类需要继承AnAction并且实现actionPerformed方法。

2025-03-18 13:53:16 535

原创 intellij入门(三)项目结构&调试

在 IntelliJ IDEA 插件开发中,Action是一个重要的概念,它定义了用户可以在 IDE 中执行的操作,如菜单项、工具栏按钮、快捷键等。配置Action需要在插件的plugin.xml文件中进行配置,并且通常会涉及到在代码中定义相应的 Action 类。Action是实现插件功能的类, 一个Action类需要继承AnAction并且实现actionPerformed方法。

2025-03-17 16:04:04 975

原创 IntelliJ入门(一)环境准备

IntelliJ IDEA 简称 IDEA,是 Jetbrains 公司旗下的一款 JAVA 开发工具,支持 Java、Scala、Groovy 等语言的开发,同时具备支持目前主流的技术和框架,擅长于企业应用、移动应用和 Web 应用的开发,提供了丰富的功能,智能代码助手、代码自动提示、重构、J2EE支持、各类版本工具(git、svn等)、JUnit、CVS整合、代码分析、 创新的GUI设计等。

2025-03-17 15:04:33 514

原创 idea插件安装方法

常见的idea插件:好用的idea插件 常用的idea 插件记录 idea 插件整理 idea plugin-CSDN博客JetBrains Marketplace

2025-03-10 10:26:23 664

原创 父子继承与转型

2、List<Settings>不可以自动转型为List<ISettings>,1、Settings可以自动转型为ISettings;ISettings为接口,Settings是实现类。是两个不同的类型,它们之间没有自动的转型关系。都是明确指定了其类型的。原因在于泛型类型在 Java 中是。(invariant)的,即使。之间并没有直接的父子关系。接口,但这并不会自动改变。是两个不同的类型,虽然。

2025-02-27 15:53:58 357

原创 org.apache.commons.beanutils.BeanUtilsBean

BeanUtils.populate(Object bean, Map properties) 方法实在org.apache.commons.beanutils.BeanUtils包下的一个一个方法。该方法的方法头此方法中,有两个参数,Object bean 为一个实体类,Map properties为一个map集合,调用此方法的执行过程为(1)遍历Map集合中的key(2)判断bean实体中是否有相应的属性(3)如果有与bean中对应的属性。

2025-02-26 10:51:24 219

原创 mysql监控--慢查询

如果慢查询日志文件变得过大,可以通过日志轮转(log rotation)将旧的日志文件存档并创建新的日志文件。),并且开启了慢查询日志,二者可能结合使用。虽然二进制日志主要用于记录数据库的更改操作,但在特定配置下,它可能也会记录与慢查询相关的某些信息。这是最主要的文件,记录了执行时间超过设置阈值的 SQL 查询。可以通过 MySQL 配置项启用慢查询日志,并指定日志文件的路径。这些文件通常包含慢查询的总体统计信息,例如查询类型分布、执行时间最长的查询等。文件是慢查询日志分析的汇总文件,通常由工具(如。

2025-02-14 09:59:23 471

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除