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

mysql MHA高可用

目录

工作原理

Node(节点)

Manager(管理器)

Node和Manager的协作

故障转移流程

优势

配置和管理

配置主从复制

MHA实现高可用


MySQL Master High Availability(MHA)是一个开源的高可用性解决方案,专为MySQL数据库设计。它由Percona公司开发,旨在帮助确保MySQL数据库的高可用性和自动化故障转移。让我们详细了解一下MySQL MHA的工作原理、优势以及如何配置和管理。

工作原理

Node(节点)

在MHA中,Node指的是MySQL数据库服务器的实例,包括主节点(Master)和备用节点(Slave)。每个Node都需要安装MySQL实例,并参与主从复制的架构。以下是Node的一些关键功能和特点:

  1. 主节点(Master):主节点是负责处理写操作的MySQL实例。它接收来自应用程序的写入请求,并将这些变更传播到备用节点。

  2. 备用节点(Slave):备用节点是从主节点复制数据的MySQL实例。它们负责处理读操作,并且在主节点发生故障时可以被提升为新的主节点。

  3. 数据同步:Node之间通过MySQL的主从复制功能进行数据同步。主节点上的更改会被传播到备用节点,保持数据一致性。

  4. 检查节点健康:MHA中的Node会定期向Manager报告自己的状态,包括健康状态、复制延迟等信息。

  5. 故障转移候选者:在主节点发生故障时,备用节点会竞争成为新的主节点。Node之间的配置会影响到MHA在选择新主节点时的优先级。

Manager(管理器)

Manager是MHA中的中央控制器,负责监控和管理整个MySQL高可用性集群。它的主要功能包括:

  1. 故障检测:Manager定期检查Node的状态,包括主节点和备用节点。当检测到主节点故障时,Manager会触发故障转移过程。

  2. 故障转移决策:一旦检测到主节点故障,Manager会根据预设的策略和配置,选择合适的备用节点提升为新的主节点。它会考虑到复制延迟、节点健康状态等因素做出决策。

  3. 管理复制:Manager负责管理主从复制的配置。它可以自动更新备用节点的复制配置,以便它们连接到新的主节点。

  4. SSH连接:Manager使用SSH连接到Node,执行必要的操作,如关闭旧的主节点等。

  5. 通知和日志:Manager会记录故障转移的过程和结果,并且可以向管理员发送通知,包括故障转移的开始、结束等信息。

Node和Manager的协作

在MHA中,Node和Manager之间通过SSH和MySQL复制协议进行通信和协作。Node定期向Manager报告自己的状态,Manager根据这些状态信息和预设的策略来做出故障转移的决策。一旦Manager触发了故障转移,它会与Node一起协作,完成故障转移过程,并确保新的主节点正常运行。

故障转移流程

当MHA监测到MySQL主节点出现故障时,它会自动启动故障转移流程。下面是简化的故障转移流程:

  1. 检测故障:管理节点(manager node)定期检查主节点的状态。当发现主节点不可用时,会触发故障转移。

  2. 选举新主节点:MHA会从备用节点中选举一个新的主节点。选举过程考虑了各个备用节点的复制延迟和可用性,选择最适合的节点作为新的主节点。

  3. 停止旧主节点:MHA使用SSH连接到旧的主节点,并在新主节点上线后,停止旧主节点上的MySQL服务。

  4. 重新配置其他节点:MHA会自动更新其他节点的配置文件,将它们的主节点指向新的主节点。

  5. 完成故障转移:一旦新的主节点上线并正常运行,MHA会通知应用程序可以重新连接到新的主节点上。

优势

使用MySQL MHA的主要优势包括:

  1. 自动化故障转移:MHA能够自动检测主节点故障并执行故障转移流程,无需人工干预,减少了服务中断的时间。

  2. 快速恢复:MHA的故障转移过程非常迅速,可以快速将备用节点提升为新的主节点,降低了系统不可用的风险。

  3. 高可靠性:MHA经过了广泛的生产环境验证,被认为是一个稳定可靠的解决方案。

  4. 灵活性:MHA支持多种故障转移策略和配置选项,可以根据实际需求进行定制。

配置和管理

