自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

多多的博客

我还是很喜欢你,像风走了八万里,不问归期。

  • 博客(471)
  • 资源 (1)
  • 收藏
  • 关注

原创 百度测试开发复习 2月27日

摘要:本文涵盖了MySQL事务隔离级别、索引原理、Redis持久化与选课系统设计等核心技术点。MySQL部分详细解析了四种隔离级别特性及问题(脏读、不可重复读、幻读),InnoDB通过MVCC和间隙锁解决幻读问题。Redis介绍了RDB/AOF持久化机制及选课系统的四层高并发架构设计,重点说明Lua脚本保证原子性和MQ削峰策略。Java方面讲解了JVM内存结构和双亲委派类加载机制。最后给出链表操作、数组合并等算法题的解决方案。全文聚焦数据库事务控制、缓存系统设计和分布式架构实现等核心知识点。

2026-03-06 14:16:00 328 1

原创 百度测试开发复习 2月26日

本文摘要涵盖了计算机科学多个核心领域的知识点: 数据结构与算法:包括HashMap 1.8的"数组+链表+红黑树"结构、TCP四次挥手原理、反转链表实现、二分查找等。 数据库:详细解析了ACID特性、索引类型、范式理论、事务隔离级别和SQL查询优化技巧。 操作系统与网络:包含Linux常用命令(进程管理、文件编辑)、TCP/IP协议栈、HTTP/HTTPS区别及版本演进。 中间件:Redis的持久化机制(RDB/AOF)、过期策略和事务特性。 软件工程:Spring循环依赖解决方案、接口

2026-03-05 15:44:40 789

原创 程序设计工作室3月4日内部训练赛

这个损耗因为每个数都要和每一个其他数都算一遍且这两个数是一奇一偶产生的,一次的损耗为 0.5,损耗的次数为奇数的数量*偶数的数量。相邻出现两个数互质,我们就必须要操作其中一个数,最优解是操作后面那个数,这样能贪心满足后面那个数和它后面那个数不互质。不难想到优先换后面那个数 因为换后面那个数 3 比换前面那个数 2 更优,因为换 3 能影响到 3 后面那个数。首先我们想到的是,1 和任何数都互质,所以序列中的 1 我们都要进行操作。序列 2 3 ... 在这个序列的前两个数中我们必须要换一个数。

2026-03-04 19:42:28 301

原创 抽象队列同步器AQS 终极通关指南:从底层源码到面试话术

摘要:AQS(AbstractQueuedSynchronizer)是Java并发包的核心框架,通过两条主线实现高效同步:1)volatile state变量作为资源状态标志,通过CAS保证原子修改,子类通过重写tryAcquire/tryRelease定义同步语义;2)CLH变体队列管理线程调度,采用双向链表结构处理节点取消和唤醒,通过SIGNAL状态实现前驱唤醒后继的协作机制。AQS创新性地结合自旋优化与精准唤醒,在LockSupport基础上实现了高性能的锁获取/释放流程,其设计精髓体现在state的

2026-02-22 22:05:44 559

原创 MySQL三大日志 binglog(历史档案) redolog(草稿本/记账本) undolog(后悔药)

MySQL三大日志功能解析:binlog记录SQL操作逻辑,用于主从复制和数据恢复;redolog采用物理日志确保崩溃恢复能力,保障数据持久性;undolog保存逆向操作逻辑,支持事务回滚和MVCC。其中redolog与binlog通过两阶段提交机制保证数据一致性,避免主从不一致问题。三者各司其职:undolog处理事务原子性,redolog保障持久性,binlog实现数据归档复制,共同维护数据库的ACID特性与高可用性。

2026-02-07 02:57:12 391

原创 2026年最新 测试开发工程师相关 Linux相关知识点

本文摘要主要介绍Linux系统用户管理与文件目录结构。系统目录包括/bin(命令)、/boot(启动)、/etc(配置)等核心路径。重点讲解了用户权限管理命令chmod的使用,以及用户组在/etc/group文件中的管理机制。同时涵盖端口占用检查(netstat/lsof)和进程终止(kill)等系统命令,并强调Linux权限体系中用户权限>组权限>其他权限的优先级规则。

2026-02-04 23:05:17 408

原创 2月3日面试题整理 字节跳动后端开发相关

