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

MYSQL---主从同步概述与配置

一、MYSQL主从同步概述

1、什么是MySQL主从同步?

实现数据自动同步的服务结构

主服务器(master): 接受客户端访问连接
从服务器(slave):自动同步主服务器数据

2、主从同步原理

Maste:启用binlog 日志
Slave:Slave_IO: 复制master主机binlog 日志文件的SQL命令到本机的relay-log(中继日志) 文件里。
Slave_SQL: 执行本机 relay-log(中继日志) 文件里的SQL语句,实现与 Master 数据一致。

Master(主服务器):

1》开启binlog日志,记录所有除查询以外的SQL命令

Slave(从服务器):

1》从服务器上的I/O thread(读写线程) 负责读取主服务器binlog日志中的SQL命令,并将其写入到 Relay log(中继日志中)
2》从服务器中的SQL thread(SQL 线程)读取中继日志中的SQL命令,并将其写入到Slave的数据库中

3、主从同步结构模式

基本应用
单向复制:一主 <—— 一从
扩展应用
一主多从:从 <—— 主 ——> 从
链式复制:主 <—— 从 <—— 从
互为主从:主 <——> 主

4、MySQL主从同步配置

拓扑结构

5、实施

步骤一:根据host50克隆虚拟机出host51,配置IP地址为192.168.4.51,主机名为host51,删除51,52上面多余的数据库,只保留默认的四个库

[root@host51 ~]# mysql -uroot -p123qqq...A
mysql> drop database bbsdb;
[root@host52 ~]# mysql -uroot -p123qqq...A
mysql> drop database db4;

步骤二:host51配置主服务器

# 修改主配置文件,开启binlog日志
[root@host51 ~]# vim /etc/my.cnf
[mysqld]
#binlog_format="mixed"	# 加上注释
server_id=50				#指定id号,默认与IP地址的主机位相同
log_bin=master51			#指定binlog日志名,日志文件在/var/lib/mysql下

步骤三:重启数据库服务,让配置生效

[root@host51 ~]# systemctl restart mysqld
# 用户授权,给replication slave复制数据的权限,授权用户为: repluser
[root@host51 ~]# mysql -uroot -p123qqq...A
mysql> grant replication slave on *.* to repluser@"%" identified by "123qqq...A";
mysql> show master status;

步骤四:host52配置从服务器

# 修改主配置文件,指定server_id号
[root@host52 ~]# vim /etc/my.cnf[mysqld]
server_id=52          #指定id号,默认与IP地址的主机位相同
[root@host52 ~]# systemctl restart mysqld
# 指定主服务器信息
mysql> change master to master_host="192.168.4.51", master_user="repluser", master_password="123qqq...A", master_log_file="master51.000001", master_log_pos=441;

步骤五:启动从服务器

mysql> start slave;		
mysql> show slave status\G;		#确认IO线程、SQL线程都是 Yes 状态

如果IO线程为NO,错误提示如下

这是因,auto.cnf 存放的是主服务器的uuid号 ,因为是克隆出的虚拟机,uuid号都一样,会进行冲突,可以任意修改其中一个或多个字符,重启数据库服务即可

[root@host52 ~]# vim /var/lib/mysql/auto.cnf
[auto]
server-uuid=d45877cc-f4ab-11ea-b2a1-000c291f7055
[root@host52 ~]# systemctl restart mysqld

步骤六:host51:测试主从同步

[root@host51 ~]# mysql -uroot -p'123qqq...A'
mysql> create database db1;
mysql> create table db1.user (name char(10));
mysql> insert into db1.user values("tom");

步骤七:在host52上查看

[root@host52 ~]# mysql -uroot -p'123qqq...A'
mysql> show databases;
mysql> select * from db1.user;

相关文件

存放在数据库目录下/var/lib/mysql/
删除文件,重启数据库服务,可把主机恢复为独立的数据库服务器;

记录主服务器的信息

[root@host52 ~]# cat /var/lib/mysql/master.info

