- 博客(29)
- 收藏
- 关注
原创 rabbitmq学习笔记 ----- 多级消息延迟始终为 20s 问题排查
说人话就是 Jackson2JsonMessageConverter 将消息转换成json格式前,delayMessage中的expireTime还没有收到。
2025-08-29 22:43:29
347
原创 Redis学习笔记 ---- 基于token实现登录功能
Token生成:登录时生成UUID作为Token,关联用户信息存储到Redis并设置有效期。状态刷新:每次请求通过验证Token,有效则刷新Redis有效期,确保用户持续登录。登录验证检查ThreadLocal中的用户信息,未登录则拦截需授权的接口。线程安全:通过存储用户信息,请求结束后清除,保证线程隔离和内存安全。
2025-08-23 17:25:59
594
原创 Redis学习笔记 ----- 缓存
缓存(Cache)是数据交换的缓冲区,是存储数据的临时地方,一般读写性能较高。客户端请求的数据在缓存中和数据库中都不存在,这样缓存永远不会生效,这些请求都会打到数据库。在同一时段大量的缓存key同时失效或者Redis服务宕机,导致大量请求到达数据库,带来巨大压力,甚至引起数据库宕机。也叫热点Key问题,指一个被高并发访问的热点数据的缓存突然失效,无数请求会在瞬间同时到达数据库,给数据库带来巨大冲击。// 商铺缓存键前缀// 商铺缓存默认过期时间(30分钟)
2025-08-23 16:58:47
1801
原创 Redis学习---- SpringDataRedis
import org// JSON 序列化器(用于值的序列化) GenericJackson2JsonRedisSerializer jsonRedisSerializer = new GenericJackson2JsonRedisSerializer();// 字符串序列化器(用于键的序列化) StringRedisSerializer stringSerializer = new StringRedisSerializer();
2025-08-16 16:21:04
710
原创 Redis学习笔记 ------ Jedis连接池
代码说明:代码说明:参数调优: 的参数(如 、 )需结合实际业务压测调整。若业务并发高,可适当增大 ;若连接闲置多,可降低 避免资源浪费。异常处理:获取连接、执行 Redis 命令时,需捕获可能的异常(如连接超时、Redis 服务不可达 ),增强程序健壮性,可在 中处理异常逻辑(如记录日志、重试 )。通过连接池模式使用 Jedis ,可高效管理 Redis 连接资源,适配高并发场景,是 Java 项目中操作 Redis 的推荐实践 。
2025-08-16 14:59:06
1033
原创 Redis学习笔记 ----- Jedis 使用
Jedis 是 Java 操作 Redis 数据库的客户端,可让 Java 程序便捷地与 Redis 交互,执行 Redis 命令(如操作 String、Hash、List 等数据类型 )。引入依赖:在项目构建文件(如 Maven 的pom.xml)中添加 Jedis 依赖,让项目能使用 Jedis 相关类和方法。创建 Jedis 对象,建立连接:通过指定 Redis 服务器的主机、端口等信息,初始化 Jedis 实例,建立与 Redis 的网络连接。使用 Jedis,方法名与 Redis 命令一致。
2025-08-16 14:43:14
809
原创 Redis学习笔记 ----- 数据结构
类似 Java 的 HashMap ,value 是无序字典。String 存对象需序列化 JSON ,修改字段不便;Hash 可将对象字段独立存,方便单个字段 CRUD。Redis 的 SortedSet 是可排序的集合,类似 Java 中的。,可看作 value 为 null 的。,在前面示例中会返回 0(降序排名,:排名默认升序,如需降序,命令前加。
2025-08-16 14:36:38
732
原创 MySQL学习笔记 ---- redo log、undo log及MVCC详解
原子性(Atomicity):事务是不可分割的最小单位,要么全部执行成功,要么全部失败回滚,不存在部分执行的状态。例如,转账操作中“扣款”和“入账”必须同时成功或同时失败。一致性(Consistency):事务执行前后,数据库从一个一致状态转换到另一个一致状态,满足预设的业务规则(如余额不能为负)。隔离性(Isolation):多个并发事务之间相互隔离,一个事务的操作不会被其他事务干扰,避免脏读、不可重复读、幻读等问题。持久性(Durability)
2025-08-13 21:14:57
875
原创 InnoDB 架构与存储结构笔记
InnoDB 的架构是「内存 + 磁盘 + 异步线程」的协同设计,通过分层存储(表空间→段→区→页→行)和内存缓存(Buffer Pool 为核心),在「数据一致性」和「性能」之间取得平衡,支撑高并发业务。
2025-08-13 21:01:54
902
原创 MySQL学习笔记 ---- 锁
锁机制是「数据库并发的基石」,理解锁定粒度(行/表/全局)和适用场景,才能在「数据一致性」和「并发性能」之间找到平衡,就像自习室的「占座规则」——既要让大家高效学习,又要避免冲突。
2025-08-12 16:15:31
2223
原创 MySQL学习笔记 ---- 触发器
触发器是与表关联的数据库对象,在INSERTUPDATEDELETE操作之前或之后自动执行保障数据完整性(如字段校验、关联表同步更新);记录操作日志(追踪数据变更历史);实现复杂业务规则(如更新后自动触发关联计算 )。行级触发:仅支持(每条变更记录触发一次),不支持语句级触发;新旧数据引用:通过OLD(变更前数据)和NEW(变更后数据)访问记录内容,不同操作类型的引用规则:触发器类型OLD含义NEW含义INSERT无(新增操作无旧数据)将要/已新增的数据UPDATE修改前的旧数据。
2025-08-12 15:00:28
470
原创 MySQL学习笔记 -- 存储过程及存储函数
存储过程是预编译并存储在数据库中的 SQL 语句集合简化开发:封装复杂逻辑,调用时无需重复编写 SQL;提升效率:减少数据库与应用服务器间的数据传输;代码复用:实现 SQL 层面的“函数式编程”,复用逻辑。用户自定义的临时变量,作用域为当前连接,前缀,无需声明即可使用。游标(CURSOR)是用来存储查询结果集的数据类型,在存储过程和函数中可以使用游标对结果集进行循环的处理。使用游标需遵循:声明变量→声明游标→打开游标→获取游标记录→关闭游标的流程,且声明变量要在声明游标之前。
2025-08-12 14:47:25
929
原创 MySQL 视图学习笔记
视图是 MySQL 中“虚拟表”,核心价值是简化查询、控制数据访问。可防止数据“逃逸”,需根据需求选CASCADED或LOCAL;复杂逻辑(聚合、分组等 )会让视图不可更新,需合理设计;合理利用视图简化高频操作,同时通过视图控制数据权限,提升数据库安全性。
2025-08-11 18:11:54
936
原创 SQL优化学习笔记
索引设计用覆盖索引减少回表,遵循最左前缀优化排序/分组;主键设计聚焦顺序插入、长度最小化。插入优化批量提交、顺序插入主键;海量数据用LOAD DATA跳过 SQL 解析。查询优化排序/分组利用索引有序性,避免filesort;大偏移量分页用覆盖索引 + 子查询。锁与更新UPDATE需命中有效索引,防止行锁升级为表锁;COUNT优先用count(*),效率最优。
2025-08-11 17:37:12
888
原创 索引使用与设计规则笔记
查询用索引,且需返回列均能从索引取到,避免回表,提升效率(减少。SQL 中加提示,强制/忽略/指定索引,优化查询执行逻辑。,减少索引维护成本,还可结合最左前缀、覆盖索引等特性优化。),值越高查询效率越好(唯一索引选择性为1,最优)。等)字段需索引,但内容长、索引体积大时,like '软件%'like '%工程'
2025-08-11 16:27:05
549
原创 MySQL 索引与 SQL 性能分析笔记
执行后,会列出指定表的索引详情,包含索引类型、列、唯一性等信息,用于检查索引是否按预期创建。结果,可判断索引是否生效、查询是否全表扫描、执行顺序是否合理,针对性优化 SQL 和索引。模拟 SQL 执行流程,展示 MySQL 如何访问表、选索引,是优化 SQL 的核心工具。,可直接查看超时 SQL,分析执行计划、索引使用是否合理。)的耗时,定位瓶颈(如某阶段耗时异常高,需优化 )。,默认 10 秒 )的 SQL,帮定位耗时查询。深入分析 SQL 执行耗时分布,需先开启。、执行时间,找耗时高的 SQL。
2025-08-10 19:53:21
1512
原创 MySQL 索引基础知识笔记
索引(index)是帮助 MySQL 高效获取数据的。数据库系统在数据之外,维护满足特定查找算法的数据结构,这些结构以某种方式引用(指向)数据,借助它可实现高级查找算法,进而提升数据查询效率。
2025-08-10 19:05:32
875
原创 MySQL事务学习笔记
事务是一组操作的集合,是不可分割的工作单位,操作要么同时成功,要么同时失败。例如转账场景,张三给李四转账 1000 ,包含查询张三余额、张三余额减 1000、李四余额加 1000 操作,这些操作作为整体,若中间抛异常则回滚,都成功才提交。默认 MySQL 事务自动提交,执行 DML 语句会隐式提交。
2025-08-10 00:24:51
891
原创 SpringBoot文件上传
file.transferTo(newFile):把file文件上传到newFile指定的位置里。这是获取服务器下的upload文件夹(我们自己创建的),上传的文件都在upload里。如果让用户可以访问到自己上传的文件,可以把静态资源访问路径更改为upload文件夹。:基于SpringBoot的项目实现文件上传。
2025-06-21 20:43:32
130
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