- 博客(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
原创 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
原创 如何设计一个 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-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
原创 什么是TiDB,什么是分布式数据库?它和 MySQL 比优缺点是什么?
一、什么是分布式数据库?分布式数据库是一种将数据分散存储在多个物理节点上的数据库系统,通过分布式架构实现水平扩展高可用性和容错能力。数据分片(Sharding):将数据划分为多个分片,分布到不同节点。多副本冗余:每个分片存储多个副本,确保数据安全与高可用。分布式事务:支持跨节点的 ACID 事务(如两阶段提交、Percolator 协议)。透明访问:用户无需感知数据分布,通过统一接口操作数据。海量数据存储(PB 级)、高并发 OLTP(每秒万级事务)。实时分析(HTAP:混合事务/分析处理)
2025-03-05 22:48:57
1208
1
原创 SpringBoot 自动配置原理详解
Spring Boot 的自动配置是其核心特性之一,它允许开发者通过最小化配置来快速启动应用程序。自动配置基于“约定优于配置”的原则,使得javer可以更专注于业务逻辑,而不必关注繁琐的配置。
2025-02-28 12:17:39
867
原创 多态和重载的底层实现原理,字节码层面的了解过吗?
多态依赖于动态绑定(动态分派),在运行时根据对象的实际类型确定调用哪个方法。重载是静态绑定(静态分派),在编译时根据参数类型确定调用哪个方法。编译器根据参数类型生成不同的。
2025-02-21 09:16:12
309
原创 讲讲MySQL慢SQL优化思路?解决方法有哪些?应该从哪些方面考虑?
优化慢SQL需结合具体场景,从索引、SQL写法、表结构、参数配置到架构设计逐步排查。核心原则是减少数据扫描量(I/O)和计算复杂度(CPU)。定期分析慢查询日志并建立性能基线,是持续提升数据库性能的关键。
2025-02-17 22:27:35
841
原创 详细讲解一下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
空空如也
发文章为什么要绑定微信
2025-04-03
TA创建的收藏夹 TA关注的收藏夹
TA关注的人