
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
本文介绍了策略模式的概念及两种实现方式。策略模式通过定义统一接口,将不同算法封装成独立类,使它们可以相互替换。文章以制作土豆泥为例,展示了简单策略模式的实现,通过切换实现类即可改变处理方式。针对简单实现存在的硬编码问题,提出结合Spring IOC的进阶方案:1)自定义注解标记实现类;2)定义抽象收集父类自动注册实现类到Map;3)通过子类获取注解值作为key。这种方案避免了if-else判断,使
Java异常处理摘要:异常分为Exception(可捕获处理)和Error(系统级不可控异常)。处理Exception有两种方式:( 1 )throws声明式,将异常抛给jvm,但会降低程序可控性;( 2 )try-catch主动捕获,可针对性处理不同异常,finally块确保必要代码执行。使用try-catch时需注意:多个catch应按异常范围从小到大排列,每个try只能捕获一个异常,catc
本文探讨了Java中浅拷贝与深拷贝的区别及实现方式。浅拷贝使两个对象指向同一内存地址,修改一个会影响另一个;深拷贝则创建独立对象,互不影响。文章通过Person类实例演示了浅拷贝和三种深拷贝实现方法:直接创建对象赋值、重写clone方法以及序列化实现。特别指出当对象包含类属性变量时,需对这些变量也进行深拷贝处理。示例代码展示了各种拷贝方式的实际效果,验证了深拷贝后对象修改的独立性。
摘要:本文比较了Java中"=="和equals的区别。"=="用于基本类型的数值比较和对象的内存地址比较;equals是Object类的方法,默认行为与"=="相同,但可通过重写实现自定义比较逻辑。String类重写了equals方法实现内容比较。基本类型不能直接与对象比较,但可通过自动装箱/拆箱与包装类比较。示例代码展示了基本类型、对
Spring Boot启动流程主要分为两部分:1.创建SpringApplication对象时,会推断应用类型(Web/Reactive/None),并通过SpringFactoriesLoader加载META-INF/spring.factories中配置的BootstrapRegistryInitializer、ApplicationContextInitializer和Application
本文详细介绍了MySQL查询语法,包含基础查询、关键字使用、联表查询和子查询四大部分。基础语法部分讲解了SELECT语句的基本用法;关键字部分详细说明了AS、DISTINCT、WHERE条件判断、GROUP BY分组、HAVING筛选、ORDER BY排序和LIMIT分页的使用方法;联表查询部分介绍了INNER JOIN、LEFT JOIN和CROSS JOIN三种连接方式;子查询部分则分类讲解了
摘要:索引主要按数据结构分为B+树、哈希、全文和空间索引,InnoDB存储方式包括聚簇索引(主键索引)和非聚簇索引(二级索引)。索引创建时需考虑主键、唯一、普通、联合、全文和空间索引类型,遵循最左前缀匹配原则。索引失效场景包括where条件使用函数、like%左匹配、算术运算、or条件单边索引、隐式类型转换、范围查询中断最左匹配等。联合索引必须按创建顺序使用,否则无法命中索引。
摘要:Java中volatile关键字用于解决多线程环境下的内存可见性问题,确保一个线程对共享变量的修改能立即被其他线程看到。它通过内存屏障机制防止指令重排序,保证有序性,但不保证原子性。实验代码对比普通变量、volatile变量和同步方法修饰的volatile变量,证实volatile确实能实现内存可见性,但无法解决复合操作的原子性问题。内存屏障分为四种类型(LoadLoad、StoreStor
MyBatis-Plus简化了MyBatis的使用,通过Java代码代替XML编写SQL。文章介绍了其核心功能:1)实体类需与表名、字段名对应,使用Lombok简化代码;2)Mapper接口继承BaseMapper即可实现基础CRUD;3)提供了QueryWrapper/LambdaQueryWrapper等条件构造器进行链式条件构建;4)支持分页查询,需配置拦截器;5)推荐使用MyBatis-P
本文介绍了Java集合框架中List、Set和Map三大接口的用法及实现类。List用于存储有序元素,常用ArrayList;Set保证元素唯一性,常用HashSet;Map存储键值对,常用HashMap。文章详细说明了各接口的实现类特点:ArrayList适合通用场景,LinkedList维护顺序,Vector线程安全;HashSet去重,LinkedHashSet有序,TreeSet可排序;H







