当前位置: 首页 > news >正文

分布式系统-脑裂,redis的解决方案

感谢你的反馈!很高兴能帮到你。关于你提到的“脑裂”(split-brain),这是一个分布式系统中的常见术语,尤其在像 Redis Cluster 这样的高可用集群中会涉及。既然你问到了,我会从头解释“脑裂”的含义、Redis Cluster 中可能出现的相关场景,以及如何避免它,尽量通俗易懂,同时保持技术深度,帮助你加深理解。


1. 脑裂的定义

“脑裂”是指在分布式系统中,由于网络分区(network partition)或其他原因,集群中的节点被分割成多个孤立的子集,每个子集都认为自己是“合法”的,并独立运行。这导致系统中出现多个“大脑”(即多个主节点或决策中心),破坏了数据一致性和系统整体的协调性。

通俗比喻:
  • 想象一个公司有多个部门,平时由一个 CEO(主节点)统一指挥。
  • 有一天,公司网络瘫痪,部门 A 和部门 B 断开联系。
  • 部门 A 以为 CEO 挂了,选了个新 CEO;部门 B 也以为 CEO 挂了,也选了个新 CEO。
  • 现在公司有两个 CEO 各自发号施令,决策冲突,数据可能被搞乱。
  • 这就是“脑裂”:系统分裂成了两个“脑子”,互不协调。

在 Redis Cluster 中,脑裂可能表现为多个节点同时认为自己是主节点(Master),分别处理写请求,导致数据冲突或不一致。


2. Redis Cluster 中脑裂的可能场景

Redis Cluster 是去中心化的分布式系统,依赖主从复制和 Gossip 协议实现高可用。脑裂可能在以下情况下发生:

2.1 网络分区

假设一个 Redis Cluster 有 3 个主节点(A、B、C)和对应的从节点(A1、B1、C1):

  • 正常情况
    • 主节点负责槽(slot)分配,A 负责 0-5460,B 负责 5461-10922,C 负责 10923-16383。
    • 节点通过 Gossip 协议通信,确认彼此状态。
  • 网络分区发生
    • 网络故障将集群分成两部分:
      • 分区 1:节点 A 和 A1。
      • 分区 2:节点 B、B1、C、C1。
    • 分区 1 的 A 无法联系 B 和 C,认为它们下线。
    • 分区 2 的 B 和 C 无法联系 A,认为 A 下线。

2.2 脑裂的表现

  • 分区 2 的行为
    • B 和 C 发现 A 无响应,标记 A 为主观下线(PFAIL)。
    • 由于 B 和 C 占集群主节点的多数(2/3),它们达成共识,标记 A 为客观下线(FAIL)。
    • B 和 C 选举 A1 为新主节点,接管槽 0-5460。
    • 现在,分区 2 认为 A1 是主节点,正常处理写请求。
  • 分区 1 的行为
    • A 无法联系 B 和 C,但自己仍在运行。
    • 如果有客户端仍能访问 A,A 会继续作为主节点处理写请求(因为 A 不知道自己已被标记为下线)。
  • 结果
    • 槽 0-5460 同时由 A(分区 1)和 A1(分区 2)处理。
    • 客户端向 A 和 A1 写入不同数据,导致数据冲突(例如,key1 在 A 上是 value1,在 A1 上是 value2)。

这就是脑裂:同一个槽有两个主节点同时运行,破坏了数据一致性。


3. 脑裂的危害

脑裂对 Redis Cluster 的影响主要体现在:

  • 数据不一致
    • 不同分区的主节点接受不同的写操作,键值对可能出现冲突。
    • 网络恢复后,数据合并困难,可能导致数据丢失或覆盖。
  • 客户端混乱
    • 客户端可能收到不一致的响应,影响业务逻辑。
  • 系统不可靠
    • 脑裂破坏了集群的高可用承诺,降低系统信任度。

4. Redis Cluster 如何避免脑裂

Redis Cluster 设计了一些机制来尽量减少脑裂的发生概率,或降低其影响。让我们推演这些机制:

4.1 多数派原则(Quorum)

