- 博客(53)
- 收藏
- 关注

原创 CodeTop 100
给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: s = “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: s = “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: s = “pwwkew”输出: 3解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。请注意,你的答案必须是 子串 的长度,“pwke” 是一个子序列,不是
2024-02-21 21:56:24
1246
原创 Raft 的选举和Zab的选举有什么区别?
Raft 和 Zab(ZooKeeper Atomic Broadcast)都是分布式一致性协议的核心算法,分别用于。中实现强一致性(CP)。它们的选举机制有显著区别,主要体现在。
2025-04-04 14:50:03
5
原创 Raft 协议的选举过程是怎样的?
的核心机制,通过明确的规则选举 Leader(主节点),确保集群中只有一个主节点能处理写请求。如果需要更深入的细节,可以参考 Raft 论文或 Nacos 源码中的。Raft 协议的选举过程是其实现。
2025-04-04 14:42:33
16
原创 Nacos 的AP和CP底层是怎么实现的?
两种模式,分别适用于不同的业务场景。AP 模式是 Nacos 的默认模式,适用于临时实例(如微服务),强调高可用性,采用。CP 模式适用于永久实例(如数据库、Redis 等),强调强一致性,采用。Nacos 作为一款动态服务发现、配置管理和服务管理平台,支持。如果需要更深入的实现细节,可参考 Nacos 源码中的。(阿里巴巴自研的 AP 协议)实现最终一致性。
2025-04-04 14:35:48
27
原创 Spring event 和 MQ的区别及应用场景
都是用于解耦系统组件的通信机制,但设计目标和适用场景有显著差异。例如:用户注册成功后,触发邮件发送、积分更新等操作。例如:订单服务通知库存服务扣减库存。
2025-04-04 13:54:43
37
原创 LLM 性能优化有哪些手段?
如需深入某类技术(如量化实践),可参考具体框架(如DeepSpeed、vLLM)的文档。LLM(大语言模型)性能优化是一个多维度、多层次的系统工程,涉及从。
2025-04-04 11:21:09
221
原创 Redis 的 Raft 选举协议
的高可用实现中(尽管 Redis Cluster 默认使用类似 Gossip 的协议,但 Raft 的思想在 Sentinel 的领导者选举中有体现)。脑裂指集群因网络分区导致多个节点同时认为自己是主节点,引发数据不一致。Redis Cluster 虽未直接使用 Raft,但其。Redis Sentinel 使用。
2025-04-03 16:43:15
113
原创 线程池线程存活判断和回收底层实现原理?
以下是线程池回收空闲线程的详细流程和底层原理(以。调用processWorkerExit()和线程数参数,可以平衡资源利用率和性能。线程池中线程的回收机制主要依赖于。移除线程引用,终止线程。
2025-04-02 22:04:30
126
原创 RocketMq 5.0之后延时消息底层是怎么实现的?
RocketMQ 5.0 在时间轮(Timer Wheel)的实现上进行了显著优化,主要基于。对于需要更高可靠性的场景,可结合外部调度系统(如 ElasticJob)增强分布式协调能力。机制,以支持高精度、高并发的延迟消息调度。计算到期时间戳(currentTime + 5min)RocketMQ 5.0 的时间轮采用。RocketMQ 5.0 的时间轮通过。添加任务(延迟5分钟)将任务插入对应槽的链表。
2025-04-02 21:40:26
25
原创 为什么String要定义成不可变的?
的,Java 的字符串处理将面临安全性、性能和一致性的多重挑战。类可被继承,子类仍可能通过其他方法(如反射或覆盖)修改。类被设计为 final。
2025-03-25 22:39:16
49
原创 微服务拆分原则
(如OrderPaidEvent)改为异步协作,将系统可用性从99.5%提升到99.95%。通过这种结构化表述,既能展现理论深度,又体现落地经验,远超单纯罗列"高内聚低耦合"的浅层回答。"我们基于DDD拆分微服务时,首先通过事件风暴识别出。过程中曾因过度拆分导致调用链过长,后通过引入。
2025-03-24 22:17:42
189
原创 在团队中如何推动技术方案落地?遇到过哪些阻力?
建议补充一个你实际经历中的细节(如:如何说服持反对意见的资深同事),会让回答更具说服力。在XX项目中,老订单系统耦合严重,QPS达到5000时频繁超时,但团队对重构存在顾虑。3个月内完成拆分,错误率下降90%,并沉淀出《分布式事务避坑指南》内部文档。需要推动微服务拆分方案落地,同时保证平滑迁移。
2025-03-24 21:55:13
76
原创 SSE底层实现?SSE 和 websocket的区别?
SSE(Server-Sent Events)和 WebSocket 是两种常见的实现服务器与客户端实时通信的技术,但它们的底层实现、适用场景和特性有显著区别。以下是对 SSE 和 WebSocket 的详细对比,包括底层实现、优缺点以及适用场景。SSE 是基于 HTTP 协议的单向通信技术,服务器可以向客户端推送数据,但客户端不能通过 SSE 向服务器发送数据。
2025-03-24 20:47:51
257
原创 ConcurrentHashMap的size是怎么保证线程安全的
方法是一个复杂但高效的设计,它通过多种技术手段来保证线程安全,同时尽量减少性能开销。如果需要更深入的源码分析或示例代码,我可以进一步提供!方法会遍历所有桶,并累加每个桶中的元素数量。在 JDK 1.8 中,内部将数据存储在多个。为了避免多线程同时更新。
2025-03-23 15:39:34
12
原创 LongAdder 的底层实现原理
的核心思想是通过分散竞争来减少线程之间的冲突,从而提升性能。是 Java 中用于高效统计并发计数的一个类,它在高并发场景下比。如果需要更深入的源码分析或示例代码,我可以进一步提供!是一个简单的类,包含一个。
2025-03-23 15:36:53
13
原创 client产生CLOSE_WAIT状态产生的原因以及解决方式?
是 TCP 连接关闭过程中的一种状态,通常出现在客户端或服务器端的一方主动关闭连接时。状态的产生,提升系统的稳定性和性能。状态表示被动关闭方已经收到。通过以上方法,可以有效减少。包,但尚未发送自己的。
2025-03-20 21:39:20
41
原创 SynchronousQueue 底层实现原理是啥?是用来干啥的?
的底层实现和用途,可以更好地利用它解决线程间数据传递的问题。,用于在两个线程之间直接传递数据。是 Java 并发包 (
2025-03-20 21:38:07
9
原创 RocketMQ pull、push、pop三种模式有什么区别?你会选择哪种?
是三种不同的消息消费模式,它们的主要区别在于消息的获取方式和适用场景。根据实际业务需求选择合适的消费模式,可以有效提升系统的性能和可靠性。在 RocketMQ 中,
2025-03-20 21:05:39
28
原创 手写一个简易的线程池
使用// 任务队列 private final Thread [ ] workerThreads;// 工作线程数组 private volatile boolean isShutdown = false;// 线程池关闭标志 // 构造函数 public SimpleThreadPool(int poolSize) {// 初始化工作线程 for(int i = 0;
2025-03-19 23:20:38
19
原创 MySQL为什么选择InnoDB做为存储引擎?
在面试中,如果被问到“为什么选择InnoDB作为存储引擎”,你可以从技术优势和应用场景的角度进行回答,展现你对数据库引擎的理解和实际应用经验。这意味着在高并发场景下,多个事务可以同时操作同一张表的不同行,而不会互相阻塞,从而大大提高了并发性能。,即使在数据库异常崩溃的情况下,也能通过日志文件(redo log)恢复数据,确保数据的持久性和一致性。:在我们的系统中,通过合理配置InnoDB的缓冲池大小,显著提升了查询性能。:不支持事务和行级锁,适合读多写少的场景,但在需要事务支持的系统中不适用。
2025-03-19 23:00:58
16
原创 select、poll、epoll的区别?
selectpoll和epoll是 Linux 系统中用于实现 I/O 多路复用的三种机制,它们的主要作用是同时监控多个文件描述符(如套接字),并在文件描述符就绪时通知应用程序进行处理。
2025-03-19 22:50:37
21
原创 讲讲synchronized的锁优化?
是 Java 中用于实现线程同步的关键字,但在早期版本中,它的性能较差,主要是因为锁的实现是基于操作系统的互斥量(Mutex),会导致线程频繁地在用户态和内核态之间切换。为了提升性能,JVM 对 进行了多种优化,主要包括 锁升级、锁消除、锁粗化 和 自适应自旋锁 等。以下是这些优化的详细说明:锁升级是 JVM 对 锁的优化机制,根据锁的竞争情况动态调整锁的级别,从低开销的锁逐步升级为高开销的锁。锁升级分为以下几个阶段:锁消除是 JVM 在编译时对代码进行优化,去除不必要的锁。3. 锁粗化(Lock
2025-03-19 10:02:06
15
原创 如何判断feign调用有没有存在循环调用?
在微服务架构中,Feign 调用可能会因为服务间的依赖关系导致 循环调用(即服务 A 调用服务 B,服务 B 又调用服务 A),从而引发无限递归、系统崩溃等问题。为了避免这种情况,可以通过以下方式实现 Feign 调用的循环调用检测:通过在请求头中传递调用链信息,可以检测是否存在循环调用。服务端拦截器注册拦截器2. 使用分布式链路追踪工具分布式链路追踪工具(如 Zipkin、SkyWalking)可以自动记录服务调用链,并检测循环调用。在 中配置 Zipkin:检测循环调用在 Zipki
2025-03-19 10:01:48
6
原创 Full GC 排查的方式有哪些?
Full GC(Full Garbage Collection) 是 Java 虚拟机(JVM)中的一种垃圾回收机制,它会清理整个堆内存(包括新生代和老年代),通常会导致应用程序暂停(Stop-The-World)。Full GC 的频繁发生会严重影响系统性能,因此需要及时排查和优化。以下是排查 Full GC 的常见方式:使用监控工具可以实时观察 JVM 的内存使用情况和 GC 行为。jstat:关键指标::Full GC 次数。:Full GC 总耗时。:GC 总耗时。jmap:
2025-03-19 10:01:20
156
原创 如果你的技术方案被否定了,怎么办?
保持冷静,理性对待。主动沟通,了解原因。分析问题,优化方案。提出备选方案,争取支持。接受结果,总结经验,持续提升。通过积极应对,你可以将这次否定转化为成长的机会,提升自己的技术能力和职业素养。
2025-03-19 10:00:46
16
原创 CompletableFuture实现原理?
的实现原理基于任务链和回调机制,通过Completion对象和栈结构管理任务的依赖关系。它提供了强大的异步编程能力,但也需要谨慎使用,避免回调地狱和调试困难的问题。通过合理使用,可以显著提升程序的并发性能和响应速度。
2025-03-18 18:35:17
21
原创 Redis的消息队列是怎么实现的
List:适合简单的点对点队列。Pub/Sub:适合发布-订阅模式。Stream:适合高级消息队列,支持持久化、消费者组和消息确认。Sorted Set:适合延迟队列。根据具体需求选择合适的方式,可以充分发挥 Redis 的高性能和灵活性。
2025-03-18 18:33:56
77
原创 TiDB 有时候会出现数据写不进去的情况,这是什么原因导致的?
集群资源不足(CPU、内存、磁盘 I/O)。Region 分布不均或热点问题。事务冲突或锁等待。TiKV 写入限流或 Raft 日志堆积。PD 调度问题。TiDB 配置问题(事务大小限制、GC 压力)。网络问题(延迟、带宽不足)。版本兼容性问题。通过监控工具、日志分析和参数调整,可以逐步定位并解决问题。如果问题复杂,建议联系 PingCAP 官方支持团队获取帮助。
2025-03-18 18:31:46
61
原创 Rabbitmq、Kafka、Rocketmq,让你进行技术选型的话,你会选择哪个?
在选择消息队列(MQ)时,和都是非常流行的解决方案,但它们的设计目标和使用场景有所不同。
2025-03-18 18:30:41
426
原创 怎么实现数据库数据平滑迁移?
充分准备:明确目标、备份数据、选择工具。合理设计:根据业务需求选择全量迁移、增量迁移或双写方案。严格验证:确保数据一致性和业务连续性。监控优化:迁移后持续监控和优化目标数据库。通过以上步骤,可以实现数据库的平滑迁移,最大限度地减少对业务的影响。
2025-03-18 18:29:05
41
原创 一次http请求需要经过哪些步骤?
DNS 解析:将域名转换为 IP 地址。建立 TCP 连接:通过三次握手建立可靠连接。发送 HTTP 请求:客户端构造并发送请求报文。服务器处理请求:服务器解析请求并生成响应。返回 HTTP 响应:服务器发送响应报文给客户端。关闭 TCP 连接:释放或复用连接。客户端渲染或处理:客户端解析并展示响应内容。可选的 HTTPS 加密:通过 TLS/SSL 加密通信。这些步骤共同完成了一次完整的 HTTP 请求-响应过程。
2025-03-18 18:24:23
142
原创 分布式事务3PC解决了2PC哪些问题?
3PC 通过增加阶段和引入超时机制,改进了 2PC 的阻塞问题和单点故障问题,提高了分布式事务的容错性和可靠性。尽管 3PC 的实现复杂度和性能开销较高,但在需要高可靠性的分布式系统中,3PC 是一个更好的选择。
2025-03-18 18:21:57
47
原创 本地消息表怎么是怎么实现分布式事务的?
本地消息表是一种简单有效的分布式事务解决方案,通过将消息的发送和业务操作放在同一个事务中,确保两者的一致性。
2025-03-18 18:18:30
35
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人