自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(1141)
  • 资源 (1)
  • 收藏
  • 关注

原创 Java 实现 PDF 模板动态赋值与文档生成(多种解)

摘要:Java中实现PDF模板动态赋值与文档生成有多种解决方案,主要包括Apache PDFBox和Flying Saucer两种库。PDFBox可以直接处理PDF表单字段进行动态赋值,适合处理现有PDF模板;而Flying Saucer通过转换HTML模板为PDF实现动态内容填充,适合基于HTML的设计需求。两种方案各有优势:PDFBox操作原生PDF更灵活,Flying Saucer则利用HTML/CSS简化设计流程。开发者可根据项目需求选择合适的工具,如需要处理复杂表单推荐PDFBox,如需利用Web

2025-07-17 05:15:00 220

原创 Innodb加锁原则:Record Lock_Gap Lock_Next-Key Lock

摘要:InnoDB的锁机制主要包括记录锁(Record Lock)、间隙锁(Gap Lock)和临键锁(Next-Key Lock)。Next-Key Lock是Record Lock和Gap Lock的结合,采用前开后闭区间锁定范围,主要解决幻读问题。加锁规则遵循两个原则(基本单位是Next-Key Lock、只锁定访问对象)和两个优化(唯一索引等值查询退化为行锁、不满足条件时退化为间隙锁)。测试案例显示,在RR隔离级别下,对a=8加锁实际上会锁定(5,8]和(8,11]范围,导致插入5-11之间的值被阻

2025-07-16 05:15:00 796

原创 无脑字节面基

技术方案优化与通信协议选择 前端性能优化 分层加载:API设计分元数据与详情层,结合React Suspense/Vue异步组件实现异步注入 视觉优化:使用AST生成骨架屏,配合CSS动画和Intersection Observer实现渐进加载 缓存策略: 时效数据:Service Worker采用Stale-While-Revalidate模式 元数据:LocalStorage持久化存储 SSR优化:Next.js选择性注水,优先交互组件注水 大模型通信协议 SSE优势:HTTP/2复用、文本流式传输、内

2025-07-15 05:15:00 544

原创 面试官:如何解决按钮重复点击?这个问题挂了80%的人!

本文探讨了前端开发中按钮重复点击问题的解决方案。首先分析了问题场景和简单的防抖方案局限,进而提出通过loading状态管理的基础方案。针对代码复用问题,重点介绍了React中封装自定义Hook和通用Button组件的方法,实现自动加载状态管理。该方案具有零侵入性和自动处理的优势,使用方式与普通按钮一致,能有效防止重复提交请求和按钮多次触发。通过封装通用组件解决了重复代码问题,提升了开发效率和代码质量。

2025-07-14 05:15:00 256

原创 线上出现慢 SQL 怎么办?仅使用 EXPLAIN 就能解决所有慢 SQL?

摘要 线上慢 SQL 问题需从全链路解决:首先通过监控和报警及时感知问题;出现问题时及时限流或拉黑慢 SQL 避免风险扩散;分析时需区分是单条 SQL 慢还是整体性能问题,针对索引失效、深分页、数据量过大等不同原因采取对应优化措施;对于写入慢需考虑锁竞争问题,读取慢则关注索引优化;对于不可避免的报表类慢 SQL,可采用读写分离、缓存或定时任务等方案。EXPLAIN 只是分析工具之一,完整的解决方案需要结合系统监控、性能分析和业务优化。

2025-07-13 05:15:00 652

原创 一张表到底建多少个索引才是合适呢?

本文系统介绍了MySQL索引的分类、使用规范和数量限制。从应用层分为普通索引、唯一索引和联合索引;数据结构层分为哈希索引和B树索引。文章提出新建索引的四大原则:最左前缀匹配、高区分度列、不参与计算、尽量扩展而非新建。分析了MySQL如何使用索引优化查询,特别是对=、in、and/or的处理方式。最后指出理论上索引数量无固定限制,但实际应用中需权衡查询和更新性能,避免过多索引影响系统效率。强调索引设计要在应用需求和数据库性能间找到平衡点。

2025-07-12 05:15:00 583

原创 一口气讲完8种锁!乐观、悲观、可重入、公平,自旋、重量级、轻量级、偏向