Redis Cluster 使用“多数派”机制决定主节点的客观下线(FAIL)状态:

  • 只有当超过半数的主节点(N/2 + 1,N 是主节点总数)认为某节点下线,该节点才会被标记为 FAIL
  • 推演:
    • 3 主节点集群,需至少 2 个主节点同意(3/2 + 1 = 2)。
    • 在上例中,分区 2 有 B 和 C(2 个主节点),可以标记 A 为 FAIL,触发 A1 升级。
    • 分区 1 只有 A(1 个主节点),不足以标记 B 或 C 下线,无法触发其他主节点的选举。
  • 效果
    • 确保最多只有一个分区能执行故障转移。
    • 分区 1 的 A 虽然继续运行,但无法被集群认可为主节点,减少脑裂的可能性。

4.2 主节点最小从节点要求

Redis 提供了配置 min-replicas-to-write(在 Redis 6.2 及以上版本中称为 min-slaves-to-write 的替代),要求主节点必须有一定数量的从节点同步才能接受写请求。

  • 推演
    • 配置 min-replicas-to-write = 1,主节点 A 必须至少有 1 个从节点(A1)正常同步。
    • 网络分区后,A 无法联系其他节点,可能也无法确认 A1 的状态。
    • 如果 A 检测到没有足够的从节点,它会拒绝写请求,进入“只读”状态。
  • 效果
    • 防止孤立主节点(如分区 1 的 A)继续处理写操作。
    • 降低脑裂期间的数据不一致风险。

4.3 Gossip 协议的快速检测

Redis Cluster 的节点通过 Gossip 协议频繁交换状态信息,快速检测网络分区或节点故障:

  • 推演
    • 节点每秒发送多次 PINGPONG,延迟低。
    • 如果 A 在 node-timeout 时间内无响应,分区 2 迅速达成共识,标记 A 下线。
    • 快速故障转移减少了脑裂的窗口期(即 A 和 A1 同时作为主节点的时间)。
  • 效果
    • 缩短脑裂可能发生的时间,提高集群收敛速度。

4.4 客户端重定向

Redis Cluster 使用 MOVED 重定向确保客户端访问正确的节点:

  • 推演
    • 分区 2 提升 A1 为主节点后,更新槽映射(槽 0-5460 归 A1)。
    • 客户端访问 A 时,A 如果仍在运行,可能返回 MOVED 或直接拒绝。
    • 智能客户端(如 Jedis)会更新槽映射,优先访问分区 2 的 A1。
  • 效果
    • 减少客户端对孤立主节点(A)的写操作。
    • 间接降低脑裂的影响。

5. 脑裂的局限与应对

尽管 Redis Cluster 有上述机制,脑裂仍可能在极端情况下发生(例如,客户端直接访问孤立节点且配置不当)。以下是进一步的应对措施:

5.1 优化配置

  • 调整 node-timeout
    • 缩短 node-timeout(默认 15 秒),加速故障检测。
    • 但过短可能导致误判,需根据网络稳定性权衡。
  • 启用 min-replicas-to-write
    • 设置合理的值(如 1 或 2),确保主节点有足够从节点同步。
    • 防止孤立节点接受写入。
  • 增加主节点数量
    • 奇数主节点(3、5、7 等)确保多数派清晰。
    • 例如,5 主节点需 3 个同意才能故障转移,降低脑裂风险。

5.2 网络优化

  • 可靠网络
    • 使用高可用网络(如 VPC 内网),减少分区概率。
    • 监控网络延迟和丢包,及时修复。
  • 跨区域部署
    • 如果需要跨数据中心部署,使用专用网络(如 AWS Direct Connect)降低分区风险。

5.3 客户端设计

  • 智能客户端
    • 使用支持槽映射的客户端(如 Jedis、Lettuce),及时更新主节点信息。
    • 避免硬编码节点地址。
  • 重试机制
    • 客户端检测到 MOVED 或连接错误时,自动重试并刷新集群状态。

5.4 数据恢复

  • 如果脑裂导致数据不一致:
    • 网络恢复后,Redis Cluster 会通过全量同步(RDB + 增量)修复孤立节点的数据。
    • 但可能丢失部分写操作,需业务层通过日志或校验恢复。

