使用Docker构建的MySQL主从架构:高可用性数据库解决方案

news2024/11/27 6:40:18

前言

MySQL主从架构,我们已经在vmware虚拟机上实践过了,接下来我们一起探讨在docker中如何使用MySQL主从架构。

🏠个人主页:我是沐风晓月
🧑个人简介:大家好,我是沐风晓月,阿里云社区博客专家😉😉
💕 座右铭: 先努力成长自己,再帮助更多的人 ,一起加油进步🍺🍺🍺
💕欢迎大家:这里是CSDN,我总结知识的地方,喜欢的话请三连,有问题请私信😘

文章目录

  • 前言
  • 一. mysql主从架构原理
    • 1.1 MySQL主从复制分类
    • 1.2 MySQL主从复制
    • 1.3 主从架构如何工作
  • 二. 安装docker
    • 2.1 实验环境
    • 2.2 安装docker
      • 1)下载阿里云repo镜像
      • 2)安装最新的版本
      • 3)启动docker并测试
      • 4)设置镜像加速地址
  • 三. 安装MySQL-master
    • 3.1下载MySQL镜像
    • 3.2 创建MySQL-master并创建配置文件
    • 3.3 修改master配置文件
    • 3.4 重启master
    • 3.5 进入master创建数据和数据同步用户
  • 四. 新建从服务器
    • 4.1 创建MySQL-slave 容器
    • 4.2 修改配置文件
    • 4.3 重启从服务器
  • 五. 配置主从同步
    • 5.1 在主服务器查看同步状态
    • 5.2 在从服务器上进行相应的配置
    • 5.3 测试同步内容
  • 总结

一. mysql主从架构原理

1.1 MySQL主从复制分类

  • 一主一从
  • 主主复制
    也叫互为主从(M-M)
    每个服务器需要做同样的同步更新,破坏了事务的隔离性和数据的一致性。
  • 一主多从(提高从库的读取的速度)
    一主多备:用来读写分离,master写, 其他的slave进行读的操作。
    缺点: 所有的压力全部在master
  • 多主一从 (从MySQL5.7之后开始支持)
  • 级联复制 (M-S-S)

slave作为中继,分担Master的压力,slave中继需要开启bin-log,并配置log-slave-updates

Slave中继可使用Black-hole存储引擎,不会把数据存储到磁盘,只记录二进制日志。

  • M-M-M 铁三角
    缺陷: 复制延迟,高并发情况下延迟 更大。

1.2 MySQL主从复制

  • 实时灾备:用于故障切换
  • 读写分离,提供查询服务
  • 备份 ,为了避免业务受到影响

1.3 主从架构如何工作

第一步: master记录二进制日志。在每个事务更新数据完成之前,master在二进制日志记录这些改变。
第二步:slave将master的binary log拷贝到它自己的中继日志。首先,slave开始一个工作线程——I/O线程

第三步:SQL slave thread(SQL从线程)处理该过程的最后一步。SQL线程从中继日志读取事件,并重新执行其中的事件而更新slave的数据,使其与master中的数据一致。

二. 安装docker

2.1 实验环境

hostname/IP

[root@mufeng56 ~]# vim /etc/hosts
[root@mufeng56 ~]# hostname
mufeng56

[root@mufeng56 ~]# ifconfig |grep inet |awk '{print $2}' |head -1
192.168.1.56

内存/cpu/版本

[root@mufeng56 ~]# lsmem |grep 'Total online memory'
Total online memory:       2G
[root@mufeng56 ~]# cat /etc/redhat-release 
CentOS Linux release 7.6.1810 (Core) 
[root@mufeng56 ~]# 

关闭防火墙,关闭selinux

[root@mufeng56 ~]# iptables -F
[root@mufeng56 ~]# systemctl  stop firewalld.service 
Display all 141 possibilities? (y or n)
[root@mufeng56 ~]# systemctl  stop firewalld.service 
[root@mufeng56 ~]# setenforce 0
[root@mufeng56 ~]# 

2.2 安装docker

1)下载阿里云repo镜像

[root@mufeng56 ~]# wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
--2023-05-15 14:52:08--  https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
正在解析主机 mirrors.aliyun.com (mirrors.aliyun.com)... 183.204.36.235, 117.161.156.225, 117.161.156.224, ...
正在连接 mirrors.aliyun.com (mirrors.aliyun.com)|183.204.36.235|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:2081 (2.0K) [application/octet-stream]
正在保存至: “/etc/yum.repos.d/docker-ce.repo”