要配置和管理MySQL MHA,通常需要以下步骤:

  1. 安装MHA工具包:从Percona的官方网站下载MHA工具包,并按照说明进行安装。

  2. 配置MHA:编辑MHA的配置文件,指定MySQL主从复制的拓扑、监控节点、故障转移的参数等。

  3. 初始化MHA:运行masterha_check_sshmasterha_check_repl命令来检查SSH和复制的配置。

  4. 启动MHA管理节点:运行masterha_manager命令启动MHA的管理节点,开始监控MySQL集群的状态。

  5. 测试故障转移:模拟主节点故障,观察MHA是否能够自动进行故障转移并恢复。

配置主从复制

配置master

vim /etc/my.cnf[mysqld]
server-id = 1
log_bin = master-bin
log-slave-updates = truesystemctl restart mysqld.service

配置slave

vim /etc/my.cnfserver-id = 2 
log_bin = master-bin
relay-log = relay-log-bin
relay-log-index = slave-relay-bin.indexsystemctl restart mysqld

在master和所有slave上创建软连接

ln -s /usr/local/mysql/bin/mysql /usr/sbin/
ln -s /usr/local/mysql/bin/mysqlbinlog /usr/sbin/
  1. ln -s /usr/local/mysql/bin/mysql /usr/sbin/

    这个命令创建了一个名为mysql的软链接,指向了/usr/local/mysql/bin/mysql这个MySQL客户端的可执行文件。这样做的目的是为了让系统在/usr/sbin/目录下也有一个mysql命令的快捷方式,这样系统中的任何用户都可以直接在命令行中输入mysql来启动MySQL客户端。

  2. ln -s /usr/local/mysql/bin/mysqlbinlog /usr/sbin/

    这个命令创建了一个名为mysqlbinlog的软链接,指向了/usr/local/mysql/bin/mysqlbinlog这个MySQL二进制日志查看工具的可执行文件。同样的,这样做的目的是让系统中的任何用户都可以直接在命令行中输入mysqlbinlog来启动MySQL二进制日志查看工具。

对所有数据库进行互相授权

grant replication slave on *.* to 'myslave'@'192.168.1.%' identified by '123456';
grant all privileges on *.* to 'mha'@'192.168.1.%' identified by 'manager';
grant all privileges on *.* to 'mha'@'master' identified by 'manager';
grant all privileges on *.* to 'mha'@'slave1' identified by 'manager';
grant all privileges on *.* to 'mha'@'slave2' identified by 'manager';
flush privileges;

查看二进制日志同步点

show master status;

在所有slave上指定主服务器(不要直接复制,注意ip和同步点)

change master to master_host='192.168.1.22',master_user='myslave',master_password='123456',master_log_file='master-bin.000001',master_log_pos=1743; 
start slave;

查看同步状态

show slave status\G;	

在主服务器创建数据库和表并在从服务器验证

MHA实现高可用

安装MHA依赖环境

yum install epel-release --nogpgcheck -y
yum install -y perl-DBD-MySQL \
perl-Config-Tiny \
perl-Log-Dispatch \
perl-Parallel-ForkManager \
perl-ExtUtils-CBuilder \
perl-ExtUtils-MakeMaker \
perl-CPAN

在所有服务器安装node

cd /opt
tar zxvf mha4mysql-node-0.57.tar.gz
cd mha4mysql-node-0.57
perl Makefile.PL
make && make install

安装manager

cd /opt
tar zxvf mha4mysql-manager-0.57.tar.gz
cd mha4mysql-manager-0.57
perl Makefile.PL
make && make install

配置ssh无密码登录

在 manager 节点上配置到所有数据库节点的无密码认证

ssh-keygen -t rsa                 
ssh-copy-id 192.168.1.22
ssh-copy-id 192.168.1.33
ssh-copy-id 192.168.1.44

在 master 上配置到数据库节点 slave1 和 slave2 的无密码认证

ssh-keygen -t rsa
ssh-copy-id 192.168.1.33
ssh-copy-id 192.168.1.44

在 slave1 上配置到数据库节点 master 和 slave2 的无密码认证

ssh-keygen -t rsa
ssh-copy-id 192.168.1.22
ssh-copy-id 192.168.1.44

在 slave2 上配置到数据库节点 master 和 slave1 的无密码认证

ssh-keygen -t rsa
ssh-copy-id 192.168.1.22
ssh-copy-id 192.168.1.33

在 manager 上配置 MHA(注意要设置set paste)

