自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Spring 事务实现原理,Spring 的 ACID是如何实现的?如果让你用 JDBC 实现事务怎么实现?

注解定义事务属性(传播行为、隔离级别、超时时间、回滚条件等),Spring 根据这些元数据管理事务行为。),负责实际的事务操作(开启、提交、回滚)。不同持久化框架(JDBC、JPA)有不同实现。将事务资源(如数据库连接)绑定到当前线程,确保同一事务的多个操作共享同一资源。注解的方法,在方法执行前开启事务,执行后提交或回滚事务。Spring 本身不直接实现 ACID,而是。块关闭连接,Spring 则通过模板类(如。Spring 提供了统一的事务抽象接口(如。)可能影响性能,需权衡一致性与并发性。

2025-04-22 22:45:05 518

原创 拦截器和过滤器的区别?使用场景?

跨域处理(CORS)添加跨域响应头(如 )。XSS/SQL 注入防护过滤请求参数中的恶意脚本或特殊字符。请求日志记录记录请求的 URL、IP、耗时等信息。拦截器(Interceptor)的典型场景用户权限校验在 Controller 方法执行前验证用户是否登录或具有权限。接口性能监控统计接口执行时间。全局参数处理在请求处理前向 中添加公共参数(如当前用户信息)。4. 执行顺序在请求处理流程中,过滤器先于拦截器执行:总结过滤器(Filter):适用于与业务无

2025-04-22 12:15:00 593

原创 Springboot 自动装配原理是什么?SPI 原理又是什么?

Spring Boot 的自动装配原理和 SPI(Service Provider Interface)机制是理解其核心功能的关键。,允许第三方为接口提供实现,实现解耦。Java 原生 SPI 和 Spring 的 SPI 类似但实现方式不同。满足条件的配置类会向 Spring 容器注册 Bean,无需手动编写 XML 或 Java 配置。自动装配是 Spring Boot 简化配置的核心机制,其核心思想是。:支持批量加载、结合条件注解实现动态装配。:无法按需加载、不支持条件化配置。,用于激活自动配置。

2025-04-21 12:18:53 925

原创 spring中如何在一个插入操作执行成功后在执行另一个操作

在Spring中,若需确保在一个插入操作成功再执行另一个操作,可以通过以下方案实现,具体选择取决于业务场景的和。

2025-04-18 12:20:17 403

原创 详细讲解一下Java中的Enum

使用枚举的场景需要一组固定的、类型安全的常量(如状态、错误码、配置选项)。需要为常量附加行为或数据(如计算、状态流转)。实现单例或策略模式。避免枚举的场景需要动态生成常量(如从数据库加载)。对内存极度敏感(如嵌入式开发)。枚举是 Java 中一种强大的工具,合理使用可以大幅提升代码的可读性和健壮性。

2025-04-17 22:56:03 825

原创 @Transactional self-invocation does not lead to an actual transaction at runtime解决办法

接着,methodA()内部调用methodB(),这时候的调用是直接调用this.methodB(),也就是目标对象自己的方法,而不是代理对象的方法,因此@Transactional的拦截器不会被触发,导致methodB()不会在事务中执行。总结一下,原话的意思就是说,在同一个类中的方法A调用带有@Transactional的方法B时,由于是自调用,没有经过Spring的代理,所以方法B上的事务注解不会生效,不会开启事务。所以,想要让自调用也应用事务,可能需要通过代理来调用方法,而不是直接调用。

2025-04-16 17:18:26 911

原创 多态和重载的底层实现原理,字节码层面的了解过吗?

的底层实现原理可以通过字节码层面来深入理解。每个类在方法区维护一个虚方法表,包含所有虚方法的入口地址。(方法名 + 参数类型)在编译阶段确定具体调用的方法。在运行时决定,基于虚方法表(vtable)实现。(静态分派 vs 动态分派)和。(编译时 vs 运行时)。

2025-04-15 10:50:18 984

原创 类加载过程?类隔离了解过吗?

加载同名类,使 JVM 将其视为不同的类,从而避免冲突。类加载是 JVM 将类的字节码从磁盘、网络或其他来源加载到内存,并转换为。对象的过程,主要分为以下。

2025-04-01 23:02:32 1054

原创 为什么要指针压缩,为什么能指针压缩?原理是什么?

下优化内存占用的关键技术,通过减少对象指针的内存开销,提升缓存利用率和性能。因此,只要堆大小 ≤32GB,压缩指针即可覆盖全部地址。),但实际应用场景中,堆内存通常远小于此。将 64 位地址转换为 32 位压缩指针。从 32 位压缩指针还原 64 位地址。在 64 位系统中,原生指针占用。),指针的内存开销占比显著。64 位系统的理论地址空间极大(基于此,32 位压缩指针可通过。指针压缩是 JVM 在。,而 32 位指针仅需。

2025-03-31 22:58:44 1288

原创 面试官:介绍一下 TLAB,PLAB,CAS 分配分别是什么?

【代码】面试官:介绍一下 TLAB,PLAB,CAS 分配分别是什么?

2025-03-30 22:33:25 586

原创 byte[] a = new byte[10 * 1024]内存分配过程?多大的对象直接进入老年代?通过什么参数配置?

【代码】byte[] a = new byte[10 * 1024]内存分配过程?多大的对象直接进入老年代?通过什么参数配置?

2025-03-28 22:59:20 453

原创 HashMap的位操作是什么?HashSet 的 contains 方法复杂度是多少?红黑树简单讲一下?

增加哈希值的随机性,减少因低位重复导致的冲突(例如低位相同的哈希值经过扰动后分布更均匀)。

2025-03-25 23:04:13 601

原创 XXL-Job 二次分片是怎么做的?有什么问题?怎么去优化的?

的基础上,由开发者自行实现的更细粒度数据拆分。XXL-JOB的二次分片是在。

2025-03-24 22:59:11 1183

原创 介绍一下TiDB、RocksDb、levelDB、LSM 树、SSTable。

面试

2025-03-20 22:43:30 968

原创 如何设计一个 RPC 框架?需要考虑哪些点?

设计 RPC 框架需结合业务场景权衡性能与复杂度,建议优先参考成熟框架(如 Dubbo 分层设计),再针对特定需求进行裁剪优化。

2025-03-19 23:02:42 1312

原创 QPS和TPS 的区别是什么?QPS 大了会有什么问题,怎么解决?

预防性设计:容量预估(压测得出单机QPS/TPS极限) + 冗余部署(预留30%资源缓冲)实时监控:Prometheus监控QPS/TPS曲线,Grafana配置阈值告警(如QPS超80%即触发扩容)弹性架构:无状态服务设计 + 自动扩缩容(云原生场景优先采用Serverless或FaaS)代码级优化:减少非必要IO、异步处理耗时操作(如日志异步写入)、压缩传输数据量。

2025-03-18 22:05:33 670

原创 熔断和降级的区别,具体使用场景有哪些?

【代码】熔断和降级的区别,具体使用场景有哪些?

2025-03-17 23:03:11 1013

原创 缓存使用的具体场景有哪些?缓存的一致性问题如何解决?缓存使用常见问题有哪些?

【代码】缓存使用的具体场景有哪些?缓存的一致性问题如何解决?缓存使用常见问题有哪些?

2025-03-14 22:12:40 1100

原创 详解Kafka 四个选举,Controller 选举、Partition leader 选举、GroupCoordinator 选举、消费组协调器选举。流量规划怎么做的?

每个消费者组(Consumer Group)需有一个 GroupCoordinator 负责管理消费者成员的加入/退出、Offset 提交与负载均衡。:消费者组内的 Leader 负责执行分区分配策略(如 Range、RoundRobin),并将分配结果同步给 GroupCoordinator。:Controller 是 Kafka 集群的核心协调者,负责管理所有分区的状态(如创建、删除、Leader 选举)和副本同步(ISR 维护)。:为每个分区选举一个 Leader 副本,负责处理客户端读写请求;

2025-03-13 21:58:43 845

原创 MQ消息发送不在MySQL事务中,该如何保证一致性?

(RocketMQ 环境),结合幂等设计与重试机制,可有效解决 MQ 与数据库事务分离场景下的数据一致性问题。:任何 MQ(如 Kafka、RabbitMQ),需业务系统额外开发。:实时性略低(依赖 Binlog 解析延迟),需维护 CDC 服务。:强依赖 MQ 且支持事务消息的系统(如 RocketMQ)。:依赖特定 MQ(如 RocketMQ),技术栈受限。:高吞吐、解耦业务与消息发送的场景(如数据同步)。:需维护消息表,增加数据库压力。:与 MQ 无关,兼容性强。:原生支持,流程标准化。

2025-03-12 22:08:45 1434

原创 消息队列MQ使用场景有哪些?

MQ 在实际项目中的应用场景主要围绕异步处理、系统解耦、流量控制三大核心能力展开,结合具体业务需求可细分为以下场景:1. 异步处理2. 系统解耦3. 流量削峰4. 日志收集与分析5. 分布式事务6. 延迟消息7. 数据分发与广播8. 错误重试与容灾技术选型建议注意事项

2025-03-11 23:13:05 1228

原创 单机和微服务的区别,微服务有什么问题?数据一致性问题怎么解决?幂等问题怎么解决?

这种方法常用在非关键业务场景。: 在设计 API 时,应优先考虑幂等性,例如使用 POST 请求时,能保证在相同的请求下,对同一资源的影响相同。通过合理的架构设计、技术选择和业务逻辑约束,可以有效地解决微服务架构面临的挑战,达到高可用、可扩展的系统目标。: 记录操作的状态和结果,对于重复请求,根据状态决定是否执行或返回结果,确保相同的请求结果一致。: 微服务的引入增加了系统的复杂性,包括服务发现、负载均衡、容错机制、监控和日志等。: 在微服务架构中,调试和监控变得更加困难,需要更完善的日志管理和监控工具。

2025-03-10 22:24:47 1166

原创 报表DSL优化,享元模式优化过程,优化效果怎么样?

报表系统通常使用领域特定语言(DSL)定义模板结构、数据绑定规则及样式配置。报表系统中大量重复对象(如样式、字体、单元格格式)占用内存,享元模式通过共享对象减少资源消耗。将高频使用的DSL片段预编译为中间代码(如AST),减少运行时解析开销。通过结合DSL设计与享元模式,可实现报表系统的高效、稳定运行。动态管理享元池,防止内存泄漏(如Guava Cache)。分析报表元素,确定可复用的部分(如颜色配置、字体设置)。确保共享对象状态不被修改,避免线程安全问题。减少嵌套层级,通过引用机制复用公共配置块。

2025-03-08 22:33:45 980

原创 分布式事务有几种实现方式?讲讲本地消息表、尽最大努力通知、TCC等方式

支付宝支付成功后,向商户系统发送支付结果通知,若失败则重试24小时。调用方(如订单系统),直到对方确认成功或达到重试上限。分布式事务的核心挑战是解决跨多个服务或数据库的。将分布式事务拆分为本地事务和异步消息,通过。服务方(如支付系统)完成本地事务后,三个阶段实现补偿型事务。

2025-03-07 22:53:31 624

原创 怎么做数据冷热分离?怎么做分库分表?为什么要用ES?

将数据根据访问频率、重要性或时间划分为。

2025-03-06 22:54:01 890

原创 什么是TiDB,什么是分布式数据库?它和 MySQL 比优缺点是什么?

一、什么是分布式数据库?分布式数据库是一种将数据分散存储在多个物理节点上的数据库系统,通过分布式架构实现水平扩展高可用性和容错能力。数据分片(Sharding):将数据划分为多个分片,分布到不同节点。多副本冗余:每个分片存储多个副本,确保数据安全与高可用。分布式事务:支持跨节点的 ACID 事务(如两阶段提交、Percolator 协议)。透明访问:用户无需感知数据分布,通过统一接口操作数据。海量数据存储(PB 级)、高并发 OLTP(每秒万级事务)。实时分析(HTAP:混合事务/分析处理)

2025-03-05 22:48:57 1246 1

原创 G1,最大的特点是什么,标记位图,卡表卡页,SATB又分别是什么?

G1 是 JDK 9 及之后版本的默认垃圾收集器,其核心设计目标是。

2025-03-04 22:54:55 994

原创 APM是怎么监控,原理是什么?Java Agent 又是什么?

是用于监控和管理应用性能的工具,核心目标是快速定位性能瓶颈、优化用户体验。

2025-03-03 23:20:46 1012

原创 SpringBoot 自动配置原理详解

Spring Boot 的自动配置是其核心特性之一,它允许开发者通过最小化配置来快速启动应用程序。自动配置基于“约定优于配置”的原则,使得javer可以更专注于业务逻辑,而不必关注繁琐的配置。

2025-02-28 12:17:39 887

原创 python获取股票交易数据-战损版

在Python中获取股票交易数据有多种方法,包括使用专门的金融数据API、从网页抓取数据或使用第三方库。

2025-02-26 10:59:58 226

原创 Java三大特性:封装,继承,多态详解

封装是将数据(属性)和对数据的操作(方法)包装在一起,只暴露必要的接口给外部访问。

2025-02-25 12:03:28 246

原创 多态和重载的底层实现原理,字节码层面的了解过吗?

多态依赖于动态绑定(动态分派),在运行时根据对象的实际类型确定调用哪个方法。重载是静态绑定(静态分派),在编译时根据参数类型确定调用哪个方法。编译器根据参数类型生成不同的。

2025-02-21 09:16:12 309

原创 单机和微服务的区别,微服务有什么问题?数据一致性问题怎么解决?幂等问题怎么解决?

单机架构和微服务架构在设计理念、部署和扩展性上有显著区别。

2025-02-19 17:56:13 441

原创 讲讲MySQL慢SQL优化思路?解决方法有哪些?应该从哪些方面考虑?

优化慢SQL需结合具体场景,从索引、SQL写法、表结构、参数配置到架构设计逐步排查。核心原则是减少数据扫描量(I/O)和计算复杂度(CPU)。定期分析慢查询日志并建立性能基线,是持续提升数据库性能的关键。

2025-02-17 22:27:35 849

原创 内连接inner join 和左连接left join的区别是什么?

这两个 SQL 查询的核心区别在于和。

2025-02-14 17:23:35 754

原创 详细讲解一下JMM中的happends-before

是 Java 内存模型(JMM, Java Memory Model)中的一个核心概念,用于定义多线程环境中操作之间的可见性和顺序性。

2025-02-13 16:26:15 769

原创 springboot项目出现Data truncated for column ‘id‘ at row 1报错的解决办法

如果需要更大的数值范围,考虑修改表的结构。例如,将id列的数据类型从INT改为BIGINT。

2025-02-13 09:20:58 589

原创 mybatis本地启动如何打印日志

在 MyBatis 中启用日志打印可以帮助调试和监视 SQL 的执行过程。MyBatis 默认支持使用多种日志框架,如 SLF4J、Log4j、Log4j2、Commons Logging 等。可以选择其中之一来进行日志记录。下面是几种常见的方式来打印 MyBatis 的日志。

2025-02-12 16:14:45 732

原创 Java中的反射是什么?应用?原理?

反射在 Java 中是指可以在运行时动态地获取关于类的信息,以及对类的对象进行操作。访问类的属性和方法动态创建对象调用对象的方法修改对象的属性值检查类的元数据(如类名称、方法名称、字段类型等)反射通常涉及包下的类,例如FieldMethod和Class等。

2025-02-12 09:34:50 576

原创 springboot项目启动出现Caused by: java.lang.NoClassDefFoundError:XXX解决办法

如果该类是通过注解处理器(如 Lombok、MapStruct)生成的,可能因配置问题导致生成失败。该类可能属于某个依赖模块(如其他子模块、JAR 包或第三方库),但未正确引入到项目中。项目中存在多个版本的同一依赖,导致 JVM 加载了错误版本的类。类文件未被正确编译或未包含在部署包(如 JAR/WAR)中。IDE 未正确同步或缓存了旧的类信息。表示 JVM 在运行时尝试加载类。部署环境中类路径未包含该类的路径。通过以上步骤,可以逐步定位并解决。

2025-02-11 16:15:13 1822

空空如也

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

TA关注的人

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