自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 JAVA中基本类型和包装类型的区别

Java基本类型和包装类型的区别:基本类型(如int、boolean等)直接存储数据值在栈内存中,有默认值;包装类型(如Integer、Boolean)是对象,存储引用在堆内存中,默认值为null。Java为每个基本类型提供了对应的包装类,用于将基本类型封装为对象。主要区别体现在存储方式、默认值和类型转换上。基本类型更高效,包装类型则提供更多对象操作方法。

2025-12-30 23:02:52 214

原创 基于JDK动态代理的基本原理

本文介绍了Java动态代理的基本原理与实现机制。动态代理通过Proxy类和InvocationHandler接口,在运行时动态创建代理对象并拦截方法调用,实现功能增强。文章详细讲解了动态代理的核心概念、工作原理、实现步骤,并提供了示例代码展示如何创建代理对象和处理方法调用。同时分析了动态代理的优势(解耦、灵活性)和限制(仅支持接口代理、性能开销),以及常见应用场景如事务管理、日志记录等。动态代理是一种强大的设计模式,能够在运行时灵活扩展对象功能。

2025-12-30 22:58:40 439

原创 深度解析:Claude Skills (技能扩展框架)

摘要: Claude Skills是Anthropic推出的模块化能力框架,将AI转化为可执行复杂任务的领域专家。其核心采用目录结构(含SOP、脚本和资源),通过按需加载机制优化性能。与MCP(数据连接器)形成互补:Skills专注任务逻辑,MCP处理数据接入。典型应用包括自动化报表生成、代码审计和跨平台内容发布,通过标准化封装企业知识,实现低代码定制。该技术通过业务逻辑与数据解耦,正成为企业AI部署的新趋势。

2025-12-29 18:00:40 363

原创 Spring Boot 核心注解一览与运行原理解析

本文基于 Spring Boot 3.x 源码,梳理日常开发中最高频的「入口级」注解,说明它们。阅读前默认你已了解 Spring Framework 的 IoC/DI、事件、配置等基础概念。

2025-11-28 14:43:22 318

原创 使用SpringAI的FuncationCalling示例及介绍

摘要:本文演示了如何通过Spring AI实现大模型与Java代码的交互,以查询实时天气为例。关键步骤包括:1) 定义输入输出数据结构;2) 注册带有@Description注解的Java函数Bean;3) 在ChatClient中启用该函数。当用户询问天气时,系统自动完成意图识别、参数提取、本地执行和结果整合的全流程,将复杂的提示词工程和JSON转换封装为简单的Java方法调用。该方案展示了Spring AI如何无缝连接大模型推理能力与本地业务逻辑,开发者只需专注核心功能实现。

2025-11-28 14:40:48 1001

原创 Redis 基础数据结构详解

Redis 提供了多种基础数据结构,包括字符串(String)、哈希(Hash)、列表(List)、集合(Set)、有序集合(Sorted Set)、位图(Bitmap)、超日志(HyperLogLog)和流(Stream)。每种结构都有特定的命令和适用场景:字符串适合简单键值存储,哈希适合对象属性管理,列表可用于队列/栈操作,集合支持去重和集合运算,有序集合适合排行榜,位图用于二进制统计,超日志用于近似基数统计,流则适用于消息队列场景。合理选择数据结构能显著提升应用性能和效率。

2025-11-27 12:24:45 268

原创 Spring Boot 自动装配详解

Spring Boot自动装配是其核心功能,通过@SpringBootApplication注解触发,该注解整合了@EnableAutoConfiguration等关键功能。自动装配流程包括:加载spring.factories中的配置类、条件性加载BeanDefinition、启动应用上下文。以数据源配置为例,系统会根据依赖和条件注解自动配置DataSource。开发者可通过自定义配置类扩展自动装配功能,在META-INF/spring.factories中注册配置类。这种机制显著简化了Spring应用配

2025-11-26 13:57:59 305

原创 Spring 中 BeanDefinition 的加载过程