摘要:本文系统介绍了MySQL索引机制,包括B+树索引结构、聚集/二级索引的区别及查询优化原理。针对数据库性能问题,详细分析了慢查询原因、索引失效场景和EXPLAIN分析要点。深入探讨了事务隔离级别,特别是可重复读如何通过MVCC和临键锁解决幻读问题。在系统设计方面,解析了单例模式的双重检查实现、缓存三穿透问题及解决方案,以及推拉模式在Feed流中的应用场景和选择策略。最后通过带TTL的LRU算法实现,展示了数据结构在实际系统中的应用。全文涵盖数据库核心原理、高并发场景解决方案及典型系统设计模式。

2026-02-04 04:27:11 358

原创 2月1日面试题整理

本文摘要: Java锁机制:介绍了悲观锁(synchronized/ReentrantLock)和乐观锁(CAS)的区别,从重入性、公平性、独享/共享角度分析各类锁特性。 synchronized实现:通过锁升级机制(偏向锁→轻量级锁→重量级锁)和自适应自旋优化性能,使用ObjectMonitor维护锁状态。 MySQL相关:分布式锁通过唯一索引实现,乐观锁采用版本号机制;SQL优化遵循最左前缀原则,B+树相比B树在范围查询和IO效率上更优。 并发问题解决方案:快照读基于MVCC,当前读通过Next-Key

2026-02-03 00:56:06 283

原创 Mysql数据库相关 事务 MVCC与锁的爱恨情仇 锁的层次架构 InnoDB锁分析

摘要:本文深入解析了MySQL事务机制与并发控制。事务通过ACID特性保障数据一致性,其中隔离性通过MVCC和锁机制实现。MVCC利用版本链和ReadView实现无锁快照读,解决脏读和不可重复读问题。对于幻读问题,RR隔离级别下通过Next-Key Lock(结合记录锁和间隙锁)在"当前读"场景中防止新数据插入。文章详细剖析了InnoDB的行锁算法,包括Record Lock、Gap Lock和Next-Key Lock的加锁规则,并通过具体场景演示了不同索引类型下的锁行为差异。最后指出

2026-02-02 03:45:27 725

原创 程序设计工作室1月28日内部训练赛 题解

本文分析了Codeforces Round 1034 Div3的解题思路。A题通过模4条件判断胜负;B题采用贪心策略处理最优解;C题借鉴LeetCode接雨水问题解法;D题探讨Alice和Bob的游戏策略;E题通过mex值计算贡献区间并使用差分数组求解。各题均包含详细的算法分析和Java代码实现,展现了从问题分析到解决方案的完整思考过程。

2026-01-28 16:22:31 936

原创 1月26日面试题整理 测试开发部分

本文总结了Java后端开发面试常见问题及解答,涵盖编程实现、数据库、网络、操作系统等多个领域。主要内容包括:1)编程实现题如计算一年中的第几天和输出质数的多种解法;2)Linux常用命令如文件编辑和进程查看;3)MySQL索引、事务、锁机制等核心知识点;4)TCP四次挥手和HTTP请求过程;5)死锁解决方案;6)测试用例设计方法;7)Redis分布式锁实现及高并发解决方案;8)分布式系统核心理论。文章提供了大量代码示例和系统化的知识框架,适合面试准备和知识梳理。

2026-01-26 21:15:09 235

原创 计算机网络相关 讲一下rpc与传统http的区别

本文深入探讨了RPC与HTTP的本质区别及手写RPC框架的核心技术要点。RPC是一种设计思想,旨在使远程调用如同本地调用,而HTTP是传输协议。主要区别体现在:RPC基于TCP/HTTP2,使用二进制序列化,性能更高;HTTP基于HTTP1.1,采用文本格式,通用性更好。手写RPC框架需要解决三大核心问题:网络通信(Socket编程、TCP连接复用)、序列化(JSON/Protobuf等)、拆包粘包问题(通过长度前缀法解决)。文章以Java为例展示了RPC框架的基本实现,包括客户端代理和服务端监听机制,并指

2026-01-22 00:39:58 1207 1

原创 多线程与操作系统相关 手搓线程池