cp -rp /opt/mha4mysql-manager-0.57/samples/scripts /usr/local/bin
cp /usr/local/bin/scripts/master_ip_failover /usr/local/bin
vim /usr/local/bin/master_ip_failover:set paste
use strict;
use warnings FATAL => 'all';use Getopt::Long;my (
$command, $ssh_user, $orig_master_host, $orig_master_ip,
$orig_master_port, $new_master_host, $new_master_ip, $new_master_port
);
#############################修改部分##############################################
my $vip = '192.168.1.100';									
my $brdc = '192.168.1.255';								
my $ifdev = 'ens33';										
my $key = '1';												
my $ssh_start_vip = "/sbin/ifconfig ens33:$key $vip";		
my $ssh_stop_vip = "/sbin/ifconfig ens33:$key down";		
my $exit_code = 0;											
#my $ssh_start_vip = "/usr/sbin/ip addr add $vip/24 brd $brdc dev $ifdev label $ifdev:$key;/usr/sbin/arping -q -A -c 1 -I $ifdev $vip;iptables -F;";
#my $ssh_stop_vip = "/usr/sbin/ip addr del $vip/24 dev $ifdev label $ifdev:$key";
##################################################################################
GetOptions(
'command=s' => \$command,
'ssh_user=s' => \$ssh_user,
'orig_master_host=s' => \$orig_master_host,
'orig_master_ip=s' => \$orig_master_ip,
'orig_master_port=i' => \$orig_master_port,
'new_master_host=s' => \$new_master_host,
'new_master_ip=s' => \$new_master_ip,
'new_master_port=i' => \$new_master_port,
);exit &main();sub main {print "\n\nIN SCRIPT TEST====$ssh_stop_vip==$ssh_start_vip===\n\n";if ( $command eq "stop" || $command eq "stopssh" ) {my $exit_code = 1;
eval {
print "Disabling the VIP on old master: $orig_master_host \n";
&stop_vip();
$exit_code = 0;
};
if ($@) {
warn "Got Error: $@\n";
exit $exit_code;
}
exit $exit_code;
}
elsif ( $command eq "start" ) {my $exit_code = 10;
eval {
print "Enabling the VIP - $vip on the new master - $new_master_host \n";
&start_vip();
$exit_code = 0;
};
if ($@) {
warn $@;
exit $exit_code;
}
exit $exit_code;
}
elsif ( $command eq "status" ) {
print "Checking the Status of the script.. OK \n";
exit 0;
}
else {
&usage();
exit 1;
}
}
sub start_vip() {
`ssh $ssh_user\@$new_master_host \" $ssh_start_vip \"`;
}
## A simple system call that disable the VIP on the old_master
sub stop_vip() {
`ssh $ssh_user\@$orig_master_host \" $ssh_stop_vip \"`;
}sub usage {
print
"Usage: master_ip_failover --command=start|stop|stopssh|status --orig_master_host=host --orig_master_ip=ip --orig_master_port=port --new_master_host=host --new_master_ip=ip --new_master_port=port\n";
}

MHA的master_ip_failover配置文件是用于MySQL高可用性(HA)架构中的一个重要组件。当MySQL主服务器发生故障时,master_ip_failover脚本负责将虚拟IP(VIP)从故障的主服务器迁移到新的主服务器,以确保服务的连续性和可用性。这个过程通常涉及到以下几个步骤:

  1. 停止旧主服务器上的VIP:这确保了没有新的连接会到达已经故障的服务器。
  2. 在新的主服务器上启动VIP:这使得新的主服务器可以开始接受客户端的连接。
  3. 更新DNS记录(如果使用DNS来管理VIP):这确保了所有新的连接都会被指向新的主服务器。

创建 MHA 软件目录并复制配置文件

mkdir /etc/masterha
cp /opt/mha4mysql-manager-0.57/samples/conf/app1.cnf /etc/masterha
[server default]
manager_log=/var/log/masterha/app1/manager.log
manager_workdir=/var/log/masterha/app1
master_binlog_dir=/usr/local/mysql/data
master_ip_failover_script=/usr/local/bin/master_ip_failover
master_ip_online_change_script=/usr/local/bin/master_ip_online_change
password=manager
ping_interval=1
remote_workdir=/tmp
repl_password=123456
repl_user=myslavesecondary_check_script=/usr/local/bin/masterha_secondary_check -s 192.168.1.33 -s 192.168.1.44
shutdown_script=""
ssh_user=root
user=mha[server1]
hostname=192.168.1.22
port=3306[server2]
candidate_master=1
check_repl_delay=0
hostname=192.168.1.33
port=3306[server3]
hostname=192.168.1.44
port=3306

