自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

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

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

2025-04-01 23:02:32 1045

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

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

2025-03-31 22:58:44 1272

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

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

2025-03-30 22:33:25 571

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

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

2025-03-28 22:59:20 445

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

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

2025-03-25 23:04:13 591

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

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

2025-03-24 22:59:11 1177

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

面试

2025-03-20 22:43:30 949

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

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

2025-03-19 23:02:42 1291

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

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

2025-03-18 22:05:33 647

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

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

2025-03-17 23:03:11 984

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

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

2025-03-14 22:12:40 1013

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

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

2025-03-13 21:58:43 816

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

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

2025-03-12 22:08:45 1419

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

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

2025-03-11 23:13:05 1197

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

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

2025-03-10 22:24:47 1154

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

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

2025-03-08 22:33:45 973

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

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

2025-03-07 22:53:31 586

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

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

2025-03-06 22:54:01 833

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

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

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

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

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

2025-03-04 22:54:55 976

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

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

2025-03-03 23:20:46 963

原创 SpringBoot 自动配置原理详解

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

2025-02-28 12:17:39 867

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

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

2025-02-26 10:59:58 214

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

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

2025-02-25 12:03:28 243

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

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

2025-02-21 09:16:12 309

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

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

2025-02-19 17:56:13 436

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

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

2025-02-17 22:27:35 841

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

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

2025-02-14 17:23:35 748

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

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

2025-02-13 16:26:15 766

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

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

2025-02-13 09:20:58 529

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

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

2025-02-12 16:14:45 628

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

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

2025-02-12 09:34:50 574

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

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

2025-02-11 16:15:13 1546

原创 HashMap扩容过程,怎么解决哈希冲突?

HashMap是 Java 中最常用的数据结构之一,它基于哈希表实现,具有快速的查找、插入和删除性能。以下是HashMap的扩容过程以及解决哈希冲突的详细讲解。HashMapNodekey-valuenextHashMap的扩容是为了保持较低的负载因子(默认 0.75),从而减少哈希冲突,提高性能。

2025-02-10 21:22:33 719

原创 类加载过程是什么?类隔离又是什么?

类隔离是指通过不同的类加载器加载相同的类,使它们在JVM中独立存在,互不干扰。类加载器在加载类时,先委托父类加载器尝试加载,只有父类加载器无法加载时,才由自己加载。)加载到内存,并转换为JVM可识别的数据结构(如。类加载是JVM将类的字节码文件(

2025-02-10 16:48:06 799 1

空空如也

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

TA关注的人

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