100%[====================================================================================>] 2,081       --.-K/s 用时 0.003s  

2023-05-15 14:52:08 (607 KB/s) - 已保存 “/etc/yum.repos.d/docker-ce.repo” [2081/2081])

[root@mufeng56 ~]# cd /etc/yum.repos.d/
[root@mufeng56 yum.repos.d]# ls
CentOS-Base.repo  CentOS-Debuginfo.repo  CentOS-Media.repo  CentOS-Sources.repo  docker-ce.repo
CentOS-CR.repo    CentOS-fasttrack.repo  centos.repo        CentOS-Vault.repo
[root@mufeng56 yum.repos.d]# 

2)安装最新的版本

[root@mufeng56 ~]# yum install docker-ce  -y

3)启动docker并测试

[root@mufeng56 ~]# systemctl start docker
[root@mufeng56 ~]# docker --version
Docker version 23.0.6, build ef23cbc
[root@mufeng56 ~]# 

4)设置镜像加速地址

[root@mufeng56 ~]# sudo mkdir -p /etc/docker
[root@mufeng56 ~]# sudo tee /etc/docker/daemon.json <<-'EOF'
> {
>   "registry-mirrors": ["https://ywrd8tun.mirror.aliyuncs.com"]
> }
> EOF
{
  "registry-mirrors": ["https://ywrd8tun.mirror.aliyuncs.com"]
}

[root@mufeng56 ~]# sudo systemctl daemon-reload
[root@mufeng56 ~]# sudo systemctl restart docker

三. 安装MySQL-master

3.1下载MySQL镜像

[root@mufeng56 ~]# docker pull mysql:5.7
5.7: Pulling from library/mysql
72a69066d2fe: Pull complete 
93619dbc5b36: Pull complete 
99da31dd6142: Pull complete 
626033c43d70: Pull complete 
37d5d7efb64e: Pull complete 
ac563158d721: Pull complete 
d2ba16033dad: Pull complete 
0ceb82207cd7: Pull complete 
37f2405cae96: Pull complete 
e2482e017e53: Pull complete 
70deed891d42: Pull complete 
Digest: sha256:f2ad209efe9c67104167fc609cca6973c8422939491c9345270175a300419f94
Status: Downloaded newer image for mysql:5.7
docker.io/library/mysql:5.7
[root@mufeng56 ~]# docker images;
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
nginx        latest    605c77e624dd   16 months ago   141MB
mysql        5.7       c20987f18b13   17 months ago   448MB

3.2 创建MySQL-master并创建配置文件

[root@mufeng56 ~]# docker run -p 3307:3306 --name mysql-master \
> -v /mydata/mysql-master/log:/var/log/mysql \
> -v /mydata/mysql-master/data:/var/lib/mysql \
> -v /mydata/mysql-master/conf:/etc/mysql \
> -e MYSQL_ROOT_PASSWORD=root \
> -d mysql:5.7
bfe0e8bb37aa38fc8d86e0540a89e93d8b9251efc4770a5e3404ec47580dc8ec
[root@mufeng56 ~]# docker ps
CONTAINER ID   IMAGE       COMMAND                   CREATED         STATUS         PORTS                                                  NAMES
bfe0e8bb37aa   mysql:5.7   "docker-entrypoint.s…"   8 seconds ago   Up 7 seconds   33060/tcp, 0.0.0.0:3307->3306/tcp, :::3307->3306/tcp   mysql-master

3.3 修改master配置文件

[root@mufeng56 conf]# pwd
/mydata/mysql-master/conf
[root@mufeng56 conf]# ls
[root@mufeng56 conf]# vim my.cnf
[root@mufeng56 conf]# cat my.cnf 
[mysqld]
server_id=101
binlog-ignore-db=mysql 
log-bin=mall-mysql-bin 
binlog_cache_size=1M 
binlog_format=mixed  
expire_logs_days=7
slave_skip_errors=1062

注释:

