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

MySQL8.0实现MHA高可用

一、简介

MHA(Master HA)是一款开源的 MySQL 的高可用程序,它为 MySQL 主从复制架构提供了 automating master failover 功能。MHA 在监控到 master 节点故障时,会提升其中拥有最新数据的 slave 节点成为新的master 节点,在此期间,MHA 会通过于其它从节点获取额外信息来避免一致性方面的问题。MHA 还提供了 master 节点的在线切换功能,即按需切换 master/slave 节点。

   MHA 服务有两种角色, MHA Manager(管理节点)和 MHA Node(数据节点): MHA Manager:   通常单独部署在一台独立机器上管理多个 master/slave 集群(组),每个 master/slave 集群称作一个 application,用来管理统筹整个集群。 MHA node:   运行在每台 MySQL 服务器上(master/slave/manager),它通过监控具备解析和清理 logs 功能的脚本来加快故障转移。

 由上图我们可以看出,每个复制组内部和 Manager 之间都需要ssh实现无密码互连,只有这样,在 Master 出故障时, Manager 才能顺利的连接进去,实现主从切换功能

 二、工作原理

(1) 从宕机崩溃的 master 保存二进制日志事件(binlog events);

(2) 识别含有最新更新的 slave ;

(3) 应用差异的中继日志(relay log) 到其他 slave ;

(4) 应用从 master 保存的二进制日志事件(binlog events);

(5) 提升一个 slave 为新 master ;

(6) 使用其他的 slave 连接新的 master 进行复制。

三、MHA实现 

3.1环境准备

3.1.1准备四台虚拟机(均为centos 7.x )

3.1.2 更换yum源

3.1.3关闭防火墙,禁用SELinux

3.1.4 host配置 

在不同的机器上配置名字和IP地址 

机器名称IP配置服务角色备注
manager172.16.90.211manager控制器用于监控管理
master172.16.90.212数据库主服务器开启bin-log relay-log 关闭relay_log
slave1172.16.90.213数据库从服务器开启bin-log relay-log 关闭relay_log
slave2172.16.90.214数据库从服务器开启bin-log relay-log 关闭relay_log

 根据上表     名字要在不同的机器上分别输入如下命令

hostnamectl set-hostname managermastersalve1salve2

IP地址在其中一台输入即可 

[root@node4 ~]# cat >> /etc/hosts << EOF
> 172.16.90.111 manager
> 172.16.90.112 master
> 172.16.90.113 slave1
> 172.16.90.114 slave2
> EOF

3.2初始主节点 master 的配置

【master】 

 3.2.1解压·

  将mysql-8.0.18-1.el7.x86_64.rpm-bundle.tar包下载后复制到master虚拟机,再从这个虚拟机拷贝到slave1和slave2虚拟机的~目录

scp mysql-8.0.18-1.el7.x86_64.rpm-bundle.tar slave1:~

安装途中四个包,安装时可能会发现缺少依赖, 

 安装后我这里显示有个包需要移除

[rootnode2 MySQL]# yum remove mariadb-libs
3.2.2配置 master 文件

修改 master 的数据库配置文件来对其进行初始化配置

 在如图所示的地方插入两段话

vim /etc/my.cnf 

 3.3 slave 节点依赖的配置

主(master)配置后,从(slave1,slave2)也配置该文件:其他不变,从的server-id需要改为113,114,最后一行需要加上relay_log_purge = 0

三台机器配置完文件后,均重启服务

[root@master ~]# systemctl restart mysql.server 

查看有无密码 

 【master】

【slave】 两个slave机器都是相同的操作

免密登陆配置 

【master】

 在my.conf配置文件里插入一行

 

 3.4配置一主多从复制架构

【master】 

[root@node2 MySQL1]# mysql#先创建用户
(rootalocalhost) [(none)] >create user 'slave'@'172.16.90.%' identified with mysql_native_password by 'MySQL@123';
Query OK,0 rows affected(0.01 sec)#授权
(root@localhost) [(none)]>grant replication slave,replication client on *.* to 'slave'@'172.16.90.%';
Query OK, 0 rows affected, 1 warning (0.01 sec)

【slave】