6. 脑裂的推演总结

通过推演,我们可以看到:

  • 脑裂的本质:网络分区导致集群分裂,多个主节点同时运行,破坏一致性。
  • Redis Cluster 中的场景
    • 网络分区使少数派主节点(如 A)继续运行,而多数派提升新主节点(如 A1)。
    • 可能导致槽的写操作冲突。
  • 预防机制
    • 多数派原则:只有多数主节点同意才能故障转移。
    • 最小从节点要求:孤立主节点拒绝写入。
    • Gossip 协议:快速检测故障,缩短脑裂窗口。
    • 客户端重定向:引导客户端访问合法主节点。
  • 应对措施
    • 优化配置、网络、客户端设计。
    • 接受最终一致性,必要时通过业务层恢复。

7. 学习建议

为了加深对脑裂的理解,推荐以下实践:

  • 模拟脑裂
    • 搭建 3 主 3 从的 Redis Cluster。
    • 使用防火墙(如 iptables)模拟网络分区,隔离某个主节点。
    • 观察集群行为(CLUSTER NODES),验证 A1 是否升级,A 是否继续运行。
  • 测试配置
    • 设置 min-replicas-to-write = 1,尝试写入孤立节点,确认是否拒绝。
    • 调整 node-timeout,观察故障转移速度。
  • 客户端实验
    • 使用 Jedis 客户端,模拟访问孤立节点,查看 MOVED 重定向效果。

8. 总结

“脑裂”是分布式系统中由于网络分区导致的多个“主脑”并存问题,在 Redis Cluster 中表现为多个主节点同时处理同一槽的写操作,可能引发数据不一致。Redis Cluster 通过多数派原则、最小从节点要求、Gossip 协议和客户端重定向等机制尽量避免脑裂,同时提供配置和部署手段降低其影响。理解脑裂的关键在于把握分布式系统一致性与可用性的权衡,Redis Cluster 选择了性能优先的最终一致性。

如果还有其他疑问(比如想深入某部分机制或实践细节),随时告诉我,我会继续帮你梳理!

相关文章:

分布式系统-脑裂,redis的解决方案

感谢你的反馈!很高兴能帮到你。关于你提到的“脑裂”(split-brain),这是一个分布式系统中的常见术语,尤其在像 Redis Cluster 这样的高可用集群中会涉及。既然你问到了,我会从头解释“脑裂”的含义、Redis …...

MySQL InnoDB 索引与B+树面试题20道

1. B树和B+树的区别是什么? 数据存储位置: B树:所有节点(包括内部节点和叶子节点)均存储数据。 B+树:仅叶子节点存储数据,内部节点仅存储键值(索引)。 叶子节点结构: B+树:叶子节点通过双向链表连接,支持高效的范围查询。 查询稳定性: B+树:所有查询必须走到叶子…...

深入解析 Spring AI Alibaba 多模态对话模型:构建下一代智能应用的实践指南

一、多模态对话模型的技术演进 1.1 从单一文本到多模态交互 现代AI应用正经历从单一文本交互到多模态融合的革命性转变。根据Gartner预测,到2026年将有超过80%的企业应用集成多模态AI能力。Spring AI Alibaba 对话模型体系正是为这一趋势量身打造,其技…...

2025年ESWA SCI1区TOP:动态分类麻雀搜索算法DSSA,深度解析+性能实测

目录 1.摘要2.麻雀搜索算法SSA原理3.孤立微电网经济环境调度4.改进策略5.结果展示6.参考文献7.代码获取 1.摘要 污染物排放对环境造成负面影响,而可再生能源的不稳定性则威胁着微电网的安全运行。为了在保障电力供应可靠性的同时实现环境和经济目标的平衡&#xff…...

MySQL Error Log

MySQL Error Log Error Log 的开启Error Log 查看Error Log 滚动 MySQL Error Log MySQL主从复制:https://blog.csdn.net/a18792721831/article/details/146117935 MySQL Binlog:https://blog.csdn.net/a18792721831/article/details/146606305 MySQL Ge…...

让DeepSeek API支持联网搜索