查看中继日志信息

# host52-relay-bin.000001 是中继日志文件:记录从主服务器拷贝过来的sql命令
# host52-relay-bin.index  是中继日志索引文件
[root@host52 ~]# ls /var/lib/mysql/host52*
# 查看中继日志文件内容
[root@host52 ~]# cd /var/lib/mysql
[root@host52 mysql]# cat relay-log.info 
7
./host52-relay-bin.000004		#本机正在使用的中继日志文件
319							#中继日志记录主服务器sql命令的偏移量
master51.000001				#中继日志从哪个文件中拷贝sql命令(主服务器)
441                         #此为主服务器最近的binlog日志的偏移量
# 查看中继日志索引文件,有几个中继日志文件,就记录几条
[root@host52 ~]# cd /var/lib/mysql
[root@host52 mysql]# cat host52-relay-bin.index

6、配置MySQL一主多从:解决从服务器宕机之后,无法备份数据问题

拓扑结构

步骤一:准备数据库host53,可以直接用之前的host53,删除创建数据库,保留默认的四个库

[root@host53 ~]# mysql -uroot -p123qqq...A
mysql> show databases;
mysql> drop database db4;

步骤二:没有配置之前,要确保从与主服务器数据一致

host51:安装innobackupex相关软件包

[root@host52 ~]# scp libev-4.15-1.el6.rf.x86_64.rpm  percona-xtrabackup-24-2.4.7-1.el7.x86_64.rpm 192.168.4.51:/root/
[root@host51 ~]# rpm -ivh libev-4.15-1.el6.rf.x86_64.rpm 
[root@host51 ~]# yum -y install percona-xtrabackup-24-2.4.7-1.el7.x86_64.rpm
[root@host51 ~]# innobackupex --user root --password '123qqq...A' --slave-info  /allbak1  --no-timestamp
[root@host51 ~]# scp -r /allbak1/ 192.168.4.53:/opt/

host53使用innobackupex恢复数据

[root@host53 ~]# systemctl stop mysqld
[root@host53 ~]# rm -rf /var/lib/mysql/*
[root@host53 ~]# innobackupex --apply-log  /root/allbak1/		#准备恢复数据
[root@host53 ~]# innobackupex --copy-back  /root/allbak1/			#恢复数据
[root@host53 ~]# chown -R mysql:mysql /var/lib/mysql
[root@host53 ~]# systemctl start mysqld
[root@host53 ~]# mysql -uroot -p'123qqq...A' -e "show databases"
# xtrabackup_binlog_info 文件记录的是binlog日志文件名和偏移量
# 此偏移量和主服务器的偏移量一致,从服务器同步数据时从这个偏移量开始同步
# 可以查看host51的binlog日志状态,偏移量相同
[root@host53 ~]# cat /opt/alldb/xtrabackup_binlog_info 
master51.000001	1020

步骤三:配置从服务器

# 修改主配置文件,指定server_id号
[root@host53 ~]# vim /etc/my.cnf
[mysqld]
server_id=53			#指定id号,默认与IP地址的主机位相同
[root@host53 ~]# vim /var/lib/mysql/auto.cnf
[auto]
server-uuid=d45877cc-ffab-11ea-b2a1-000c291f7055
[root@host53 ~]# systemctl restart mysqld
[root@host53 ~]# mysql -uroot -p123qqq...A

步骤四:指定主服务器信息

mysql> change master to master_host="192.168.4.51", master_user="repluser", master_password="123qqq...A", master_log_file="master51.000001", master_log_pos=1020;
mysql> start slave;				#启动slave
mysql> show slave status;		#查看从服务器状态信息
host51:插入数据
[root@host51 ~]# mysql -uroot -p'123qqq...A'
mysql> insert into db1.user values("tomA"),("tomB"),("tomC");

步骤五:host53测试主从同步

[root@host53 ~]# mysql -uroot -p'123qqq...A'
mysql> select * from db1.user;

二、MYSQL主从从结构

配置MYSQL主从从结构

