自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 收藏
  • 关注

原创 34.索引 + 不等号 + 范围查询:怎么设计才能不被优化器“背刺”?

你可以像视频里一样收口:简单总结,binlog 通过复制、恢复、同步这三块能力,保证了数据的高可用、不丢失、可追溯是 MySQL 里非常核心的组件之一。已按你“线程协同”那篇的结构和深度,分别整理了:MySQL 联合索引 + 不等号 + 范围查询 + 覆盖索引多线程有序执行的 9 大方案MySQL binlog 的作用和类比HashMap 7 个地狱级问题都偏向“面试场景可直接输出”的稿子,你可以按平台(小红书/公众号)再微调长度和口语化程度。

2025-11-23 23:14:56 541

原创 33.大批量任务的断点续跑:从“全量重跑”到“精确补偿”

在离线任务、批处理、账务结算等场景中,“任务中途宕机了,从哪儿接着跑?”是绕不过去的问题。如果每次都从头开始重跑,不但浪费资源,还可能引发业务超时。真正的考点是:如何在,做到?

2025-11-23 22:00:12 547

原创 31.长耗时任务的服务交互:从同步阻塞到异步解耦

假设有两个服务 A 和 B,B 负责执行一个耗时很长的任务(例如大文件转码、大批量报表生成),A 需要调用 B 并拿到最终结果。如果 A 采用同步 RPC 一路等待,连接长期占用、超时重试等问题会接踵而至。真正的考点是:如何在的前提下,让整个链路?

2025-11-23 21:59:29 640

原创 30.分布式事务:本地事务 + RPC 的“隐形炸弹”

只要系统被拆成多个微服务,“分布式事务”就绕不过去。很多同学只记住了真正的坑,往往就埋在“本地事务里嵌套 RPC 调用”这一行代码里。

2025-11-23 21:58:30 702

原创 29.线程协同:T3 如何优雅地等到 T1/T2 执行完?

面试高频问题:T1、T2 并行执行,要求 T3 必须在 T1、T2 都完成后再执行。。

2025-11-23 21:54:46 349

原创 28.Java String

String的不可变性是Java语言设计的精髓之一。从表面看,它只是一个简单的字符串类;从深处看,它涉及内存模型、性能优化、线程安全、设计模式等多个层面。理解String的不可变性,不仅能够应对面试挑战,更能提升对Java语言整体设计的认知水平。核心要点回顾不可变性的实现:final类 + final数char组 + 无修改方法三大价值:安全 + 性能 + 线程安全内存模型:字符串常量池机制及位置变迁比较操作:==比较地址,equals比较内容(但需重写)实践原则。

2025-11-10 00:02:37 812

原创 27.短链系统

在现代互联网应用中,短链系统扮演着至关重要的角色。从美团月付账单提醒到抖音视频分享,从电商促销链接到社交媒体传播,短链不仅提升了链接的可读性和传播性,更是现代互联网基础设施的重要组成部分。短链系统的核心,其实非常纯粹,它本质上就是一个“映射”服务。可以把它想象成一个网络世界的“通讯录”或“字典”。“存键”:建立 长URL -> 短URL 的映射关系。“查值”:根据 短URL,快速找到并重定向到 长URL。

2025-11-09 23:58:57 994

原创 26.分布式系统链路追踪

