- 博客(151)
- 收藏
- 关注
原创 Java集合和数据结构-Java包装类与泛型深度解析
本文系统梳理Java包装类与泛型核心知识点。包装类将8种基本类型封装为对象,通过自动装箱/拆箱机制实现转换,需注意缓存范围(-128~127)和空指针风险。泛型通过类型参数化实现代码复用与类型安全,强调"类在后方法前"的声明规则。两者共同构建Java类型系统的关键桥梁:包装类连接基本类型与对象世界,泛型平衡动态灵活与静态安全。掌握这些机制对避免生产环境Bug和优化代码质量至关重要。
2026-02-28 01:05:58
986
4
原创 SpringCloud——SkyWalking全链路监控源码深度解析
SkyWalking全链路监控源码解析(150字摘要) SkyWalking通过JavaAgent实现无侵入监控: 数据采集:Agent增强Tomcat/Feign/JDBC等组件,创建EntrySpan(入口请求)、LocalSpan(业务方法)、ExitSpan(跨服务调用),通过ContextManager管理Trace上下文; 数据处理:TraceSegment异步上报OAP,解析生成服务拓扑、指标(响应时间/成功率)及原始Trace; 关联分析:日志通过TraceID关联,告警基于滑动窗口触发,P
2026-07-29 10:32:24
627
原创 SpringCloud——SkyWalking告警规则触发WebHook全解析
本文深入解析了SkyWalking 10.1.0的告警触发机制,重点揭示了其基于时间窗口的告警判断逻辑。核心内容包括:告警针对分钟级聚合指标而非单条Trace;通过滑动时间窗口(period参数)和多实体独立判断实现精准告警;每10秒调度但每分钟第15秒后执行检查以避免误报;静默期(silence-period)防止告警风暴;WebHook接收JSON数组格式的告警消息。文章还解答了常见疑问,如为何一次慢SQL会触发多个告警、为何停止请求后仍会收到告警等,最后提供了面试回答模板和关键记忆点。
2026-07-29 10:24:27
377
原创 SpringCloud——深入解析SkyWalking源码:TraceProfiling追踪慢方法
本文总结了SkyWalking TraceProfiling的核心原理和工作流程。TraceProfiling是一种针对指定Endpoint的动态线程采样分析,通过周期性采集请求线程栈来定位代码级性能瓶颈。文章详细解析了从任务创建到结果分析的全链路过程,包括:7个关键参数的作用、Agent-OAP交互机制、匹配规则、采样触发条件(MinDurationThreshold)、线程栈采集方式、数据上传存储逻辑,以及Duration/SelfDuration/DumpCount三项核心指标的计算原理和解读方法。特
2026-07-29 10:21:33
495
原创 SpringCloud——SkyWalking源码解析:TraceSegment异步上报OAP全流程
本文详细剖析了SkyWalking中TraceSegment异步上报到OAP的完整流程。核心机制包括:业务线程仅将完成的TraceSegment快速写入内存缓冲区(DataCarrier),由独立消费者线程执行序列化转换和gRPC网络发送,避免阻塞业务请求。当缓冲区满或OAP不可用时,系统会丢弃部分Trace数据而非阻塞业务,体现了监控系统"可观测性不反向阻塞核心业务"的设计原则。文章从Span结束触发上报开始,逐步解析了内存缓冲、消费者处理、gRPC连接管理、协议转换等关键环节,并分析
2026-07-28 21:53:10
145
原创 SpringCloud——SkyWalking源码解析:ThreadLocal与Span栈机制
本文深入解析了SkyWalking中ContextManager如何通过ThreadLocal和Span栈机制实现分布式链路追踪。核心机制分为三层:1. ContextManager作为统一入口,通过ThreadLocal隔离不同线程的追踪上下文;2. 每个线程维护独立的TracingContext,内含TraceSegment和ActiveSpanStack(LinkedList实现);3. Span栈严格遵循方法调用顺序,通过peek/push/pop操作维护父子关系。关键设计点包括:线程首次创建Spa
2026-07-28 21:36:24
202
原创 Spring Cloud——Tomcat插件解密:SkyWalking如何创建EntrySpan
摘要:本文分析了SkyWalking如何通过Tomcat插件监控HTTP请求。当请求进入Tomcat时,StandardHostValve.invoke()方法被拦截,TomcatInvokeInterceptor会创建EntrySpan。拦截器从请求头读取Trace上下文(ContextCarrier),生成操作名称(如GET:/order/query/1),并设置URL、方法、组件类型等Span属性。业务执行期间,其他组件(如JDBC)的Span会自动成为EntrySpan的子节点。请求完成后,拦截器记
2026-07-28 14:15:09
377
原创 Spring Cloud——SkyWalking源码解析:从javaagent到premain
本文摘要:文章深入解析了SkyWalking Java Agent的启动机制,重点阐述了-javaagent参数与普通Maven依赖的本质区别。核心流程包括:1)通过premain()入口在main()前启动;2)加载配置和插件规则;3)利用ByteBuddy安装ClassTransformer实现字节码增强;4)启动Agent后台服务。特别强调了Instrumentation接口如何实现无侵入式监控,以及插件机制如何精准增强目标类(如Tomcat、JDBC等)而不影响所有类。最后通过order-servi
2026-07-28 13:53:30
597
原创 SpringCloud——SkyWalking全链路监控实战与问题剖析
本文系统总结了SkyWalking的核心功能和应用实践。主要内容包括:1. SkyWalking解决了微服务架构下的监控痛点,提供链路追踪、性能分析、日志关联和自动告警能力;2. 实践部署了包含Agent、OAP、UI和告警服务的完整架构,关键端口包括11800(上报)、12800(查询)和8080(UI);3. 重点分析了Trace-Segment-Span层级关系、无侵入埋点原理、数据库连接慢与SQL执行慢的区别;4. 实现了自定义Trace标记、性能剖析、日志TraceID关联和邮件告警闭环;5. 总
2026-07-28 13:52:03
499
原创 SpringCloud——Seata四大事务模式对比与选型指南
分布式事务模式选择指南 Seata提供AT、XA、TCC、Saga四种模式,适用于不同场景: AT:基于SQL自动补偿,低侵入,适合普通数据库业务(如订单、库存),保证最终一致。 XA:依赖数据库原生XA协议,强一致但锁持有时间长,适合金融、账务等低并发强一致场景。 TCC:需业务实现Try/Confirm/Cancel,高侵入但支持高并发资源预留(如秒杀、冻结资金)。 Saga:长流程事务,通过补偿操作修正状态,适合跨系统、外部接口的最终一致场景(如旅行预订)。 选择建议:数据库为主选AT,强一致选XA,
2026-07-26 16:52:34
315
原创 Seata AT模式:面试与项目答辩全解析
Seata AT模式摘要 Seata AT模式是一种低侵入的分布式事务解决方案,通过@GlobalTransactional注解开启全局事务,由TC(事务协调者)管理全局事务状态,TM(事务管理器)控制提交/回滚,RM(资源管理器)拦截SQL生成数据镜像并记录undo_log。 核心流程: 第一阶段:业务SQL执行后,RM记录前后镜像到undo_log并提交本地事务。 第二阶段:全局事务成功则异步清理undo_log;失败则根据undo_log生成补偿SQL回滚。 关键特性: 优点:低侵入、性能优于XA、自
2026-07-26 16:18:54
563
原创 SpringCloud——分布式事务Seata:解决微服务数据不一致的利器
本文摘要: 在微服务架构中,传统@Transactional注解无法管理跨服务的事务,导致数据不一致问题。以订单创建、库存扣减、余额扣减为例,三个独立本地事务无法保证整体原子性。Seata通过TC(事务协调者)、TM(事务管理器)、RM(资源管理器)三个角色协调分布式事务:TM发起全局事务并生成唯一XID,RM注册分支事务,TC最终决策提交或回滚。Seata需独立部署Server统一管理事务状态,依赖XID在服务间传播实现事务关联。关键点包括区分本地/全局事务、理解Seata的协调机制及核心组件作用,为后续
2026-07-25 15:26:05
318
原创 SpringCloud——Sentinel实战指南:流控熔断与生产级配置
本文摘要:《Sentinel从入门到生产实践》全面介绍了阿里开源的流量控制组件Sentinel的核心功能与应用场景。文章首先阐述了微服务场景下级联故障的风险,引出Sentinel的四大核心概念:资源、规则、统计数据和拦截异常。然后详细讲解了流量控制(QPS/线程数限流)、熔断降级(慢调用/异常比例)、热点参数限流等核心功能,分析了直接、关联、链路三种流控模式的区别。针对生产环境,重点介绍了规则持久化方案,包括Nacos配置中心集成和Dashboard改造方法。最后给出了21条生产环境设计建议和常见问题排查指
2026-07-25 13:51:10
666
原创 SpringCloud——Sentinel全栈实战:从限流熔断到Nacos持久化
本文系统总结了Sentinel在微服务架构中的核心应用,包括限流、熔断、热点参数等保护机制。文章详细介绍了Sentinel的资源概念、三种流控模式与效果、熔断降级策略,以及如何通过Nacos实现规则持久化。特别强调了对Sentinel Dashboard的源码改造,使其与Nacos集成形成闭环管理。文中还指出了多个实践中的常见问题,如链路模式配置、异常处理区分、规则同步一致性等。最后总结了Sentinel作为微服务稳定性方案的核心价值,强调需要理解其完整的规则管理和执行链路,而不仅是表面功能。全文提供了从基
2026-07-24 16:39:24
363
原创 SpringBoot启动流程与配置读取全解析
摘要: SpringBoot启动时,配置读取发生在Bean创建之前,确保依赖配置的Bean能正确初始化。加入Nacos/SpringCloudConfig后,流程变为:先通过bootstrap.yml获取配置中心地址(避免循环依赖),再拉取远程配置合并到环境变量(Environment),最后创建Bean。Nacos简化了架构(内置配置管理),而SpringCloudConfig需独立Git+ConfigServer。两者均通过bootstrap阶段(类似BIOS)引导配置加载,核心思想是先定位配置源,再构
2026-07-21 17:31:11
224
原创 SpringCloud——微服务排错实战:从Gateway到Feign全链路解析
本文摘要: 文章系统讲解了微服务开发中服务调用测试与问题排查的完整流程。首先建立请求调用链(Gateway→blog-service→Feign→user-service),然后针对五类常见问题(Nacos无实例、Gateway 404、Feign 404/超时、服务注册失败)提供具体排查步骤,包括检查Nacos控制台、路由配置、接口路径一致性、超时设置等。重点强调微服务排错思维:按调用链路逐层验证(入口→路由→服务发现→业务逻辑→数据库),并给出面试高频问题解答。最后指出本节核心价值在于培养微服务故障定位
2026-07-21 16:29:50
349
原创 SpringCloud——微服务实战:OpenFeign与Nacos服务调用详解
这篇文章摘要主要讲述了在微服务架构中,如何通过服务调用解决blog-info-service迁移时遇到的数据依赖问题。作者首先分析了直接访问数据库的错误方案会导致服务耦合,随后提出了正确的解决方案:使用OpenFeign进行服务间通信,并引入api模块定义服务契约。文章详细阐述了完整的调用链流程,包括Nacos服务发现和Feign远程调用的配合使用,强调了微服务自治的重要性。最后总结了四个关键面试问题,并指出这一节将SpringCloud的各个组件(Gateway、Nacos、Feign等)串联起来,形成完
2026-07-21 15:57:15
307
2
原创 SpringCloud入门认识:构建高效微服务架构的核心利器
SpringCloud是一套基于SpringBoot的微服务工具集,用于解决分布式系统中的核心问题。它提供注册中心(如Nacos)、服务调用(OpenFeign)、负载均衡(LoadBalancer)、API网关(Gateway)、配置中心、熔断限流(Sentinel)、链路追踪(SkyWalking)、消息队列和分布式事务(Seata)等组件,实现服务协同工作。典型架构包含服务注册、网关路由、配置管理和调用链监控,适用于高并发、多团队协作的复杂系统。学习建议从核心调用链开始,逐步掌握稳定性保障和分布式数据
2026-07-12 23:26:18
320
原创 Git全解析(2W+长文):从原理到高频操作手册
Git核心原理与实践摘要 Git是一个基于快照的分布式版本控制系统,通过指针管理项目状态的完整快照(commit)。核心工作原理围绕三个区域展开: 工作区:实际文件目录 暂存区:准备提交的内容缓存区(git add) 本地仓库:提交历史记录(git commit) 日常开发流程: 新建功能分支:基于develop创建feature分支 代码修改:在工作区进行编辑 选择性暂存:git add指定文件 提交快照:git commit生成版本记录 同步远程:git push推送变更 关键特性: 分支本质是轻量指针
2026-07-11 13:25:03
399
原创 抽象类与接口:本质区别与应用场景
文章摘要: 抽象类和接口是Java中两种重要的抽象机制。抽象类用于代码复用,通过继承实现"is-a"关系,可以包含具体方法和抽象方法;接口定义行为规范,通过实现表达"can-do"关系,支持多实现。关键区别在于:抽象类有构造方法和成员变量,单继承;接口只有常量和方法签名,多实现。使用场景上,当需要提取共性代码时用抽象类(如动物基类),当需要定义跨类能力时用接口(如飞行能力)。JDK8后接口支持默认方法,但核心定位不变:抽象类是"带实现的父类",接口
2026-05-18 10:51:19
174
原创 Java抽象类与接口:面试高频考点全解析
本文深入解析Java中抽象类与接口的核心区别与应用场景。抽象类作为"半成品老爸",通过构造方法、成员变量和完整方法实现代码复用,适用于模板方法模式;接口则作为"能力证书",通过default方法和多实现机制定义行为规范,适用于策略模式。文章详细对比了两者在方法实现、构造方法、成员变量三个维度的差异,并分析了JDK8+版本中接口的新特性。最后指出:抽象类解决代码复用问题(is-a关系),接口解决行为规范问题(can-do关系),二者在面向对象设计中相辅相成。掌握这些区别
2026-05-17 18:12:25
424
原创 算法—Java Map 核心方法与实战场景指南
本文总结了Java中Map接口的核心方法及其应用场景,重点介绍了HashMap在算法题和业务开发中的高效使用技巧。内容分为七大部分:首先讲解了频次统计的getOrDefault和putIfAbsent方法;其次介绍了O(1)查询的containsKey和size方法;然后详细说明了基础的增删改查操作;接着分析了三种遍历方式keySet、values和entrySet的特点与适用场景;第五部分通过抽奖系统案例演示了不同遍历方法的应用;第六部分分享了企业开发中的高级技巧,包括构造函数直接转换和Stream流处理
2026-04-16 10:34:54
543
6
原创 力扣算法练练练1——双指针
摘要:本文提出了一种原地处理数组元素平移问题的通用模板。核心思路是采用快慢指针法,从后往前填充数据以避免覆盖问题。对于重复零问题,先计算结果数组形态,再用双指针逆向填充。对于快乐数问题,通过快慢指针检测循环,判断是否收敛于1。文章详细阐述了思维演变过程:从暴力平移的低效解法,到空间换时间的启发,最终形成指针融合的优化方案,并解释了交换操作的必要性。这种后序填空法成为处理数组平移类问题的有效范式。
2026-03-31 11:52:26
328
1
原创 Redis从入门到精通:入门到精通(万字详解)
本文系统介绍了Redis从入门到精通的完整学习路线。首先阐述了Redis作为内存数据库的核心优势:极速性能、丰富数据结构和多功能性。然后分阶段详细讲解了:基础数据类型(String/Hash/List/Set/ZSet)、持久化机制(RDB/AOF/混合)、内存淘汰策略、事务与Pipeline。进阶部分涵盖高可用架构(主从/哨兵/集群)和生产实战(缓存三问题/Lua脚本/分布式锁)。最后通过大厂面试题解析,帮助读者掌握Redis底层原理和实战技巧。全文循序渐进,理论与实践结合,适合不同层次的开发者系统学习R
2026-03-21 18:21:09
747
1
原创 RabbitMQ高并发实战:从入门到精通(万字长文深刻理解)
本文系统讲解了RabbitMQ和Kafka两种消息队列的核心原理和应用场景。RabbitMQ部分详细解析了工作队列、广播模式、路由模式等消息分发机制,以及消息应答、持久化、公平分发等可靠性保障措施;Kafka部分则重点介绍了其高吞吐量实现原理、分区扩展机制、幂等性与事务等特性。通过对比两种消息队列的适用场景,帮助读者理解如何根据业务需求选择合适的消息中间件。文章还包含大量实际配置示例和性能优化建议,从理论到实践全面覆盖消息队列的关键知识点,适合开发者深入学习和参考。
2026-03-16 00:08:25
428
原创 RabbitMQ—消息元数据解析指南
本文介绍了RabbitMQ的Java客户端实现,包含生产者和消费者代码示例。生产者通过建立连接、创建信道、声明队列,循环发送10条消息到"hello"队列;消费者同样建立连接后订阅该队列,通过DefaultConsumer接收并打印消息。文章重点解析了RabbitMQ的两个核心元数据:Envelope(包含投递标签、重投标志、交换机和路由键信息)和AMQP.BasicProperties(消息属性头,如内容类型、优先级等),详细说明了各参数含义及实际应用场景。这些元数据对消息路由、业务追
2026-03-15 21:27:01
477
原创 Java Map常用方法实战指南
本文系统介绍了Java Map接口的20+常用方法,通过用户注册场景示例进行分类讲解。主要内容包括:基础增删改查方法(put/get/remove等)、判断类方法(containsKey/isEmpty)、遍历方法(keySet/entrySet)、Java8高级方法(computeIfAbsent/merge)以及批量操作(putAll/clear)。特别强调了null值处理的3种安全方案,推荐使用getOrDefault替代直接get。文中还提供了方法对比速查表和实战应用示例,展示了如何在校验必填字段、
2026-03-08 16:36:01
260
原创 Java——Linux的Ubuntu轻量服务器RabbitMQ安装指南
本文详细介绍了在Ubuntu轻量服务器上安装RabbitMQ的完整流程。首先强调必须开放15672和5672端口的安全组设置。安装步骤包括更新系统、安装Erlang环境、配置RabbitMQ服务及管理插件,并重点说明如何解决远程登录限制(需创建新管理员账户)。文章还提供了Web界面访问方法、Java项目连接配置、常用运维命令以及卸载指南。特别提醒轻量服务器用户注意内存限制和安全性问题,建议修改默认密码并监控内存使用情况。本教程针对腾讯云、阿里云等轻量服务器环境优化,确保用户能够顺利部署RabbitMQ消息队
2026-03-08 00:46:41
563
原创 Java集合和数据结构-反射突破编译器类型检查
摘要:本文通过MyArray泛型类示例,揭示了反射机制如何绕过Java类型安全检查。正常调用时编译器会阻止类型不匹配操作(如向Integer容器添加String),但反射在运行时直接操作底层Object[]数组,导致类型污染。关键点在于:1)反射获取的是擦除后的原始方法(add(Object));2)编译器无法检查反射调用的具体参数类型;3)JVM因类型擦除而接受非法操作。最终取出数据时会引发ClassCastException,破坏泛型类型安全。这展示了反射作为"后门"突破编译器类型墙
2026-02-28 02:14:38
312
1
原创 Java集合和数据结构-揭秘Java包装类:核心原理与实战技巧
Java包装类是将8种基本数据类型封装成对象的类,实现基本类型与对象的转换。核心原理包括自动装箱/拆箱和缓存机制:装箱通过valueOf()方法实现,拆箱调用xxxValue()方法;部分包装类对常用值进行缓存优化。主要应用场景包括:集合存储、泛型约束、处理可空值、类型转换工具方法等。使用时需注意==比较陷阱(缓存范围内有效)、空指针风险及性能损耗。包装类填补了Java"一切皆对象"理念中基本类型非对象的鸿沟,是集合框架、反射等功能的实现基础。
2026-02-27 23:17:43
1370
原创 JavaSE基础-Java finally执行机制全解析
本文分析了Java中finally块的执行机制,指出其在三种场景下都会执行:异常被捕获、未被捕获以及未发生异常时。关键在于finally会在方法真正退出前执行,包括遇到return或抛出异常的情况。文章还解释了为何说"基本正确"而非"绝对",列举了System.exit()等极端情况。最后强调了finally在资源释放方面的工程意义,如确保数据库连接关闭。总结来说,在JVM正常运行时,finally是方法退出前的最后保障,无论方法如何结束都会先执行finally块。
2026-02-27 11:23:34
341
原创 JavaSE基础-代码异常:执行中断还是继续?
摘要:本文解析了Java异常处理的两种流程。当异常未被捕获时,程序会从抛出点逐层中断直至崩溃,后续代码均不执行;若异常被catch捕获,程序会在处理异常后继续执行后续代码。异常本质是方法的"紧急出口",throw会立即终止当前方法并将错误信息传递。类比工作场景:未捕获异常如同直接放弃任务,捕获异常则相当于汇报问题后继续推进。核心结论:异常捕获与否直接决定后续代码能否执行——捕获则继续,未捕获则中断。
2026-02-27 10:57:30
286
原创 Java异常处理深度解析:throw与throws实战指南
文章摘要:本文深入解析了Java异常处理中的两个核心问题。关于throw和throws的区别,前者是方法内部主动抛出异常的动作,后者是方法签名声明可能抛出的异常类型。对于finally执行问题,正常情况下都会执行,但存在System.exit()、守护线程终止等极端情况例外。文章还探讨了try-with-resources语法、异常链等进阶知识,并提供了面试回答模板和典型陷阱题分析。通过代码示例和对比表格,系统性地阐述了异常处理的核心机制、易错点和最佳实践。
2026-02-27 10:39:57
856
原创 JavaSE基础-Java异常处理全解析:从ClassNotFound到IndexOutOfBounds
本文总结了Java中常见的异常类型及其处理方式。ClassNotFoundException和CloneNotSupportedException是编译时异常,前者由类路径缺失引发,后者因未实现Cloneable接口导致。IO相关异常包括EOFException(文件读取越界)、FileNotFoundException(路径错误)、MalformedURLException(URL格式错误)和UnknownHostException(域名解析失败)。运行时异常如ArithmeticException(除零
2026-02-24 11:35:18
1006
1
原创 JavaSE基础-Java异常体系:Bug定位终极指南
摘要:Java异常体系采用三层金字塔结构,分为Error(系统级错误)、RuntimeException(代码逻辑异常)和CheckedException(必须处理的编译时异常)。常见异常包括空指针、数组越界等运行时异常,以及IO、数据库等编译时异常。定位Bug需关注异常类型、堆栈信息和行号,采用防御性编程减少异常。OOM和栈溢出的区别在于前者是堆内存耗尽,后者是调用栈过深。处理异常时,运行时异常应通过代码逻辑避免,编译时异常必须显式处理。掌握异常体系能有效提升调试效率。
2026-02-24 10:46:53
1147
原创 JavaSE基础-Java String不可变性深度解析
摘要:Java String的不可变性设计是核心架构决策,主要基于四大原因:1)支持字符串常量池共享,避免内存浪费;2)保障安全性,防止关键参数被篡改;3)天然线程安全,无需同步即可并发访问;4)适合作为HashMap键值,因其缓存hashCode确保稳定性。不可变特性虽会生成短期对象,但通过JVM优化和常量池复用,其性能优势远大于开销。这种设计完美平衡了内存效率、安全性和并发性能需求。
2026-02-23 23:19:57
1043
8
原创 JavaSE基础-Java字符串转整数与拼接实战指南
本文总结Java中字符串转整数和字符串相加的核心知识点:1. 字符串转整数:推荐使用Integer.parseInt()方法,需注意处理NumberFormatException异常,对带空格的字符串要先trim(),大数值可使用Long.parseLong()或BigInteger。2. 字符串相加:编译期常量可使用+运算符(会被优化),但循环中必须使用StringBuilder以避免性能问题(性能差距可达200倍),多线程场景用StringBuffer,分隔符连接推荐String.join()。3. 关
2026-02-23 16:14:07
713
18
原创 Javase基础——《Java接口:代码世界的“考证”指南——从飞行调度员看解耦的艺术》
本文通过比喻和代码示例生动解释了Java接口的作用与使用方法。接口就像职业证书,定义了统一标准(如CanFly接口),允许不同类(飞机、超人)实现相同功能但具体方式不同。使用接口的好处包括:代码解耦、扩展性强、团队协作方便。文章对比了无接口(需为每个类写特定方法)和使用接口(统一调用)的代码差异,展示了接口的灵活性。还介绍了抽象类作为"甩锅"方案,可部分实现接口功能。总结指出接口让代码更模块化,是弥补Java单继承不足的重要机制。
2026-02-05 00:20:10
985
1
原创 数据库MySQL——MySQL 可重复读隔离级别:Read View 底层原理与幻读问题深度剖析(面试必知)
数据库定义了四个级别来解决上述问题。级别从低到高,隔离性越来越强,但性能越来越差。隔离级别脏读不可重复读幻读性能常用场景✅ 可能✅ 可能✅ 可能最高极少使用❌ 解决✅ 可能✅ 可能高Oracle/PG 默认❌ 解决❌ 解决✅ 可能*中MySQL 默认❌ 解决❌ 解决❌ 解决最低极严格的财务场景(注:✅ 表示会发生该问题,❌ 表示该级别解决了该问题。( 关于 MySQL RR 级别的幻读:MySQL 通过间隙锁机制解决了大部分幻读,但在特殊语法下仍可能出现)*
2025-12-28 18:19:29
1042
2
原创 JavaEE进阶——Spring Bean与Java Bean的核心区别
本文探讨了JavaBean与SpringBean的核心区别:JavaBean是一种遵循特定编码规范(私有属性、公共getter/setter等)的普通Java类,主要用于数据传输;而SpringBean是由Spring容器管理的对象,具有完整的生命周期控制和依赖注入功能。关键差异在于:JavaBean由程序员手动创建管理,SpringBean则由容器自动管理,支持单例/原型等作用域、AOP等高级特性。通过用户注册场景示例,展示了数据载体(JavaBean)与业务组件(SpringBean)的协作方式,形象比
2025-12-28 12:02:59
820
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