1、主从从结构

主从从结构优势:
1》【host55】是【host54】的从服务器,【host54】是【host53】的从服务器;
2》当【host53】宕机以后,用户访问的是从服务器【host54】的数据库;
3》当【host54】宕机以后,用户访问的就是从服务器【host55】的数据库;

2、主从从结构实验环境准备,根据host50克隆虚拟机host54和host55主机,配置IP如下,并还原数据库默认的四个库

主服务器     主机名:host53      IP地址: 192.168.4.53
从服务器     主机名:host54      IP地址: 192.168.4.54
从服务器     主机名:host55      IP地址: 192.168.4.55

3、将host53恢复成独立的数据库服务器

[root@host53 ~]# cd /var/lib/mysql
[root@host53 mysql]# rm -rf master.info 			#删除连接主服务器的信息文件
[root@host53 mysql]# rm -rf host53-relay-bin.0*		#删除所有的中继日志文件,存放从主服务器拷贝过来的sql命令
[root@host53 mysql]# rm -rf host53-relay-bin.index 	#删除中继日志的索引文件,按顺序记录所有的中继日志文件名
[root@host53 mysql]# rm -rf relay-log.info 			#删除中继日志文件,记录中继日志信息
[root@host53 mysql]# systemctl restart mysqld

4、测试

[root@host53 ~]# mysql -uroot -p'123qqq...A'
mysql> show slave status;		#查看从服务器状态信息,为Empty,已经还原
mysql> drop database db1;		#删除db1库
mysql> exit

5、host53配置主服务器

修改主配置文件,开启binlog日志
[root@host53 ~]# vim /etc/my.cnf
[mysqld]
server_id=53
log_bin=master53
[root@host53 ~]# systemctl restart mysqld
[root@host53 ~]# mysql -uroot -p123qqq...A

这一次的授权不需要操作,因为之前53主机在做从库的时候已经同步用户了

mysql> grant replication slave on *.* to repluser@"%" identified by "123qqq...A"; 
mysql> select user,host from mysql.user;
mysql> show grants for repluser@"%";
mysql> show master status;

6、host54配置从服务器

修改配置文件、用户授权、指定主库信息、启动slave进程
修改主配置文件,指定server_id号
log_slave_updates 必须开启级联复制功能,因为【host54】同步数据是从【host53】的binlog日志中获取的,【host54】并没有直接执行sql命令,所以在【host54】的binlog日志中并没有sql命令,那么【host55】也就无法同步【host54】中的数据;而开启级联复制功能,则允许【host55】同步【host54】从【host53】同步过来的数据

[root@host54 ~]# vim /etc/my.cnf
[mysqld]
#binlog_format="mixed"
server_id=54
log_bin=master54
log_slave_updates		#允许级联复制
[root@host54 ~]# vim /var/lib/mysql/auto.cnf	# auto.cnf 存放的是主服务器的uuid号 因为是克隆出的虚拟机,uuid号都一样,会冲突可以任意修改其中一个或多个字符,重启数据库服务即可
[auto]
server-uuid=d45877cc-f4ab-12ea-b2a1-000c291f7055
[root@host54 ~]# systemctl restart mysqld

7、连接数据库,指定主服务器信息

[root@host54 ~]# mysql -uroot -p123qqq...A
mysql> change master to master_host="192.168.4.53", master_user="repluser", master_password="123qqq...A",master_log_file="master53.000001",master_log_pos=154;
mysql> start slave;
mysql> show slave status\G;

8、host54:从服务器【host55】添加授权用户

mysql> grant replication slave on *.* to jim@"%" identified by "123qqq...A";
mysql> show master status;

9、host55配置从服务器

[root@host55 ~]# vim /etc/my.cnf
[mysqld]
#binlog_format="mixed"
server_id=55
[root@host55 ~]# vim /var/lib/mysql/auto.cnf	
[auto]
server-uuid=d45877cc-f4ab-12ea-b2a1-000c291f7055
[root@host55 ~]# systemctl restart mysqld