[mysqld]
#设置serveID  ,在局域网中是唯一的
server_id=101
## 指定不需要同步的数据库名称
binlog-ignore-db=mysql 
## 开启二进制日志功能
log-bin=mall-mysql-bin 
## 设置二进制日志使用内存大小(事务)
binlog_cache_size=1M 
## 设置使用的二进制日志格式(mixed,statement,row)
binlog_format=mixed  
## 二进制日志过期清理时间。默认值为0,表示不自动清理。
expire_logs_days=7
## 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=1062

3.4 重启master

[root@mufeng56 ~]# docker ps
CONTAINER ID   IMAGE       COMMAND                   CREATED         STATUS         PORTS                                                  NAMES
bfe0e8bb37aa   mysql:5.7   "docker-entrypoint.s…"   7 minutes ago   Up 7 minutes   33060/tcp, 0.0.0.0:3307->3306/tcp, :::3307->3306/tcp   mysql-master
[root@mufeng56 ~]# docker restart mysql-master
mysql-master

[root@mufeng56 ~]# docker ps
CONTAINER ID   IMAGE       COMMAND                   CREATED         STATUS         PORTS                                                  NAMES
bfe0e8bb37aa   mysql:5.7   "docker-entrypoint.s…"   7 minutes ago   Up 6 seconds   33060/tcp, 0.0.0.0:3307->3306/tcp, :::3307->3306/tcp   mysql-master
[root@mufeng56 ~]# 

3.5 进入master创建数据和数据同步用户

  • 登录数据库
[root@mufeng56 ~]# docker exec  -it mysql-master /bin/bash
root@bfe0e8bb37aa:/# mysql -proot
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.36-log MySQL Community Server (GPL)

Copyright (c) 2000, 2021, 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.

mysql> 

  • 授权
mysql> create user 'slave'@'%' identified by '123456';
Query OK, 0 rows affected (0.00 sec)

mysql> GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';
Query OK, 0 rows affected (0.00 sec)

mysql> exit
Bye
root@bfe0e8bb37aa:/# 

四. 新建从服务器

4.1 创建MySQL-slave 容器

[root@itlaoxin41 ~]# docker ps
CONTAINER ID   IMAGE       COMMAND                   CREATED          STATUS         PORTS                                                  NAMES
bfe0e8bb37aa   mysql:5.7   "docker-entrypoint.s…"   17 minutes ago   Up 9 minutes   33060/tcp, 0.0.0.0:3307->3306/tcp, :::3307->3306/tcp   mysql-master
[root@itlaoxin41 ~]# docker run -p 3308:3306 --name mysql-slave \
> -v /mydata/mysql-slave/log:/var/log/mysql \
> -v /mydata/mysql-slave/data:/var/lib/mysql \
> -v /mydata/mysql-slave/conf:/etc/mysql \
> -e MYSQL_ROOT_PASSWORD=root \
> -d mysql:5.7
cb5ac2559c3b7d6e4bbc585797f9d6e0adef93dce05ef712de138b71de8149cb
[root@itlaoxin41 ~]# docker ps
CONTAINER ID   IMAGE       COMMAND                   CREATED          STATUS         PORTS                                                  NAMES
cb5ac2559c3b   mysql:5.7   "docker-entrypoint.s…"   7 seconds ago    Up 6 seconds   33060/tcp, 0.0.0.0:3308->3306/tcp, :::3308->3306/tcp   mysql-slave
bfe0e8bb37aa   mysql:5.7   "docker-entrypoint.s…"   17 minutes ago   Up 9 minutes   33060/tcp, 0.0.0.0:3307->3306/tcp, :::3307->3306/tcp   mysql-master
[root@itlaoxin41 ~]# 


4.2 修改配置文件

[root@itlaoxin41 conf]# pwd
/mydata/mysql-slave/conf
[root@itlaoxin41 conf]# vim my.cnf

[root@itlaoxin41 conf]# cat my.cnf 
[mysqld]
server_id=102
binlog-ignore-db=mysql 
log-bin=mall-mysql-bin 
binlog_cache_size=1M 
binlog_format=mixed  
expire_logs_days=7
slave_skip_errors=1062
relay_log=mall-mysql-relay-bin
log_slave_updates=1
read_only=1

配置文件的注释:

