- 博客(27)
- 收藏
- 关注
原创 kafka服务端与客户端如何协作?生产者发送消息分区策略是什么?消费者组分区策略?集群与ACK机制?
kafka服务端与客户端如何协作?生产者发送消息分区策略是什么?消费者组分区策略?集群与ACK机制?
2025-11-05 08:49:01
744
原创 怎么用redis lua脚本实现各分布式锁?Redisson各分布式锁怎么实现的?
本文介绍了基于Redis实现的6种分布式锁方案:1)基础可重入锁(RLock)通过Lua脚本实现原子性加锁/释放,支持重入计数和看门狗续期;2)读写锁(RReadWriteLock)区分读锁共享和写锁互斥;3)红锁(RedLock)通过多节点容错提升可靠性;4)公平锁(FairLock)采用队列机制保证获取顺序;5)联锁(MultiLock)实现多资源原子操作;6)总结核心设计包括原子性保障、防死锁机制和误删防护等。各方案均通过Lua脚本保证原子性,并针对不同场景提供特定优化。
2025-09-02 19:01:28
726
原创 Redisson分布式锁会发生死锁问题吗?怎么发生的?
文章摘要:Redisson分布式锁存在多种死锁风险场景,包括基础锁因看门狗续期失败导致的锁易主误删、读写锁的读锁升级写锁僵局、红锁的时钟漂移问题以及公平锁的队列状态不一致。死锁根源在于续期机制与业务状态割裂、时钟不同步和锁设计缺陷。最佳实践建议设置显式超时、禁止锁升级、同步集群时钟、统一锁获取顺序,并通过监控续期线程和定期扫描长持锁来预防死锁。关键原则是避免依赖看门狗续期,使用tryLock替代lock,并防止锁内长阻塞操作。(149字)
2025-09-02 19:00:28
425
原创 redis key 为何需要设置过期时间?如何清理过期 Key?内存不足时怎么淘汰key?
Redis设置过期时间能有效管理内存、满足业务需求并保持数据一致性。通过EXPIRE、PEXPIRE等4种方式设置,底层均转为PEXPIREAT实现。Redis采用惰性删除和定期删除两种机制清理过期Key,主从库处理方式不同。当内存不足时,提供8种淘汰策略,包括针对过期Key的volatile策略和针对所有Key的allkeys策略。建议配置maxmemory和淘汰策略,监控expired_keys等指标。合理设置过期时间和淘汰策略能优化Redis性能与资源利用率。
2025-08-16 08:00:00
903
原创 java程序运行使用了多少内存?一个java进程可以使用多少线程?如何观察java线程池的使用?
本文介绍了Java程序运行内存组成、线程数限制及监控方法。Java进程内存包含堆内存、非堆内存(方法区、线程栈等)和JVM开销,总内存可通过公式估算。线程数受内存、操作系统和CPU类型限制,需根据场景优化。监控线程池可使用命令行工具(如jstack)、图形化工具(如JVisualVM)或编程方式获取活跃线程数等指标,还可集成APM工具进行深度监控。关键注意事项包括线程泄露检查、栈空间优化及容器环境适配。合理配置和监控可提升系统稳定性。
2025-08-14 07:00:00
834
原创 在Java中使用引用类型对象作为HashMap的键(Key)或值(Value)时,可能出现哈希冲突、数据丢失、内存泄漏等问题。
HashMap使用引用对象作为键的常见问题与解决方案 核心问题 作为Key的问题: 未正确重写hashCode()和equals()方法会导致相同属性的对象被视为不同Key 可变Key对象修改属性后会导致哈希值不一致,无法定位原值 作为Value的问题: 大对象Value可能导致内存泄漏 多线程并发修改会引发线程安全问题 。
2025-08-13 09:00:00
1777
原创 关系型数据库中,如果某一列的选项只有几种(比如性别、状态等低基数枚举值),添加索引的效果如何?
关系型数据库中,如果某一列的选项只有几种(比如性别、状态等低基数枚举值),添加索引的效果如何?
2025-08-12 17:56:46
263
原创 使用Arthas监听Spring代理对象
摘要: Arthas监听Spring代理对象,操作步骤包括:定位代理类(sc)、反编译字节码(jad)、获取原始对象(ognl)及监听方法(watch)。常见问题如事务失效(自调用需AopContext.currentProxy())、private方法代理异常等可通过AOP配置解决。最佳实践推荐使用CGLIB代理、结合Spring工具类验证,并用trace追踪调用栈。附录提供Arthas核心命令速查表(如sc、jad)。
2025-07-10 16:40:57
1001
原创 Kendo UI 中,ViewModel、DataSource 和 Grid的关系。Kendo 框架发起 HTTP 请求
Kendo UI 中,ViewModel、DataSource 和 Grid的关系。Kendo 框架发起 HTTP 请求
2025-06-10 09:34:02
1026
原创 在Hybris 的 items.xml 文件中定义数据模型(建表),使用`FlexibleSearchQuery`执行数据库查询,使用modelService继续删除更新保存操作。
在Hybris 的 items.xml 文件中定义数据模型(建表),使用`FlexibleSearchQuery`执行数据库查询,使用modelService继续删除更新保存操作。
2025-05-15 10:50:53
723
原创 在 MySQL 中使用 UNION ALL 时,如果子查询的列顺序不一致会直接导致结果集错位
在 MySQL 中使用 UNION ALL 时,如果子查询的列顺序不一致会直接导致结果集错位
2025-04-28 15:16:59
733
原创 Redis 持久化机制详解:RDB/AOF 过程、优缺点及配置。Redis持久化中的Fork与Copy-on-Write技术解析。
Redis 持久化机制详解:RDB/AOF 过程、优缺点及配置。Redis持久化中的Fork与Copy-on-Write技术解析。
2025-04-09 11:09:51
703
原创 Redis客户端命令到服务器底层对象机制的完整流程?什么是Redis对象机制?为什么要有Redis对象机制?
Redis客户端命令到服务器底层对象机制的完整流程可分为协议封装、命令解析、多态执行、内存操作四个阶段。以下是结合RESP协议规范、对象机制和命令处理源码的详细流程分析
2025-04-07 15:45:47
1085
原创 Redis底层数据结构?编码与底层数据结构的映射?
Redis底层数据结构是其高效性能和灵活内存管理的关键,通过多种编码方式动态适配不同数据规模和应用场景。
2025-04-07 15:44:20
1031
原创 调用 Thread.currentThread().interrupt() 后,剩余代码是否会继续执行?Thread.currentThread().interrupt() 的业务应用场景?
调用 Thread.currentThread().interrupt() 后,剩余代码是否会继续执行?Thread.currentThread().interrupt() 的业务应用场景?
2025-03-27 18:19:15
1837
原创 Java RPC (远程过程调用) 框架概述。从RPC核心组件角度深入解读Apache Dubbo。Apache Dubbo最新使用指南。Spring Cloud Feign与RPC的关系解析。
RPC (Remote Procedure Call) 是一种分布式系统间通信的技术,允许程序调用另一个地址空间(通常是另一台机器上)的过程或函数,就像调用本地方法一样。主流Java RPC框架gRPCApache DubboApache ThriftHessianRPC核心组件选择RPC框架的考虑因素一、通信协议:多协议支持与高性能传输默认Dubbo协议扩展协议支持二、序列化:灵活可插拔的机制核心序列化方案关键优化三、服务注册与发现:多中心化治理注册中心抽象层服务发现特性四、负载均衡:智能流量调度内置算法
2025-03-27 10:10:11
918
原创 有哪些思路可以实现分布式锁?分布式锁的常见应用?Redis Redlock 算法
分布式锁是分布式系统中一个常见的需求,用于确保多个进程或节点在并发访问共享资源时的互斥性。SETNXSETNX总结。
2025-03-25 10:15:06
746
原创 BigDecimal类常踩到的坑。开发中常见的异常总结?和日期时间操作有关的异常?
许多常用类的方法可能会抛出异常,如果处理不当,容易导致程序崩溃或出现不可预期的行为。(空指针异常)常见场景:调用未初始化的对象的方法或访问其属性。从集合(如ListMap)中获取对象时未检查是否为null。解决方法:在使用对象前进行null检查。使用Optional类来避免直接操作可能为null的对象。(数组越界异常)常见场景:访问数组时,索引超出数组长度。使用for循环时,循环条件未正确控制索引范围。解决方法:在访问数组前检查索引是否合法。使用增强型。
2025-03-20 14:23:50
1147
原创 对象引用什么时候被其他线程可见?final关键字重排序规则?final关键字详解?
重排序是编译器和处理器的默认行为,旨在提高性能,但在多线程环境中可能引发问题,因此需要通过同步机制进行控制,比如final关键字。
2025-03-13 18:26:48
518
原创 java中的线程和操作系统中的线程是同一个吗,他们有什么联系和不同?Thread 类详解?JUC整体架构生态、核心重点和常用工具?
Thread类是用于创建和管理线程的核心类。它提供了多线程编程的基本功能,允许开发者创建并发执行的程序。ThreadThread方式一:继承Thread类Threadrun()方式二:实现Runnable接口RunnableThreadstart()run()join()isAlive()getName()LockThreadrun()start()
2025-03-10 18:33:52
644
原创 java线程安全的实现?线程安全是绝对的吗?JVM中的 Happens-Before 规则?
在 Java 中,线程安全的实现是确保多线程环境下共享数据的正确性和一致性的关键。以下是实现线程安全的几种主要方式,finalSemaphore总结实现 Java 线程安全的方式多种多样,具体选择取决于应用场景和性能需求。
2025-03-10 14:47:13
1097
原创 synchronized底层原理深入剖析!object和锁相关的属性方法?锁对象为class的时候锁信息储存在哪里?Monitor 机制?
synchronized关键字是实现线程同步的核心机制,其底层原理涉及对象头结构、Monitor监视器、锁升级策略以及JVM优化策略。一、对象头与锁状态存储每个Java对象在内存中由对象头(Header)、实例数据和对齐填充组成,锁信息存储在对象头的Mark Word字段中。二、Monitor监视器机制每个对象关联一个Monitor(由C++实现的NULLwait()三、锁升级策略(自适应优化)JVM根据线程竞争动态调整锁状态,降低同步开销:偏向锁(Biased Locking)
2025-03-07 15:52:06
914
原创 爬楼梯问题?暴力循环->暴力递归->发现重复计算->转变维度->动态规划
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?n最大值45?
2025-03-06 18:35:46
392
1
原创 mysql专题, 执行计划解读,聚簇索引,分表,常用的JSON 函数,默认的事务等级,spring连接mysql后关闭了自动提交吗?事务隔离级别。
mysql专题, 执行计划解读,聚簇索引,分表,常用的JSON 函数,默认的事务等级,spring连接mysql后关闭了自动提交吗?事务隔离级别。
2025-01-02 14:13:20
789
原创 kafka专题,spring-cloud-stream连接kafka,消费者集群调优,默认提供的分区策略,分区设计
kafka专题,spring-cloud-stream连接kafka,消费者集群调优,默认提供的分区策略,分区设计。
2025-01-02 11:13:30
1327
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