10、指定主服务器信息

[root@host55 ~]# mysql -uroot -p123qqq...A
mysql> change master to master_host="192.168.4.54",master_user="jim", master_password="123qqq...A",master_log_file="master54.000001",master_log_pos=1554;
mysql> start slave;
mysql> show slave status\G;

11、测试主从从同步,在host53上建库,建表,插入记录

[root@host53 ~]# mysql -uroot -p'123qqq...A'
mysql> create database bbsdb;
mysql> create table bbsdb.user(name char(11));
mysql> insert into bbsdb.user values("bob");
mysql> select * from bbsdb.user;

12、在host54上查看验证数据

[root@host54 ~]# mysql -uroot -p'123qqq...A'
mysql> select * from bbsdb.user;

13、在host55上查看验证数据

[root@host55 ~]# mysql -uroot -p'123qqq...A'
mysql> select * from bbsdb.user;

三、复制模式

复制模式介绍

异步复制 (默认的复制模式):Asynchronous replication
主服务器执行完一次事务后,立即将结果返给客户端,不关心从服务器是否已经同步数据。

案例:【host50】(主服务器) <—— 【host51】(从服务器)

用户在【host50】(主服务器)上执行插入,更新,删除等SQL命令时,【host50】(主服务器)直接将结果返回给用户,不关心【host51】(从服务器)是否同步数据成功
优点:响应速度快,用户体验很好;
缺点:主服务器宕机后,有可能会存在从服务器数据丢失的情况;

半同步复制:Semisynchronous replication
主服务器在执行完一次事务后,等待至少一台从服务器同步数据完成,才将结果返回给客户端。

案例:【host50】(主服务器) <—— 【host51】(从服务器)

用户在【host50】(主服务器)上执行插入,更新,删除等SQL命令时,【host50】(主服务器)不会立刻将结果返回给用户,而是等待至少一个从服务器将数据同步写入到本机的数据库后,才将结果返回给用户

优点:主服务器宕机后,至少有一台从服务器拥有和主服务器相同的数据,数据安全度高;
缺点:响应速度下降,用户体验度下降;

配置半同步复制 (主从服务器都要配置)

主服务器     主机名:host53      IP地址: 192.168.4.53
从服务器     主机名:host54      IP地址: 192.168.4.54
从服务器     主机名:host55      IP地址: 192.168.4.55

命令行加载模块

host53主服务器命令行加载半同步复制的master模块
mysql> show databases;
mysql> desc information_schema.PLUGINS;		#查看默认库information_schema 下PLUGINS表(模块表)的表结构
加载 master 模块,rpl_semi_sync_master模块类型,semisync_master.so模块名称
mysql> install plugin rpl_semi_sync_master SONAME "semisync_master.so";
mysql> select PLUGIN_NAME,PLUGIN_STATUS from information_schema.PLUGINS where PLUGIN_NAME  like "%semi%";

host55安装slave模块

mysql>  install plugin rpl_semi_sync_slave SONAME "semisync_slave.so";  
host54因为是即做主又做从,所以要安装 matser和slave模块
mysql> install plugin rpl_semi_sync_master SONAME "semisync_master.so";
mysql> install plugin rpl_semi_sync_slave SONAME "semisync_slave.so";
mysql> select PLUGIN_NAME,PLUGIN_STATUS from information_schema.PLUGINS where PLUGIN_NAME  like "%semi%";

启用模块

host53:模糊查询半同步复制模块是否开启
mysql> show variables like "%semi%";
mysql> set global rpl_semi_sync_master_enabled=1;		#全局设置,开启半同步复制模块
mysql> show variables like "%semi%";					#on开启

host54启动半同步复制的master和slave模块

mysql> set global rpl_semi_sync_master_enabled=1;
mysql> set global rpl_semi_sync_slave_enabled=1;
mysql> show variables like "%semi%";

host55:启动半同步复制的slave模块

mysql> set global rpl_semi_sync_slave_enabled=1;
mysql> show variables like "%semi%";