本文深入解析了线程池的实现原理,从七大核心参数到任务调度流程,完整呈现了一个高性能线程池的设计思路。核心要点包括:1.线程池四步调度策略(核心线程优先、队列缓冲、扩容非核心线程、拒绝策略);2.线程复用机制(核心线程常驻take()阻塞,非核心线程超时poll()销毁);3.并发安全设计(synchronized锁、AtomicInteger计数、volatile状态标记);4.优雅关闭流程(中断唤醒+状态标记)。通过Worker内部类的循环任务获取机制,实现了线程的高效复用,同时结合阻塞队列的不同操作方式

2026-01-22 00:34:58 569

原创 1月21日面试题整理 Java后端及自动化测试面试相关 偏简单

本文摘要:文章涵盖Java反射机制(原理、应用场景)、异常分类(运行时/非运行时异常)、MySQL索引与分区、Redis缓存一致性策略(延时双删、旁路缓存模式)、ES数据库原理(倒排索引)、项目开发流程(需求评审到上线)以及算法题解(最长回文子串)。重点技术包括:Spring框架的反射应用、缓存与数据库同步方案、索引优化注意事项、自动化测试框架(Pytest/RestAssured)等,并附LeetCode算法实现。核心聚焦分布式系统设计与性能优化。

2026-01-22 00:13:50 268

原创 程序设计工作室1月21日内部训练赛

摘要:本文包含多个编程题解,涉及不同算法技巧。A题通过记录首尾'#'位置求矩阵中心点;B题使用贪心算法调整数字序列;C题采用行列遍历寻找最优解;D题运用平方根和指数运算;E题模拟二进制字符串操作;F题证明全选数策略最优;G题利用组合数学和模运算。各题解均提供完整代码实现,涵盖基础数据结构、数学运算和算法优化技巧,适合编程竞赛练习参考。

2026-01-21 18:49:21 478

原创 图解Redis的分布式锁的历程 从单机到集群

本文系统介绍了分布式锁的演进路线和技术实现,重点分析了Redis分布式锁的解决方案。主要内容包括: 从单机锁到分布式锁的演进过程 单机Redis锁的实现及问题分析(锁过期、主从复制问题) Redlock算法详解(多节点投票、时钟漂移处理) 看门狗机制原理与Redisson实现(自动续期、可重入锁) 不同方案的对比(Redis锁、ZooKeeper、etcd) 最佳实践(key设计、异常处理、锁粒度控制) 核心结论:Redisson看门狗机制是生产环境首选方案,能解决锁过期问题;对一致性要求极高的场景建议使用

2026-01-21 14:31:16 551

原创 Java并发中的锁升级 偏向锁 轻量级锁升级成重量级锁

摘要:JDK1.6对synchronized进行了锁升级优化,包含无锁、偏向锁、轻量级锁和重量级锁四种状态。偏向锁适用于单线程场景,通过记录线程ID减少CAS操作;轻量级锁采用CAS和自旋应对线程交替执行;重量级锁则通过操作系统互斥量处理激烈竞争。升级过程不可逆(除GC外),通过对象头MarkWord存储锁状态。现代JDK默认禁用偏向锁,因其维护成本可能超过收益。锁升级机制平衡了响应时间和吞吐量,是JVM避免直接使用重量级锁的重要优化手段。

2026-01-21 14:27:02 1289

原创 2026年1月3日八股记录

本文摘要: MySQL引擎对比:InnoDB支持事务、行锁,MyISAM适合读密集型,Memory基于内存存储。 Redis特点:内存数据库,支持多种数据结构。Key过多会导致内存占用增加、操作变慢、持久化效率降低等问题。 异常处理:区分检查性/非检查性异常,推荐精确捕获、日志记录、使用try-with-resources和全局异常处理器。 MyBatis中#{}预编译防注入,${}字符串拼接需校验参数。 线程池核心参数:包括核心线程数、队列类型和四种拒绝策略(AbortPolicy默认抛出异常)。 Red

2026-01-03 14:46:18 863

原创 2025年终总结: 我逐渐成长的勇气与自己和解的底气

摘要:本文回顾了作者2025年的成长历程,从年初投递字节失败到中厂实习经历,展现了大学生活的多元面貌。作者经历了ACM竞赛的团队拼搏、独自北漂实习的艰辛(包括20小时硬座赴京),也经历了返校后的迷茫期。这一年既有技术能力的提升,也有对人生方向的思考,最终在放松与复健中找到平衡。文章真实记录了大学生在学业、竞赛、实习之间的挣扎与成长,展现了从莽撞到成熟的心路历程。

2025-12-23 15:51:48 621