[mysqld]
#设置serveID  ,在局域网中是唯一的
server_id=101
## 指定不需要同步的数据库名称
binlog-ignore-db=mysql 
## 开启二进制日志功能
log-bin=mall-mysql-bin 
## 设置二进制日志使用内存大小(事务)
binlog_cache_size=1M 
## 设置使用的二进制日志格式(mixed,statement,row)
binlog_format=mixed  
## 二进制日志过期清理时间。默认值为0,表示不自动清理。
expire_logs_days=7
## 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=1062
## relay_log配置中继日志
relay_log=mall-mysql-relay-bin
## log_slave_updates表示slave将复制事件写进自己的二进制日志
log_slave_updates=1
## slave设置为只读(具有super权限的用户除外)
read_only=1

4.3 重启从服务器

[root@itlaoxin41 conf]# docker restart mysql-slave
mysql-slave
[root@itlaoxin41 conf]# docker ps
CONTAINER ID   IMAGE       COMMAND                   CREATED          STATUS          PORTS                                                  NAMES
cb5ac2559c3b   mysql:5.7   "docker-entrypoint.s…"   8 minutes ago    Up 1 second     33060/tcp, 0.0.0.0:3308->3306/tcp, :::3308->3306/tcp   mysql-slave
bfe0e8bb37aa   mysql:5.7   "docker-entrypoint.s…"   26 minutes ago   Up 18 minutes   33060/tcp, 0.0.0.0:3307->3306/tcp, :::3307->3306/tcp   mysql-master

五. 配置主从同步

5.1 在主服务器查看同步状态

[root@mufeng56 ~]# docker exec  -it mysql-master /bin/bash
root@bfe0e8bb37aa:/# mysql -proot
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.36-log MySQL Community Server (GPL)

Copyright (c) 2000, 2021, 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.

mysql>  show master status;
+-----------------------+----------+--------------+------------------+-------------------+
| File                  | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-----------------------+----------+--------------+------------------+-------------------+
| mall-mysql-bin.000001 |      617 |              | mysql            |                   |
+-----------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

5.2 在从服务器上进行相应的配置

mysql> change master to master_host='192.168.1.56',master_user='slave',master_password='123456',master_port=3307,master_log_file='mall-mysql-bin.000001',master_log_pos=617, master_connect_retry=30;
Query OK, 0 rows affected, 2 warnings (0.01 sec)

查看是否开启同步

mysql> start slave;
Query OK, 0 rows affected (0.01 sec)

mysql> show slave status \G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.1.56
                  Master_User: slave
                  Master_Port: 3307
                Connect_Retry: 30
              Master_Log_File: mall-mysql-bin.000001
          Read_Master_Log_Pos: 617
               Relay_Log_File: mall-mysql-relay-bin.000002
                Relay_Log_Pos: 325
        Relay_Master_Log_File: mall-mysql-bin.000001
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: 
          Replicate_Ignore_DB: 
           Replicate_Do_Table: 
       Replicate_Ignore_Table: 
      Replicate_Wild_Do_Table: 
  Replicate_Wild_Ignore_Table: 
                   Last_Errno: 0
                   Last_Error: 
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 617
              Relay_Log_Space: 537
              Until_Condition: None
               Until_Log_File: 
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File: 
           Master_SSL_CA_Path: 
              Master_SSL_Cert: 
            Master_SSL_Cipher: 
               Master_SSL_Key: 
        Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error: 
               Last_SQL_Errno: 0
               Last_SQL_Error: 
  Replicate_Ignore_Server_Ids: 
             Master_Server_Id: 101
                  Master_UUID: a2bc1b87-f2f0-11ed-ab38-0242ac110002
             Master_Info_File: /var/lib/mysql/master.info
                    SQL_Delay: 0
          SQL_Remaining_Delay: NULL
      Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
           Master_Retry_Count: 86400
                  Master_Bind: 
      Last_IO_Error_Timestamp: 
     Last_SQL_Error_Timestamp: 
               Master_SSL_Crl: 
           Master_SSL_Crlpath: 
           Retrieved_Gtid_Set: 
            Executed_Gtid_Set: 
                Auto_Position: 0
         Replicate_Rewrite_DB: 
                 Channel_Name: 
           Master_TLS_Version: 
1 row in set (0.00 sec)

mysql> 

5.3 测试同步内容

主上插入数据

mysql> create database db02;
Query OK, 1 row affected (0.00 sec)