在MHA中,app1是MHA的配置文件之一,用于配置MHA对MySQL主从复制集群的监控和管理。以下是app1配置文件的一些常见作用和配置项:

  1. 定义MySQL的主从结构:在app1配置文件中,你可以定义MySQL主服务器和从服务器的IP地址、端口号等信息。这样MHA就知道哪些服务器是主服务器,哪些是从服务器。

  2. 监控参数:你可以配置MHA如何监控MySQL服务器的健康状态。例如,可以配置检查MySQL进程是否存活、检查复制延迟等。

  3. 故障检测和切换:定义在哪些情况下MHA应该进行故障检测,并在检测到故障时如何自动切换到备用服务器。

  4. SSH连接参数:配置MHA连接到MySQL服务器所需的SSH参数,包括SSH用户、SSH端口等。

  5. 自定义脚本和命令:你可以指定在故障发生或切换发生时执行的自定义脚本和命令,以便在自动切换过程中执行特定的操作。

  6. Failover优先级:定义了故障发生时应该优先选择哪个备用服务器作为新的主服务器。

在master上手动开启虚拟ip

/sbin/ifconfig ens33:1 192.168.1.100/24

在manager上测试无密码登录

masterha_check_ssh -conf=/etc/masterha/app1.cnf

在manager上测试连接情况

masterha_check_repl -conf=/etc/masterha/app1.cnf

启动MHA

nohup masterha_manager --conf=/etc/masterha/app1.cnf --remove_dead_master_conf --ignore_last_failover < /dev/null > /var/log/masterha/app1/manager.log 2>&1 &

  • nohup: 这是一个 Linux 命令,用于让命令在后台运行,并且不受终端关闭的影响。即使用户注销或者关闭终端,命令也会继续运行。

  • masterha_manager: 这是 MySQL MHA 工具包中的一个命令,用于启动 MHA 的管理器(manager)。masterha_manager 负责监控 MySQL 主从复制集群的状态,并在主节点故障时执行自动故障转移。

  • --conf=/etc/masterha/app1.cnf: 这个参数指定了 MHA 的配置文件路径。在这里,/etc/masterha/app1.cnf 是您的 MHA 配置文件的路径。

  • --remove_dead_master_conf: 这个参数告诉 masterha_manager 在发现主节点(master)死掉后,将主节点的配置信息从 MHA 配置文件中删除。

  • --ignore_last_failover: 这个参数告诉 masterha_manager 忽略上一次故障转移的信息,以避免重复执行故障转移。

  • < /dev/null: 这个部分将输入重定向到 /dev/null,表示不从标准输入中读取任何内容。

  • > /var/log/masterha/app1/manager.log 2>&1: 这个部分将标准输出和标准错误输出重定向到指定的日志文件中。即将 masterha_manager 的输出写入到 /var/log/masterha/app1/manager.log 日志文件中。

  • &: 这个符号表示将命令放到后台执行,这样当前终端可以继续输入其他命令。

最后,[1] 18318 是命令的输出,表示 masterha_manager 进程已经在后台启动,并且它的进程 ID 是 18318。这样,masterha_manager 就会在后台运行,不受终端关闭的影响,并且将输出写入到指定的日志文件中,用于查看 MHA 的运行日志和状态。

查看MHA状态

masterha_check_status --conf=/etc/masterha/app1.cnf

相关文章:

mysql MHA高可用

目录 工作原理 Node&#xff08;节点&#xff09; Manager&#xff08;管理器&#xff09; Node和Manager的协作 故障转移流程 优势 配置和管理 配置主从复制 MHA实现高可用 MySQL Master High Availability&#xff08;MHA&#xff09;是一个开源的高可用性解决方案&…...

android 扫描二维码

1.在你的build.gradle文件中添加Mobile Vision库的依赖&#xff1a; dependencies {implementation com.google.android.gms:play-services-vision:20.1.0 } 2.创建一个新的Activity来处理扫描过程。 import android.Manifest; import android.content.pm.PackageManager; i…...

[flink 实时流基础] 输出算子(Sink)

学习笔记 Flink作为数据处理框架&#xff0c;最终还是要把计算处理的结果写入外部存储&#xff0c;为外部应用提供支持。 文章目录 **连接到外部系统****输出到文件**输出到 Kafka输出到 mysql自定义 sink 连接到外部系统 Flink的DataStream API专门提供了向外部写入数据的方…...