原创 vjudge使用指南

摘要:设置Codeforces账号需在个人主页右键检查,找到JSESSIONID的COOKIE并复制。类似方法适用于牛客和洛谷等平台:进入主页后通过浏览器检查获取指定名称的COOKIE。若遇问题,可返回原平台提交。主要步骤为获取对应平台的COOKIE信息完成设置。

2025-12-07 12:58:45 503

原创 架构分析 从消息队列发布订阅模型到Spring监视器

发布订阅模式详解:解耦通信的优雅实现 发布订阅模式是一种消息通信范式,通过消息代理实现发布者与订阅者的完全解耦。核心组件包括发布者、订阅者和消息代理(Event Bus/Broker),发布者将消息发送到特定主题,订阅者只需关注感兴趣的主题,无需知道消息来源。相比观察者模式,发布订阅具有完全解耦、支持中间件、可跨应用等优势。 JavaScript实现方案展示了基础EventBus类(支持订阅/发布/取消订阅)和增强版本(支持命名空间、异步处理)。典型应用场景包括Vue组件通信、Node.js事件处理和消息队

2025-11-29 21:10:45 431

原创 Threadlocal深度解析 为什么key是弱引用 value是强引用

本文深入剖析了Java中ThreadLocal的底层机制与内存管理问题。ThreadLocal通过ThreadLocalMap实现线程隔离,其中Key采用弱引用确保ThreadLocal对象可被回收,而Value保持强引用以保证数据可靠性。文章详细分析了Key弱引用的必要性、Value强引用的原因,并揭示了由此可能引发的内存泄漏问题:当ThreadLocal对象被回收后,Entry中Value的强引用会导致大对象无法回收。虽然ThreadLocal提供了自清理机制,但在线程池等场景下仍可能泄漏。最佳实践包括

2025-11-29 21:00:50 303

原创 HashMap1.7扩容的时候采用头插法为什么会死循环

摘要:本文深入解析HashMap扩容机制及JDK1.7死循环问题。JDK1.8优化扩容采用位运算判断元素新位置(原地或移动旧容量距离),提升效率。重点剖析JDK1.7多线程扩容时头插法导致链表逆序,在并发操作下形成环形链表(如A→B→A)的死循环问题。JDK1.8改用尾插法保持链表顺序一致解决该问题,但HashMap仍非线程安全,建议多线程环境使用ConcurrentHashMap。全文从扩容原理到问题重现,完整呈现了HashMap核心机制及其演进。(150字)

2025-11-23 20:11:54 694

原创 Java复习 集合底层原理 并发编程相关 2025年11月23日

本文深入解析Java核心知识点:HashMap采用"数组+链表+红黑树"结构,JDK1.8优化了哈希计算和扩容逻辑;ConcurrentHashMap在JDK1.8通过CAS+Synchronized+Volatile实现细粒度锁。单例模式推荐枚举实现,兼具线程安全和防反射攻击特性。ThreadLocal存在内存泄露风险,需及时调用remove()方法。hashCode()与equals()必须保持一致,确保哈希集合正确工作。volatile关键字保证可见性和有序性,但不保证原子性,适用

2025-11-23 20:07:26 727

原创 Java复习 操作系统原理 计算机网络相关 2025年11月23日

本文摘要: 文件读写机制:内核通过页缓存管理文件I/O,减少磁盘访问。系统调用如fsync()可强制刷盘确保数据持久性。 TCP编程要点: 服务端流程:socket→bind→listen→accept 客户端流程:socket→connect→read/write→close 服务端挂起时客户端连接可能成功但无法通信 TCP流量控制:当接收方缓冲区满时,通过窗口机制暂停发送,而非直接丢弃数据。 LRU缓存实现:结合哈希表(O(1)查找)和双向链表(O(1)插入/删除)实现高效缓存淘汰。 链表合并算法: 方

2025-11-23 19:53:52 689

原创 分布式中间件 消息队列Rocketmq 详解

摘要:本文详细介绍了RocketMQ消息中间件的核心概念和使用方式。主要内容包括:消息发送的三种模式(同步、异步、单向)、消息接收的两种方式(拉取和推送)、以及多种消息类型(顺序、广播、集群、延迟等)的实现方法。重点解析了事务消息的两阶段提交机制,并提供了完整代码示例。同时探讨了消息可靠性保障措施,包括生产阶段的重试机制、存储阶段的持久化方案(CommitLog、ConsumeQueue、IndexFile)以及消费阶段的ACK确认。最后,阐述了通过MessageQueueSelector和MessageL