[root@node2 MySQL1]# mysql(rootalocalhost)[(none)> change master to-> master host='172.16.90.112',-> master user='slave',-> master password='MySQL@123',-> master auto position=l;
Query OK,0 rows affected,2 warnings(0.10 sec)#开启主从同步
(rootalocalhost)[(none)> start slave;
Query OK,0 rows affected (0.00 sec)
(rootalocalhost)[(none)> show slave status \G
*************************** 1. row ***************************Slave_IO_State: Waiting for master to send eventMaster_Host: 172.16.90.212Master_User: slaveMaster_Port: 3306Connect_Retry: 60Master_Log_File: mysql-bin.000002Read_Master_Log_Pos: 712Relay_Log_File: relay-log.000002Relay_Log_Pos: 925Relay_Master_Log_File: mysql-bin.000002Slave_IO_Running: YesSlave_SQL_Running: Yes
...

3.5安装配置MHA

3.5.1在 master 上进行授权  

 在所有 Mysql 节点授权拥有管理权限的用户可在本地网络中有其他节点上远程访问。

先创建用户再授权 

 3.5.2准备ssh互通环境

MHA集群中的各节点彼此之间均需要基于ssh互信通信,以实现远程控制及数据管理功能。接下来我们需要对四个节点进行设置生成密钥对,都拷贝到管理(master)节点

[root@all ~]# ssh-keygen -f ~/.ssh/id_rsa -P '' -q[root@all ~]# ssh-copy-id manager#拷贝免密钥
[root@node1 ~]# scp ~/.ssh/authorized_keys master:~/.ssh/
root@node2's password: 
authorized_keys             100% 1598     3.4MB/s   00:00   [root@node1 ~]# scp ~/.ssh/authorized_keys slave1:~/.ssh/
root@node3's password: 
authorized_keys             100% 1598     2.9MB/s   00:00  [root@node1 ~]# scp ~/.ssh/authorized_keys slave2:~/.ssh/
root@node4's password: 
authorized_keys             100% 1598     2.9MB/s   00:00                                    

验证免密钥登陆(每个机器都要验证,第一次登陆需要手动输入yes,后面就不需要了)
[root@node4 ~]# for i in manager master slave1 slave2;do ssh $i hostname;done

3.5.3 安装 MHA 包

安装包下载地址:

mha官网:https://code.google.com/archive/p/mysql-master-ha/

github下载地址:

https://github.com/yoshinorim/mha4mysql-manager/releases/tag/v0.58
https://github.com/yoshinorim/mha4mysql-node/releases/tag/v0.58

Manager节点需要另外多安装一个包(manager和node ) ,MHA的Node依赖于perl-DBD-MySQL,所以配置epel源。

【manager】下载两个包,把其中一个拷贝给其他节点

[root@node1 ~]# wget -c https://github.com/yoshinorim/mha4mysql-manager/releases/download/v0.58/mha4mysql-manager-0.58-0.el7.centos.noarch.rpm
[root@node1 ~]# wget -c https://github.com/yoshinorim/mha4mysql-node/releases/download/v0.58/mha4mysql-node-0.58-0.el7.centos.noarch.rpm

 【all】:所有的机器

[root@node1 ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
[root@node1 ~]# yum install mha4mysql-*.rpm

  【master】

由于直接安装存在依赖缺失和版本不一致问题,最后从mysql官网上下载了yum源文件(mysql84-community-release-el7-1.noarch.rpm),这里我就不具体写是怎么下载的了,大家去mysql官网找找

下载源到虚拟机后,拷贝到其他三个节点

 拷贝后先安装一下源,再安装node 

yum install mysql84-community-release-el7-1.noarch.rpmyum install mha4mysql-node-0.58-0.el7.centos.norach.rpm

 【slave】同理

yum install mysql84-community-release-el7-1.noarch.rpmyum install mha4mysql-node-0.58-0.el7.centos.norach.rpm

【manager】同理,不过需要多安装一个manager包

yum install mysql84-community-release-el7-1.noarch.rpmyum install mha4mysql-node-0.58-0.el7.centos.norach.rpm mha4mysql-manager-0.58-0.el7.centos.noarch.rpm

 3.5.4 MHA配置

 Manager 节点需要为每个监控的 master/slave 集群提供一个专用的配置文件,而所有的 master/slave 集群也可共享全局配置。全局配置文件默认为/etc/masterha_default.cnf,其为可选配置。如果仅监控一组 master/slave 集群,也可直接通过 application 的配置来提供各服务器的默认配置信息。

3.5.5 定义 MHA 管理配置文件

创建一个目录存放MHA,方便管理 

创建配置文件目录
mkdir /etc/mha
创建日志目录
mkdir -p /var/log/mha/app1vim /etc/mha/app1.cnf
[server default] 			
user=mhaadmin 				
password=Mha@1234 			
manager_workdir=/var/log/mha/app1 		
manager_log=/var/log/mha/app1/manager.log 	
ssh_user=root 				
repl_user=slave				
repl_password=MySQL@123
ping_interval=1 			
[server1] 					
hostname=172.16.90.112	 	
ssh_port=22 				
candidate_master=1 			
[server2]
hostname=172.16.90.113
ssh_port=22
candidate_master=1
[server3]
hostname=172.16.90.114
ssh_port=22
candidate_master=1检查文件有无特殊字符
cat -v /etc/mha/app1.cnf
3.5.6 检测节点
1)检测各节点间 ssh 互信通信配置是否 ok
[root@node1 ~]# masterha_check_ssh --conf=/etc/mha/app1.cnf
...
Wed Nov 24 11:36:56 2021 - [debug]  Connecting via SSH from root@172.16.90.212(172.16.90.212:22) to root@172.16.90.213(172.16.90.213:22)..
Wed Nov 24 11:36:56 2021 - [debug]   ok.
...2)检查管理的MySQL复制集群的连接配置参数是否OK
[root@node1 ~]# masterha_check_repl --conf=/etc/mha/app1.cnf
...
Wed Nov 24 11:37:55 2021 - [info] Got exit code 0 (Not master dead).MySQL Replication Health is OK.

3.6 启动MHA

[root@node1 ~]# nohup masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf --ignore_last_failover < /dev/null > /var/log/mha/app1/manager.log 2>&1 &
[1] 11457

查看一下 master 节点的状态:

[root@node1 ~]# masterha_check_status --conf=/etc/mha/app1.cnf
app1 (pid:11457) is running(0:PING_OK), master:172.16.90.212

查看监控日志

[root@node1 ~]# tail -f /var/log/mha/app1/manager.log
172.16.90.212(172.16.90.212:3306) (current master)+--172.16.90.213(172.16.90.213:3306)+--172.16.90.214(172.16.90.214:3306)Wed Nov 24 11:45:30 2021 - [warning] master_ip_failover_script is not defined.
Wed Nov 24 11:45:30 2021 - [warning] shutdown_script is not defined.
...
Wed Nov 24 11:45:30 2021 - [info] Starting ping health check on 172.16.90.212(172.16.90.212:3306)..
Wed Nov 24 11:45:30 2021 - [info] Ping(SELECT) succeeded, waiting until MySQL doesn't respond..
3.6.1 开发启动服务脚本

工作中启动太麻烦了,所以找了一个脚本作为启动服务

路径一样可以用,不一样得改

[root@node1 ~]  vim /etc/init.d/masterha_managerd
#!/bin/bash
# chkconfig: 35 80 20
# description: MHA management script.STARTEXEC="/usr/bin/masterha_manager --conf"
STOPEXEC="/usr/bin/masterha_stop --conf"
CONF="/etc/mha/app1.cnf"
process_count=`ps -ef |grep -w masterha_manager|grep -v grep|wc -l`
PARAMS="--ignore_last_failover"case "$1" instart)if [ $process_count -gt 1 ]thenecho "masterha_manager exists, process is already running"elseecho "Starting Masterha Manager"$STARTEXEC $CONF $PARAMS < /dev/null > /var/log/mha/app1/manager.log 2>&1 &fi;;stop)if [ $process_count -eq 0 ]thenecho "Masterha Manager does not exist, process is not running"elseecho "Stopping ..."$STOPEXEC $CONFwhile(true)doprocess_count=`ps -ef |grep -w masterha_manager|grep -v grep|wc -l`if [ $process_count -gt 0 ]thensleep 1elsebreakfidoneecho "Master Manager stopped"fi;;*)echo "Please use start or stop as first argument";;
esac
[root@node1 ~]  chmod +x /etc/init.d/masterha_managerd添加成启动服务:
[root@node1 ~]  chkconfig --add masterha_managerd
[root@node1 ~]  chkconfig masterha_managerd on
3.6.2 测试服务脚本