摘要:8种常见锁机制解析 本文系统介绍了8种常见的锁机制,包括乐观锁与悲观锁、可重入锁与公平锁等。乐观锁通过版本号检测冲突(如AtomicInteger和MySQL版本控制),适合低冲突场景;悲观锁(如synchronized和ReentrantLock)则直接加锁防止并发修改。可重入锁允许同一线程重复获取锁,公平锁通过FIFO队列保证线程获取顺序。文章通过"菜市场买菜"的生动比喻,结合Java和MySQL的具体实现代码(如ReentrantLock构造函数设置公平性、SELECT FO

2025-07-11 05:15:00 824

原创 为什么不应该在事务中嵌套发送 MQ 消息和 RPC 调用?

摘要 在事务中嵌套发送MQ消息和RPC调用存在三大问题:破坏事务原子性(导致上下游数据不一致)、引发长事务(降低系统吞吐量)、下游反查不到未提交数据(形成死循环)。根本原因是数据库事务无法控制外部系统行为。解决方案包括:1) 事务提交后再发消息(如使用@TransactionalEventListener);2) 保证事务与消息的原子性(采用本地消息表+定时任务或RocketMQ事务消息);3) 避免反查(消息携带完整数据)。最佳实践是事务内只包含可靠的可回滚操作,推荐使用本地消息表方案兼顾可靠性与实现复杂

2025-07-10 14:09:56 506

原创 哈啰出行Java 一面,我扛住了!!!

文章摘要: 哈啰出行Java面试一面主要考察了JVM内存区域、垃圾回收机制、线程池类型、IOC/AOP原理等核心知识点。JVM内存分为元空间、虚拟机栈、本地方法栈、程序计数器和堆内存;垃圾回收算法包括标记-清除、复制、标记-整理和分代收集;常见线程池有ScheduledThreadPool、FixedThreadPool等5种类型;IOC通过容器管理对象依赖,AOP实现横切关注点。面试者还分享了实际项目中使用AOP进行日志记录的代码示例,通过@Aspect注解定义切面类,用@Pointcut和@Before

2025-07-10 05:15:00 993

原创 双Token机制(Access Token + Refresh Token)安全高效

双Token安全认证机制实现方案 摘要: 本文提出了一种基于Access Token和Refresh Token的双Token安全认证机制。Access Token采用短有效期(30分钟)JWT格式,Refresh Token使用长效(7天)不透明字符串存储于Redis,并通过HttpOnly Secure Cookie传输。系统实现包括:1)登录接口生成双Token;2)令牌刷新接口验证设备指纹;3)网关过滤器自动处理Token过期刷新。该方案通过设备指纹绑定、滑动过期等安全措施,有效平衡了安全性与用户体

2025-07-09 05:15:00 1622

原创 Spring事务失效的9大场景,你踩过几个?

摘要:文章总结了Spring事务失效的9大常见场景:1)抛出检查异常未触发回滚;2)业务方法自行捕获异常;3)同类方法调用导致代理失效;4)使用final/static方法;5)非public方法;6)传播机制配置不当;7)多线程调用;8)未启用事务管理;9)数据库引擎不支持。针对每个场景提供了具体解决方案,如配置rollbackFor、避免异常捕获、拆分方法到不同类等。文章强调这些陷阱在实际开发中容易忽视,需特别注意异常处理、方法可见性和传播机制的正确配置。

2025-07-08 05:15:00 668

原创 50% 的 Java 程序员都不知道的 Jackson 高级用法!(附工具类封装)

Jackson高级用法解析与工具类封装 本文深入探讨了Java开发中Jackson库的实战应用,针对常见场景提供了专业解决方案: 基础转换:通过ObjectMapper实现对象与JSON互转,使用注解控制序列化行为 日期处理:配置JavaTimeModule统一日期格式,支持各种时间类型 复杂结构:利用泛型和TypeReference处理嵌套对象与集合类型数据 动态过滤:使用@JsonFilter和SimpleFilterProvider实现字段级别控制 文中还提供了完整的JacksonUtils工具类封装

2025-07-07 05:15:00 608

原创 一文详解五种常见请求 GET(查询)、POST(创建)、PUT(更新)、DELETE(删除)、PATCH(部分更新)的区别

本文详细解析了五种常见HTTP请求方法的区别: GET:安全且幂等的查询操作,参数通过URL传递,适合获取资源 POST:非幂等的创建操作,数据在请求体中,适合提交表单或创建资源 PUT:幂等的全量更新操作,需提供完整资源信息 DELETE:幂等的删除操作,通过URI指定要删除的资源 PATCH:非幂等的部分更新操作,仅需提供修改字段 关键区别在于语义、幂等性、安全性、参数位置及应用场景。合理选择方法可使API设计更规范,充分利用HTTP协议特性。