2025-11-17 19:45:34 1552 1

原创 一个有 IP 的服务端监听了某个端口,那么他的 TCP 最大链接数是多少

本文从网络通信的基础概念出发,详细讲解了TCP/IP协议栈中端口、IP地址和TCP协议的作用。通过流程图直观展示了客户端与服务端建立TCP连接的完整过程,包括IP寻址、三次握手、数据传输和四次挥手断开连接。在题目解法部分,指出唯一确定TCP连接需要四个参数(源/目标地址和端口),并计算出理论最大连接数。最后说明实际应用中会受到操作系统文件描述符和内存等限制,无法达到理论最大值。全文系统阐述了网络通信的核心机制和实际应用中的限制因素。

2025-11-12 18:56:04 400

原创 Java复习之范型相关 类型擦除

摘要:Java泛型通过类型参数T实现通用类定义,如Box<T>可存储任意类型数据。编译时进行严格类型检查,运行时通过类型擦除移除泛型信息。List<?>表示未知类型,允许接收任何泛型List但限制修改操作;List<Object>明确允许所有对象但仅接受List<Object>。通配符<? extends T>和<? super T>分别定义上界和下界,编译时验证类型安全性,擦除后通过强制转型在运行时体现约束。泛型的核心价值在于编译时的

2025-11-11 20:38:41 819

原创 分布式系统中的CAP理论和BASE理论

摘要:CAP理论是分布式系统的核心理论,指出在网络分区(P)情况下,系统只能在一致性(C)和可用性(A)中选择其一。主流注册中心如Zookeeper(CP)、Eureka(AP)和Nacos(CP/AP)体现了不同选择。BASE理论则是对AP方案的补充,强调基本可用(BA)、软状态(S)和最终一致性(E)。实现最终一致性的方法包括读时修复、写时修复和异步修复。在实际设计中,应优先考虑系统的拓展性和可用性,根据业务需求权衡C和A。

2025-11-10 19:24:00 456

原创 牛客周赛 Round 117 ABCDE 题解

这篇代码合集包含了5个编程竞赛题解。A题通过简单判断输入方案输出对应结果;B题寻找菊花图的中心点;C题计算两种不同排列矩阵的总贡献值;D题通过调整树的连接方式将其转变为链状结构;E题使用BFS寻找马走日的最短路径,并处理多余步数的情况。每个题解都包含了详细的分析思路和对应的Java实现代码,展示了不同算法问题的解决方法和实现技巧。

2025-11-10 09:46:51 473

原创 Java复习事务相关 mysql事务隔离级别 spring事务的传播机制 2025年11月9日

本文系统介绍了MySQL事务隔离级别和Spring事务传播机制。MySQL提供四种隔离级别:读未提交、读已提交(解决脏读)、可重复读(解决不可重复读,InnoDB默认)、可串行化(解决幻读)。Spring事务传播机制定义了多个事务方法相互调用时的处理方式,重点讲解了REQUIRED(默认)和REQUIRES_NEW机制,并通过电商下单和用户注册案例说明如何根据业务需求选择合适的事务传播策略。选择时应考虑业务方法间的依赖关系,判断是否需要事务合并、独立或嵌套执行。

2025-11-09 18:50:02 912

原创 git本地分支创建

本文整理了常用Git命令及其说明,主要包括:仓库初始化(git init)、远程仓库关联(git remote add)、代码暂存与提交(git add/commit)、代码推送(git push)、分支创建与切换(git branch/checkout)等基础操作。同时详细介绍了本地创建并推送新分支到远程仓库的完整流程:先创建分支(git branch),再切换分支(git checkout),最后推送并关联远程分支(git push -u)。这些命令能有效支持团队协作开发,通过分支管理保障主分支稳定性。

2025-11-08 11:46:25 359

原创 maven常用的命令

摘要:本文整理了Maven常用命令,分为6大类:1)基础构建与清理命令(clean/compile/package等);2)依赖管理命令(查看依赖树、分析依赖等);3)生命周期与阶段说明;4)测试相关命令(指定测试类/方法);5)项目信息与辅助命令(查看POM/创建项目);6)其他实用命令(批量修改版本号等)。文中提供了组合命令示例和使用建议,帮助开发者高效完成项目构建、测试和部署工作。

