自定义博客皮肤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)
  • 收藏
  • 关注

原创 Maven 的优点和缺点

摘要: Maven是Java主流构建工具,具有标准化项目结构、强大依赖管理、丰富插件生态和完整生命周期管理。其优势包括Maven中央仓库支持和成熟社区,但XML配置繁琐、构建速度较慢(相比Gradle),灵活性不足且依赖冲突需手动处理。与Gradle对比,Maven适合传统Java项目和企业应用,而Gradle在复杂逻辑和构建速度上更优。实用技巧包括并行构建(-T 4)、多环境配置及常用插件(版本管理/DockeDocker支持)。选择建议:Maven适用于稳定标准化场景,Gradle适合灵活高效需求。

2026-01-15 09:22:56 881

原创 Docker简单快速安装Nacos

本文详细介绍了使用Docker部署Nacos 2.4.3的完整流程。主要内容包括:1)下载Nacos镜像;2)在MySQL中创建数据库并导入Nacos表结构;3)创建Nacos配置文件目录并提取默认配置;4)修改数据库连接信息;5)启动Nacos容器,需注意开放8848、9848和9849端口;6)访问Nacos控制台及验证部署。文章特别强调了数据库配置必须在启动前完成,并多次提醒替换实际IP地址。部署采用单机模式(standalone),包含日志和配置文件的挂载设置。

2026-01-14 11:21:19 477

原创 Array,ArrayList,LinkedList长度是否可变?

摘要: Java数组长度固定,创建后不可更改。若需扩展,需手动复制或使用Arrays.copyOf()创建新数组。推荐使用ArrayList等集合类实现动态长度,它们自动处理扩容,支持高效增删操作。数组适合元素数量固定的场景,访问速度快;集合类则更灵活,适用于长度变化的场景。开发中应根据需求选择数组或集合,二者可通过Arrays.asList()和toArray()互相转换。(149字)

2026-01-13 16:10:52 273

原创 深拷贝和浅拷贝的区别是什么?(全面解析)

摘要:深拷贝和浅拷贝的主要区别在于内存独立性。浅拷贝仅复制对象引用,新旧对象共享内存;深拷贝则递归复制所有层次,创建完全独立的对象。浅拷贝性能更好但修改会相互影响,深拷贝更安全但消耗更多资源。Java默认clone()是浅拷贝,实现深拷贝可通过重写clone()方法或序列化方式。选择实现方式需考虑对象复杂度,性能优化可采用缓存不变对象或Copy-On-Write策略。

2026-01-13 13:27:06 818

原创 new Object占多少内存?

Java对象内存占用分析:空对象在64位JVM中默认占用16字节(含对象头和填充),32位JVM占8字节。JVM会自动进行8字节对齐,实际占用可能大于数据本身。通过JOL工具可精确测量对象布局,内存敏感场景建议使用基本类型数组或对象池优化。数组对象会额外增加长度字段,类实例则按字段类型和数量计算大小,最终结果仍会按对齐规则调整。

2026-01-12 09:20:49 798

原创 Spring是如何解决循环依赖的?

Spring通过三级缓存机制解决单例Bean的循环依赖问题: 三级缓存结构: 一级缓存存放完整Bean(singletonObjects) 二级缓存存放早期Bean(earlySingletonObjects) 三级缓存存放对象工厂(singletonFactories)。 这种机制有效解决了单例Bean之间的循环依赖问题,同时保证了AOP代理的正确性。

2026-01-11 12:08:23 952

原创 布隆过滤器(Bloom Filter)基础

布隆过滤器是一种空间效率极高的概率型数据结构,用于判断元素是否存在于集合中。它由位数组和多个哈希函数组成,具有查询速度快(O(k))、无漏报的优点,但存在一定误判率且不支持删除操作。核心原理是通过哈希函数将元素映射到位数组的多个位置,查询时检查这些位置是否全为1。布隆过滤器常用于解决缓存穿透问题,能有效拦截不存在的数据查询请求。Java中可通过Guava库实现,但需注意新增数据时需要同步更新过滤器。虽然存在误判可能,但其空间效率和查询性能使其成为大规模数据处理的理想选择。

2026-01-10 09:32:44 824

原创 布隆过滤器 vs 位图(Bitmap)