脚本和命令不能同时启动,可能会有问题,先关闭进程

开启脚本:
[root@node1 ~]  systemctl start masterha_managerd
[root@node1 ~]  systemctl status masterha_managerd
● masterha_managerd.service - SYSV: MHA management script.Loaded: loaded (/etc/rc.d/init.d/masterha_managerd; bad; vendor preset: disabled)
...停止脚本:
[root@node1 ~]# systemctl stop masterha_managerd
看进程:
[root@node1 ~]# ps -ef | grep -w masterha_manager
root      25856   1169  0 15:24 pts/0    00:00:00 grep --color=auto -w masterha_manager

 3.7 配置VIP

为了防止脑裂发生,推荐生产环境采用脚本的方式来管理虚拟ip,而不是使用keepalived来完成。

脑裂:由于互相争抢资源而导致得一种异常,检测不到对方存活信息

1.编写脚本

[root@node1 ~]  vim /usr/local/bin/master_ip_failover
#!/usr/bin/env perluse 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 = '172.16.90.210/24';
my $key = '1';
my $ssh_start_vip = "/sbin/ifconfig eth0:$key $vip";
my $ssh_stop_vip = "/sbin/ifconfig eth0:$key down";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 \"`;
}
sub stop_vip() {return 0  unless  ($ssh_user);`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";
}[root@node1 ~]  chmod +x /usr/local/bin/master_ip_failover 

注意脚本两个地方:网段和接口 

2、更改manager配置文件

[root@node1 ~]# vim /etc/mha/app1.cnf 
[server default]
添加:
master_ip_failover_script=/usr/local/bin/master_ip_failover

3、主库上,手工生成第一个vip地址

[root@node2 ~]# ifconfig eth0:1 172.16.90.210/24
注意:第一次需要在主库上手动配置vip
[root@node2 ~]# ifconfig -a |grep -A 2 "eth0:1"
eth0:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 172.16.90.210  netmask 255.255.255.0  broadcast 172.16.90.255ether 28:6e:d4:89:3b:3e  txqueuelen 1000  (Ethernet)

4、重启MHA

[root@node1 ~]# systemctl restart masterha_managerd

相关文章:

MySQL8.0实现MHA高可用

一、简介 MHA&#xff08;Master HA&#xff09;是一款开源的 MySQL 的高可用程序&#xff0c;它为 MySQL 主从复制架构提供了 automating master failover 功能。MHA 在监控到 master 节点故障时&#xff0c;会提升其中拥有最新数据的 slave 节点成为新的master 节点&#xf…...

ip地址是手机号地址还是手机地址

在数字化生活的浪潮中&#xff0c;IP地址、手机号和手机地址这三个概念如影随形&#xff0c;它们各自承载着网络世界的独特功能&#xff0c;却又因名称和功能的相似性而时常被混淆。尤其是“IP地址”这一术语&#xff0c;经常被错误地与手机号地址或手机地址划上等号。本文旨在…...

多光谱成像技术在华为Mate70系列的应用

华为Mate70系列搭载了光谱技术的产物——红枫原色摄像头&#xff0c;这是一款150万像素的多光谱摄像头。 相较于普通摄像头&#xff0c;它具有以下优势&#xff1a; 色彩还原度高&#xff1a;色彩还原准确度提升约 120%&#xff0c;能捕捉更多光谱信息&#xff0c;使拍摄照片色…...

21.2.6 字体和边框

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的。 通过设置Rang.Font对象的几个成员就可以修改字体&#xff0c;设置Range.Borders就可以修改边框样式。 【例 21.6】【项目&#xff…...

详解命令模式

引言 当遇到发送者和接受者之间不是直接连接关系&#xff0c;而是间接连接关系&#xff0c;即发送者和接受者之间需要解耦&#xff0c;我们通常需要命令模式。比如电灯和开关&#xff0c;开关设计时并不知道自己是控制电灯的&#xff0c;也可能控制排气扇、电力设备等等&#x…...

Debian 安装 Nextcloud 使用 MariaDB 数据库 + Caddy + PHP-FPM

前言 之前通过 docker在ubuntu上安装Nextcloud&#xff0c;但是现在我使用PVE安装Debian虚拟机&#xff0c;不想通过docker安装了。下面开始折腾。 安装过程 步骤 1&#xff1a;更新系统并安装必要的软件 sudo apt update && sudo apt upgrade -y sudo apt install…...

string 与 wstring 的字符编码

测试代码: #include<stdio.h> #include<stdlib.h> #include<windows.h> #include <locale.h> #include <string> #include <iostream>// 函数用于计算UTF-8字符串中的字符数 int utf8_strlen(const char* str) {int len = 0;for (; *s…...

golang 开启HTTP代理认证

内部网路不能直接访问外网接口&#xff0c;可以通过代理发送HTTP请求。 HTTP代理服务需要进行认证。 package cmdimport ("fmt""io/ioutil""log""net/http""net/url""strings" )// 推送CBC07功能 func main() {l…...

第九届华为ICT大赛实践赛中国总决赛举行通知及考试地址

经大赛组委会决定&#xff0c;第九届华为ICT大赛实践赛中国总决赛将于2025年3月8日-9日举行具体赛事安排如下&#xff0c;期待与您顶峰相见! 理论考试:线上答题&#xff0c;团队3名成员共同完成1套试题&#xff0c;统一提交一份答案【60分钟&#xff0c;20道试题(含判断、单选…...

FFmpeg 与 FFplay 参数详解:-f、-pix_fmt、-pixel_format 和 -video_size 的区别与用法

FFmpeg 与 FFplay 参数详解:-f、-pix_fmt、-pixel_format 和 -video_size 的区别与用法 在使用 FFmpeg 和 FFplay 进行视频处理和播放时,-f、-pix_fmt、-pixel_format 和 -video_size 是常用的参数。这些参数的作用和使用场景略有不同,理解它们的区别和用法对于正确处理和播…...

深入理解 C++17 std::is_swappable

文章目录 深入理解 C17 std::is_swappable引言std::is_swappable 概述std::is_swappable 的工作原理std::is_swappable 的变体注意事项结论 深入理解 C17 std::is_swappable 引言 在 C 编程中&#xff0c;交换两个对象的值是一个常见的操作。为了确保代码的通用性和安全性&am…...

直接插入排序

一&#xff1a;直接插入排序是什么。 二&#xff1a;如何实现直接插入排序 三&#xff1a;直接插入排序时间复杂度 一&#xff1a;直接插入排序它是排序得一种&#xff0c;其目的无非是将乱序通过排序排成有序的。 我们可以通过动画直观看什么是直接插入排序 这是我找的直接…...

基于可信数据空间的企业数据要素与流通体系建设(附ppt 下载)

近期&#xff0c;可信数据空间会议召开。大数据系统软件国家工程研究中心总工程师王晨发表了题为《基于可信数据空间的企业数据要素与流通体系建设》主旨演讲。 WeChat Subscription Account【智慧城市指北】&#xff0c;可搜索相关关键字“20250107”&#xff0c;可获取具体获…...

处理 this

this指向改变this this指向 构造函数和原型对象都指向 实例 改变this指向的三个方法&#xff1a; call()apply()bind() call() apply() 与call的区别就是call中参数任意&#xff0c;但是apply中参数必须是数组 bind&#xff08;&#xff09;&#xff08;最重要&#xff09; 与…...

kafka服务端之日志存储

文章目录 日志布局日志索引日志清理日志删除基于时间基千日志大小基于日志起始偏移量 日志压缩总结 日志布局 Ka饮a 中的消息是以主题为基本单位进行归类的&#xff0c; 各个主题在逻辑 上相互独立。 每个主题又可以分为一个或多个分区&#xff0c; 分区的数量可以在主题创建的…...

【Apache Paimon】-- 15 -- 利用 paimon-flink-action 同步 postgresql 表数据

利用 Paimon Schema Evolution 核心特性同步变更的 postgresql 表结构和数据 1、背景信息 在Paimon 诞生以前,若 mysql/pg 等数据源的表结构发生变化时,我们有几种处理方式 (1)人工消息通知,然后手动同步到数据仓库中(2)使用 flink 消费 DDL binlog ,然后自动更新 Hi…...

正则表达式进阶(二)——零宽断言详解:\b \B \K \z \A

在正则表达式中&#xff0c;零宽断言是一种非常强大的工具&#xff0c;能够在不消费字符的情况下对匹配位置进行约束。除了环视&#xff08;lookahead 和 lookbehind&#xff09;以外&#xff0c;还有一些常用的零宽断言&#xff0c;它们用于处理边界、字符串的开头和结尾等特殊…...

java poi Excel 文件导入导出常见错误及解决方案

在使用 Apache POI 进行 Excel 文件的导入导出操作时&#xff0c;可能会遇到各种问题。以下是一些常见的错误及其解决方案&#xff1a; 一、文件格式相关问题 1. 文件格式不兼容 问题描述&#xff1a;尝试使用 HSSFWorkbook 读取 .xlsx 文件&#xff0c;或者使用 XSSFWorkbo…...

批量提取word表格数据到一个excel

新建一个excel到word同级目录altf11打开vba窗口并新建模块粘贴下方代码&#xff08;修改一些必要参数&#xff09;回到excel表格界面&#xff0c;altf8选择执行该宏注意要在信任中心开启运行vba宏 Sub 批量提取word表格数据到excel()Dim wdApp As Object, wdDoc As ObjectDim …...

快速建立私有化知识库(私有化训练DeepSeek,通过ollama方式)

简介 什么&#xff1f;&#xff01;老是有人问你需求&#xff0c;不同版本的需求你记不清还得去扒拉过程文档、设计文档&#xff1f; 什么&#xff1f;&#xff01;领导会询问功能使用情况、用户相关数据&#xff0c;你每次还得手动查询反馈&#xff1f; 什么&#xff1f;&…...

python 一句话打印行号

在C语言中&#xff0c;打印行号可以直接用预定义的宏__LINE__&#xff0c;打印当前行号&#xff0c;方便调试。 printf("%d", __LINE__); // C语言打印当前行号 python中没有这样的预定义宏。 但可以用这种方式&#xff0c;实现一句话打印行号&#xff1a; impor…...

设计模式-生产者消费者模型

阻塞队列&#xff1a; 在介绍生产消费者模型之前&#xff0c;我们先认识一下阻塞队列。 阻塞队列是一种支持阻塞操作的队列&#xff0c;常用于生产者消费者模型&#xff0c;它提供了线程安全的队列操作&#xff0c;并且在队列为空或满时&#xff0c;能够阻塞等待&#xff0c;…...

Kubernetes是什么?为什么它是云原生的基石

从“手工时代”到“自动化工厂” 想象一下&#xff0c;你正在经营一家工厂。在传统模式下&#xff0c;每个工人&#xff08;服务器&#xff09;需要手动组装产品&#xff08;应用&#xff09;&#xff0c;效率低下且容易出错。而Kubernetes&#xff08;k8s&#xff09;就像一个…...

全国计算机等级考试(NCRE)四级计算机网络考试大纲(2025年版)

文章目录 基本要求1. 理解计算机网络的基本概念。2. 掌握局域网的基本工作原理。局域网&#xff08;LAN&#xff09;基本工作原理 3. 掌握TCP/IP及其相关协议。 TCP/IP协议及其相关协议1. TCP/IP协议的分层结构2. 主要协议详解&#xff08;1&#xff09;IP协议&#xff08;2&am…...

扩展知识--缓存和分时复用cpu

在多核CPU中&#xff0c;缓存和分时复用CPU是两个重要的概念&#xff0c;它们分别涉及硬件架构和资源管理策略。以下将从缓存的层次结构、工作原理以及分时复用CPU的概念进行详细解释。 一、多核CPU中的缓存 缓存的定义与作用 缓存&#xff08;Cache&#xff09;是位于CPU与主…...

6.Centos7上部署flask+SQLAlchemy+python+达梦数据库

情况说明 前面已经介绍了window上使用pycharm工具开发项目时,window版的python连接达梦数据库需要的第三方包。 这篇文章讲述,centos7上的python版本连接达梦数据库需要的第三方包。 之前是在windows上安装达梦数据库的客户端,将驱动包安装到windows版本的python中。(开…...

如何将3DMAX中的3D文件转换为AutoCAD中的2D图形?

大家好,今天我们来探讨一下如何将3DMAX中的3D文件转换为AutoCAD中的2D图形。无论是出于设计交流、施工准备还是其他实际需求,这种转换在工程设计领域都是一项非常实用的技能。接下来,我将为大家详细介绍几种实现这一转换的方法,帮助大家轻松跨越3D与2D设计之间的鸿沟。让我…...

使用LLaMA Factory踩坑记录

前置条件&#xff1a;电脑显卡RTX 4080 问题&#xff1a;LLaMA-Factory在运行的时候&#xff0c;弹出未检测到CUDA的报错信息 结论&#xff1a;出现了以上的报错&#xff0c;主要可以归结于以下两个方面&#xff1a; 1、没有安装GPU版本的pytorch&#xff0c;下载的是CPU版本…...

四柱预测学

图表 后天八卦 十二地支不仅代表了时间,还代表了方位。具体来说: ‌子‌:代表正北方‌丑寅‌:合起来代表东北方‌卯‌:代表正东方‌辰巳‌:合起来代表东南方‌午‌:代表正南方‌未申‌:合起来代表西南方‌酉‌:代表正西方‌戌亥‌:合起来代表西北方‌四季-五行-六神…...

使用 JFreeChart 创建动态图表:从入门到实战

文章目录 前言一、JFreeChart 简介二、环境准备三、 创建第一个折线图四、自定义图表样式4.1 设置背景色4.2 设置折线颜色4.3 设置字体&#xff08;解决中文乱码&#xff09;4.4 设置横坐标的标签宽度和方向 五、导出图表六、实战&#xff1a;动态生成日报图表总结 前言 在数据…...

【自学笔记】文言一心的基础知识点总览-持续更新

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 文心一言知识点总览一、文心一言简介二、文心一言的核心功能三、文心一言的技术特点四、文心一言的应用场景五、文心一言的使用技巧六、文心一言的未来发展 总结 文…...

解锁AI语音魅力——yoyo鹿鸣在线语音合成器,让创意声音即刻绽放!

yoyo鹿鸣-在线语音合成 人工智能语音克隆生成&#xff0c;二次元&#xff5e; AI工具 | AI探金 可以在AI探金社区来找我&#xff5e; yoyo鹿鸣 - 在线语音生成器 需求人群&#xff1a; 有语音合成需求的用户。 使用场景示例&#xff1a; 合成yoyo鹿鸣语音 等等 产品特色&a…...

【无标题】堆

[TOC](优先级队列&#xff08;堆&#xff09;) 【本节目标】 1. 掌握堆的概念及实现 2. 掌握 PriorityQueue 的使用 # 1. 优先级队列 ## 1.1 概念 前面介绍过队列&#xff0c;**队列是一种先进先出(FIFO)的数据结构**&#xff0c;但有些情况下&#xff0c;**操作的数据可…...

【工具变量】上市公司企业绿色新闻数据(2013-2023年)

测算方式&#xff1a; 参考《中国工业经济》周泽将(2023)老师的做法&#xff0c;首先通过网络爬虫的方法检索并爬取上市公司相关新闻&#xff0c;并辅以人工检索补充校对&#xff1b;新闻文本清理&#xff0c;并通过公司相关性判定以及主题模型识别该新闻是否为上市公司环保主…...

【vue】高德地图AMap.Polyline动态更新画折线,逐步绘制

可以使用 setTimeout 或 setInterval 来逐个点绘制折线&#xff0c;确保每次添加新的点到 path 并更新 Polyline&#xff0c;如下所示&#xff1a; localPolyline(path) {console.log(逐点绘制 polyline...);let drawnPath []; // 用于存储当前绘制的点let index 0;let poly…...

Lecture8 | LPV VXGI SSAO SSDO

Review: Lecture 7 | Lecture 8 LPV (Light Propagation Volumes) Light Propagation Volumes(LPV)-孤岛惊魂CryEngine引进的技术 LPV做GI快|好 大体步骤&#xff1a; Step1.Generation of Radiance Point Set Scene Representation 生成辐射点集的场景表示&#xff1a;辐射…...

三种Excel文本连接方法!

大家好&#xff0c;我是小鱼。 在处理Excel表格数据时&#xff0c;有时需要对表格某些单元格中的文本进行连接组合。今天就跟大家分享3种Excel文本连接方法&#xff01;学会后遇到Excel文本连接问题也不求人&#xff01; 方法一、使用&符号连接 使用&符号连接文本的话…...

ubuntu 本地部署deepseek r1 蒸馏模型

本文中的文件路径或网络代理需要根据自身环境自行删改 一、交互式chat页面 1.1 open-webui 交互窗口部署&#xff1a;基于docker安装&#xff0c;且支持联网搜索 Open WebUI 是一个可扩展、功能丰富且用户友好的自托管 AI 平台&#xff0c;旨在完全离线操作。它支持各种 LLM…...

如何删除本地大模型

随着Deepseep模型的爆火&#xff0c;越来越多的用户尝试在本地安装并体验这一强大的AI工具。然而&#xff0c;许多人在安装过程中发现&#xff0c;模型默认会安装在C盘&#xff0c;而C盘的空间通常有限&#xff0c;尤其是对于那些系统盘容量较小的用户来说&#xff0c;这无疑是…...

【共享文件夹】使用Samba服务可在Ubuntu和Windows系统之间共享一个实际的文件夹

目标&#xff1a;在Ubuntu和Windows系统之间共享一个实际的文件夹&#xff0c;并能够共同编辑其中的文件 安装Samba创建共享文件夹配置Samba设置Samba密码重启Samba服务以应用更改&#xff1a;在Windows中访问共享文件夹如果客户机无法访问 Samba 服务器&#xff0c;解决方法①…...

用Llama Factory单机多卡微调Qwen2.5时报torch.OutOfMemoryError: CUDA out of memory的解决办法

接着上一篇博客&#xff1a;在Ubuntu上用Llama Factory命令行微调Qwen2.5的简单过程_llamafactory 微调qwen 2.5-CSDN博客 如果需要微调比较大的模型&#xff0c;例如Qwen2.5-32B&#xff0c;那么在两个3090上可能不够用&#xff0c;这里我用A60004的服务器。但如果仿照上篇博…...

第 26 场 蓝桥入门赛

3.电子舞龙【算法赛】 - 蓝桥云课 问题描述 话说这年头&#xff0c;连舞龙都得电子化&#xff01;这不&#xff0c;蓝桥村的老程序员王大爷突发奇想&#xff0c;用LED灯带和一堆传感器鼓捣出了一条“电子舞龙”&#xff0c;它能根据程序指令在村里的广场上“翩翩起舞”。 广…...

文华财经期货支撑压力多空K线变色期货指标,博易大师指标公式大全

低线:25,DOT; 中线:55,DOT; 高线:85,DOT; LOWV:LLV(LOW,9); HIGHV:HHV(HIGH,9); RSV:EMA((CLOSE-LOWV)/(HIGHV-LOWV)*100,3); K:EMA(RSV,3); 趋势线:MA(K,3); DBA:K-趋势线; STICKLINE(DBA>0,(K-DBA*0.1),(K-DBA*0.75),2,0),COLORRED; STICKLINE(DBA<0,(趋势线DBA*0.1),…...

基于大模型的围术期脆弱性评估系统研究报告

一、引言 1.1 研究背景与意义 围术期是指从患者决定接受手术治疗开始,到手术治疗直至基本康复的全过程,包括术前、术中和术后三个阶段。围术期管理对于保障患者安全、提高治疗效果具有至关重要的意义。在术前阶段,全面准确的评估患者身体状况能够帮助医生提前发现潜在风险…...

星网锐捷 视频话机设备pwdsetting管理密码信息泄漏

星网锐捷 视频话机设备pwdsetting管理密码信息泄漏 漏洞描述 星网锐捷视频话机设备 泄露管理员密码&#xff0c;攻击者可利用密码直接进入后台配置页面&#xff0c;执行恶意操作&#xff0c;进行一步攻击。 威胁等级: 高危 漏洞分类: 信息泄露 涉及厂商及产品&#xff1a;…...

深入理解小波变换:信号处理的强大工具

引言 在科学与工程领域&#xff0c;信号处理一直是关键环节&#xff0c;傅里叶变换与小波变换作为重要的分析工具&#xff0c;在其中发挥着重要作用。本文将深入探讨小波变换&#xff0c;阐述其原理、优势以及与傅里叶变换的对比&#xff0c;并通过具体案例展示其应用价值。 一…...

Python----Python高级(并发编程:协程Coroutines,事件循环,Task对象,协程间通信,协程同步,将协程分布到线程池/进程池中)

一、协程 1.1、协程 协程&#xff0c;Coroutines&#xff0c;也叫作纤程(Fiber) 协程&#xff0c;全称是“协同程序”&#xff0c;用来实现任务协作。是一种在线程中&#xff0c;比线程更加轻量级的存在&#xff0c;由程序员自己写程序来管理。 当出现IO阻塞时&#xff0c;…...

神经网络(Neural Network)

引言 神经网络,作为人工智能和机器学习领域的核心组成部分,近年来在诸多领域取得了显著的进展。受生物神经系统的启发,神经网络通过模拟人脑神经元的工作机制,能够从大量数据中学习复杂的模式和关系。其强大的非线性建模能力使其在图像识别、自然语言处理、语音识别和预测…...

AIGC-微头条爆款文案创作智能体完整指令(DeepSeek,豆包,千问,Kimi,GPT)

Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总游戏脚本-辅助自动化Android控件全解手册再战Android系列Scratch编程案例软考全系列Unity3D学习专栏蓝桥系列AIGC(GPT、DeepSeek、豆包、千问、Kimi)👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资…...

A股level2高频数据分析20250205

A股level2高频数据分析20250205 通过Level2的逐笔成交与委托记录&#xff0c;这种高精度的毫秒级数据能够洞察诸多重要信息&#xff0c;包括庄家目的、误导性行为&#xff0c;使所有交易操作透明化。这对于分析高手的交易策略极为有益&#xff0c;对机器学习的研究也极具价值&…...