【数据库知识】Mysql进阶-高可用MHA(Master High Availability)方案
mysql高可用MHA(Master High Availability)方案
- 集群部署模式下的高可用方案
- 一、高可用架构原理
- 1. 核心组件
- 2. 故障切换流程
- 二、详细部署步骤 (3节点集群)
- 1. 环境准备
- 2. 节点配置(以 node1 为例)
- 3. 初始化集群
- 4. 部署MySQL Router
- 三、关键配置说明
- 1. Group Replication 参数
- 2. MySQL Router 配置
- 四、故障切换机制详解
- 1. 故障检测
- 2. 切换流程
- 3. 网络分区处理
- 五、验证与监控
- 1. 集群状态检查
- 2. 故障模拟测试
- 六、生产环境注意事项
- 主从模式下的高可用方案
- 一、高可用架构核心原理
- 二、主流高可用方案
- 方案1:MHA(Master High Availability)
- 方案2:Keepalived + VIP
- 方案3:ProxySQL中间件
- 关联知识
集群部署模式下的高可用方案
以下是 MySQL 8.x 高可用集群的部署方案及原理详解,以 InnoDB Cluster(基于MySQL Group Replication和MySQL Router)为核心实现:
一、高可用架构原理
1. 核心组件
组件 | 作用 |
---|---|
Group Replication | 基于Paxos协议的多主/单主同步复制,实现数据一致性 |
MySQL Router | 提供读写分离和故障转移的中间件 |
MySQL Shell | 管理集群的自动化工具 |
2. 故障切换流程
二、详细部署步骤 (3节点集群)
1. 环境准备
# 所有节点执行
systemctl stop firewalld
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
yum install -y mysql-server mysql-shell mysql-router
2. 节点配置(以 node1 为例)
# /etc/my.cnf (所有节点)
[mysqld]
# 通用配置
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid# Group Replication 配置
server_id = 1 # 每个节点唯一
gtid_mode = ON
enforce_gtid_consistency = ON
binlog_checksum = NONE
log_bin = mysql-bin
log_slave_updates = ON
binlog_format = ROW
master_info_repository = TABLE
relay_log_info_repository = TABLE
transaction_write_set_extraction = XXHASH64# Group Replication 核心参数
plugin_load_add = 'group_replication.so'
group_replication_group_name = "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa" # UUID
group_replication_start_on_boot = OFF
group_replication_local_address = "node1:33061" # 内部通信端口
group_replication_group_seeds = "node1:33061,node2:33061,node3:33061"
3. 初始化集群
# 在第一个节点(node1)执行
mysqlsh
\connect root@node1
dba.configureInstance('root@node1', {password: 'StrongPass123!'})
dba.createCluster('myCluster')
\sql SET PERSIST group_replication_bootstrap_group=ON;
\js cluster = dba.getCluster()
cluster.addInstance('root@node2:3306', {password: 'StrongPass123!'})
cluster.addInstance('root@node3:3306', {password: 'StrongPass123!'})
4. 部署MySQL Router
# 任一节点执行
mysqlrouter --bootstrap root@node1:3306 --directory /opt/mysqlrouter --user=mysql
systemctl start mysqlrouter
三、关键配置说明
1. Group Replication 参数
参数 | 说明 |
---|---|
group_replication_consistency | 一致性级别(EVENTUAL/BEFORE/…) |
group_replication_flow_control | 流量控制防止节点过载 |
group_replication_exit_state_action | 节点退出时的行为(ABORT_SERVER/OFFLINE_MODE) |
2. MySQL Router 配置
# /opt/mysqlrouter/mysqlrouter.conf
[DEFAULT]
logging_folder = /var/log/mysqlrouter
runtime_folder = /var/run/mysqlrouter
data_folder = /opt/mysqlrouter/data[routing:rw]
bind_address = 0.0.0.0
bind_port = 6446
destinations = metadata_cache://myCluster/default?role=PRIMARY[routing:ro]
bind_address = 0.0.0.0
bind_port = 6447
destinations = metadata_cache://myCluster/default?role=SECONDARY
四、故障切换机制详解
1. 故障检测
• 心跳机制:节点间每1秒发送心跳包
• 超时判定:连续5次未收到响应视为节点故障(默认5秒)
2. 切换流程
-
故障确认:剩余节点通过多数派投票确认主节点失效
-
新主选举:基于以下优先级自动选举:
• 节点权重(group_replication_member_weight
)• 数据最新的节点
• 启动顺序
-
路由切换:MySQL Router 2秒内更新路由表
3. 网络分区处理
• 脑裂防护:采用 group_replication_unreachable_majority_timeout
(默认3小时)
• 恢复策略:
# 被隔离节点恢复后执行
STOP GROUP_REPLICATION;
START GROUP_REPLICATION;
五、验证与监控
1. 集群状态检查
-- 查看集群成员
SELECT * FROM performance_schema.replication_group_members;-- 检查同步延迟
SHOW STATUS LIKE 'group_replication%delay';
2. 故障模拟测试
# 在Primary节点执行
systemctl stop mysqld# 观察自动切换
mysqlsh -e "dba.getCluster().status()"
- 监控指标
| 指标 | 健康标准 |
|-------------------------------|----------------------------|
|group_replication_primary
| 显示有效IP地址 |
|group_replication_delay
| 延迟 < 100ms |
|group_replication_members
| 存活节点数 ≥ (N/2 + 1) |
六、生产环境注意事项
-
网络要求:
• 节点间RTT < 2ms• 使用10Gbps以上网络
• 禁用UDP协议的ECN功能(避免数据包乱序)
-
安全配置:
-- 创建专用账户 CREATE USER 'cluster_admin'@'%' IDENTIFIED BY 'SecurePass!'; GRANT ALL PRIVILEGES ON *.* TO 'cluster_admin'@'%' WITH GRANT OPTION;-- 启用SSL加密 SET GLOBAL group_replication_ssl_mode = "REQUIRED";
-
备份策略:
# 物理备份建议 mysqlbackup --user=root --password=xxx --backup-dir=/backup --compress \ --include-databases="mydb" --ssl-mode=REQUIRED
通过以上方案,MySQL集群可在30秒内完成自动故障转移,RPO=0(零数据丢失),RTO<60秒,满足金融级高可用要求。
主从模式下的高可用方案
以下是MySQL主从模式下实现高可用性的完整方案及原理详解,包含多种主流实现方式:
一、高可用架构核心原理
关键机制:
- 故障检测:通过心跳检测(2-5秒)判断主库状态
- 自动切换:VIP漂移或连接重定向到新主
- 数据一致性:确保切换后新主数据完整性
- 脑裂防护:使用多数派确认机制
二、主流高可用方案
方案1:MHA(Master High Availability)
部署步骤:
- 环境准备(所有节点):
# 安装Perl模块
yum install -y perl-DBD-MySQL perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager# 下载MHA
wget https://github.com/yoshinorim/mha4mysql-manager/archive/refs/tags/v0.58.tar.gz
tar zxvf v0.58.tar.gz && cd mha4mysql-manager-0.58
perl Makefile.PL && make && make install
- 配置SSH互信:
ssh-keygen -t rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub root@master
ssh-copy-id -i ~/.ssh/id_rsa.pub root@slave1
- 配置文件:
# /etc/mha/app1.cnf
[server default]
manager_workdir=/var/log/mha/app1
manager_log=/var/log/mha/app1/manager.log
ssh_user=root
repl_user=repl
repl_password=Repl@1234[server1]
hostname=master
candidate_master=1[server2]
hostname=slave1
no_master=1
- 启动管理节点:
masterha_manager --conf=/etc/mha/app1.cnf
切换过程:
- 检测主库不可达(连续3次失败)
- 确认从库数据一致性
- 提升最优先从库为新主
- 修改其他从库指向新主
- 通知应用VIP切换
方案2:Keepalived + VIP
配置示例:
- Master节点keepalived.conf:
vrrp_script chk_mysql {script "/etc/keepalived/check_mysql.sh"interval 2weight 2
}vrrp_instance VI_1 {state MASTERinterface eth0virtual_router_id 51priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.1.200/24}track_script {chk_mysql}
}
- 健康检查脚本:
#!/bin/bash
# /etc/keepalived/check_mysql.sh
if ! mysql -uroot -p$password -e "SELECT 1" >/dev/null 2>&1; thensystemctl stop keepalivedexit 1
fi
exit 0
切换特点:
• VIP漂移时间:3-5秒
• 需配合半同步复制使用
• 需要人工介入修复原主
方案3:ProxySQL中间件
架构实现:
关键配置:
-- 添加后端节点
INSERT INTO mysql_servers(hostgroup_id, hostname, port)
VALUES
(10, 'master', 3306),
(20, 'slave1', 3306),
(20, 'slave2', 3306);-- 配置读写分离规则
INSERT INTO mysql_query_rules(rule_id, active, match_pattern, destination_hostgroup)
VALUES
(1, 1, '^SELECT', 20),
(2, 1, '.*', 10);-- 设置健康检查
UPDATE global_variables SET variable_value='2000'
WHERE variable_name='mysql-monitor_slave_lag_when_null';LOAD MYSQL VARIABLES TO RUNTIME;
SAVE MYSQL VARIABLES TO DISK;
自动切换流程:
- 每1秒执行
SELECT @@read_only
检查 - 标记连续失败节点为OFFLINE_SOFT
- 自动将流量路由到新主
- 通过Galera或Group Replication同步配置
三、数据一致性保障
- 半同步复制配置
# master配置
[mysqld]
plugin_load = "rpl_semi_sync_master=semisync_master.so"
rpl_semi_sync_master_enabled = 1
rpl_semi_sync_master_timeout = 1000 # 1秒超时# slave配置
[mysqld]
plugin_load = "rpl_semi_sync_slave=semisync_slave.so"
rpl_semi_sync_slave_enabled = 1
- GTID模式启用
-- 所有节点执行
SET GLOBAL gtid_mode = ON;
SET GLOBAL enforce_gtid_consistency = ON;-- my.cnf配置
[mysqld]
gtid_mode = ON
enforce_gtid_consistency = ON
log_slave_updates = ON
四、异常处理机制
- 脑裂防护措施
# 切换前状态检查脚本
CURRENT_MASTER=$(mysql -h vip -P 3306 -uroot -p$pass -e "SELECT @@server_id" -sN)
if [ "$CURRENT_MASTER" != "$EXPECTED_MASTER" ]; thenecho "Split brain detected!" >&2exit 1
fi
- 数据补偿机制
-- 使用pt-table-checksum校验数据一致性
pt-table-checksum --replicate=test.checksums u=root,p=password,h=vip-- 使用pt-table-sync修复差异
pt-table-sync --execute --sync-to-master h=slave1,D=test,t=users
五、监控指标建议
监控项 | 预警阈值 | 检测方法 |
---|---|---|
主从延迟 | > 60秒 | SHOW SLAVE STATUS |
主库可用性 | 连续3次失败 | mysqladmin ping |
半同步ACK等待 | > 500ms | Status变量监控 |
复制线程状态 | Not running | SHOW PROCESSLIST |
磁盘空间使用率 | > 85% | df -h |
六、方案对比选型
方案 | 切换时间 | 数据一致性 | 复杂度 | 适用场景 |
---|---|---|---|---|
MHA | 10-30s | 强一致 | 中 | 中小规模生产环境 |
Keepalived | 3-5s | 最终一致 | 低 | 简单主从架构 |
ProxySQL | 1-2s | 最终一致 | 高 | 读写分离复杂架构 |
Orchestrator | 5-10s | 强一致 | 中 | 大规模跨机房部署 |
推荐组合:
金融场景:MHA + 半同步复制 + ProxySQL
互联网场景:Orchestrator + 异步GTID + 读写中间件
通过以上方案,MySQL主从架构可实现99.95%以上的可用性,RTO(恢复时间目标)控制在30秒以内,RPO(数据恢复点目标)趋近于零。
关联知识
【分布式技术】分布式共识算法Paxos
相关文章:
【数据库知识】Mysql进阶-高可用MHA(Master High Availability)方案
mysql高可用MHA(Master High Availability)方案 集群部署模式下的高可用方案一、高可用架构原理1. 核心组件2. 故障切换流程 二、详细部署步骤 (3节点集群)1. 环境准备2. 节点配置(以 node1 为例)3. 初始化集群4. 部署MySQL Route…...
类型别名与接口的对比与选择
在 TypeScript 中,类型系统是非常强大且灵活的。两种最常用的类型定义方式就是 类型别名(type) 和 接口(interface)。它们看似相似,实际上在用法和功能上有所不同。在本文中,我们将深入探讨类型…...
《Effective Python》第1章 Pythonic 思维详解——始终用括号包裹单元素元组
《Effective Python》第1章 Pythonic 思维详解——始终用括号包裹单元素元组 在 Python 编程语言中,元组(tuple)是一种不可变的数据结构,常用于表示一组固定的值。尽管元组的语法看似简单,但其中却隐藏着一些微妙的陷…...
【计算机视觉】OpenCV实战项目:ETcTI_smart_parking智能停车系统深度解析
ETcTI_smart_parking智能停车系统深度解析 1. 项目概述2. 技术原理与系统架构2.1 核心算法1) 车牌识别算法2) ETC交易验证 2.2 系统架构 3. 实战部署指南3.1 环境配置3.2 硬件部署规范3.3 系统初始化 4. 常见问题与解决方案4.1 ETC交易失败4.2 车牌识别异常4.3 系统性能瓶颈 5.…...
LintCode第807题-回文数II
描述 判断一个非负整数 n 的二进制表示是否为回文数 我们保证 0 < n < 2^32 - 1 样例1 输入: n 0 输出: True 解释: 0 的二进制表示为:0。 样例2 输入: n 3 输出: True 解释: 3 的二进制表示为:11。 样例3 输入: n 4 输出: False 解释:…...
快速傅里叶变换暴力涨点!基于时频特征融合的高创新时间序列分类模型
往期精彩内容: 单步预测-风速预测模型代码全家桶-CSDN博客 半天入门!锂电池剩余寿命预测(Python)-CSDN博客 超强预测模型:二次分解-组合预测-CSDN博客 VMD CEEMDAN 二次分解,BiLSTM-Attention预测模型…...
股指期货的保证金交易和资金门槛是多少?
股指期货和股票交易最大的区别,就是它不用“全款买房”,而是“首付买房”——只需交一笔保证金就能撬动大额资金,但这也说明了门槛高、风险大。下面就来拆解,到底要准备多少钱才能“上车”。 一、保证金交易:用12万撬…...
spark:map 和 flatMap 的区别(Scala)
场景设定 假设有一个包含句子的 RDD: scala val rdd sc.parallelize(List("Hello World", "Hi Spark")) 目标是:将每个句子拆分成单词。 1. 用 map 的效果 代码示例 scala val resultMap rdd.map(sentence > sentence…...
判断两台设备是否在同一局域网内的具体方法
以下是判断两台设备是否在同一局域网内的具体方法: 1. 检查IP地址和子网掩码 操作步骤: Windows系统: 按 Win R 键,输入 cmd 并回车。输入 ipconfig,查看 IPv4 地址 和 子网掩码(如 192.168.1.5/255.255.2…...
cmake:test project
本文主要探讨cmake在测试和项目中的应用。 add_test add_test(NAME <name> COMMAND <command> [<arg>...] [CONFIGURATIONS <config>...] [WORKING_DIRECTORY <dir>] [COMMAND_EXPAND_LISTS]) add_test(NAME test_uni COMMAND $<TARGET_F…...
Qwen-2.5 omni
问题1 Qwen2.5-Omni的主要功能是什么? Qwen2.5-Omni的主要功能是处理和生成多种模态的数据,包括文本、图像、音频和视频。它能够同时理解和生成这些模态的信息,支持复杂的多模态任务,例如语音对话、视频理解、图像描述生成等。 …...
Problem D: 异常2
1.题目描述 检查危险品程序:生成货物类、机器类,货物类有属性name,机器类有检测的check方法,若货物名称是炸弹、毒药、刀具,则抛出异常提示。 代码如下: import java.util.Scanner; class goods{ Stri…...
AI智慧公园管理方案:用科技重塑市民的“夜游体验”
AI智慧公园管理方案:多场景智能巡检与安全防控 一、背景与痛点分析 夏季夜间,公园成为市民休闲娱乐的核心场所,但管理难度随之激增: 宠物管理失控:未牵绳宠物进入园区,随地排泄、惊扰游客,甚…...
AJAX原理
AJAX使用XHR 对象和服务器进行数据交互 XHR <p class"my-p"></p><script>const xhr new XMLHttpRequest()xhr.open(GET,http://hmajax.itheima.net/api/province)xhr.addEventListener(loadend,()>{// console.log(xhr.response)const data …...
内存泄露,如何判断是资源泄露还是堆栈泄露?
作为软件测试工程师,判断内存泄露类型对于定位和解决问题至关重要。以下是区分资源泄露和堆栈泄露的方法: 1. 基本概念区分 资源泄露(Resource Leak): 指非内存资源未正确释放,如文件句柄、数据库连接、网络套接字等 虽然不直接表现为Java堆内存增长,但会导致系统资源耗…...
无人甘蔗小车履带式底盘行走系统的研究
1.1 研究背景与意义 1.1.1 研究背景 甘蔗作为全球最重要的糖料作物之一,在农业经济领域占据着举足轻重的地位。我国是甘蔗的主要种植国家,尤其是广西、广东、云南等地,甘蔗种植面积广泛,是当地农业经济的重要支柱产业。甘蔗不仅…...
Redis设计与实现——单机Redis实现
RedisDB RedisDB的核心结构 键空间(dict*dict) 结构:哈希表(字典),键为字符串对象(SDS),值为 Redis 对象(字符串、列表、哈希等)。 功能&#x…...
ES C++客户端安装及使用
介绍 Elasticsearch , 简称 ES ,它是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful 风格接口,多数据源&…...
C++学习之STL学习
在经过前面的简单的C入门语法的学习后,我们开始接触C最重要的组成部分之一:STL 目录 STL的介绍 什么是STL STL的历史 UTF-8编码原理(了解) UTF-8编码原理 核心编码规则 规则解析 编码步骤示例 1. 确定码点范围 2. 转换为…...
【东枫科技】使用LabVIEW进行NVIDIA CUDA GPU 开发
文章目录 工具包 CuLab - LabVIEW 的 GPU 工具包特性和功能功能亮点类似 LabVIEW 的 GPU 代码开发支持的功能数值类型和维数开发系统要求授权售价 工具包 CuLab - LabVIEW 的 GPU 工具包 CuLab 是一款非常直观易用的 LabVIEW 工具包,旨在加速 Nvidia GPU 上的计算密…...
LangChain对话链:打造智能多轮对话机器人
LangChain对话链:打造智能多轮对话机器人 目录 LangChain对话链:打造智能多轮对话机器人ConversationChain 是什么核心功能与特点基本用法示例内存机制自定义提示词应用场景与其他链的结合`SequentialChain` 是什么 硬件组成: NodeMC…...
HTML12:文本框和单选框
表单元素格式 属性说明type指定元素的类型。text、password、 checkbox、 radio、submit、reset、file、hidden、image 和button,默认为textname指定表单元素的名称value元素的初始值。type为radio时必须指定一个值size指定表单元素的初始宽度。当type为text 或pas…...
JVM规范之运行时数据区域
JVM运行时数据区 前言为什么要阅读jvm规范?阅读本篇文章可以学习到啥? 正文概述JVM线程私有的运行时数据区pc(program counter) RegisterJVM StackNative Method Stack JVM线程共享的运行时数据区HeapMethod AreaRun-time constant pool 总结参考链接 前…...
LVGL(lv_btnmatrix矩阵按钮)
文章目录 🔧 1. 基本概念📌 lv\_btnmatrix 是什么? 🧱 2. 基本结构和用法✅ 创建按钮矩阵✅ 设置按钮文字 🧰 3. 设置按钮行为🔄 4. 响应按钮点击🎨 5. 自定义样式📌 6. 使用技巧&am…...
AUTOSAR图解==>AUTOSAR_TR_AIDesignPatternsCatalogue
AUTOSAR 人工智能设计模式目录 AUTOSAR传感器执行器与仲裁设计模式的深入解析与图解 目录 简介传感器和执行器模式 架构概述组件结构交互流程应用场景 多请求者或提供者之间的仲裁模式 架构概述组件结构仲裁流程应用场景 总结 1. 简介 AUTOSAR(AUTomotive Open Sy…...
英语时态--中英文对“时间”的不同理解
文章目录 中英文时间上的差异我现在正在休息一般现在时1. 经常发生的动作2. 表客观事实3. 表示现在的状态一般将来时1. will2. be going to含义1:打算在将来某时做某事含义2:某事预计要发生而且不可避免中英文时间上的差异 我现在正在休息 “我现在正在休息。”用英文怎么说…...
Linux基础开发工具一(yum/apt ,vim)
前言 Linux下,如何进行软件安装,查找,卸载 1.源代码安装 2. rpm安装方式,安装包的本质,就是把源代码在Linux下编译好,然后打包(别人把自己编译好的软件打包给你让你去安装) 上面…...
Java 线程池原理
Java 线程池是一种管理和复用线程的机制,其原理如下: 核心概念 线程池的初始化 :在创建线程池时,需要设置一些关键参数,如核心线程数(corePoolSize)、最大线程数(maximumPoolSize&am…...
AJAX 使用 和 HTTP
ajax学习 promise和 awit Node.js 和 webpack 前端工程化 Git工具 AJAX异步的JS和XML: 使用XML对象和服务器通信 在这里插入图片描述 统一资源定位符 URL HTTP 超文本传输协议 域名 资源路径 资源目录和类型 URL 查询参数 使用?表示之后的参数…...
mem0跟Memgraph交互
目录 1. 安装和设置2. 配置连接3. 使用 mem0 进行交互4. 添加和查询数据5. 代码运行结果 1. 安装和设置 首先,确保你已经安装了 Memgraph 和 mem0 库。你可以使用 pip 来安装 mem0: uv pip install "mem0ai[graph]" uv pip install langchai…...
httpclient请求出现403
问题 httpclient请求对方服务器报403,用postman是可以的 解决方案: request.setHeader( “User-Agent” ,“Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:50.0) Gecko/20100101 Firefox/50.0” ); // 设置请求头 原因: 因为没有设置为浏览器形式&#…...
验证码与登录过程逻辑学习总结
目录 前言 一、验证码与登录 二、使用步骤 1.先apipost测试一波 2.先搞验证码 3.跨域问题 4.后端走起 总结 前言 近期要做一个比较完整的demo,需要自己做一个前端登录页面,不过api接口都是现成的,一开始以为过程会很easy,…...
openai接口参数max_tokens改名max-completion-tokens?
文章目录 关于max_tokens参数max_tokens改max-completion-tokens?控制 OpenAI 模型响应的长度 关于max_tokens参数 大模型 API(比如 OpenAI、DeepSeek、Moonshot 等)都是按照“Token 数量”来计费。 控制内容:控制一次请求返回的…...
【办公类-39-07】20250511批量生成通义万相图片(七)彩色背景蝴蝶-筛选无黑无白的图片
制作了教师裁剪的拼图块后,发现如果图案上有黑色,就没法看清出凹凸角,剪起来有误差 所以黑色也要剔除 通义万相下载的彩色蝴蝶有彩色背景的图片,放弃有白色和黑色图案的图片,保留彩色图案的蝴蝶 deepseek、阿夏 20250…...
容器技术 20 年:颠覆、重构与重塑软件世界的力量
目录 容器技术发展史 虚拟化技术向容器技术转变 Docker的横空出世 容器编排技术与Kubernetes 微服务的出现与Istio 工业标准的容器运行时 容器技术与 DevOps 的深度融合 无服务架构推波助澜 展望未来发展方向 从 20 世纪硬件虚拟化的笨重,到操作系统虚拟…...
Docker 部署 - Crawl4AI 文档 (v0.5.x)
Docker 部署 - Crawl4AI 文档 (v0.5.x) 快速入门 🚀 拉取并运行基础版本: # 不带安全性的基本运行 docker pull unclecode/crawl4ai:basic docker run -p 11235:11235 unclecode/crawl4ai:basic# 带有 API 安全性启用的运行 docker run -p 11235:1123…...
在C++中,符号位是否参与位运算
在C中,符号位是否参与位运算取决于具体的运算符和数据类型。以下是详细解释: 1. 按位与(&)、按位或(|)、按位异或(^) 规则:这些运算符会处理包括符号位在内的所有二…...
【计算机网络】NAT技术、内网穿透与代理服务器全解析:原理、应用及实践
📚 博主的专栏 🐧 Linux | 🖥️ C | 📊 数据结构 | 💡C 算法 | 🅒 C 语言 | 🌐 计算机网络 上篇文章:以太网、MAC地址、MTU与ARP协议 下篇文章:五种IO模型与阻…...
redis数据结构-08(SINTER、SUNION、SDIFF、SISMEMBER)
集合运算:SINTER、SUNION、SDIFF、SISMEMBER Redis 集合是一种功能强大的数据结构,可用于存储一组唯一元素。本课基于上一课对 Redis 集合的介绍,深入探讨了使 Redis 集合如此多功能的基本集合操作: SINTER 、 SUNION 、 SDIFF 和…...
大模型都有哪些超参数
大模型的超参数是影响其训练效果、性能和泛化能力的关键设置,可分为以下几大类别并结合实际应用进行详细说明: 一、训练过程相关超参数 学习率(Learning Rate) 作用:控制参数更新的步长,直接影响收敛速度和稳定性。过高会导致震荡或过拟合,过低则收敛缓慢。调整策略:初…...
【更新至2023年】1999-2023年上市公司人工智能词频统计数据(年报词频统计)
【更新至2023年】1999-2023年上市公司人工智能词频统计数据(年报词频统计) 1、时间:1999-2023年 2、来源:上市公司年报 3、指标:股票代码、公司简称、年报标题、年份、行业名称、行业代码、全文-文本总长度、仅中英…...
通过 Azure DevOps 探索 Helm 和 Azure AKS
俗话说:“慷慨之人必昌盛;滋润他人者,必得滋润。” 如果您觉得这篇文章对您有有所帮助,请点赞,关注,转发! 前言 在不断发展的云计算世界中,应用程序的无缝部署和管理至关重要。Azu…...
Go语言标识符
文章目录 标识符的组成规则Go语言关键字预定义标识符标识符命名惯例 特殊标识符标识符访问权限控制 在Go语言中,标识符(Identifier)是用来命名变量、函数、类型、常量等程序实体的名称。 标识符的组成规则 1、必须以字母或下划线(_)开头: 字母包括Unico…...
Spring Cloud : OpenFeign(远程调用)
RestTemplate虽然比直接用HTTPClient简单的多,但是还是存在着许多的问题,比如url拼接麻烦,容易出错,并且可读性很差 public OrderDetail selectOrderById(Integer orderId){OrderDetail orderDetail orderMapper.selectOrderById…...