永久配置

主服务器永久安装和启用半同步复制的master模块

[root@host53 ~]# vim /etc/my.cnf
[mysqld]
plugin-load=rpl_semi_sync_master=semisync_master.so    		#加载master模块
rpl_semi_sync_master_enabled=1                        		#启用master模块
[root@host53 ~]# systemctl restart mysqld
[root@host54 ~]# mysql -uroot -p'123qqq...A'
mysql> show variables like "%semi%";

主从服务器永久安装和启用半同步复制的master和slave模块,在host54上操作

[root@host54 ~]# vim /etc/my.cnf
[mysqld]
plugin-load="rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so"              							#同时加载master和slave模块
rpl_semi_sync_master_enabled=1				#启用master模块
rpl_semi_sync_slave_enabled=1				#启用slave模块
[root@host54 ~]# systemctl restart mysqld
[root@host54 ~]# mysql -uroot -p'123qqq...A'
mysql> show variables like "%semi%";

从服务器永久安装和启用半同步复制的slave模块,在host55上操作

[root@host55 ~]# vim /etc/my.cnf
[mysqld]
plugin-load=rpl_semi_sync_slave=semisync_slave.so    		#加载master模块
rpl_semi_sync_slave_enabled=1                          #启用master模块
[root@host55 ~]# systemctl restart mysqld
[root@host55 ~]# mysql -uroot -p'123qqq...A'
mysql> show variables like '%semi%';

相关文章:

MYSQL---主从同步概述与配置

一、MYSQL主从同步概述 1、什么是MySQL主从同步&#xff1f; 实现数据自动同步的服务结构 主服务器(master): 接受客户端访问连接 从服务器(slave)&#xff1a;自动同步主服务器数据 2、主从同步原理 Maste&#xff1a;启用binlog 日志 Slave&#xff1a;Slave_IO: 复制master主…...

WebClient学习

1. 介绍 Java中传统的RestTemplate 的主要问题在于不支持响应式流规范&#xff0c;也就无法提供非阻塞式的流式操作。而WebClient是响应式、非阻塞的客户端&#xff0c;属于Spring5中的spring-webflux库 2. 依赖 maven依赖 <dependency><groupId>org.springfra…...

「计算机控制系统」6. 直接设计法

特殊类型系统的最小拍无差设计 一般系统的最小拍无差设计 最小拍控制器的工程化改进 Dahlin算法 文章目录 特殊类型系统的最小拍无差设计理论分析典型输入函数的最小拍无差系统 一般系统的最小拍无差设计有波纹最小拍无差设计无波纹最小拍无差设计 最小拍控制器的工程化改进针对…...

什么是JWT?

起源 需要了解一门技术&#xff0c;首先从为什么产生开始说起是最好的。JWT 主要用于用户登录鉴权&#xff0c;所以我们从最传统的 session 认证开始说起。 session认证 众所周知&#xff0c;http 协议本身是无状态的协议&#xff0c;那就意味着当有用户向系统使用账户名称和…...

STM32—0.96寸OLED液晶显示

本文主要介绍基于STM32F103的0.96寸的OLED液晶显示&#xff0c;详细关于0.96寸OLED液晶屏幕的介绍可参考这篇博客&#xff1a;https://blog.csdn.net/u011816009/article/details/130119426 一、简介 OLED被称为有机激光二极管&#xff0c;也被称为有机激光显示&#xff0c;O…...

Mysql的简介和选择

文章目录 前言一、为什么要使用数据库 数据库的概念为什么要使用数据库二、程序员为什么要学习数据库三、数据库的选择 主流数据库简介使用MySQL的优势版本选择四、Windows 平台下安装与配置MySQL 启动MySQL 服务控制台登录MySQL命令五、Linux 平台下安装与配置MySQL总结 前言…...

3D视觉之深度相机方案