本文详细介绍了Spring框架中BeanDefinition的加载过程。首先概述了Spring容器初始化的6个阶段,重点分析了BeanDefinition的加载步骤:解析配置元信息(XML/注解/Java配置)、创建BeanFactory、封装Bean元信息为BeanDefinition对象并注册到BeanDefinitionRegistry中。文章还深入讲解了XML配置、注解和Java配置三种方式的加载细节,以及BeanDefinition的存储结构。最后总结指出,通过这套机制,Spring能够动态管理B

2025-11-25 20:22:49 301

原创 Spring 中一级缓存、二级缓存和三级缓存的作用

摘要:Spring框架通过一级、二级和三级缓存机制优化Bean生命周期管理。一级缓存存储完全初始化的单例Bean,二级缓存保存部分初始化的Bean,三级缓存处理循环依赖问题。这些缓存协同工作,确保单例Bean的唯一性,支持提前暴露中间状态,并有效解决循环依赖。其中,一级缓存使用ConcurrentHashMap存储最终实例,二级缓存通过SingletonBeanRegistry管理中间状态,三级缓存保存早期实例。这种分层缓存机制提高了Spring容器管理Bean的性能和可靠性。

2025-11-25 20:22:02 315

原创 Spring Bean 的详细生命周期

如果 Bean 实现了接口,Spring 调用其方法。自定义如果 BeanDefinition 中指定了属性(XML 配置)或使用注解(Java 配置),Spring 调用相应的方法。阶段步骤扩展点/接口/注解说明实例化1. 实例化 Bean构造函数通过反射创建 Bean 实例。属性赋值2. 依赖注入 (DI)为 Bean 属性设置值和依赖。Aware 回调3. 注入容器身份将 Bean 的名称、容器实例等注入 Bean 内部。初始化前4. 前置处理重要:AOP 代理前的准备。初始化。

2025-11-24 00:04:36 1380

原创 MySQL 8.0 缓存机制及其变化

MySQL 8.0移除了查询缓存功能,主要因其在高并发下存在性能瓶颈和低命中率问题。推荐使用应用层缓存(如Redis)或优化InnoDB缓冲池(设置为内存60-80%)替代。8.0版本优化了缓冲池管理、临时表缓存和日志缓冲区性能,使系统在高并发场景下更稳定。开发者应根据业务需求选择合适的缓存策略,如热点数据使用Redis缓存,频繁访问数据依赖InnoDB缓冲池。

2025-11-24 00:01:17 465

原创 MySQL 分库分表

MySQL分库分表是解决大数据量存储和性能问题的有效方案。主要分为垂直分库分表(按业务或字段拆分)和水平分库分表(按数据行拆分)两种类型,支持哈希、范围等多种分片策略。常用工具包括MyCAT、ShardingSphere等中间件。分库分表能提升性能、扩展性和可用性,但会增加系统复杂度,需注意分片键选择、数据一致性、查询优化等问题。适用于单表数据量过大、数据库性能瓶颈等场景,实施时需谨慎考虑数据迁移、备份恢复等操作。

2025-11-22 01:37:43 1352

原创 公平锁与非公平锁

摘要:公平锁与非公平锁是多线程编程中的两种锁机制。公平锁严格按照线程请求顺序分配锁资源,保证公平性但性能较低;非公平锁允许线程插队获取锁,性能更高但可能导致线程饥饿。公平锁适用于对公平性要求高的场景,非公平锁适合高并发系统。开发者应根据具体需求选择锁类型,在公平性和性能之间做出权衡。示例代码展示了Java中ReentrantLock实现两种锁的方式。

2025-11-22 01:23:56 359

原创 InnoDB 缓冲池详解

InnoDB缓冲池是MySQL存储引擎的核心缓存机制,用于缓存数据页和索引页以减少磁盘I/O。它采用LRU算法管理16KB大小的页面,支持预读机制提高性能。合理配置缓冲池大小(建议物理内存的60-80%)、实例数(减少锁争用)和刷新策略(如O_DIRECT)可显著提升性能。通过监控缓存命中率、页面读取次数等指标可以优化数据库运行效率。缓冲池的大小调整、锁争用减少和合适刷新策略是主要优化方向,需根据实际负载和硬件配置进行调整。

2025-11-20 16:16:37 873

原创 Redis的分布式锁详解

