整合切面,参数拦截+过滤
该类基于Spring AOP实现请求参数日志记录,通过@Aspect切面拦截Controller层请求,记录请求来源、URL、方式、方法及入参,并统计执行时间,便于调试与监控,日志通过SLF4J输出,支持后续扩展存储。
倒排索引:如何从海量数据中查询同时带有「极」和「客」的唐诗?
本文介绍倒排索引技术,通过将内容作为关键词建立索引,实现高效检索。对比正排索引的O(n)遍历查询,倒排索引可在O(1)时间内定位含指定字的唐诗,并通过归并有序链表快速求交集,解决“同时含‘极’和‘客’”等多条件查询问题,广泛应用于搜索引擎、数据库全文检索等场景。
分页
本文介绍了五种分页实现方式:MyBatis自带的RowBounds内存分页、PageHelper插件分页、SQL原生分页、数组分页及拦截器分页。对比了逻辑分页与物理分页的优劣,指出大数据量下应优先选用物理分页以降低内存开销,提升性能。
MyBatis
本文介绍MyBatis常见配置,包括属性加载优先级(方法参数 > resource/url > properties)、核心设置如缓存、延迟加载、主键生成等,以及多环境配置与事务管理(JDBC/MANAGED),适用于多数据源场景,结合Spring时无需额外配置事务管理器。
知道什么是聚簇索引,什么是二级索引吗
聚簇索引将数据与索引存储在一起,B+树叶子节点包含整行数据,每张表仅有一个,通常为主键索引。若无主键,MySQL会选首个非空唯一索引或自动生成rowID作为聚簇索引。二级索引则分离存储,叶子节点保存主键值,可有多个。
什么是事务以及事务的四大特性
事务是数据库操作的基本单元,具备ACID四大特性:原子性、一致性、隔离性、持久性。并发事务可能引发脏读、不可重复读、幻读等问题,数据库通过不同隔离级别(如读已提交、可重复读、串行化)加以控制。MySQL默认采用可重复读级别,在保证数据一致性的同时兼顾性能,避免高隔离级别带来的性能损耗。
为什么MySQL索引结构是B+tree
MySQL采用B+树作为索引结构,因其非叶子节点仅存键和指针,使每页可存储更多键,树层级更浅,查询更快。所有数据集中于叶子节点,查询效率稳定,且叶子节点形成双向链表,支持高效范围查询。
索引创建的原则
创建索引需遵循六大原则:针对数据量大、查询频繁的表;在常用作查询、排序、分组的字段上建索引;优先选择区分度高或唯一的字段;varchar字段建议使用前缀索引;尽量创建联合索引,高区分度字段前置;避免过多索引,以降低维护成本,提升查询效率。
领域模型图(数据架构/ER图)
数据架构核心输出为ER图,包含实体、关系与属性。通过四色原型法进行领域建模:红色MI表示时标事件,绿色PPT为业务对象,黄色Role是参与角色,蓝色DESC提供描述信息。以风控系统为例,从业务流程中提炼MI,构建PPT实体,补充Role与DESC,最终提取出ER图,明确实体间一对一、一对多或多对多关系,形成清晰的数据模型。(238字)