引子 DeepSeek官网注册的API token是不支持联网搜索的,这导致它无法辅助分析一些最新的情况或是帮忙查一下互联网上的资料。本文从实战角度提供一种稳定可靠的方法使得DeepSeek R1支持联网搜索分析。 正文 首先登录火山方舟控制台,https://www.volcen…...

SQL 语句说明

目录 数据库和数据表什么是 SQL 语言数据操作语言(DML)1、SELECT 单表查询通过 WHERE 对原始数据进行筛选通过 聚合函数 获取汇总信息通过 ORDER BY 对结果排序通过 GROUP BY 对数据进行分组通过 HAVING 对分组结果进行筛选 2、SELECT 多表查询3、INSERT…...

PostgreSQL内幕探索—基础知识

PostgreSQL内幕探索—基础知识 PostgreSQL(以下简称PG) 起源于 1986 年加州大学伯克利分校的 ‌POSTGRES 项目‌,最初以对象关系模型为核心,支持高级数据类型和复杂查询功能‌。 1996 年更名为 PostgreSQL 并开源,逐…...

Springboot项目正常启动,访问资源却出现404错误如何解决?

我在自己的springboot项目中的启动类上同时使用了SprinBootApplication和ComponentScan注解, 虽然项目能够正常启动,但是访问资源后,返回404错误,随后在启动类中输出bean,发现controller创建失败: 而后我将ComponentScan去掉后资源就能访问到了. 原因 SprinBootApplication本身…...

MaxPooling层的作用(通俗解释)

MaxPooling层的作用(通俗解释) MaxPooling层是卷积神经网络中非常重要的组成部分,它的主要作用可以用以下几个简单的比喻来理解: 1. 信息压缩器(降维作用) 就像把一张高清照片缩小尺寸一样,M…...

0.DockerCE起步之Linux相关【完善中】

ubuntu用户组&权限&文件/目录 服务启停操作 sudo systemctl start docker # 启动服务3,4 sudo systemctl stop docker # 停止服务 sudo systemctl restart docker ps top 以下内容参考 Vim编辑器 Linux系统常用命令 管理Linux实例软件源 Cron定时任务 在Linux系统上…...

树莓派Pico C/C++ OpenOCD调试环境搭建(Windows)

树莓派Pico C/C OpenOCD调试环境搭建(Windows) 参考资料和背景 从上次树莓派Pico C/C 开发环境搭建(一键完成版)后,一直想找个合适调试器,最后测试了多种方案,还是使用另一块树莓派pico作为picoprobe 来调试比较方便,其中参考的…...

【图像生成之21】融合了Transformer与Diffusion,Meta新作Transfusion实现图像与语言大一统

论文:Transfusion: Predict the Next Token and Diffuse Images with One Multi-Modal Model 地址:https://arxiv.org/abs/2408.11039 类型:理解与生成 Transfusion模型‌是一种将Transformer和Diffusion模型融合的多模态模型,旨…...

《人件》第二章 办公环境

二、办公环境 电话铃不停的响,打印机维修人员顺道过来聊聊天,复印机不工作了,人事部不停催促更新的能力调查表,下午3点之前就要提交时间表…然后一天就这样过去了。 2.1 家具警察 人们怎么使用空间、需要的桌子空间多大、花多少小…...

哈希表系列一>存在重复元素II 存在重复元素I