2025-07-06 05:15:00 683

原创 面试被问“你的缺点是什么?”该怎么答?

面试中如何巧妙回答"你的缺点是什么" 回答技巧: 选择与岗位核心能力无关的缺点 避免假缺点或笼统回答 结合具体案例,强调改进行动 使用"缺点+改进措施+积极结果"的句式模板 禁忌: 否定核心技能 暴露性格缺陷 缺乏解决方案 示例回答应展示自我认知能力和改进意识,如技术广度不足但已制定学习计划,或沟通不足但已建立确认流程。

2025-07-05 05:15:00 346

原创 Git 不要只会 pull 和 push,搞上 5 个提升效率的命令!

这篇文章介绍了5个提升Git效率的实用命令: stash - 临时保存未提交的代码改动,方便切换任务 reset --soft - 撤销提交但保留修改内容 cherry-pick - 复制特定提交到当前分支 revert - 撤销提交并保留完整历史记录 reflog - 查看并恢复误操作前的状态 每个命令都包含基本用法和进阶技巧,如stash可以保存未跟踪文件,revert可以撤销一系列提交等。这些命令能帮助开发者更灵活地管理代码版本,提高工作效率,特别适合处理紧急任务、修正错误提交等场景。

2025-07-04 05:15:00 243

原创 为什么阿里巴巴Java开发手册禁止使用Executors创建线程池?

阿里巴巴Java开发手册禁止使用Executors创建线程池,主要原因包括:1)资源耗尽风险,工厂方法预设的参数可能导致内存溢出或线程爆炸;2)缺乏精细控制能力。通过两个案例对比,展示了Executors工厂方法的问题和手动创建线程池的优势。手动创建线程池可提升资源可控性、业务适配性,并提供更优雅的异常处理、更强的监控能力和更便捷的问题排查。建议开发者根据实际业务场景,通过ThreadPoolExecutor手动配置线程池参数,包括线程数、队列容量和拒绝策略等,以实现更稳定可靠的线程池管理。

2025-07-03 05:15:00 480

原创 终于理解闭包是什么了(含防抖、节流)

闭包简明解析 闭包是函数和其定义时词法环境的组合,核心特点是函数能记住并访问创建时的作用域变量。类比书包:即使放学(函数执行结束),书包(闭包)仍保留着课本(变量)。闭包三大特性:访问外部变量、变量长期存活、数据私有化。 关键应用场景: 封装私有变量(如计数器模块) 回调函数保留上下文(异步请求) 性能优化:防抖(电梯式延迟响应)和节流(水龙头式限流) 防抖与节流通过闭包保存计时器/时间戳,实现高频事件优化。闭包避免了全局变量污染,是JavaScript模块化和状态管理的重要机制。

2025-07-02 05:15:00 1500

原创 Java 8 魔法:利用 Function 接口告别冗余代码,打造高效断言神器

Java 8函数式编程实战:利用Function接口优化数据校验 本文展示了如何通过Java 8的Function接口重构传统数据校验逻辑,实现代码精简和复用。以常见的ID有效性检查为例,传统方法会导致大量重复代码。通过定义通用的ensureColumnValueValid方法,利用SFunction参数化校验逻辑,将变化的部分作为参数传递,使相同校验逻辑可复用。该方法接受待校验值、属性提取函数、查询执行器和错误信息模板四个参数,实现了对任意实体类属性的统一校验。改造后的代码显著减少了重复代码量,提升了可读

2025-07-01 05:15:00 1100

原创 Spring Boot 封装 MinIO 工具

Spring Boot集成MinIO工具封装 该项目封装了MinIO分布式对象存储的Java工具库,简化了Spring Boot项目中与MinIO的集成。主要特性包括: 通过@EnableAutoMinio注解实现自动配置 支持从配置文件读取MinIO连接参数 提供内容类型枚举(ContentTypeEnums)用于文件上传 包含完善的配置读取组件(MinioProperties) 采用模块化设计,包含注解、配置、连接库等组件 使用方式简单,只需在Spring Boot启动类添加注解并配置MinIO参数即可

2025-06-30 05:15:00 564