本文对比了布隆过滤器与位图两种数据结构。布隆过滤器使用位数组和多个哈希函数,具有极高的空间效率,但存在误报可能,适用于存在性测试;位图则直接存储原始值,查询精确但空间效率较低,适合标志位存储和去重。性能测试显示布隆过滤器插入时间更长但空间占用更优。应用场景方面,布隆过滤器适合缓存穿透防护、分布式去重等场景;位图则适合用户状态管理、权限控制等精确查询需求。选择时需考虑数据类型、误报容忍度、内存限制等因素。

2026-01-09 10:55:30 380

原创 Redis基础详解

Redis是一种高性能键值数据库,支持多种数据结构包括字符串、哈希、列表、集合和有序集合。它广泛应用于缓存、排行榜、分布式锁等场景。Redis采用单线程模型,默认16个数据库,提供丰富的操作命令如SET/GET等。字符串类型适合存储序列化对象,哈希类型适合存储结构化数据如用户信息。Redis支持分布式Session和ID生成,但集群环境下哈希类型需注意数据倾斜问题。安装可通过Docker快速完成,默认端口6379,提供高效的读写性能。

2026-01-08 13:22:33 1057

原创 Mybatis源码快速认知

本文详细解析了MyBatis框架的核心执行流程,主要包括以下几个关键步骤:初始化阶段,Mapper代理生成,SQL执行流程,底层执行链条。整个流程展示了MyBatis如何将接口方法调用转化为数据库操作,并高效处理SQL执行和结果映射。

2026-01-07 09:17:42 379

原创 Mybatis的实现原理

MyBatis是一个SQL映射框架,采用三层架构设计:接口层、核心处理层和框架支撑层。核心原理包括:1)XML配置解析构建SqlSessionFactory;2)动态代理机制实现Mapper接口;3)SQL解析执行流程通过Executor等组件完成;4)参数与结果集自动映射;5)提供SqlSession级别的一级缓存和Mapper级别的二级缓存。核心组件包括SqlSessionFactory、SqlSession、Executor等,支持插件扩展机制。

2026-01-06 13:04:02 1201

原创 Docker简单快速安装Redis

Docker部署Redis简明指南 下载镜像:docker pull redis:6.2.4 准备配置文件:创建挂载目录和配置文件,设置持久化、访问权限等 启动容器:映射端口6379,挂载数据和配置文件目录 容器管理:通过docker exec进入容器或直接连接Redis客户端 可视化连接:可使用Navicat等工具连接管理Redis 包含完整容器创建命令和参数说明,支持密码保护、持久化等关键配置。

2026-01-05 10:46:54 612

原创 Spring Boot中自定义注解的实现

本文介绍了在Spring Boot中实现自定义注解的方法。主要内容包括: 创建自定义注解类的基础知识,包括元注解的使用,提供了多个完整示例,每个示例都展示了注解的定义、参数配置以及相关实现细节,涵盖了常见的业务场景需求。这些自定义注解可用于增强Spring Boot应用的日志记录、参数校验、权限控制、缓存管理和分布式锁等功能。

2026-01-04 09:37:06 479

原创 Spring Boot 自定义 Starter 完整指南

Spring Boot 自定义 Starter 摘要 本文介绍了创建 Spring Boot 自定义 Starter 的完整流程。主要内容包括: Starter 设计原则、项目结构、核心组件实现。该指南完整覆盖了从项目创建到功能实现的各个环节,是开发高质量 Spring Boot Starter 的实用参考。

2026-01-03 10:55:14 1131

原创 Spring Boot 自定义注解完整示例

本文介绍了Spring Boot中自定义注解的实现方法,通过一个完整示例演示了如何创建执行时间统计注解。示例包含三个核心部分:1)自定义@ExecutionTime注解定义;2)AOP切面实现方法执行时间计算;3)业务服务类展示注解使用效果。实现支持纳秒、毫秒和秒三种时间单位,并通过日志输出方法执行耗时。测试类验证了不同耗时方法的统计功能,为开发者提供了自定义注解的完整参考实现。

2026-01-02 13:01:48 1210

原创 Docker安装MySQL简单快速教程

本文详细介绍了在Docker中安装和配置MySQL 8.0.20镜像的完整过程。主要内容包括:1)下载MySQL镜像;2)创建数据、日志挂载目录;3)通过临时容器生成配置文件;4)编写启动脚本并挂载配置文件;5)设置MySQL连接权限;6)验证Navicat连接。文章提供了完整的命令和参数说明,特别强调了持久化存储和容器自动重启等关键配置。通过分步指导,帮助用户快速搭建可长期使用的MySQL容器环境。