mysql> 

从上查看

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| db02               |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

总结

本文主要讲解了使用docker实现MySQL的主从架构的全过程,欢迎关注我一起交流和学习。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/529131.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《论文阅读》基于提示的知识生成解决对话情感推理难题

《论文阅读》基于提示的知识生成解决对话情感推理难题 前言摘要作者新观点问题定义模型框架Global ModelLocal ModelPrompt Based Knowledge Generation分类器实验结果问题前言 你是否也对于理解论文存在困惑? 你是否也像我之前搜索论文解读,得到只是中文翻译的解读后感到失…

openEuler 成功适配 LeapFive InFive Poros 开发板

近日&#xff0c;openEuler RISC-V 23.03 创新版本在跃昉科技的 Poros 开发板上成功运行。 openEuler 在 Poros 上适配成功&#xff0c;XFCE 桌面启动正常&#xff0c;文件系统、终端模拟器和输入法等相关 GUI 应用也运行流畅&#xff0c;Chromium 浏览器和 LibreOffice 等应用…

【Pm4py第三讲】关于Output

本节用于介绍pm4py中的输出函数&#xff0c;包括日志输出、模型输出、面向对象日志输出等。 1.函数概述 本次主要介绍Pm4py中一些常见的输入函数&#xff0c;总览如下表&#xff1a; 函数名说明write_bpmn()用于写入bpmn模型write_dfg()用于写入dfg模型write_pnml() 用于写入p…

面试之高手回答

1.int与Integer的区别 int与Integer的区别有很多&#xff0c;我简单罗列三个方面 第一个作为成员变量来说Integer的初始值是null&#xff0c;int的初始值是0&#xff1b; 第二个Integer存储在堆内存&#xff0c;int类型是在直接存储在栈空间&#xff1b; 第三个integer是个对象…

项目管理6大避坑技巧

1、拒绝错位战略目标 明确目标方向 做项目&#xff0c;首先需要明确项目目标。项目中有很多目标都很重要&#xff0c;但只有一两个目标是最重要的。在任何时刻&#xff0c;我们主要精力都应该集中在一到两个最重要的目标上。 一般最重要的目标具有以下特点&#xff1a;能够给组…

CSS--空间转换及动画

01-空间转换 空间转换简介 空间&#xff1a;是从坐标轴角度定义的 X 、Y 和 Z 三条坐标轴构成了一个立体空间&#xff0c;Z 轴位置与视线方向相同。空间转换也叫 3D转换属性&#xff1a;transform 平移 transform: translate3d(x, y, z); transform: translateX(); transfor…

能源硕士为何受热捧?社科院与杜兰大学能源管理硕士项目为你解惑

能源行业可谓是全球最具发展前景的行业之一&#xff0c;能源管理硕士更是近几年被争相推荐的“大热门”。广泛的就业选择、较高且稳定的收入&#xff0c;是该专业的特点之一&#xff0c;毕业后可选择在政府相关机构、能源监管部门、全国节能减排领域的各类研究机构工作&#xf…

Linux学习 Day3

目录 1. 时间相关的指令 2. cal指令 3. find指令&#xff1a;&#xff08;灰常重要&#xff09; -name 4. grep指令 5. zip/unzip指令 6. tar指令&#xff08;重要&#xff09;&#xff1a;打包/解包&#xff0c;不打开它&#xff0c;直接看内容 7. bc指令 8. uname –…

Shell基础学习---1、Shell概述、脚本入门、变量

1、Shell 概述 Shell是一个命令解释器&#xff0c;它接收应用程序/用户命令&#xff0c;然后调用操作系统内核。 说明&#xff1a;Shell是一个功能相当强大的编程语言&#xff0c;易编写&#xff0c;易调试、灵活性强。 1、 提供的Shell解释器 2、bash和sh的关系 3、CentOS…

简述-关于Kmeans轮廓系数随着聚类个数的增加后减少的问题

当我们在做Kmeans聚类的准备工作时&#xff0c;通常会用到手肘法&#xff08;elbow method&#xff09;或者轮廓系数&#xff08;silhouette score&#xff09;去找到最佳簇类个数。 对于轮廓系数寻找法&#xff0c;理论上来说&#xff0c;轮廓系数会随着聚类个数的增加而增加…