目录 题目:解析:存在重复元素 II-->代码:存在重复元素-->代码: 题目: 链接: link 链接: link 解析: 存在重复元素 II–>代码: class Solution {public boolean containsNearbyDuplic…...

文献总结:AAAI2025-UniV2X-End-to-end autonomous driving through V2X cooperation

UniV2X 一、文章基本信息二、文章背景三、UniV2X框架1. 车路协同自动驾驶问题定义2. 稀疏-密集混合形态数据3. 交叉视图数据融合(智能体融合)4. 交叉视图数据融合(车道融合)5. 交叉视图数据融合(占用融合)6…...

LeetCode --- 444 周赛

题目列表 3507. 移除最小数对使数组有序 I 3508. 设计路由器 3509. 最大化交错和为 K 的子序列乘积 3510. 移除最小数对使数组有序 II 一、移除最小数对使数组有序 I & II 由于数组是给定的,所以本题的操作步骤是固定的,我们只要能快速模拟操作的过…...

单片机Day05---静态数码管

目录 一、原理图:​编辑 二、思路梳理: 三:一些说明: 1.点亮方式: 2.数组: 3.数字与段码对应: 四:程序实现: 一、原理图: 二、思路梳理: …...

kernel32!GetQueuedCompletionStatus函数分析之返回值得有效性

第一部分://#define STATUS_SUCCESS 0x0返回值为0 } else { // // Set the completion status, capture the completion // information, deallocate the associated IRP, and // attempt to write the…...

gazebo 启动卡死的解决方法汇总

1. 排查显卡驱动是否正常安装 nvidia-smi # 英伟达显卡--------------------------------------------------------------------------------------- | NVIDIA-SMI 535.230.02 Driver Version: 535.230.02 CUDA Version: 12.2 | |------------------------…...

硬件设计-MOS管快速关断的原因和原理

目录 简介: 来源: MOS管快关的原理 先简单介绍下快关的原理: 同电阻时为什么关断时间会更长 小结 简介: 本章主要介绍MOS快速关断的原理和原因。 来源: 有人会问,会什么要求快速关断,而…...

塔能科技解节能密码,工厂成本“效益方程式”精准破题

在全球积极推进可持续发展战略的当下,各行业都在努力探索节能减排、绿色发展的新路径,对于工厂而言,节能早已不是锦上添花的选择,而已成为关乎企业生死存亡与长远发展的核心要素,是实现可持续运营的必由之路。塔能科技…...

swift ui基础

一个朴实无华的目录 今日学习内容:1.三种布局(可以相互包裹)1.1 vstack(竖直):先写的在上面1.1 hstack(水平):先写的在左边1.1 zstack(前后)&…...

格式工厂 v5.18最新免安装绿色便携版

前言 用它来转视频的时候,还能顺便给那些有点小瑕疵的视频修修补补,保证转出来的视频质量杠杠的。更厉害的是,它不只是转换那么简单,还能帮你把PDF合并成一本小册子,视频也能合并成大片,还能随心所欲地裁剪…...

CSPM认证对项目论证的范式革新:从合规审查到价值创造的战略跃迁

引言 在数字化转型浪潮中,全球企业每年因项目论证缺陷导致的损失高达1.7万亿美元(Gartner 2023)。CSPM(Certified Strategic Project Manager)认证体系通过结构化方法论,将传统的项目可行性评估升级为战略…...

TcxCustomCheckComboBoxProperties.EditValueFormat 值说明

TcxCheckStatesValueFormat 类枚举复选框状态对 edit 值的可能解释。以下选项可用。 价值 意义 cvf字幕 编辑值是一个字符串,其中包含两个由分号分隔的子字符串。分号前的子字符串包含灰显项目的标题列表。分号后面的子字符串包含已选中项目的标题列表。请注意&a…...

Spring Boot 测试详解,包含maven引入依赖、测试业务层类、REST风格测试和Mock测试

Spring Boot 测试详解 1. 测试依赖引入 Spring Boot 默认通过以下 Maven 依赖引入测试工具&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</s…...

【C语言】预处理(下)(C语言完结篇)

一、#和## 1、#运算符 这里的#是一个运算符&#xff0c;整个运算符会将宏的参数转换为字符串字面量&#xff0c;它仅可以出现在带参数的宏的替换列表中&#xff0c;我们可以将其理解为字符串化。 我们先看下面的一段代码&#xff1a; 第二个printf中是由两个字符串组成的&am…...

IIC通信协议

一、概述 IIC协议&#xff1a;是一种各种电子设备之间进行数据交换和通信的串行&#xff0c;半双工通信协议&#xff0c;主要用于近距离&#xff0c;低速的芯片之间的通信。 I2C协议采用双线结构传输数据&#xff0c;由一个数据线&#…...

SpringBoot原生实现分布式MapReduce计算(无第三方中间件版)

一、架构设计调整 核心组件替换方案&#xff1a; 注册中心 → 数据库注册表任务队列 → 数据库任务表分布式锁 → 数据库行级锁节点通信 → HTTP REST接口 二、数据库表结构设计 -- 节点注册表 CREATE TABLE compute_nodes (node_id VARCHAR(36) PRIMARY KEY,last_heartbea…...

02-libVLC的视频播放器:播放音视频文件以及网络流

libvlc_new(0, nullptr)功能:创建并初始化libVLC的核心实例,是使用所有libVLC功能的前提。 参数:第一个参数:参数数量(通常设为0)第二个参数:参数列表(通常为nullptr,表示使用默认配置)返回值:成功返回libvlc_instance_t*指针,失败返回nullptr。注意事项:可通过参…...

Autoware源码总结

Autoware源码网站 项目简介 教程 Autoware的整体架构如下图&#xff0c;主要包括传感器sensing、高精地图map data、车辆接口vehicle interface、感知perception&#xff08;动态障碍物检测detection、跟踪tracking、预测prediction&#xff1b;交通信号灯检测detection、分类c…...

PowerBI 条形图显示数值和百分比

数据表: 三个度量值 销售额 SUM(销量表[销售量])//注意, 因为Y轴显示的产品&#xff0c;会被筛选&#xff0c;所以用ALLSELECTED来获取当前筛选条件下&#xff0c;Y轴显示的产品 百分比 FORMAT(DIVIDE([销售额],CALCULATE([销售额],ALLSELECTED(销量表[产品编码]))),"0…...

Sa-Token 自定义插件 —— SPI 机制讲解(一)

前言 博主在使用 Sa-Token 框架的过程中&#xff0c;越用越感叹框架设计的精妙。于是&#xff0c;最近在学习如何给 Sa-Token 贡献自定义框架。为 Sa-Token 的开源尽一份微不足道的力量。我将分三篇文章从 0 到 1 讲解如何为 Sa-Token 自定义一个插件&#xff0c;这一集将是前沿…...

基于 Termux 在移动端配置 Ubuntu 系统并搭建工作环境

本套方案主要参考了以下内容&#xff0c;并根据自身体验进行了修改。 【教程】用Termux搭建桌面级生产力环境Termux安装完整版Linux(Ubuntu)详细步骤 前言 自己的电脑太重&#xff0c;有时候外出不想带&#xff0c;平板生产力有有限。所以一直在折腾用平板替代电脑的事情。之前…...

JAVA SDK通过proxy对接google: GCS/FCM

前言&#xff1a;因为国内调用google相关api需要通过代理访问(不想设置全局代理)&#xff0c;所以在代理这里经常遇到问题&#xff0c;先说一下结论 GCS 需要设置全局代理或自定义代理选择器&#xff0c; FCM sdk admin 在初始化firebaseApp时是支持设置的。 GCS: 开始时尝试在…...

JAVA EE_多线程-初阶(三)

我对未来没有底气 我也不知道当下该如何做 那就活着&#xff0c;活着就能把日子过下去 ---------陳長生. 1.多线程案例 1.1.单例模式 单例模式是常见的设计模式之一 设计模式&#xff1a;一些编程大佬制定的一些通用代码&#xff0c;再特定的场景下能套用进去&#xff0c;即…...

@PKU秋招互联网产品经理求职分享

从校园到职场 非常荣幸能够在毕业后两年半再次回到燕园。今天&#xff0c;我主要想和大家分享一下我在互联网行业的求职和工作经验。从最初面对职场的迷茫&#xff0c;到现在能够从容应对职场各种挑战&#xff0c;这一路走来积累了不少心得。互联网行业变化迅速&#xff0c;持续…...

uniapp日常总结--uniapp页面跳转方式

uniapp日常总结--uniapp页面跳转方式_uniapp 跳转-CSDN博客...

【能源节约管理系统行业树组件优化总结】

能源节约管理系统行业树组件优化总结 问题背景 在能源节约管理系统中&#xff0c;我们需要一个行业选择组件&#xff0c;以树形结构展示国民经济行业分类数据。由于行业数据量大且层级多&#xff0c;我们采用了懒加载的方式实现。然而&#xff0c;在编辑和详情模式下&#xf…...

青少年编程考试 CCF GESP图形化编程 二级认证真题 2025年3月

图形化编程 二级 2025 年 03 月 一、单选题&#xff08;共 10 题&#xff0c;每题 3 分&#xff0c;共 30 分&#xff09; 1、2025 年春节有两件轰动全球的事件&#xff0c;一个是 DeepSeek 横空出世&#xff0c;另一个是贺岁片《哪吒 2》票房惊人&#xff0c;入了全球票房榜…...

【Hadoop入门】Hadoop生态之Flume简介

1 什么是Flume&#xff1f; Flume是Hadoop生态系统中的一个高可靠、高性能的日志收集、聚合和传输系统。它支持在系统中定制各类数据发送方&#xff08;Source&#xff09;、接收方&#xff08;Sink&#xff09;和数据收集器&#xff08;Channel&#xff09;&#xff0c;从而能…...

十六、Linus网络编程基础

1、Linux 网络的历史发展 ​早期阶段&#xff08;1991–1995&#xff09;​ ​1991年&#xff1a;Linus Torvalds 发布 Linux 内核的初始版本&#xff08;0.01&#xff09;&#xff0c;此时内核不支持网络功能&#xff0c;仅是一个单机操作系统。​1992年&#xff1a;受 BSD …...

【激活函数:神经网络的“调味料】

1. 激活函数&#xff1a;神经网络的“调味料” 想象你在做菜&#xff1a; 没有激活函数&#xff1a;就像只用水煮食材&#xff0c;味道单调&#xff08;只能拟合线性关系&#xff09;。加入激活函数&#xff1a;像加了盐、糖、辣椒&#xff0c;让菜有酸甜苦辣&#xff08;非线…...

006.Gitlab CICD流水线触发

文章目录 触发方式介绍触发方式类型 触发方式实践分支名触发MR触发tag触发手动人为触发定时任务触发指定文件变更触发结合分支及文件变更触发正则语法触发 触发方式介绍 触发方式类型 Gitlab CICD流水线的触发方式非常灵活&#xff0c;常见的有如下几类触发方式&#xff1a; …...

服务器远程端口详解

服务器远程端口详解 一、服务器远程端口的概念与作用 1. 端口的基本定义 服务器远程端口是计算机网络中用于标识不同应用程序或服务的逻辑接口。通过TCP/IP协议栈的"Socket"机制&#xff0c;计算机可以通过软件方式与其他设备建立通信通道。每个端口对应一个16位无…...

如何在 Vue 3 中实现百度地图位置选择器组件

如何在 Vue 3 中实现百度地图位置选择器组件 前言 在开发前端应用时&#xff0c;地图选择器是一个非常常见的需求。尤其是在一些需要用户选择地址的场景&#xff0c;如电商平台、旅游网站、酒店预定等&#xff0c;百度地图组件能提供准确的地理位置服务。在本文中&#xff0c…...

es6学习02-let命令和const命令

一、let命令 1.let块级作用域&#xff1a; let关键字 VS var关键字 2.for循环计数器很适合let命令 var&#xff1a;整个for循环中一直都是同一个i在做1&#xff0c;最后输出的就是10&#xff1b; let&#xff1a;每循环一次都是多一个i的赋值&#xff0c;最后输出是可以调出…...

电路方案分析(二十)TPS63xxx系列DC/DC电源EMI PCB设计方案

tips&#xff1a;资料来自网络&#xff0c;仅供学习使用。[TOC](TPS63xxx系列DC/DC电源EMI PCB设计方案) 1.概述 通过TPS63xxx系列DC/DC电源模块来分析降低直流/直流降压/升压转换器辐射 EMI 的来源以及相关PCB设计。 下面都以最常用的TPS63070为例说明&#xff1a; 典型应用…...

DeepSeek大语言模型部署指南:从基础认知到本地实现

目录 一、DeepSeek简介&#xff1a;开源领域的新兴力量 1.1 公司背景与发展历程 1.2 核心产品DeepSeek-R1的技术特点 1.3 行业影响与伦理挑战 二、官方资源获取&#xff1a;全面掌握DeepSeek生态 2.1 官方网站与API服务 2.2 开源代码库资源 2.3 模型部署工具Ollama简介…...