原创 快手面试题:一次Insert操作,MySQL的几种Log的写入顺序?

MySQL INSERT操作涉及三种日志的写入顺序: Undo Log(记录事务前状态,用于回滚) Redo Log(prepare)(记录物理变更,确保持久化) Binlog(记录逻辑操作,用于主从复制) Redo Log(commit)(事务最终提交) 关键机制: 采用**两阶段提交(2PC)**确保Redo Log和Binlog一致性 崩溃时根据日志状态决定回滚或恢复 优化建议: 配置innodb_flush_log_at_trx_commit=1和sync_binlog=1确保数据安全 合理使用索引

2025-06-29 05:15:00 1630

原创 从零到百万并发:Java高并发核心编程揭秘,这些坑你踩过几个?

摘要: 《Java高并发编程核心问题解析》从实战角度剖析高并发场景下的典型问题与解决方案。以某电商双11订单服务崩溃为例,揭示线程池无界队列导致内存泄漏的致命错误,提出线程池参数配置黄金法则。通过StampedLock与传统锁的性能对比(10万次读操作耗时减少45%),展示乐观读模式的优化效果。最后介绍使用Arthas工具诊断线程阻塞的具体方法,包括监控方法耗时和追踪锁竞争。文章强调:合理的线程池配置、锁策略选择及监控工具运用是保障高并发系统稳定的关键。

2025-06-28 05:15:00 550

原创 订单超时自动关闭的方案

订单超时自动关闭方案综述 本文总结了四种实现订单超时自动关闭的技术方案: 定时任务轮询数据库:通过定时查询超时订单并更新状态,实现简单但存在精度和延迟问题; Redis过期监听:利用键过期事件通知,但存在延迟和可靠性问题,生产环境不推荐; Redis Zset延迟队列:利用有序集合存储订单和过期时间,内存操作高效但需处理重试机制; 消息队列延迟消息:如RocketMQ的分级延迟队列机制,通过修改消息属性和定时任务实现精准延迟。 每种方案各有优缺点,需根据业务场景、数据规模和可靠性要求进行选择,其中定时任务和

2025-06-27 05:15:00 812

原创 你合并代码用 merge 还是用 rebase?

摘要: Git代码合并时,merge和rebase是两种常用方式。merge保留完整分支历史,适合需要清晰记录分支开发或解决复杂冲突的场景;rebase重写提交历史,使记录更线性整洁,适合个人分支同步或保持干净历史。具体选择需根据需求:保留历史用merge,追求简洁用rebase。两者冲突解决流程类似,均需手动修改后标记完成。实际开发中应灵活选用,兼顾效率与可维护性。(150字)

2025-06-26 05:15:00 775

原创 程序员必看:两个思想优化90%的代码

本文介绍了两个优化代码质量的核心原则:组合函数模式和抽象层次一致性原则(SLAP)。组合函数模式要求公有函数像执行步骤概要,细节封装在私有函数中,使代码更易读和维护。SLAP原则强调函数体内容应在同一抽象层次,避免高层抽象与实现细节混杂。通过代码示例展示了如何应用这些原则重构代码,包括寻找共性、合并重复代码和提升抽象层次等技巧。遵循这些原则能构建金字塔式的代码结构,使代码更简洁、模块化,提升可读性和可维护性。

2025-06-25 05:15:00 319

原创 MySQL 查询慢?项目接口性能优化全攻略(附方案对比)

MySQL查询优化全方案指南 当数据库性能下降时,本文提供了从查询优化到架构升级的完整解决方案:1)基础层优化SQL语句和索引;2)引入Redis等缓存减轻数据库压力;3)复杂查询迁移至Elasticsearch;4)大数据量采用分库分表;5)非核心查询异步化处理。针对不同场景给出了最佳实践组合,如用户详情采用Redis缓存+索引优化,搜索接口使用Elasticsearch+缓存等,全面提升系统响应速度和稳定性。

2025-06-24 05:15:00 397

原创 字节一面:20亿手机号存储选int还是string?varchar还是char?为什么?

摘要: 存储20亿手机号时,应选择String类型而非Int/Long,主要原因包括:1) Int无法存储11位号码,Long会丢失前导零;2) String能保留原始格式,支持国际号码和特殊符号;3) 便于模糊查询。数据库建议用VARCHAR(20)而非VARCHAR(11),以适应国际号、分机号等扩展场景,同时需注意字符集(utf8mb4)、唯一索引、数据清洗和隐私加密。面试考察点在于业务扩展性、数据容错性和全面思考能力。