本文详细介绍了基于Redis实现分布式锁的方法。首先阐述了Redis分布式锁的基本原理,包括SETNX命令、EXPIRE命令及其原子操作特性。随后分别介绍了单机模式和集群模式下的实现方案,其中重点讲解了Redisson库的使用和RedLock算法在Redis集群中的应用。最后总结了分布式锁使用中的关键注意事项,如锁的释放、续期、可靠性和性能问题。基于Redis的分布式锁方案提供了高性能和可靠的并发控制机制,适用于分布式系统中的资源共享场景。

2025-11-20 16:10:06 600

原创 Redis 持久化机制介绍

Redis提供三种持久化机制确保数据安全:1)AOF记录每个写操作,数据安全性高但文件大;2)RDB通过快照压缩存储,恢复快但可能丢失数据;3)混合持久化(4.0+)结合两者优点。AOF支持三种同步策略(always/everysec/no)控制效率与安全性的平衡,而RDB可通过自动/手动触发生成。持久化选择需权衡数据安全需求、恢复速度与存储效率,混合持久化是目前较优的解决方案。

2025-11-19 13:16:22 727

原创 B+树介绍

B+Tree是MySQL中InnoDB存储引擎的核心索引结构,它是一种平衡多路搜索树,具有高效查询、范围查询和数据集中存储等特点。B+Tree的节点分为内部节点(存储索引键)和叶子节点(存储数据或指针),通过有序链表连接叶子节点支持高效范围查询。相比B-Tree,B+Tree仅叶子节点存储数据,更适合数据库应用。在MySQL中,InnoDB使用B+Tree实现聚簇索引,MyISAM则用于非聚簇索引。优化手段包括减少树高度、使用覆盖索引和提高索引选择性等。

2025-11-17 23:58:55 1125

原创 MYSQL中的MVCC详解

MySQL的MVCC机制通过维护数据多版本实现高并发事务处理。InnoDB使用事务ID、隐藏字段(DB_TRX_ID和DB_ROLL_PTR)、Undo Log和Read View来管理数据版本。读操作根据Read View判断版本可见性,写操作更新版本链。MVCC支持读已提交和可重复读隔离级别,提高并发性能但增加存储开销,需定期清理旧版本数据。该机制允许读写并发,确保事务数据一致性,是InnoDB实现高并发的核心技术。

2025-11-17 09:13:28 598

原创 ThreadLocal 的底层原理

是 Java 中用于实现线程局部变量的工具类。它为每个线程提供了一个独立的变量副本,使得同一个变量在不同线程中互不干扰,避免了多线程环境下共享变量带来的同步问题。其主要作用包括:线程隔离:确保每个线程都有自己的变量副本,避免线程间的数据竞争。简化编程模型:无需显式传递参数,线程内部可以直接访问变量。资源管理:可以用于管理线程局部的资源,如数据库连接、事务上下文等。

2025-11-16 17:09:09 675

原创 指令重排序

指令重排序是编译器和处理器为优化性能对指令顺序的调整,可能导致多线程环境下的并发问题。主要包括编译器重排序和处理器重排序两种类型。虽然能提高性能(减少内存延迟、优化流水线),但会引发内存可见性和原子性问题。解决方法包括:使用volatile防止重排序、synchronized确保原子性,以及利用java.util.concurrent包中的线程安全类。合理使用这些技术能有效避免重排序带来的并发问题。

2025-11-16 00:22:12 511

原创 Redis 延迟队列

实现延迟队列的核心思想是利用 Redis ZSet 的分数(Score)来存储任务的执行时间戳。

2025-11-15 17:19:46 750

原创 JVM简单介绍

关于JVM的一些简单知识的整理,后续也会持续更新此文章

2024-03-28 15:59:01 337

原创 排序算法-快速排序

快速排序算法代码以及注释

2024-03-27 21:45:24 153 1

原创 spring事务的传播特性介绍

spring事务的传播特性的简单介绍

2024-03-27 17:42:31 331

原创 Mybatis的一级二级缓存介绍

mybatis中关于一级二级缓存的介绍

2024-03-27 13:11:11 1274 1

空空如也

空空如也

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

TA关注的人

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