首页
个人开发
工作相关
共享
搜索
登录
搜索
colo
欲买桂花同载酒
累计撰写
1823
篇文章
累计收到
0
条评论
首页
栏目
首页
个人开发
工作相关
共享
作者 【1】 的文章
2025-12-13
JVM内存结构解析与StackOverflowError/OutOfMemoryError场景分析
JVM内存主要分为堆、栈、方法区等区域:StackOverflowError:线程请求的栈深度超过虚拟机限制(如无限递归)OutOfMemoryError:Java heap space:堆内存不足(如内存泄漏)Metaspace:元空间溢出(如动态生成过多类)Unable to create new native thread:线程创建过多避免方案:合理设置内存参数、优化代码、监控内存使用
2025年-12月-13日
5 阅读
0 评论
JVM虚拟机
2025-12-13
理解happens-before原则及其在线程可见性中的应用
happens-before原则是Java内存模型(JMM)的核心规则,用于定义多线程操作的可见性和执行顺序。关键要点:happens-before建立了跨线程操作间的可见性保证常见规则:程序顺序规则、锁规则、volatile规则、线程启动规则等通过volatile、synchronized等机制实现happens-before关系示例中:volatile写操作happens-before后续读操作,确保修改可见
2025年-12月-13日
5 阅读
0 评论
Java内存模型
2025-12-13
MyBatis中#{}和${}的区别是什么?请说明各自的使用场景
在MyBatis中,#{}和${}都是参数替换符号,但存在关键区别:#{}:预编译处理,能防止SQL注入,适用于大多数参数传递场景${}:字符串直接替换,有SQL注入风险,仅适用于动态表名/列名等特殊场景最佳实践:优先使用#{},仅在必要时谨慎使用${}。
2025年-12月-13日
5 阅读
0 评论
MyBatis
2025-12-13
如何理解JVM类加载机制与双亲委派模型?请描述其工作原理及破坏场景
JVM类加载机制分为加载、链接、初始化三个阶段:双亲委派模型:类加载请求优先委派父加载器处理工作原理:自底向上检查类是否已加载,自顶向下尝试加载破坏场景:SPI服务发现(如JDBC)、OSGi模块化、热部署等自定义实现:重写loadClass()或findClass()方法
2025年-12月-13日
5 阅读
0 评论
JVM虚拟机
2025-12-13
实现自定义注解验证器:通过反射检查对象属性的合法性
实现步骤:定义验证注解(如 @NotNull, @Range)创建验证工具类,通过反射获取字段注解遍历字段并检查注解规则收集验证错误并返回结果关键点:使用 Field.getDeclaredAnnotations() 获取注解通过 field.setAccessible(true) 访问私有字段注意基本类型和包装类型的处理
2025年-12月-13日
5 阅读
0 评论
反射与注解
2025-12-13
如何正确重写equals()和hashCode()方法?
正确重写equals()和hashCode()需要遵循以下原则:equals()规范:满足自反性、对称性、传递性、一致性和非空性hashCode()规范:相等对象必须有相同哈希码,不相等对象尽量不同同步重写:重写equals()时必须同时重写hashCode()使用关键字段:计算应基于equals()比较中使用的字段
2025年-12月-13日
5 阅读
0 评论
Java基础
2025-12-13
设计一个支持泛型的对象池(Object Pool)
实现一个线程安全的泛型对象池,需满足:使用泛型类 ObjectPool<T> 管理任意类型对象类型 T 必须实现 AutoCloseable 接口提供 borrowObject() 和 returnObject(T obj) 方法使用通配符实现安全的对象回收校验确保线程安全并避免资源泄漏
2025年-12月-13日
5 阅读
0 评论
泛型
2025-12-13
设计高并发场景下的Spring MVC接口,实现防重提交与分布式幂等性
在高并发场景下实现防重提交和接口幂等性需要综合运用多种技术:防重提交:采用Token机制,前端提交携带唯一Token,后端验证后立即失效幂等性保障:基于业务唯一标识(如订单ID)配合分布式锁实现分布式锁:使用Redis实现原子锁操作,设置合理的锁超时时间高并发优化:结合异步处理、数据库乐观锁和限流机制错误处理:定义清晰的错误码体系,区分重复提交和业务异常
2025年-12月-13日
5 阅读
0 评论
Spring MVC
2025-12-13
分析并优化一个存在内存泄漏的Java程序
该程序存在内存泄漏问题,主要原因是静态Map缓存未清理过期条目。解决方案:使用WeakHashMap替代普通HashMap实现自动清理或使用带过期时间的缓存框架(如Caffeine)或定期清理缓存(示例代码):// 每10分钟清理一次 ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1); scheduler.scheduleAtFixedRate(() -> { cache.entrySet().removeIf(entry -> System.currentTimeMillis() - entry.getValue() > 600_000); }, 10, 10, TimeUnit.MINUTES);
2025年-12月-13日
5 阅读
0 评论
垃圾回收机制
2025-12-13
如何处理除零异常?
处理除零异常的核心步骤:使用 try-catch 块捕获 ArithmeticException在 catch 中提供错误处理逻辑(如日志记录或用户提示)通过 finally 块执行必要的清理操作避免捕获过于宽泛的 Exception 类型
2025年-12月-13日
5 阅读
0 评论
异常处理
17
18
19
20
21