这样,无论请求流经多少服务,只需要通过这个Trace ID,我们就可以在日志平台中轻松地聚合出完整的调用链。想象一下这个在电商大促期间频繁发生的场景:用户投诉"下单失败",但你的系统由数十个微服务构成(网关、用户、商品、订单、库存、风控、促销……这个过程效率极低,犹如大海捞针,定位一个复杂问题可能需要数小时甚至数天,严重影响系统稳定性和用户体验。当系统复杂到一定程度,投入大量人力去维护和扩展一个自研的监控系统是得不偿失的。之后,这个线程内打印的所有日志,都会自动带上这张便签的信息。

2025-11-09 23:31:42 787

原创 25.Spring Boot 启动流程深度解析:从run()到自动配置

Spring Boot作为现代Java开发的事实标准,其"约定优于配置"的设计理念大大简化了应用开发。但当我们运行时,底层究竟发生了什么?本文将深入剖析Spring Boot的启动流程,揭示自动配置的奥秘。通过load()注解扫描(@ComponentScan)导入配置类(@Import)加载XML配置注册主配置类为BeanDefinition@OverrideSystem.out.println("=== 自定义初始化器执行 ===");

2025-11-05 23:58:13 1035 1

原创 24.系统日志查看方法与实战

多层次定位:客户端 → 服务端 → 数据库工具熟练度greptailawksed链路追踪思维:通过traceId串联分布式系统统计分析能力:不仅看单条日志,还要做聚合分析问题定位流程:时间点 → 关键字 → 上下文 → 根因面试金句“日志是系统的黑匣子,能看懂日志的测试,才能真正理解系统的运行状态,这是从功能测试成长为技术测试的关键能力。

2025-11-05 23:49:31 587

原创 23.Linux常用命令分类指南:测试开发实战手册

场景化记忆:按照实际工作流程分类组合使用:管道符、重定向、后台运行安全意识rm -rf慎用,操作前先确认持续实践:多动手操作,积累肌肉记忆记住:面试官不是考你背命令,而是考你能否在实际工作中熟练运用。

2025-11-04 00:23:18 891

原创 22.线程池任务堆积处理:从应急到根治的完整方案

理解本质:生产速度 > 消费速度定位瓶颈:是线程数不够,还是下游慢系统思维:全链路优化,不只看线程池持续优化:监控、告警、压测、代码优化形成闭环这才是面试官想听到的完整、深入、工程化的答案。

2025-11-04 00:22:04 728

原创 21.MySQL锁机制深度解析:从SQL看懂并发控制

索引决定锁粒度:有索引锁行,无索引锁表隔离级别决定gap lock:RR有gap,RC无gap锁的位置:二级索引 + 聚簇索引双重加锁优化思路:建索引、降隔离级别、乐观锁、缓存面试时,不仅要说出加什么锁,更要说清楚为什么加、影响是什么、如何优化。

2025-11-03 00:49:10 908

原创 20. 100G缓存系统设计:少读多写场景的工程实践

写优化:顺序写WAL + 内存MemTable + 异步刷盘空间优化:Compaction合并,减少冗余读优化:布隆过滤器 + 块缓存 + 热点数据分层可靠性:WAL保证持久化,定期备份保证数据安全选择LSM-Tree架构而非B+Tree,本质是针对写多读少场景做的取舍,用读性能换取写性能和空间效率。

2025-11-03 00:48:37 743

原创 19.大数据集合找重复元素:外存算法实战

两个超大集合A和B,各自内部无重复,但存在交集,因体量过大无法全部加载到内存。如何高效找出重复元素?

2025-11-03 00:47:58 226

原创 18.Java高频面试程序分析题

索引(Index)是帮助MySQL高效获取数据的数据结构。类比图书馆的目录,可以快速定位到需要的书籍位置。定义:查询的列都包含在索引中,不需要回表查询。-- 索引:INDEX idx_item_qty (item_no, stock_qty)-- ✅ 覆盖索引(不需要回表)-- ❌ 非覆盖索引(需要回表)-- warehouse_no不在索引中,需要回表-- 查询条件:-- ❌ 错误设计-- 问题:create_date是范围查询,后面的status_code无法使用索引。

2025-11-03 00:25:31 1023

原创 17.MyBatis动态SQL语法整理

用于判断条件,如果条件成立则拼接SQL片段。项目实例1.1 判断字符串是否为空1.2 判断数组是否有值1.3 判断集合是否有值1.4 多条件判断1.5 在 UPDATE 中使用 if注意事项字符串判断通常需要同时判断 和 数组使用 属性集合使用 方法可以使用 、 进行逻辑运算if标签中不会自动去除拼接的逗号,需要配合set或trim使用2. foreach 标签基本语法用于遍历集合或数组,生成重复的SQL片段(如IN子句)。属性说明collectio

2025-11-03 00:05:00 776

原创 16.红包雨抗压场景设计

/ 性能测试标准// 单节点目标性能// 0.1%// 集群整体目标本地内存计算是红包雨场景的最优解,彻底解决了传统架构的网络瓶颈问题。

2025-10-28 01:08:12 412

原创 15.分布式事务

业务导向:根据业务特性选择合适方案渐进式:从简单方案开始,逐步复杂化可观测:完善的监控和日志体系容错设计:假设任何环节都可能失败简单场景:2PC足够,优先使用数据库原生支持复杂业务:TCC提供更好的灵活性和性能平衡选择:3PC在一致性和可用性间折中关键成功因素深入理解业务需求合理的技术选型完善的异常处理全面的监控体系分布式事务不仅是技术问题,更是业务问题。最好的方案往往是最适合业务场景的方案,而不是技术最先进的方案。

2025-10-28 01:05:53 762

原创 14.MyBatis执行流程

src/├── main/│ │ ├── entity/ # 实体类│ │ ├── mapper/ # Mapper接口│ │ └── service/ # 业务层│ ├── mybatis-config.xml # 主配置│ └── com/example/mapper/ # Mapper XML文件初始化建工厂:解析配置,构建SqlSessionFactory运行时走代理:通过动态代理执行Mapper方法核心靠Executor。

2025-10-28 01:04:48 746

原创 13.慢接口优化

慢接口优化是一个系统工程,需结合业务场景综合运用预计算、并行、异步、存储选型等多种策略。核心思路是减少实时计算、提升资源利用率、匹配存储引擎。通过本文的实战策略,可有效应对高并发场景,打造高性能接口。

2025-10-28 01:03:47 859

原创 12.MySQL深度分页优化:从原理到实战

解决深度分页的核心思路是。

2025-10-21 00:32:14 882

原创 11.cpu100%问题排查

类别关键环节具体内容数据库服务器常见原因1. 数据库QPS/TPS整体提升,超出承载能力2. 新增1个或多个慢查询SQL,占用大量CPU3. 上述两种原因共同作用排查思路1. 借助阿里云、腾讯云等云厂商自带的数据库监控工具2. 若怀疑QPS/TPS问题:对比监控中当前与正常时段的QPS、TPS数据,判断是否飙高3. 若怀疑慢查询SQL:查看监控中的慢查询列表,确认是否有新增、执行时间超长或执行次数过多的SQL解决方案。

2025-10-21 00:31:07 608

原创 10.接口幂等

在分布式系统中,由于网络抖动重试前端重复提交或多点线程并发等原因,完全相同的请求可能会在短时间内多次到达服务端。确保对于同一业务请求的多次调用,其对系统资源状态造成的影响,与仅调用一次完全一致。实现的关键在于,为每个请求赋予一个全局唯一的业务标识(如订单号、支付流水号或幂等Token),并在处理流程中基于该标识进行判重和协调。

2025-10-21 00:26:37 653

原创 9.序列化

long idLong idJDK 序列化依赖,字段类型变更(基本类型→包装类型)导致类结构变化,触发序列化 ID 变化。longLong📌即使显式声明,修改字段类型(如long→Long)仍会导致二进制数据不兼容!longLong。

2025-10-21 00:24:31 357

原创 8.MySQL规范、慢查询优化、锁、事务特性

CHAR(11)NOT NULLuk_字段名idx_字段名utf8mb4utf8InnoDBMyISAMuser_ididuser_base。

2025-10-20 23:39:52 515

原创 7.缓存与数据库一致性

方案一致性保证性能影响实现复杂度适用场景分布式锁强一致性严重(串行化)中等极少数对一致性0容忍,且并发量不大的场景弱一致性低低大多数读多写少的业务,能容忍短暂不一致延迟双删极高一致性极低(短暂延迟)中等对一致性要求较高,且能接受写操作轻微延迟的场景MQ异步最终一致性极低(异步)高高并发、高可用的分布式系统,追求整体性能和解耦架构设计从来不是寻找完美的“银弹”,而是在各种约束条件下做出最合理的权衡。

2025-10-09 00:31:38 982

原创 6.Java代码如何真正运行?

java源码->字节码->字节码加载到内存的方法区->再到执行引擎的混合翻译为系统指令。

2025-10-09 00:13:57 978

原创 4.Java泛型

实践要点效果使用建议类型安全编译期检查类型,避免ClassCastException始终使用泛型集合消除转换减少冗余代码,提升可读性优先使用泛型声明代码复用一套逻辑处理多种数据类型合理使用泛型类和泛型方法有界类型约束类型范围,安全调用特定方法需要类型约束时使用extends类型擦除JVM兼容性保障避免运行时类型判断黄金法则现代Java开发中始终使用泛型避免使用原始类型(Raw Type)优先选择而非原生List复杂场景考虑有界类型和通配符。

2025-10-09 00:07:47 378

原创 5.AOP-提取业务ID的三种精妙方案

特性方案一 (注解+反射)方案二 (转换器模式)方案三业务侵入性低(仅加注解)无低(仅加注解)灵活性中等中等极高性能较低高较高学习成本低低高代码组织逻辑集中,但复杂逻辑分散,但清晰逻辑集中,表达式灵活选择建议如果追求极致的代码解耦和零业务侵入,且不介意反射带来的微小性能开销,方案一是不错的选择。如果项目追求高性能和清晰的代码结构,且不介意为每个DTO编写一个Extractor,方案二(视频中的方案)是最佳实践。

2025-10-08 23:33:45 615

原创 3.基于动态代理的AOP

/ 实际上调用的是 MyInvocation.proceed()当拦截器调用 invocation.proceed()时,实际上是在调用同一个 MyInvocation实例的 proceed()方法。拦截器1调用 invocation.proceed()(即递归调用 MyInvocation.proceed())target.getClass().getClassLoader(), // 1. 类加载器。target.getClass().getInterfaces(), // 2. 接口数组。

2025-10-05 00:50:01 734

原创 2.Spring 事务

因此,在多线程环境下,Spring 的声明式事务会失效,即新线程中的操作不会被包含在原有的事务中。private方法,只会在当前对象中的其他方法中调用,也就是会进行对象的自调用,这种情况是用this调用的,并不会走到代理对象,而@Transactional是基于动态代理实现的,所以代理会失效。具体做法:比如原本一个处理订单的长事务,可以拆分为:第一个短事务保存订单基础信息,第二个短事务更新支付结果,第三个短事务更新物流信息。步骤三:如果外部操作失败,由于核心数据已经在独立事务中提交,不会丢失。

2025-09-28 00:09:47 466

原创 1.Lambda+stream流

基础知识熟背篇

2025-09-26 00:58:21 917 1

空空如也

空空如也

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

TA关注的人

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