case语句

Oracle从入门到总裁:​​​​​​https://blog.csdn.net/weixin_67859959/article/details/135209645 CASE 语句的执行方式与 IF...THEN...ELSIF 语句的执行方式类似&#xff0c;但是它是通过一个表达式的值来决定执行哪个分支 CASE 选择器表达式 WHEN 条件 1 THEN 语句序列 …...

全国加油站分布数据/停车场分布/公园分布/景区分布/保护区分布/poi感兴趣点

加油站是指为汽车和其它机动车辆服务的、零售汽油和机油的补充站&#xff0c;一般为添加燃料油、润滑油等。由于加油站所销售的石油商品具有易燃爆、易挥发、易渗漏、易集聚静电荷的特性&#xff0c;故加油站以“安全”为第一准则。在加油站内严禁烟火&#xff0c;严禁从事可能…...

单片机简介(一)

51单片机 一台能够运行的计算机需要CPU做运算和控制&#xff0c;RAM做数据存储&#xff0c;ROM做程序存储&#xff0c;还有输入/输出设备&#xff08;串行口、并行输出口等&#xff09;&#xff0c;这些被分为若干块芯片&#xff0c;安装在主板&#xff08;印刷线路板&#xf…...

Naiveui将message挂载到axios拦截器

最近在做项目&#xff0c;需要将后端的请求结果打印出来 但是想着&#xff0c;要是这样一个一个手动引入naiveui的msg&#xff0c;那不得累死 于是灵机一动&#xff0c;想着既然所有接口要通过拦截器&#xff0c;为什么不将msg写在拦截器呢 一、定义一个消息挂载文件 // The…...

MySQL、Oracle查看字节和字符长度个数的函数