随着机器视觉&#xff0c;自动驾驶等颠覆性的技术逐步发展&#xff0c;采用 3D 相机进行物体识别&#xff0c;行为识别&#xff0c;场景 建模的相关应用越来越多&#xff0c;可以说 3D 相机就是终端和机器人的眼睛。 3D 相机 3D 相机又称之为深度相机&#xff0c;顾名思义&…...

Mysql列的完整性约束详解(主键约束)

文章目录 前言一、设置表字段的主键约束&#xff08;PRIMARY KEY&#xff0c;PK&#xff09; 1.单字段主键2.多字段主键总结 前言 完整性约束条件是对字段进行限制&#xff0c;要求用户对该属性进行的操作符合特定的要求。如果不满足完整性约束条件&#xff0c;数据库系统将不再…...

母婴市场竞争激烈,如何通过软文营销脱颖而出

如今&#xff0c;随着宝宝数量增加以及人们对孩子的重视程度的增加&#xff0c;母婴市场愈发火爆。然而&#xff0c;母婴行业的竞争也越来越激烈&#xff0c;企业需要不断开拓新市场才能生存。在这样的情况下&#xff0c;软文营销成为了母婴企业拓展市场的一种有效方式。 首先&…...

java--线程池

目录 1.线程池概 2 为什么要使用线程池 1创建线程问题 2解决上面两个问题思路&#xff1a; 3线程池的好处 4线程池适合应用场景 3 线程池的构造函数参数 1.corePoolSize int 线程池核心线程大小 2.maximumPoolSize int 线程池最大线程数量 3.keepAliveTime long 空闲…...

asp.net765数码手机配件租赁系统

员工部分功能 1.员工登录&#xff0c;员工通过自己的账号和密码登录到系统中来&#xff0c;对租赁信息进行管理 2.配件查询&#xff0c;员工可以查询系统内的配件信息 3.客户信息管理&#xff0c;员工可以管理和店内有业务往来的客户信息 4.配件租赁&#xff0c;员工可以操作用…...

有关态势感知(SA)的卷积思考

卷积是一种数学运算&#xff0c;其本质是将两个函数进行操作&#xff0c;其中一个函数是被称为卷积核或滤波器的小型矩阵&#xff0c;它在另一个函数上滑动并产生新的输出。在计算机视觉中&#xff0c;卷积通常用于图像处理和特征提取&#xff0c;它可以通过滤波器对输入图像进…...

Docker快速部署springboot项目

有很多开发者在项目部署过程中都会遇到一些繁琐的问题&#xff0c;比如打包、上传、部署等。而使用Docker可以非常方便地解决这些问题。在本文中&#xff0c;将详细讲解如何使用IDEA中的docker打包插件&#xff0c;将代码打包并直接发布到服务器上。这样&#xff0c;我们就可以…...

Linux命令rsync增量同步目录下的文件

业务场景描述 最近遇到一个问题&#xff0c;需要编写相应的Linux命令&#xff0c;增量同步/var/mysql里的所有文件到另外一个目录/opt/mysql&#xff0c;但是里面相关的日志文件xx.log是不同步的&#xff0c;这个场景&#xff0c;可以使用rsync来实现 什么是rsync命令&#x…...

项目管理---(1)项目管理一般知识

一、项目管理一般知识 1.1 项目的一般知识 1.1.1 项目的定义&#xff1a; 项目是为创造独特的产品、服务或成果而进行的临时性工作。 1.1.2 项目的目标&#xff1a; 项目的目标包括成果性目标和约束性目标。 成果性目标&#xff1a;指通过项目开发出满足客户要求的产品、系…...

超过50多个热门的免费可用 API 分享

今天吃什么&#xff1a;随机返回一顿美味食物&#xff0c;解决你今天吃什么的难题。万年历&#xff1a;获取公历日期对应的农历、农历节日节气、天干地支纪年纪月纪日、生肖属相、宜忌、星座等信息。支持查询未来15天。笑话大全&#xff1a;各种最新、最及时的幽默、搞笑段子&a…...

记一次死锁问题

