时间空间复杂度入门
本文介绍时间与空间复杂度入门知识,用Big O表示法(如O(1)、O(n)、O(n²))估算算法性能。复杂度关注最坏情况,越小越好。时间复杂度常由循环嵌套层数决定,空间复杂度看额外内存占用。结合多个代码示例,帮助初学者快速理解算法效率评估基础。
路由策略:怎么让请求按照设定的规则发到不同的节点上?
本文深入讲解RPC中的路由策略,如何通过IP路由和参数路由实现灰度发布。在服务集群中,借助路由规则筛选请求节点,可精准控制流量,降低上线风险。参数路由基于请求内容打标分流,确保同一业务对象请求始终调用相同版本实例,实现平滑升级与细粒度流量治理。(238字)
单/双链表代码实现
本文详解单/双链表的代码实现,涵盖增删查改操作。重点解析三大技巧:1)同时持有头尾节点引用以优化插入删除效率;2)使用虚拟头尾节点简化边界处理;3)避免内存泄漏的良好编程习惯。适合掌握链表基础后深入学习。
链表(链式存储)基本原理
链表是一种通过指针串联节点的线性结构,无需连续内存,支持高效增删。单链表仅有next指针,双链表增加prev指针以支持双向遍历。相比数组,链表插入删除灵活,无扩容负担,但不支持随机访问,查找需从头遍历。实际开发中常用双链表,配合虚拟头结点简化操作。
服务发现:到底是要 CP 还是 AP?
本文探讨RPC框架中服务发现的CP与AP选择问题。在超大规模集群下,基于ZooKeeper的强一致(CP)方案因性能瓶颈易导致宕机,而最终一致(AP)方案通过消息总线实现数据同步,兼顾性能与稳定性,更适用于高可用、低延迟的服务发现场景。
RPC 实战:剖析 gRPC 源码,动手实现一个完整的 RPC
本讲通过剖析 gRPC 源码,深入讲解 RPC 框架的实现原理。从 Protocol Buffer 接口定义到 Stub 生成,结合 Netty 实现网络通信,解析请求的序列化、Frame 封装及 HTTP/2 多路复用机制,带你动手实现一个完整 RPC,掌握高性能框架设计核心。
时间空间复杂度入门
本文介绍时间与空间复杂度入门知识,使用Big O表示法(如O(1)、O(n)、O(n²)),强调估算而非精确计算,保留最高次项。时间复杂度常由循环嵌套层数决定,空间复杂度看额外内存占用。分析以最坏情况为主,越小越好。结合多个代码示例,帮助初学者理解复杂度分析的基本方法与常见误区。
线性结构检索:从数组和链表的原理初窥检索本质
本节深入解析数组与链表的存储特性及其对检索效率的影响。数组支持随机访问,适合二分查找,检索效率为O(log n);链表虽检索较慢,但插入删除高效,适用于频繁动态调整场景。通过改造链表结构,如结合数组提升检索性能,揭示了数据组织方式对检索的核心作用,帮助理解“快速缩小查询范围”这一检索本质。
03 | 哈希检索:如何根据用户 ID 快速查询用户信息?
本文介绍了哈希表的原理与实现。通过哈希函数将键转化为数组下标,利用数组随机访问特性实现O(1)查询。针对哈希冲突,讲解了开放寻址法(线性探查、二次探查、双散列)和链表法两种解决方案,并分析其优劣。最后指出哈希表的缺点:空间开销大、不支持有序操作。实际应用中常结合链表或红黑树优化性能。
时间空间复杂度入门
初学者只需掌握:用Big O表示时空复杂度,保留最高次项;时间复杂度看循环嵌套层数,空间复杂度看额外内存占用;通常分析最坏情况,越小越好。n指输入规模,如数组长度。