目录 0. 总结1. MySQL1.1. 造数据1.2. 查看字符/字节个数 2. Oracle2.1. 造数据2.2. 查看字符/字节个数 0. 总结 databasecharbyteMySQLchar_length()length()Oraclelength()lengthB() 1. MySQL 1.1. 造数据 sql drop table if exists demo; create table demo (id …...

第五篇:3.4 用户归因和受众(User attribution and audience) - IAB/MRC及《增强现实广告效果测量指南1.0》

翻译计划 第一篇概述—IAB与MRC及《增强现实广告效果测量指南》之目录、适用范围及术语第二篇广告效果测量定义和其他矩阵之- 3.1 广告印象&#xff08;AD Impression&#xff09;第三篇广告效果测量定义和其他矩阵之- 3.2 可见性 &#xff08;Viewability&#xff09;第四篇广…...

ES6: class类

类 class 面相对象class关键字创建类关于类的继承 面相对象 一切皆对象。 举例&#xff1a; 操作浏览器要使用window对象&#xff1b;操作网页要使用document对象&#xff1b;操作控制台要使用console对象&#xff1b; ES6中增加了类的概念&#xff0c;其实ES5中已经可以实现类…...

[中级]软考_软件设计_计算机组成与体系结构_08_输入输出技术

输入输出技术 前言控制方式考点往年真题 前言 输入输出技术就是IO技术 控制方式 程序控制(查询)方式&#xff1a;分为无条件传送和程序查询方式两种。 方法简单&#xff0c;硬件开销小&#xff0c;但I/O能力不高&#xff0c;严重影响CPU的利用率。 程序中断方式&#xff1…...

2024-04-04 问AI: 在深度学习中,微调是什么?

文心一言 在深度学习中&#xff0c;微调&#xff08;Fine-tuning&#xff09;是一种训练策略&#xff0c;特别针对预训练模型进行。预训练模型通常是在大规模无标注数据上通过自监督学习得到的&#xff0c;它们已经具备了对一般自然语言结构或视觉特征的良好理解能力。微调则是…...

db2数据仓库集群的搭建

db2数据仓库集群的搭建 DB2 集群的搭建通常涉及到多个环节&#xff0c;包括网络配置、DB2 软件安装、集群配置和数据库创建等。以下是搭建DB2集群的基本步骤&#xff0c;并不是实际的命令和配置&#xff0c;因为每个环境的具体配置可能会有所不同。 1、网络配置&#xff1a;确…...

Linux ARM平台开发系列讲解(u-boot篇) 5.1 u-boot的启动流程分析(ARMv8-a)

1. 概述 对于嵌入式来说,bootload对于开发人员来说并不陌生,但是在不同芯片架构中,bootload程序所做的一些操作是有所不同的,比如常见的STM32 Cotex-M和RK3568 之间的启动流程所做的操作是有所不同的。本小节就来概述一下U-boot的启动流程: 注意:本章节中的源码我大多数…...

ST表(数据结构中的问题)

RMQ问题 RMQ问题指对于数值&#xff0c;每次给一个区间[l,r]&#xff0c;要求返回区间区间的最大值或最小值 也就是说&#xff0c;RMQ就是求区间最值的问题 对于RMQ问题&#xff0c;容易想到一种O&#xff08;n&#xff09;的方法&#xff0c;就是用i直接遍历[l,r]区间&…...

一、OpenCV(C#版本)环境搭建

一、Visual Studio 创建新项目 二、选择Windows窗体应用&#xff08;.NET Framework&#xff09; 直接搜索模板&#xff1a;Windows窗体应用(.NET Framework) 记得是C#哈&#xff0c;别整成VB(Visual Basic)了 PS&#xff1a;若搜索搜不到&#xff0c;直接点击安装多个工具和…...

ubuntu远程服务部署,Docker,蓝牙无线局域网,SSH,VNC,xfce4,NextTerminal,宝塔,NPS/NPC,gost,openwrt

SSH服务 apt update apt upgrade -y apt install -y openssh-server/etc/ssh/sshd_config PermitRootLogin yesDocker curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun apt install -y docker-compose宝塔 wget -O install.sh https://download.bt.cn…...

kettle安装与部署使用教程

kettle 官网下载与部署使用 文章目录 kettle 官网下载与部署使用1. 前言&#xff1a;2. 访问官方网站&#xff1a;3. Download Pentaho3.1 官网首页**滑动到最底**&#xff0c;寻找下载链接&#xff1a;3.2 跳转到下载界面后&#xff0c;选择 Pentaho Community Edition (CE)3.…...

【C语言】编译和链接

1. 翻译环境和运行环境 在ANSI C的任何⼀种实现中&#xff0c;存在两个不同的环境。 第1种是翻译环境&#xff0c;在这个环境中源代码被转换为可执⾏的机器指令&#xff08;⼆进制指令&#xff09;。 第2种是执⾏环境&#xff0c;它⽤于实际执⾏代码。 2. 编译环境 那翻译环境…...

Python学习: 错误和异常

Python 语法错误 解析错误(Parsing Error)通常指的是程序无法正确地解析(识别、分析)所给定的代码,通常是由于代码中存在语法错误或者其他无法理解的结构导致的。这可能是由于缺少括号、缩进错误、未关闭的引号或其他括号等问题造成的。 语法错误(Syntax Error)是指程序…...

WebGIS 之 vue3+vite+ceisum

1.项目搭建node版本在16以上 1.1创建项目 npm create vite 项目名 1.2选择框架 vuejavaScript 1.3进入项目安装依赖 cd 项目名 npm install 1.4安装cesium依赖 pnpm i cesium vite-plugin-cesium 1.5修改vite.config.js文件 import { defineConfig } from vite import vue fr…...

## CSDN创作活动:AI技术创业有哪些机会?

AI技术创业有哪些机会&#xff1f; 人工智能&#xff08;AI&#xff09;技术作为当今科技创新的前沿领域&#xff0c;为创业者提供了广阔的机会和挑战。随着AI技术的快速发展和应用领域的不断拓展&#xff0c;未来AI技术方面会有哪些创业机会呢&#xff1f; 方向一&#xff1…...

中医肝胆笔记

目录 肝胆的经络足厥阴肝经足少阳胆经 疏肝健脾的药舒肝益脾颗粒&#xff1a;逍遥丸&#xff1a;疏肝颗粒 -> 疏肝理气的力度大-> 肝郁的程度深&#xff0c;逍遥丸没用的是时候用这个加味逍遥丸 -> 清热的力度最大->适用 肝郁火大&#xff0c;舌苔黄丹栀逍遥丸->…...

理解Go语言中break语句是如何工作的

break语句常用来中断循环。当循环与switch或select一起使用时&#xff0c;开发者经常执行了错误的break语句。 让我们来看下面的示例。我们在for循环里使用了switch,如果循环索引值是2&#xff0c;那么我们想中断循环&#xff1a; package mainimport ("fmt" )func …...

11. 瀑布流布局

<!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>11.瀑布流布局</title><style>#cont…...

Flutter-发布插件到pub上传不上问题

问题1&#xff1a; 尝试指令&#xff1a; flutter packages pub publish --serverhttps://pub.dartlang.org问题2&#xff1a; 问题1解决后&#xff0c;进入验证身份&#xff0c;点击终端显示的链接&#xff0c;跳转到google验证&#xff0c;记得这里要科*学上网&#xff0c;点…...

Windows 2008虚拟机安装、安装VM Tools、快照和链接克隆、添加硬盘修改格式为GPT

一、安装vmware workstation软件 VMware workstation的安装介质&#xff0c;获取路径&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1AUAw_--yjZAUPbsR7StOJQ 提取码&#xff1a;umz1 所在目录&#xff1a;\vmware\VMware workstation 15.1.0 1.找到百度网盘中vmwa…...

c++的学习之路:12、vector(1)

这章主要是根据cplusplus中的文档进行使用Vector&#xff0c;文章末附上测试代码。 目录 一、什么是vector 二、vector的简单使用 三、代码 一、什么是vector 下图是cplusplus的简介&#xff0c;上面一共有六点&#xff0c;如下&#xff1a; 1、vector是表示可变大小数组…...

2024.2.17力扣每日一题——N叉树的层序遍历

2024.2.17 题目来源我的题解方法一 广度优先搜索&#xff08;队列实现&#xff09; 题目来源 力扣每日一题&#xff1b;题序&#xff1a;429 我的题解 方法一 广度优先搜索&#xff08;队列实现&#xff09; 和二叉树的层序遍历相同&#xff0c;只是在添加子节点的细节有所不…...

滑动窗口(尺取法/Python)

滑动窗口&#xff08;尺取法&#xff09; 算法含义&#xff1a; 在解决关于区间特性的题目时保存搜索区间左右端点&#xff0c;然后根据实际要求不断更新左右端点位置的算法 时间复杂度&#xff1a; O ( n ) O(n) O(n) 空间复杂度&#xff1a; O ( 1 ) O(1) O(1) 在历年真题…...

日照建站外包/龙岗百度快速排名

用了FineUI有一段时间了&#xff0c;还是分享下我咋改的吧&#xff0c;没想的那么难&#xff0c;我也是从小白来的。 基础是要懂JQ和EXTJS&#xff0c;主要是要懂JQ和EXTJS能干啥&#xff0c;这里有两个网站http://www.w3school.com.cn/jquery/traversing_find.asphttp://extjs…...

南京企业做网站/十大外贸平台

整数划分 &#xff0d;&#xff0d;&#xff0d; 一个老生长谈的问题:  1) 练练组合数学能力.2) 练练递归思想3) 练练DP总之是一道经典的不能再经典的题目:这道好题求:1. 将n划分成若干正整数之和的划分数。2. 将n划分成k个正整数之和的划分数。3. 将n划分成最大数不超过k的划…...

藁城区建设局网站/电商网络营销

我刚开始学习Laravel&#xff0c;可以做一个控制器和路由的基础。我的操作系统是Mac OS X Lion&#xff0c;它在MAMP服务器上。我的代码从routes.php&#xff1a;Route::get(/, function(){return View::make(home.index);});Route::get(businesses, function(){return View::m…...

mip wordpress/十大技能培训机构排名

1、什么是主从复制1、主从的作用2、主从的原理3、从数据库的读的延迟问题了解吗&#xff1f;如何解决&#xff1f;4、做主从后主服务器挂了怎么办&#xff1f;一、什么是主从复制?主从复制&#xff0c;是用来建立一个和主数据库完全一样的数据库环境&#xff0c;称为从数据库&…...

创新网站建设工作室/什么叫网络市场营销

html head添加&#xff1a; <link rel"shortcut icon" href"picture//timg.jpg">转载于:https://www.cnblogs.com/q2546/p/10980872.html...

服装营销型网站建设/深圳市seo上词多少钱

在Android中自定义控件时&#xff0c;如果Android系统中已存在对应的控件&#xff0c;就应该扩展功能相近的系统控件&#xff0c;这样既可以减少工作量&#xff0c;又可以避免处理复杂的绘图逻辑。代码复用是程序开发的一条重要原则&#xff0c;因此一定不要盲目的扩展View。好…...