17k15 分钟

2025-01-15🌱上海: ☀️ 🌡️+6°C 🌬️↓18km/h # TCP 和 UDP 有什么区别? TCP 提供了可靠、面向连接的传输,适用于需要数据完整性和顺序的场景 UDP 则提供了更轻量、面向报文的传输,适用于实时性要求高的场景。 (后序会具体分析讲解什么面向报文与面向连接) 区别总结: 特性 TCP UDP 连接方式 面向连接 无连接 可靠性 提供可靠性,保证数据按顺序到达 不可靠,不保证顺序或完整性 流量控制/拥塞控制 提供流量控制和拥塞控制 没有流量控制和拥塞控制 顺序保证 保证数据顺序 不保证数据顺序 头部大小
8.9k8 分钟

2025-01-15🌱上海: ☀️ 🌡️+6°C 🌬️↓18km/h # HTTP 1.0 和 2.0 有什么区别? # 思维导图总结 # HTTP协议层次结构图 # HTTP1.0 HTTP/1.0是无状态、无连接的应用层协议。 HTTP 1.0 是首个在通讯中指定版本号的 HTTP 协议版本。该版本中,浏览器与服务器连接短暂,每次请求都要新建 TCP 连接,服务器处理完请求后即刻断开连接,且不跟踪客户、不记录过往请求,即每次与服务器交互都需新开连接 。 无连接:每次请求都要建立连接,需要使用 keep-alive 参数建立长连接、HTTP1.1默认长连
6.4k6 分钟

2025-01-15🌱上海: ☀️ 🌡️+6°C 🌬️↓18km/h # 常见的HTTP状态码有哪些? # HTTP状态码都有什么? # 趣图解译 # HTTP概述 HTTP 是获取 HTML 文档等资源的协议,是 Web 数据交换基础,属于客户端 — 服务器协议,由接受方(常为 Web 浏览器)发起请求,完整网页文档包含文本、布局描述、图片等多种资源 。 客户端与服务端之间通过交换一个个独立的消息(而非数据流)进行通信。由客户端发出的消息被称作请求(request),由服务端发出的应答消息被称作响应(response)。 20 世纪 90 年代设计出可扩展的
32k29 分钟

2025-01-15🌱上海: ☀️ 🌡️+6°C 🌬️↓18km/h # 谈谈你了解的最常见的几种设计模式,说说他们的应用场景 # 设计模式总览 设计模式总共有23种,同时又分为三大类: 创建型模式(Creational Patterns):这类模式主要关注对象的创建过程。它们分别是: 单例模式(Singleton) 工厂方法模式(Factory Method) 抽象工厂模式(Abstract Factory) 建造者模式(Builder) 原型模式(Prototype) 结构型模式(Structural Patterns):这类模式主要关注类和对象之间的组合。它
33k30 分钟

2025-01-15🌱上海: ☀️ 🌡️+6°C 🌬️↓18km/h # 单例模式有哪几种实现?如何保证线程安全? # 什么是单例模式? 单例设计模式(Singleton Design Pattern)理解起来非常简单。一个类只允许创建一个对象(或者实例),那这个类就是一个单例类,这种设计模式就叫作单例设计模式,简称单例模式。 单例模式属于创建型模式,这类模式主要关注对象的创建过程。 # 为什么要使用单例? # 1.1. 表示全局唯一 对于系统中应该且只能保存一份的数据,可设计为单例类,比如: 配置类:系统仅有一个配置文件,加载到内存后映射成唯一的【配置实例】,可选择使用
38k35 分钟

2025-01-15🌱上海: ☀️ 🌡️+6°C 🌬️↓18km/h # 如何解决Redis中的热点Key问题? # 什么是热点key问题? 热 key 问题指的是在某个瞬间,大量请求集中访问 Redis 里的同一个固定 key,这会造成缓存击穿,使得请求都直接涌向数据库,最终拖垮缓存服务和数据库服务,进而影响应用服务的正常运行。 像热点新闻、热点评论、明星直播这类读多写少的场景,很容易出现热点 key 问题。虽然 Redis 的查询性能比数据库高很多,但它也有性能上限,单节点查询性能一般在 2 万 QPS,所以对单个固定 key 的查询不能超过这个数值。 在服务端读取数据
6.2k6 分钟

2025-01-15🌱上海: ☀️ 🌡️+6°C 🌬️↓18km/h # Redis 主从复制的实现原理是什么? # 总结分析 Redis 的主从复制指一个主节点可将数据复制到一个或多个从节点,从节点与主节点保持数据同步,其流程如下: 开始同步:从节点向主节点发送 PSYNC 命令发起同步请求。 全量复制:首次连接或连接失效时,从节点请求全量复制,主节点发送当前数据快照(RDB 文件)。 增量复制:全量复制完成后,主从保持长连接,主节点通过该连接将后续写操作传给从节点以保证数据一致。 # 扩展分析 # 主从架构 # 主从复制步骤 总的来说主从复制功能的详细步骤可以分为
27k25 分钟

2025-01-15🌱上海: ☀️ 🌡️+6°C 🌬️↓18km/h # Redis 中如何实现分布式锁? # 总结分析 在 Redis 中实现分布式锁,常见做法是将 set ex nx 命令与 lua 脚本组合使用。这一方式能确保多个客户端不会同时获取同一资源锁,还能保障安全解锁以及在意外情况下自动释放锁 。 # 扩展知识 为了能够更好的了解分布式锁的实现原理及为什么实现这些功能进行逐步分析 # 手写一个分布式锁 首先分析一下分布式锁实现都需要满足什么,可以基于JUC中的AQS规范进行参考 # 分布式锁所需满足的条件 独占性 任何时刻只能且仅有一个线程持有 高
8.6k8 分钟

2025-01-15🌱上海: ☀️ 🌡️+6°C 🌬️↓18km/h # Redis 中如何保证缓存与数据库的数据一致性? # 总结分析 缓存和数据库的同步有六种方式: 先更新缓存,再更新数据库; 先更新数据库,再更新缓存; 先删除缓存,再更新数据库,后续查询回种数据到缓存; 先更新数据库,再删除缓存,后续查询回种数据到缓存; 缓存双删策略:更新数据库前后各进行一次删除缓存操作,第二次为延迟删除; 使用定时任务进行重试删除缓存 使用MQ异步定时重试删除缓存 使用 Binlog 异步更新缓存,监听数据库 Binlog 变化异步更新 Redis 缓存。 前三种方式不太推荐。
21k19 分钟

2025-01-15🌱上海: ☀️ 🌡️+6°C 🌬️↓18km/h # Redis 中跳表的实现原理是什么? # 总结分析 # 什么是跳跃链表(跳表) 跳表由多层链表组成,底层存所有元素,上层是下层子集。 插入操作:从最高层找位置,随机确定新节点层数,插入并更新指针。 删除操作:从最高层找节点,在各层更新指针以保持结构。 查找操作:从最高层开始逐层向下,效率高,时间复杂度为 O (logn)。 # 扩展知识 首先回顾下单链表,对于有序链表,若要查找其中某个数据,只能从头到尾遍历,这种方式查找效率低,时间复杂度为 O (n)。 在单链表中,查找一个数需