2025-06-23 05:15:00 1283

原创 工作七年总结:这 7 种设计模式,解决 99% 的 Java 开发场景

Java开发必备的7种设计模式精要 摘要:本文总结了Java开发中最实用的7种设计模式及其典型应用场景。单例模式确保全局唯一实例;工厂模式封装对象创建逻辑;策略模式灵活切换算法;观察者模式实现发布订阅机制。其他三种未展示的模式包括适配器模式(兼容不同接口)、代理模式(控制访问)和模板方法模式(定义算法骨架)。这些模式能解决99%的常见开发问题,提升代码可维护性和扩展性。每种模式均配有典型代码示例,如枚举单例、支付策略等,可直接应用于实际项目开发。

2025-06-22 05:15:00 645

原创 农行1面:Java如何保证线程T1,T2,T3 顺序执行?

摘要 本文介绍了6种在Java中保证线程T1、T2、T3顺序执行的方法: join()方法:通过阻塞当前线程等待目标线程完成 CountDownLatch:使用计数器机制协调线程执行顺序 Semaphore:利用许可证控制线程访问顺序 单线程池:通过ExecutorService确保任务按提交顺序执行 synchronized:使用同步锁保证方法调用顺序 CompletableFuture:利用异步编程的链式调用特性 每种方法都提供了对应的代码示例,展示了如何实现线程的顺序执行控制。这些方案适用于不同场景,

2025-06-21 05:15:00 865

原创 面试官问我:你写代码会复用公共SQL么?

面试中被问及SQL复用实践时,我分享了三种具体实现方法:1) 使用MyBatis的<sql>标签封装公共字段片段,通过<include>引用;2) 结合动态SQL与Java工具类实现分页等通用逻辑复用;3) 通过常量类管理JDBC项目的SQL片段。这些方法能有效减少重复代码、提升可维护性和代码一致性。文章还强调了SQL复用遵循DRY原则的重要意义,为Java后端开发中的SQL管理提供了实用解决方案。

2025-06-20 05:15:00 406

原创 SpringBoot的5种签到打卡实现方案

SpringBoot签到打卡实现方案摘要 本文介绍了基于关系型数据库的签到系统实现方案。系统采用MySQL设计三张核心表:用户表、签到记录表和统计表,其中签到记录表包含用户ID、签到时间、类型等关键字段,并设置唯一约束防止重复签到。代码实现上使用MyBatis-Plus框架,包含实体类设计、Mapper层接口以及Service层的业务逻辑,如检查用户存在性、防止重复签到等。该方案结构清晰,适合中小型应用场景,提供了基础的签到功能实现框架。

2025-06-19 05:15:00 823

原创 服务重启了,如何保证线程池中的数据不丢失?

本文介绍了线程池的作用、原理及常见问题。线程池通过复用线程降低资源消耗,提高响应速度和管理性。线程池工作流程包括任务提交、处理和扩展回收。但使用不当可能导致OOM或数据丢失问题。为防止服务重启时线程池数据丢失,建议将任务数据持久化到数据库,状态标记为"待执行"。通过定时任务查询待执行任务并提交线程池处理,处理成功后更新状态。业务逻辑需做幂等设计,处理失败可自动重试,超过限制次数则标记为失败状态供人工处理。这种机制确保了服务重启时数据不丢失。

2025-06-18 05:15:00 1586

原创 别再背八股文了!大厂真实算法面试考的是这三大思维模式

大厂算法面试考察的核心是思维模式而非题海战术。本文揭示三大关键能力:1)问题抽象能力(将业务需求转化为数学模型);2)渐进式优化思维(从暴力解到最优解的分步优化);3)权衡意识(根据场景选择方案)。通过美团、字节、阿里等真实面试题,展示如何体现工程思维,并附赠大厂高频题分类表等资源。加入知识星球可获得更多实战指导,帮助突破"会做题却通不过面试"的困境。

2025-06-16 10:12:34 389

原创 Java中使用for而不是forEach遍历List的10大理由

