CentOS Stream 9 中部署 MySQL 8.0 MGR(MySQL Group Replication)一主两从高可用集群
🐇明明跟你说过:个人主页
🏅个人专栏:《MySQL技术精粹》🏅
🔖行路有良友,便是天堂🔖
目录
一、前言
1、MySQL 8.0 中的高可用方案
2、适用场景
二、环境准备
1、系统环境说明
2、主机规划
3、系统基础配置
三、高可用搭建
1、安装MySQL
2、启动MySQL
3、修改配置文件
4、配置高可用
5、高可用测试
6、集群恢复
一、前言
1、MySQL 8.0 中的高可用方案
当你上线一个数据库服务时,最怕的是什么?当然是——挂了!⛔
所以,我们需要让数据库 高可用(High Availability),简单说就是:
“就算有节点崩了,服务也不能停!”
那 MySQL 有哪些高可用的方案呢?我们来一一介绍。
1️⃣ 主从复制(经典老搭档)👥
📝 原理:一个主库(Master)负责写,多个从库(Slave)负责读,通过 二进制日志(binlog)同步数据。
📌 优点:
-
架构简单,上手快
-
性能可接受,读写分离效果好
⚠️ 缺点:
-
没有自动故障转移(主挂了就得手动切)
-
延迟不可避免(主从延迟问题)
💬 通俗说法:
“老大干活,小弟抄笔记📓。老大病倒了,小弟要等人吩咐才能接手。”
2️⃣ MySQL InnoDB Cluster(基于 MGR)🔗
📝 原理:MySQL 8.0 官方推出的高可用方案,基于 Group Replication(MGR),多个节点之间通过组协议互相复制,保持一致性。
📌 优点:
-
官方支持,紧跟版本
-
支持自动故障转移(Single Primary 模式)
-
数据强一致性(保证写入顺序)
⚠️ 缺点:
-
写入冲突需要处理(多主模式下尤为严重)
-
对网络延迟敏感
-
配置复杂度高于主从
💬 通俗说法:
“兄弟三人轮流做老大👑,有规则决定谁上。兄弟有事,其他人自动接班,不用吩咐👌。”
3️⃣ MHA(MySQL High Availability)🛠️
📝 原理:由 Perl 脚本组成的主从复制管理器,能自动检测主库是否宕机,并迅速提升某个从库为新主。
📌 优点:
-
成熟稳定,广泛使用
-
可自动主从切换
⚠️ 缺点:
-
依赖外部监控与管理节点
-
依然是主从架构,存在数据延迟风险
-
项目已停止更新❌(社区维护中)
💬 通俗说法:
“一个看门人👀不停盯着老大,一旦倒下,赶紧推个新老大上位。”
4️⃣ Galera Cluster(三强联盟)🔄
📝 原理:多主同步复制(multi-master synchronous replication),所有节点都可以读写,数据写入同步确认。
📌 优点:
-
每个节点都能写(真正多主)
-
同步复制,强一致性
⚠️ 缺点:
-
网络要求高,对时延非常敏感
-
复杂度高,不适合大批量写入业务
💬 通俗说法:
“三个老大同时写作业📄,但必须每次都核对答案✅,才能交上去。”
5️⃣ ProxySQL + MGR / 主从(代理接力棒)🧠
📝 原理:通过 ProxySQL 把数据库访问做中间层代理,实现读写分离、故障转移等功能。
📌 优点:
-
灵活控制流量
-
可以和多种架构组合
-
支持连接池、SQL 规则分发
⚠️ 缺点:
-
需要额外组件维护
-
配置略复杂
💬 通俗说法:
“在你和数据库之间加个智商超高的中间人🧑⚖️,谁有能力他就安排谁来处理。”
2、适用场景
1️⃣ 主从复制(经典老将)👥
适用场景:
-
🧾 内容管理系统、博客、论坛等中小型网站
-
📊 对写入要求不高,读多写少
-
🧰 开发测试环境,数据可容忍一定延迟
2️⃣ MGR(MySQL Group Replication)📦【官方推荐】
适用场景:
-
🏦 银行、支付、电商等核心系统
-
🛡️ 不能丢数据、强一致性要求
-
🚨 需要自动故障转移、无需人工干预
3️⃣ MHA(MySQL High Availability)🛠️【经典成熟方案】
适用场景:
-
🏢 传统企业系统
-
✅ 使用已有主从架构,想补上自动故障转移
-
💼 中小型业务但需要保障主库稳定运行
4️⃣ Galera Cluster(真正多主)🌀
适用场景:
-
🌍 跨地域写入需求
-
👩💻 同步数据共享协作系统(如 CRM、OA)
-
💾 高并发小事务业务(例如即时通信、IoT 数据采集)
5️⃣ MySQL + ProxySQL + Keepalived(高自由组合)🧠
适用场景:
-
🧩 多读多写复杂业务
-
🛠️ 自定义路由规则、SQL 中间件优化
-
🌐 大型集群 + 运维自动化场景
📊 总结对比表
模式 | 自动选主 | 强一致性 | 多主写 | 网络要求 | 适合场景 |
---|---|---|---|---|---|
主从复制 | ❌(需 MHA) | ❌ | ❌ | 低 | 读多写少系统、小网站 |
MGR(单主) | ✅ | ✅ | ❌ | 中 | 金融、电商、核心服务 |
MGR(多主) | ✅ | ✅ | ✅ | 高 | 冲突可控的小事务系统 |
MHA | ✅(主库) | ❌ | ❌ | 中 | 主从架构增强容灾 |
Galera Cluster | ✅ | ✅ | ✅ | 很高 | 全球分布式写入业务 |
ProxySQL 组合 | ✅(配合 VIP) | 视后端而定 | 取决于后端 | 中 | 高并发多维读写系统 |
二、环境准备
1、系统环境说明
- MySQL高可用模式:Group Replication(MGR)
- MySQL版本:8.0.42
- 操作系统:Centos Stream 9
2、主机规划
这里我们使用3台 Centos Stream 9 服务器,一主两从
3、系统基础配置
关闭SELinux、关闭防火墙,
3台机器配置时钟同步,确保时间一致
添加hosts记录
vim /etc/hosts# 添加如下内容
192.168.40.121 mysql1
192.168.40.122 mysql2
192.168.40.123 mysql3
三、高可用搭建
1、安装MySQL
添加YUM仓库,三台机器上分别执行:
rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el9-1.noarch.rpm
安装mysql-server,三台机器上分别执行:
dnf install mysql-community-server -y
如果出现以下错误:
则执行这条命令:
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2023
然后再次安装:
dnf install mysql-community-server -y
2、启动MySQL
执行以下命令,启动MySQL服务,三台都要执行
systemctl start mysqld
获取临时密码:
grep 'temporary password' /var/log/mysqld.log
运行安全配置向导:
mysql_secure_installation
[root@mysql1 log]# mysql_secure_installationSecuring the MySQL server deployment.Enter password for user root:
The 'validate_password' component is installed on the server.
The subsequent steps will run with the existing configuration
of the component.
Using existing password for root.# 是否修改root密码
Estimated strength of the password: 100
Change the password for root ? ((Press y|Y for Yes, any other key for No) : n... skipping.
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.# 是否删除匿名用户
Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
Success.Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.# 是否禁用Root用户远程登录
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : n... skipping.
By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.# 是否删除测试数据库
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y- Dropping test database...
Success.- Removing privileges on test database...
Success.Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.# 是否刷新权限表
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
Success.All done!
3、修改配置文件
mysql1:
vim /etc/my.cnf# 添加以下内容
server_id=1
gtid_mode=ON
enforce_gtid_consistency=ON
master_info_repository=TABLE
relay_log_info_repository=TABLE
transaction_write_set_extraction=XXHASH64
log_slave_updates=ON
log_bin=binlog
binlog_format=ROW
report_host=mysql1
auto_increment_increment=3
auto_increment_offset=2plugin-load=group_replication.so
group_replication_group_name="aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"
group_replication_local_address="192.168.40.121:33061"
group_replication_group_seeds="192.168.40.121:33061,192.168.40.122:33061,192.168.40.123:33061"
group_replication_bootstrap_group=OFF
group_replication_single_primary_mode=ON
group_replication_start_on_boot=ON
group_replication_enforce_update_everywhere_checks=OFF
mysql2:
vim /etc/my.cnf# 添加以下内容
server_id=2
gtid_mode=ON
enforce_gtid_consistency=ON
master_info_repository=TABLE
relay_log_info_repository=TABLE
transaction_write_set_extraction=XXHASH64
log_slave_updates=ON
log_bin=binlog
binlog_format=ROW
report_host=mysql2
auto_increment_increment=3
auto_increment_offset=2plugin-load=group_replication.so
group_replication_group_name="aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"
group_replication_local_address="192.168.40.122:33061"
group_replication_group_seeds="192.168.40.121:33061,192.168.40.122:33061,192.168.40.123:33061"
group_replication_bootstrap_group=OFF
group_replication_single_primary_mode=ON
group_replication_start_on_boot=ON
group_replication_enforce_update_everywhere_checks=OFF
mysql3:
vim /etc/my.cnf# 添加以下内容
server_id=3
gtid_mode=ON
enforce_gtid_consistency=ON
master_info_repository=TABLE
relay_log_info_repository=TABLE
transaction_write_set_extraction=XXHASH64
log_slave_updates=ON
log_bin=binlog
binlog_format=ROW
report_host=mysql3
auto_increment_increment=3
auto_increment_offset=2plugin-load=group_replication.so
group_replication_group_name="aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"
group_replication_local_address="192.168.40.123:33061"
group_replication_group_seeds="192.168.40.121:33061,192.168.40.122:33061,192.168.40.123:33061"
group_replication_bootstrap_group=OFF
group_replication_single_primary_mode=ON
group_replication_start_on_boot=ON
group_replication_enforce_update_everywhere_checks=OFF
✅ 基础配置部分:
server_id=1
- 当前 MySQL 实例的唯一标识,在复制集群中必须唯一。
gtid_mode=ON
enforce_gtid_consistency=ON
- 启用 GTID(全局事务标识)模式,并强制一致性,GTID 是 Group Replication 所必需的。
master_info_repository=TABLE
relay_log_info_repository=TABLE
- 使用表而非文件来存储主服务器和中继日志信息,便于管理与容灾恢复。
transaction_write_set_extraction=XXHASH64
- 启用事务写集提取(必须的配置),用来检测冲突,推荐使用 XXHASH64。
log_slave_updates=ON
- 表示从库接收到主库事务后,也会记录 binlog,这对多主架构(如 Group Replication)是必须的。
log_bin=binlog
binlog_format=ROW
- 启用二进制日志,并使用 ROW 格式(记录每一行的变化,适合复制)。
report_host=mysql1
- 当前节点在复制架构中的标识名,用于其他节点识别它(建议填写主机名或 IP)。
auto_increment_increment=3
auto_increment_offset=2
- 多主节点避免自动递增主键冲突的关键参数:
- 例如 3 个节点时,节点1 offset=1,节点2 offset=2,节点3 offset=3,这样每个节点产生的自增 ID 就不会冲突。
✅ Group Replication 配置部分:
plugin-load=group_replication.so
- 加载 Group Replication 插件。
group_replication_group_name="aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"
- 集群的全局唯一 ID(UUID),所有节点必须一致。
group_replication_local_address="192.168.40.121:33061"
- 当前节点用于与其他节点通信的地址和端口(33061 是默认的 group_replication 通信端口)。
group_replication_group_seeds="192.168.40.121:33061,192.168.40.122:33061,192.168.40.123:33061"
- 所有节点的通信地址列表,用于节点之间互相发现。
group_replication_bootstrap_group=OFF
- 表示当前节点不是首次启动集群的引导节点。首次搭建集群时,在其中一个节点上设置为 ON 启动一次,然后改回 OFF。
group_replication_single_primary_mode=ON
- 表示开启单主模式(Single Primary Mode),只有一个节点对外提供读写服务,其余为只读。
group_replication_start_on_boot=ON
- 启动 MySQL 服务时自动启动 Group Replication。
group_replication_enforce_update_everywhere_checks=OFF
- 如果是多主模式(Multi-Primary),这个值需要设为 ON。但当前为单主模式,所以设为 OFF。
重启MySQL,三台全部执行
systemctl restart mysqld
4、配置高可用
分别登录到3台MySQL上面
[root@mysql log]# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 22
Server version: 8.0.42 MySQL Community Server - GPLCopyright (c) 2000, 2025, Oracle and/or its affiliates.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
创建数据同步账户(三台都要执行)
CREATE USER rpl_user@'%' IDENTIFIED BY '****************';
GRANT REPLICATION SLAVE ON *.* TO rpl_user@'%';
ALTER USER 'rpl_user'@'%' IDENTIFIED WITH mysql_native_password BY '****************';
RESET MASTER;
指定主从账户与指定通信频道(两台从节点执行)
CHANGE MASTER TO MASTER_USER="rpl_user", MASTER_PASSWORD="****************" FOR CHANNEL 'group_replication_recovery';
启动复制组(主节点执行)
SET GLOBAL group_replication_bootstrap_group=ON;
START GROUP_REPLICATION;
SET GLOBAL group_replication_bootstrap_group=OFF;
检查状态(主节点执行)
如果显示 ONLINE 则启动成功
SELECT * FROM performance_schema.replication_group_members;
将两台从节点加入复制组(两台从节点执行)
START GROUP_REPLICATION;
检查状态(任意节点执行),如果全部显示 ONLINE 则启动成功
5、高可用测试
将主节点mysql1关机,然后查看集群状态
可以看到主节点已经从mysql1变成了mysql2
此时虽然挂了一个节点,但是MySQL集群仍可以继续访问
6、集群恢复
接下来将mysql1重新开机,观察集群状态,可以看到mysql1并没有自动加入集群,此时就需要我们手动恢复
登录到mysql1,执行以下命令,指定复制用户和密码
CHANGE REPLICATION SOURCE TO SOURCE_USER='rpl_user', SOURCE_PASSWORD='****************' FOR CHANNEL 'group_replication_recovery';
START GROUP_REPLICATION;
再次检查,可以看到,mysql1已经处于 ONLINE 状态,集群恢复正常
💕💕💕每一次的分享都是一次成长的旅程,感谢您的陪伴和关注。希望这些关于MySQL的文章能陪伴您走过技术的一段旅程,共同见证成长和进步!😺😺😺
🧨🧨🧨让我们一起在技术的海洋中探索前行,共同书写美好的未来!!!
相关文章:

CentOS Stream 9 中部署 MySQL 8.0 MGR(MySQL Group Replication)一主两从高可用集群
🐇明明跟你说过:个人主页 🏅个人专栏:《MySQL技术精粹》🏅 🔖行路有良友,便是天堂🔖 目录 一、前言 1、MySQL 8.0 中的高可用方案 2、适用场景 二、环境准备 1、系统环境说明…...

pycharm 新UI 固定菜单栏 pycharm2025 中文版
pycharm 新UI 文件 -> 设置 -> 外观与行为 -> 外观 -> UI选项 -> 主菜单:显示在主工具栏上方. 即可固定...
跟单业务和量化交易业务所涉及到的设计模式
🔁 跟单业务中常用的设计模式: 1. 观察者模式(Observer) 场景:一个大V下单,系统需要自动通知所有跟随者进行同步下单。好处:解耦下单者与跟随者,支持灵活扩展、异步通知。面试亮点…...

我的世界Java版1.21.4的Fabric模组开发教程(十一)创建方块
这是适用于Minecraft Java版1.21.4的Fabric模组开发系列教程专栏第十一章——创建方块。想要阅读其他内容,请查看或订阅上面的专栏。 方块(Block) 是构成Minecraft世界的主要组成部分,是组成游戏地图的最基本单元,也是模组开发的核心元素之一…...

VR/AR 视网膜级显示破局:10000PPI 如何终结颗粒感时代?
一、传统液晶 “纱窗效应”:VR 沉浸体验的最大绊脚石 当用户首次戴上 VR 头显时,眼前密密麻麻的像素网格往往打破沉浸感 —— 这正是传统液晶显示在近眼场景下的致命缺陷。受限于 500-600PPI 的像素密度,即使达到 4K 分辨率,等效到…...
C++ 命令模式:设计与实现详解
一、引言 在软件开发中,我们经常需要将“请求”或“操作”封装成对象,以便在不同的上下文环境中传递、存储、延迟执行或撤销。命令模式(Command Pattern)正是为解决这类问题而生的行为设计模式。本文将深入探讨 C++ 中命令模式的设计理念、实现方式及其应用场景。 二、命…...

系统思考:化繁为简的艺术
系统思考,其实是一门化繁为简的艺术。当我们能够把复杂的问题拆解成清晰的核心以及更加简单,从而提升团队的思考品质和行动品质,发挥最大的合力。 每个公司都想在某方面成为最优秀的,但是实际上具有穿透性的洞察力和摆脱虚荣心的清…...
java/mysql/ES下的日期类型分析
mysql的timestamp和datetime mysql的TIMESTAMP类型内部存的是unix时间戳,可认为是一个32位的整型,它记录了1970.1.1以来的秒数。因为存储长度4字节的限制,所以有2038年限制。 DATETIME类型内部存的是long型,记录了1000.1.1以来的…...

Angularjs-Hello
1 关于Angularjs 最近因为项目需要又要做这个,所以简单复习下。其实这个大概7,8年前就用过,当时做了几个简单页面觉得太简单就还是回去做嵌入式了。按照互联网技术的进化速度,本来以为早死在 沙滩上了,没想到现在还在坚…...
Python训练营---Day41
DAY 41 简单CNN 知识回顾 数据增强卷积神经网络定义的写法batch归一化:调整一个批次的分布,常用与图像数据特征图:只有卷积操作输出的才叫特征图调度器:直接修改基础学习率 卷积操作常见流程如下: 1. 输入 → 卷积层 …...

Linux 1.0.4
父子shell linux研究的就是shell 打开两个窗口就是两个shell 终端的软件有很多 bash也是一个软件 我们在terminal里面再打开一个bash,然后再次使用ps命令发现多出来一个bash,之后点击exit只是显示了一个exit,这个只是退出了在terminal中打开…...

Qt -下载Qt6与OpenCV
博客主页:【夜泉_ly】 本文专栏:【暂无】 欢迎点赞👍收藏⭐关注❤️ 前言 呃啊,本来就想在 Qt 里简单几个 OpenVC 的函数,没想到一搞就是一天。 我之前的开发环境是 Qt 5.14.2,使用 MinGW 7.3.0 64-bit 编…...

机器学习无监督学习sklearn实战一:K-Means 算法聚类对葡萄酒数据集进行聚类分析和可视化( 主成分分析PCA特征降维)
本项目代码在个人github链接:https://github.com/KLWU07/Machine-learning-Project-practice/tree/main/1-Wine%20cluster%20analysis 如果对于聚类算法理论不理解可参考这篇之前文章机器学习中无监督学习方法的聚类:划分式聚类、层次聚类、密度聚类&…...

可灵2.1 vs Veo 3:AI视频生成谁更胜一筹?
在Google发布Veo 3几天后,可灵显然感受到了压力,发布了即将推出的视频模型系列可灵 2.1的早期体验版。 据我了解,有三种不同的模式: 可灵 2.1 标准模式: 720p分辨率 仅支持图像转视频(生成更快,一致性更好) 5秒视频仍需20积分 可灵 2.1 专业模式: 1080p分辨率 仅在图…...
C语言之编译器集合
C语言有多种不同的编译器,以下是常见的编译工具及其特点: 一、主流C语言编译器 GCC(GNU Compiler Collection) 特点:开源、跨平台,支持多种语言(C、C、Fortran 等)。 使用场景&…...
计量表计的演进历程与技术变革:从机械到物联网时代
前言 近期在用python写一些关于计量表计数据集采模型。主要就是针对计量表计采集的相关数据,按照通讯协议格式进行解析,最后根据自己需求,编制界面进行数据的展示,存储,以及运算的内容。现在就个人关于计量表计的一点…...
更换Homebrew 源
以下是查看和修改 Homebrew 源的详细步骤,适用于需要切换到国内镜像以加速下载的场景: 1. 查看当前 Homebrew 源 # 查看 brew 主仓库地址 git -C "$(brew --repo)" remote get-url origin# 查看 homebrew-core 仓库地址 git -C "$(brew…...
人工智能在智能供应链中的创新应用与未来趋势
随着全球化的加速和市场竞争的加剧,供应链管理的复杂性和重要性日益凸显。传统的供应链管理面临着诸多挑战,如需求预测不准确、库存管理效率低下、物流配送延迟等。智能供应链通过引入人工智能(AI)、物联网(IoT&#x…...
鸿蒙OSUniApp自定义手势识别与操作控制实践#三方框架 #Uniapp
UniApp自定义手势识别与操作控制实践 引言 在移动应用开发中,手势交互已经成为提升用户体验的重要组成部分。本文将深入探讨如何在UniApp框架中实现自定义手势识别与操作控制,通过实际案例帮助开发者掌握这一关键技术。我们将以一个图片查看器为例&…...

LLM优化技术——Paged Attention
在Transformer decoding的过程中,需要存储过去tokens的所有Keys和Values,以完成self attention的计算,称之为KV cache。 (1)KV cache的大小 可以计算存储KV cache所需的内存大小: batch * layers * kv-he…...

推荐几个不错的AI入门学习视频
引言:昨天推荐了几本AI入门书(AI入门书),反响还不错。今天,我再推荐几个不错的AI学习视频,希望对大家有帮助。 网上关于AI的学习视频特别多。有收费的,也有免费的。我今天只推荐免费的。 我们按…...

采用Bright Data+n8n+AI打造自动化新闻助手:每天5分钟实现内容日更
一、引言 在信息爆炸的时代,作为科技领域的内容创作者,我每天都要花费2-3小时手动收集行业新闻、撰写摘要并发布到各个社群。直到我发现Bright Datan8nAI这套"黄金组合",才真正实现了从"人工搬运"到"智能自动化&qu…...

Real SQL Programming
目录 SQL in Real Programs Options Stored Procedures Advantages of Stored Procedures Parameters in PSM SQL in Real Programs We have seen only how SQL is used at the generic query interface --- an environment where we sit at a terminal and ask queries …...

Sentinel限流熔断机制实战
1、核心概念 1.1、流量控制 流量控制是为了 防止系统被过多的请求压垮,确保资源合理分配并保持服务的可用性,比如对请求数量的限制。 流量控制的 3 个主要优势: 防止过载:当瞬间涌入的请求量超出系统处理能力时,会…...
Java 数据处理 - 数值转不同进制的字符串(数值转十进制字符串、数值转二进制字符串、数值转八进制字符串、数值转十六进制字符串)
一、数值转十进制字符串 调用 String.valueOf() int num 123;String decStr String.valueOf(num);System.out.println(decStr);# 输出结果123调用 Integer.toString(),指定进制 int num 123;String decStr Integer.toString(num);System.out.println(decStr)…...

79. 单词搜索-极致优化,可行性剪枝和顺序剪枝
给你一个目标字符串,和一个二维字符数组,判断在数组中是否能找到目标字符串。 例如,board [["A","B","C","E"],["S","F","C","S"],["A","…...

ICDMC 2025:创新媒体模式,迎接数字时代的挑战
2025年数字媒体与通讯国际会议将在风景秀丽的中国山东举行。此次会议致力于促进数字媒体和通讯领域的国际合作与交流,为相关产业发展提供智力支持和技术引领。我们诚挚邀请来自世界各地的学者、研究人员和行业专家参加本次会议,共同探讨前沿问题和发展方…...
深入解析C#多态性:基类引用、虚方法与覆写机制
基类引用的本质 在C#面向对象编程中,派生类对象由基类部分和扩展部分组成。通过基类引用访问派生类对象时,实际是在进行「观察视角」的转换: MyDerivedClass derived new MyDerivedClass(); MyBaseClass mybc (MyBaseClass)derived; //…...

SoftThinking:让模型学会模糊思考,同时提升准确性和推理速度!!
摘要:人类的认知通常涉及通过抽象、灵活的概念进行思考,而不是严格依赖离散的语言符号。然而,当前的推理模型受到人类语言边界的限制,只能处理代表语义空间中固定点的离散符号嵌入。这种离散性限制了推理模型的表达能力和上限潜力…...
C++中 newdelete 与 mallocfree 的异同详解
C中 new/delete 与 malloc/free 的异同详解 在 C 开发中,动态内存管理是重中之重!new/delete 和 malloc/free 都是用来动态申请和释放内存的,但它们有本质的区别。今天我们就来彻底搞懂它们的区别,避免内存泄漏和 undefined beha…...