最近在做一个需求&#xff0c;碰到了死锁的问题&#xff0c;记录下解决问题的过程 背景 这个需求要改动一个接口&#xff0c;我这边称为A接口&#xff0c;原先的逻辑是A接口内部会调用c方法&#xff0c;c方法是一个dubbo方法&#xff0c; 现在需要再A接口里添加调用B方法&…...

Bean 作⽤域和⽣命周期

目录 1.lombok 1.1 1.添加依赖&#xff1a;&#xff08;pom.xml&#xff09; 1.2 在实体类上使用lombok提供的注解 1.3 安装插件 2. Bean 的 6 种作⽤域&#xff08;Scope&#xff09; 2.1 singleton&#xff08;默认模式&#xff09; 2.2 prototype&#xff08;原型模式…...

SVN通过备份、过滤、再导入的方式彻底删除废弃目录

文章目录 前言简要步骤操作示例总结 前言 SVN占用的空间随着项目版本迭代越来越大&#xff0c;因为保存了历史记录中的各个版本&#xff0c;所以即使本地把废弃的目录删掉提交&#xff0c;也不会释放出多余的空间&#xff0c;大概率因为操作删除增加了一个版本号&#xff0c;使…...

golang支持优雅关闭和core错误记录

#经过测试&#xff0c;不能使用 ENTRYPOINT ["/modapi/modapi", "1>> /dev/null","2>> ./logs/stderr.log"]&#xff0c;原因是虽然这种方案可以 #保证modapi命令为1号程序&#xff0c;能够接收到os的signal信号。但是如果程序core了…...

椭圆曲线密码学(ECC)

一、ECC算法概述 椭圆曲线密码学&#xff08;Elliptic Curve Cryptography&#xff09;是基于椭圆曲线数学理论的公钥密码系统&#xff0c;由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA&#xff0c;ECC在相同安全强度下密钥更短&#xff08;256位ECC ≈ 3072位RSA…...

[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...

第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明

AI 领域的快速发展正在催生一个新时代&#xff0c;智能代理&#xff08;agents&#xff09;不再是孤立的个体&#xff0c;而是能够像一个数字团队一样协作。然而&#xff0c;当前 AI 生态系统的碎片化阻碍了这一愿景的实现&#xff0c;导致了“AI 巴别塔问题”——不同代理之间…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用

1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...

根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:

根据万维钢精英日课6的内容&#xff0c;使用AI&#xff08;2025&#xff09;可以参考以下方法&#xff1a; 四个洞见 模型已经比人聪明&#xff1a;以ChatGPT o3为代表的AI非常强大&#xff0c;能运用高级理论解释道理、引用最新学术论文&#xff0c;生成对顶尖科学家都有用的…...

Spring AI与Spring Modulith核心技术解析

Spring AI核心架构解析 Spring AI&#xff08;https://spring.io/projects/spring-ai&#xff09;作为Spring生态中的AI集成框架&#xff0c;其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似&#xff0c;但特别为多语…...

蓝桥杯3498 01串的熵

问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798&#xff0c; 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...

C++使用 new 来创建动态数组

问题&#xff1a; 不能使用变量定义数组大小 原因&#xff1a; 这是因为数组在内存中是连续存储的&#xff0c;编译器需要在编译阶段就确定数组的大小&#xff0c;以便正确地分配内存空间。如果允许使用变量来定义数组的大小&#xff0c;那么编译器就无法在编译时确定数组的大…...

保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek

文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama&#xff08;有网络的电脑&#xff09;2.2.3 安装Ollama&#xff08;无网络的电脑&#xff09;2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...

Python Einops库:深度学习中的张量操作革命

Einops&#xff08;爱因斯坦操作库&#xff09;就像给张量操作戴上了一副"语义眼镜"——让你用人类能理解的方式告诉计算机如何操作多维数组。这个基于爱因斯坦求和约定的库&#xff0c;用类似自然语言的表达式替代了晦涩的API调用&#xff0c;彻底改变了深度学习工程…...