摘要: 本文通过基准测试和实例分析,比较了Java中使用for循环与Stream.forEach遍历List的差异,总结了5大优选for循环的理由:1) for循环在小规模数据遍历中性能更优(万元素以内吞吐量提升12%-181%);2) for内存占用更少,GC耗时更短;3) 流程控制更灵活,支持break/continue/return;4) 变量访问不受final限制;5) 异常处理更方便。测试数据显示,for循环在10万元素遍历时性能略低5%,但多数业务场景下仍是更高效的选择。

2025-06-16 05:15:00 638

原创 面试官:GROUP BY和DISTINCT有什么区别?

摘要:MySQL中GROUP BY和DISTINCT都可以处理重复数据,但存在关键区别:DISTINCT用于单纯去重,返回唯一行;GROUP BY用于分组统计,常配合聚合函数使用。DISTINCT只能包含去重列,GROUP BY可展示多列及统计结果。性能方面,使用索引时二者相当,无索引时DISTINCT通常更快,因为早期MySQL版本中GROUP BY会默认排序导致额外开销。实际应用中应根据需求选择:简单去重用DISTINCT,复杂统计用GROUP BY。

2025-06-15 05:15:00 555

原创 15 种超赞的 MyBatis 写法

本文介绍了15种提升MyBatis数据库操作效率的实用技巧,包括:1)优化批量操作使用<foreach>标签;2)动态SQL构建方法;3)多条件分支查询实现;4)SQL语句优化策略;5)自动生成主键配置;6)注解方式简化CRUD;7)高级对象关系映射;8)MyBatis-Plus集成方案。这些方法涵盖了从基础到进阶的MyBatis使用场景,能显著提高开发效率和系统性能。文章通过具体代码示例展示了每种写法的实际应用,为开发者提供了可落地的技术方案。

2025-06-14 05:15:00 554

原创 ThreadLocal被问出了花?一篇彻底搞懂它的终极指南

ThreadLocal被问出了花?一篇彻底搞懂它的终极指南

2025-06-13 07:45:00 907

原创 你真的会用 Java 中的线程池吗?内含多个企业级线程池工具类封装实践

在 Java 多线程编程领域,线程池是一项极为重要的技术。它通过复用已创建的线程,避免频繁创建和销毁线程带来的开销,从而提升系统性能和资源利用率。然而,在实际企业级开发中,许多开发者对线程池的使用仅仅停留在基础层面,未能充分发挥其潜力。本文将深入探讨 Java 线程池的核心原理,并分享企业级线程池工具类的封装实践,帮助你掌握线程池的高级应用。

2025-06-12 19:26:32 912

原创 原理分析:信号量隔离 vs 线程池隔离!

《信号量隔离与线程池隔离的对比分析》 本文深入探讨了两种常见的并发控制策略:信号量隔离和线程池隔离。信号量隔离通过Semaphore限制对共享资源的并发访问数量,适用于数据库连接等场景;线程池隔离则通过为不同任务类型分配独立线程池,实现任务间的资源隔离。文章通过Java代码示例展示了两种隔离方式的具体实现,并对比了它们的特性、适用场景和风险。在实战演示中,作者将两种策略结合使用,分别控制数据库查询的并发量和隔离IO/CPU任务,为高并发系统中的资源管理提供了有效的解决方案。

2025-06-12 05:15:00 815

原创 农银一面:Filter、Interceptor、Spring AOP 的执行顺序

Filter、Interceptor和Spring AOP的执行顺序与区别 在日常开发中,Filter、Interceptor和AOP是三种常用的请求处理技术。Filter是Servlet规范的一部分,工作在Servlet容器层面;Interceptor是Spring MVC框架特有的,工作在Controller层面;AOP则提供更细粒度的切面编程能力。执行顺序为:Filter->Interceptor->AOP->Controller业务逻辑。三者在处理时机、作用范围和使用场景上各有不同

2025-06-11 05:15:00 1972

原创 面试官:你知道select * from users where id > 5 for update时会发生什么吗?

摘要:本文详细介绍了MySQL中的行锁机制,重点分析了在不同查询场景下的加锁行为。对于唯一索引,探讨了等值查询和范围查询的加锁规则;对于非唯一索引,解释了等值查询时的临键锁和间隙锁机制。文章还说明了如何通过performance_schema查看加锁情况,并强调无索引查询会导致表级锁,影响并发性能。通过具体例子,帮助读者深入理解MySQL在不同条件下的锁处理方式。

2025-06-10 05:15:00 966

day01_项目介绍和工程搭建.md

day01_项目介绍和工程搭建.md

2021-09-04

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除