2025-11-08 11:45:42 659

原创 算法与数据结构 线段树模版 Java 求和 求积

本文提供了四种线段树模板实现:1. 基础线段树(求和版):支持区间求和、区间更新和单点更新操作,使用懒加载优化区间更新效率;2. 线段树(求积版):支持区间求积和单点更新操作;3. 线段树(求积取模版):在求积基础上增加模运算功能,适用于大数运算场景。所有实现均采用递归方式构建树结构,支持区间查询和单点更新,通过4*n的数组大小确保存储空间足够。模板设计灵活,核心操作如合并函数可根据需求修改为求和、求积或其他操作。

2025-11-08 11:40:13 281

原创 牛客周赛 Round 114 Java题解

本文包含六个编程问题的解答方案。A题通过枚举实现数字查找;B题暴力求解满足条件的好字符串子串;C题分析字符串交换的最少操作次数;D题使用动态规划解决数组选数问题;E题通过构造特定条件数组满足要求;F题采用构造法生成符合特定规则的数字。各题均提供完整的Java实现代码,涵盖输入处理、算法逻辑和结果输出。

2025-11-08 11:38:39 484

原创 Java复习 多线程基础篇 2025年11月7日

本文介绍了线程生命周期中的5种状态(新建、就绪、运行、阻塞、终止)及其转换方式。详细解析了线程常用方法(start/run, wait/sleep, notify等)的特点与区别,并比较了三种创建线程的方式(继承Thread、实现Runnable、Callable+FutureTask)。重点讲解了线程池的概念、核心参数(线程数、存活时间等)和执行流程,说明其通过复用线程提高效率的原理。文章为理解线程管理和线程池实现提供了系统性的技术参考。

2025-11-08 11:37:44 365

原创 结合源码分析MyBatis的缓存机制

本文分析了MyBatis多级缓存机制。一级缓存是SqlSession级别的本地缓存,基于HashMap实现,生命周期与SqlSession一致;二级缓存可在多个SqlSession间共享,通过CachingExecutor实现。配置时需在settings中开启相关选项,一级缓存容易导致脏数据,二级缓存在多表查询时也存在数据一致性问题,特别是在分布式环境下更推荐使用专门的分布式缓存方案。

2025-10-31 18:31:19 351

原创 Spring Bean的生命周期 第二次思考

本文详细解析了Spring框架中Bean的生命周期全过程,主要包括七个关键步骤:1)加载配置源并注册为BeanDefinition;2)实例化Bean并填充属性;3)依赖注入和循环依赖处理;4)初始化前处理(Aware接口和BeanPostProcessor增强);5)执行初始化方法(@PostConstruct和InitializingBean);6)初始化后处理(如AOP代理创建);7)销毁阶段执行销毁逻辑。每个阶段都通过特定接口或注解实现,完整展现了Spring容器管理Bean的全过程。

2025-10-27 20:37:00 674

原创 Java面试八股 CAP理论详解

CAP理论指出分布式系统无法同时满足一致性(C)、可用性(A)和分区容错性(P)三个特性,必须做出取舍。CP系统优先保证数据一致性,如银行交易、医疗系统;AP系统则侧重高可用性,如社交推送、电商列表。实际应用中,应根据业务需求明确优先级:金融等强一致性场景选择CP,互联网高并发场景选择AP。通过决策流程图可帮助选型,关键是要区分数据是否允许延迟、能否接受服务不可用等核心矛盾。理论指导我们合理选择中间件,如MySQL(CP)、Redis(AP)等,避免技术滥用。

2025-10-20 21:41:22 1096

原创 面试八股 快速讲解 集合类中的 fail-fast和fail-safe

摘要: Fail-fast机制在集合操作中会立即检测并发修改(如ArrayList通过比较expectedModCount和modCount),不一致则抛出异常。而Fail-safe机制(如CopyOnWriteArrayList)通过复制副本实现安全遍历,写操作加锁更新数据,但读操作可能读到旧数据,实现最终一致性而非强一致性。示例展示了两种机制的应用差异及并发场景下的处理方式。

2025-10-20 21:31:05 327

navicat v16+v17

navicat v16+v17

2025-03-04

空空如也

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

TA关注的人

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