2026-01-01 09:53:12 648

原创 Docker基础(简介+安装+基本命令)

Docker是一个开源容器引擎,可快速打包、测试和部署应用。其核心优势包括简化程序部署、避免环境配置困扰以及节省硬件成本。安装步骤包括环境准备、配置yum源、安装指定版本Docker并设置镜像加速。常用命令涵盖镜像操作、容器管理以及端口映射和文件挂载功能。此外还介绍了推送镜像到DockerHub和Dockerfile基本指令,用于自动化构建镜像。

2025-12-31 09:19:38 1130

原创 Spring Boot 自动装配原理

Spring Boot自动装配原理基于约定优于配置的设计思想,通过@EnableAutoConfiguration注解触发自动配置流程。开发者可创建自定义starter,通过定义配置类和spring.factories实现扩展。整个过程体现了Spring Boot"开箱即用"的特性,大幅简化了传统Spring应用的配置工作。

2025-12-30 14:25:45 1241

原创 SpringMVC快速了解源码

摘要:SpringMVC框架基于DispatcherServlet实现请求分发,核心组件包括HandlerMapping、HandlerAdapter和ViewResolver等。源码分析重点包括DispatcherServlet的继承结构、doDispatch方法处理流程和视图渲染机制,展现了清晰的组件协作关系。

2025-12-29 10:08:55 1077

原创 什么是Spring事务

Spring事务管理详解:介绍了Spring事务的ACID特性(原子性、一致性、隔离性、持久性)及核心接口。配置方式包括XML(定义事务管理器和AOP切面)和注解(主流方式)。重点解析了@Transactional注解的使用,包括传播行为(7种如REQUIRED、REQUIRES_NEW等)和隔离级别(5种如DEFAULT、READ_COMMITTED等)。适用于需要精确控制事务边界的业务场景。

2025-12-28 10:41:30 914

原创 Spring AOP快速了解

面向切面编程(AOP)是OOP的补充,通过横向抽象实现解耦。AOP核心概念包括切面(Aspect)、连接点(Joinpoint)、通知(Advice)和切点(Pointcut)等。通知类型有前置、后置、返回、异常和环绕五种。切点表达式支持方法、注解、类等多种匹配方式。实现方式包括XML配置和注解(常用)。Spring AOP支持JDK动态代理(接口)和CGLIB代理(类)。典型应用场景包括日志记录、事务管理等,通过@Aspect注解和切点表达式实现方法增强。

2025-12-27 10:11:13 372

原创 MySQL EXPLAIN执行计划详解

MySQL EXPLAIN工具使用指南 EXPLAIN是MySQL的性能分析工具,用于查看SQL语句的执行计划。它能显示查询的执行细节,包括表读取顺序、操作类型、索引使用情况等。基本语法为EXPLAIN SELECT...,MySQL 8.0+还支持TREE/JSON格式和ANALYZE模式。

2025-12-26 09:20:05 1233

原创 如何定位慢SQL

MySQL慢SQL定位与分析指南本文介绍了定位和分析MySQL慢SQL的完整流程和方法:一、定位方法二、分析步骤三、优化建议

2025-12-25 14:22:09 300

原创 快速了解MySQL中的锁

本文系统梳理了数据库锁的分类体系与应用场景。首先从兼容性角度区分了共享锁(读锁)和排他锁(写锁)的特性与使用方式;其次按粒度划分表锁和行锁的适用场景;然后介绍了间隙锁等特殊锁机制。文章还对比了乐观锁与悲观锁的实现原理,分析了死锁成因及解决方案,并阐述了不同隔离级别下的锁机制特点。最后给出了银行转账场景的锁应用示例和优化建议,强调应根据业务需求选择合适的锁策略。全文为数据库并发控制提供了全面的技术参考。

2025-12-24 11:03:29 672

原创 String和StringBuffer和StringBuilder的区别

摘要:String是不可变字符序列,JDK9后改用byte[]存储以节省内存。StringBuffer和StringBuilder是可变的,通过改变底层数组实现可变性。StringBuffer线程安全但性能低,使用synchronized同步机制;StringBuilder线程不安全但性能高。单线程推荐StringBuilder,多线程可选StringBuffer或外部同步的StringBuilder。JDK9的String内存优化减少了GC压力并提升了缓存性能。

2025-12-23 20:15:33 1481

空空如也

空空如也

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

TA关注的人

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