每日学习-01

问题一:无限续期导致死锁怎么办

问题二:maven怎么用的,有啥功能

问题三:布隆过滤器知道原理吗?

问题四:mybatis只通过实现接口就可以运行的原因

问题五:看门狗机制

开始分析:

问题一:无限续期导致死锁怎么办

答:一般指 Redisson 分布式锁看门狗无限续期造成死锁。

第一,加锁时指定锁的最大过期时间leaseTime,会关闭自动续期,锁到时间自动释放,从根源防止无限续期;

第二,业务代码放到 try-finally,释放锁前判断是当前线程持有才解锁,避免漏释放;

第三,如果业务耗时不确定要用看门狗,就给业务加执行超时检测,线程阻塞卡死就终止续期; 第四,线上兜底方案:定时任务定期清理长时间未释放的僵尸锁,紧急情况直接删除 Redis 锁 key 恢复。

如果是本地 Lock 死锁,就用带超时的 tryLock,并且统一线程获取锁的顺序。

问题二:maven怎么用的,有啥功能

答:核心功能:

第一是依赖管理,通过 pom.xml 配置引入第三方 jar 包,自动下载、解决包冲突,不用手动导包; 第二是项目标准化构建,统一项目目录结构;

第三是项目生命周期管理,提供 clean、compile、test、package、install、deploy 等一套命令,完成清理、编译、测试、打包、上传私服全流程; 第四是多模块拆分,适合大型项目做分模块开发。

简单使用流程:先创建 Maven 项目,编写 pom.xml 配置依赖和插件;然后用命令执行构建,比如 package 打 jar/war 包;可以配置本地仓库、远程私服,还能自定义插件拓展构建逻辑。

问题三:布隆过滤器知道原理吗?

布隆过滤器底层是位数组 + 多个哈希函数

  1. 存入数据:一个元素经过多个不同哈希函数算出多个下标,把位数组对应下标全部置 1。
  2. 查询数据:同样哈希算出下标,只要有任意一位是 0,元素一定不存在;全为 1 才判断可能存在。
  3. 特点 :不存在误判,但存在假阳性(有可能把不存在的元素误判为存在),无法删除元素;优点是占用内存极小、查询速度快,Redis 里常用来做缓存穿透解决方案。

问题四:mybatis只通过实现接口就可以运行的原因

MyBatis 仅定义接口不用写实现类就能运行,核心是动态代理,流程分这几步:

  1. 启动时解析 Mapper 接口和对应的 XML / 注解 SQL,把接口全限定名当作 key,把 SQL、参数、返回值等元数据封装存进配置;
  2. 调用getMapper()时,MyBatis 底层用 JDK 动态代理生成这个 Mapper 接口的代理对象;
  3. 调用接口方法时,会走到代理类的invoke拦截方法;
  4. 拦截器根据当前调用的接口方法,匹配提前缓存好的 SQL 信息,封装参数,执行 JDBC 数据库操作,最后把结果映射返回,我们就不用手写接口实现类了。

补充一句:因为是 JDK 动态代理,所以 Mapper 必须是接口,不能用普通类

问题五:看门狗机制

我说下 Redis 分布式锁里的看门狗机制:

  1. 触发条件:我们调用lock()不加锁最大过期时间 leaseTime 时,Redisson 会自动开启看门狗;锁默认有效期 30 秒。
  2. 工作逻辑:后台起一个定时线程,每隔 10 秒检查,如果当前业务线程还持有锁,就自动把锁过期时间重置回 30 秒,实现自动续期,防止业务没执行完锁提前释放。
  3. 停止条件:只要业务线程正常走完、手动解锁,或者线程卡死终止,续期任务就会停止,锁到期自动删除。
  4. 缺点:如果业务线程卡死阻塞,看门狗会无限续锁,造成死锁;解决办法就是手动指定 leaseTime,关闭看门狗,给锁设置最大存活时长兜底。
相关推荐
paopaokaka_luck5 小时前
基于springboot3+vue3的企业考勤管理系统(部门树递归、Echarts图形化分析)
开发语言·spring boot·学习·echarts·mybatis·需求分析·代码规范
minglie15 小时前
zynq高频小数据量PS闭环 抖动时间的测量
学习
long3165 小时前
MySQL 学习练习(配套 01 入门资料)
数据库·学习·mysql
梦雨生生6 小时前
java开发工具(学习第一天)
java·开发语言·学习
IT古董11 小时前
【MES学习笔记系列】05 - MES 数据库设计
笔记·学习·mes
LATASA12 小时前
【 从0到1构建 Agent Harness学习笔记】
网络·笔记·学习
weixin_4316004413 小时前
做 Agent 会用到的 Node API(3):异步与流
前端·学习·ai·agent·ai编程
Haku Coder13 小时前
0基础学习Git——基础篇
git·学习
70asunflower14 小时前
Triton 从 0 到 1 完整学习教程
学习·triton
天国梦14 小时前
2026年英语教学数字化工具深度测评:天学网、腾讯英语君、翼课网横向对比
人工智能·学习