云渲染是什么?云渲染和传统渲染农场有什么区别?

云渲染是什么&#xff1f;云渲染和传统渲染农场有什么区别&#xff1f; 今天云渲染小编就来和大家说一说云渲染以及它和传统渲染农场的区别。 一、什么是云渲染&#xff1f;云渲染什么意思&#xff1f; 首先云渲染云渲染是一种依托于云计算的云端服务&#xff0c;用户将本地…

UVM 验证方法学之interface学习系列文章(七)高级 《bind 操作》(3)

在之前的文章,我们就bind 机制,进行了用法分析。其实,对于一些大型的复杂SOC设计,bind的操作,可以说是非常实用的。它不仅能够完成各种UVC的驱动激励操作,而且一定程度能够简便验证平台的搭建和后期维护。下面,我们举个例子说明bind在当今复杂环境下的妙用。 一 TB 思…

聊一聊API 测试有哪些不同类型?

用户希望能够跨设备和浏览器使用应用程序。因此&#xff0c;您必须进行全面的不同 API 测试类型&#xff0c;以了解它的工作情况以及它是否可以执行其主要功能。一些测试人员需要更多地关注这方面&#xff0c;因此&#xff0c;我们看到许多质量较差的应用程序。今天&#xff0c…

23. Unity - 3D游戏开发小计02 --- 动画结束UI、导航网格代理

1. 动画结束UI 一个游戏在通过后,都是需要一个界面显示当前游戏已经结束,即需要给游戏添加一个结束的界面,可以做一个简单的游戏结束界面,用一个图片展示: 首先在层级窗口添加两层UI中的Image,其中第一层的Image仅作背景,可将其填充颜色设置为纯黑色,第二层的Image添加…

消化道炎症 | 细菌蛋白酶失调的作用

谷禾健康 肠道蛋白酶 蛋白水解平衡失调通常与疾病有关。例如丝氨酸蛋白酶和基质金属蛋白酶参与多种生物过程&#xff0c;尤其是炎症反应。 胃肠道拥有数以万亿计的微生物&#xff0c;并暴露于高水平的蛋白酶。研究表明蛋白酶在维胃肠道稳态中的关键作用&#xff0c;它们的上调…

代搭建开发chatgpt

ChatGPT是由OpenAI开发的一款自然语言处理模型&#xff0c;而且它已经预训练好了。基于它开发ChatGPT应用程序需要以下步骤&#xff1a; 准备环境&#xff1a;安装Python3和相关的库&#xff0c;如TensorFlow、Keras等&#xff0c;并下载预训练的ChatGPT模型。 数据准备…

深度学习用于医学预后-第二课第三周8-13节-估计生存函数

上节课知道了数据中存在删失数据&#xff0c;那么我们如何利用这些数据建立生存函数。这将是本节课的重点内容。 文章目录 估计生存函数立即死亡还是永远存活生存概率介于两者之间使用删失数据条件概率的链式法则推导生存函数根据数据计算概率 估计生存函数 本节课&#xff0c;…

API安全性的要素与开发人员必修课测试

一、API安全性的要素主要包括以下几点&#xff1a; 1.身份验证和访问控制&#xff1a;API应该通过身份验证来验证请求的源&#xff0c;确保只有授权的用户或应用程序才能访问API。这可以通过使用API密钥、访问令牌、OAuth令牌或其他身份验证机制实现。 2.数据加密&#xff1a;A…

OpenCV中的图像处理3.9(七)轮廓线及其层次结构

目录 3.9.4 轮廓线&#xff1a;更多的功能目标理论和代码练习 3.9.5 轮廓线层次结构目标理论什么是层次结构&#xff1f;OpenCV中的层次结构表示法轮廓线检索模式 翻译及二次校对&#xff1a;cvtutorials.com 编辑者&#xff1a;廿瓶鲸&#xff08;和鲸社区Siby团队成员&#x…

Pyqt5经典案例学习

目录 前言一、图表主题动画1-1、效果展示1-2、代码分段解析1-2-1、导库1-2-2、初始化1-2-3、数据生成函数以及信号与槽的连接 总结 前言 案例来源于GitHub项目《各种各样的PyQt测试和例子》 一、图表主题动画 1-1、效果展示 功能&#xff1a; 支持不同的主题和动画效果。用户…