rabbitmq版本升级并部署高可用
RabbitMQ版本升级
先检查是否已经安装rabbitmq
rpm -qa|grep rabbitmq|wc -l //如果结果是0,表示没有安装
rpm -e --nodeps $(rpm -qa|grep rabbitmq) //如安装了,则进行卸载
先检查是否已经安装erlang
rpm -qa|grep erlang|wc -l //如果结果是0,表示没有安装
rpm -e --nodeps $(rpm -qa|grep erlang) //如安装了,则进行卸载
准备升级后的安装包
- 去https://dl.bintray.com/rabbitmq/rpm/下载需要rabbitmq包
- 去https://github.com/rabbitmq/erlang-rpm/releases下载对应所需要的erlang包
- 由于rabbitmq需要依赖socat所以需要去此网站https://centos.pkgs.org/查找对应系统的对应版本下载
- rabbitmq还依赖logrotate,查看下是否安装了,如没安装重复第3步
Logrotate下载地址https://centos.pkgs.org/7/centos-x86_64/logrotate-3.8.6-19.el7.x86_64.rpm.html
rpm -qa | grep logrotate
安装对应包
rpm -ivh erlang-23.3.4.18-1.el7.x86_64.rpm####检查是否安装成功
erl
#输入 erl 并用 halt() . 函数退出
rpm -ivh socat-1.7.3.2-2.el7.x86_64.rpmrpm -ivh rabbitmq-server-3.8.16-1.el7.noarch.rpm
-
安装erlang遇到的问题
1.错误:依赖检测失败:
libsystemd.so.0()(64bit) 被 erlang-21.3.8.9-1.el7.x86_64 需要
方案一
1.1下载依赖包,网址https://pkgs.org/,搜索libcrypto.so.10,下载对应版本的安装包
1.2下载地址如下
https://centos.pkgs.org/7/centos-x86_64/openssl-libs-1.0.2k-19.el7.x86_64.rpm.html#:~:text=http%3A//mirror.centos.org/centos/7/os/x86_64/Packages/openssl%2Dlibs%2D1.0.2k%2D19.el7.x86_64.rpm
1.3安装命令
rpm -ivh openssl-libs-1.0.2k-19.el7.x86_64.rpm
安装失败则加参数--force进行强制安装
rpm -ivh openssl-libs-1.0.2k-19.el7.x86_64.rpm --force
方案二
在命令后面添加--nodeps --force参数。该命令的作用是,不再分析包之间的依赖关系而直接安装
rpm -ivh erlang-23.3.4.11-1.el7.x86_64.rpm --nodeps --force
然后手动安装依赖环境
安装socat遇到的错误
错误:依赖检测失败:
libreadline.so.6()(64bit) 被 socat-1.7.3.2-2.el7.x86_64 需要
安装rpm时增加参数–nodeps --force:rpm -ivh socat-1.7.3.2-5.el7.lux.x86_64.rpm --nodeps --force
安装rabbitmq遇到的问题
错误1:
错误:依赖检测失败:
Socat被rabbitmq-server-3.8.16-l.el7.noarch需要
方案:安装socat依赖
命令:rpm -ivh socat-1.7.3.2-2.el7.x86_64.rpm
-
启动rabbitmq
service rabbitmq-server start//启动
service rabbitmq-server stop//停止
service rabbitmq-server restart//重启
-
启动管理界面
rabbitmq-plugins enable rabbitmq_management
-
1
RabbitMQ配置
新启动的mq还不可以远程访问,guest也只能本地访问所以需要一些配置
-
添加用户并设置密码
rabbitmqctl add_user super super
添加权限(使admin用户对虚拟主机“/” 具有所有权限):
rabbitmqctl set_permissions -p “/” super “.*” “.*” “.*”
-
修改用户角色(加入administrator用户组)
rabbitmqctl set_user_tags super administrator
rabbitmqctl set_user_tags {username} {tag ...}
至此就可以远程访问了
4. 管理界面访问地址为 ip:15672(端口号)
进入管理界面查看端口号情况
注:ITSM相关配置文件使用的是amqp协议,使用的端口号是5672。
常用命令
应用的开启关闭
service rabbitmq-server start//启动service rabbitmq-server stop//停止service rabbitmq-server restart//重启
集群的开启关闭
rabbitmqctl stop_app //仅关闭应用,不关闭节点rabbitmqctl start_app //开启应用rabbitmq -server -detached //启动节点和应用rabbitmqctl stop //关闭节点和应用
插件管理
rabbitmq-plugins enable xxx //开启某个插件rabbitmq-plugins disable xxx //关闭某个插件rabbitmq-plugins list //插件列表rabbitmq-plugins set xxx xxx //启用一个或多个插件,禁用其余插件
注意:重启服务器后生效。
用户管理
rabbitmqctl add_user username pwd //新建用户rabbitmqctl delete_user username //删除用户rabbitmqctl list_users //查看用户rabbitmqctl change_passwor change_password {username} {newpassword} //改密码rabbitmqctl set_user_tags {username} {tag ...} //设置用户角色 Tag可以为 administrator,monitoring, management
防火墙
#### rabbitmq普通用户不能开放防火墙,使用root提前开放5672,15672端口firewall-cmd --zone=public --add-port=5672/tcp --permanentfirewall-cmd --zone=public --add-port=15672/tcp --permanentfirewall-cmd --reload
Rabbitmq集群
修改三台主机名称
注意:需要先设置linux机器别名称
hostnamectl set-hostname 机器别名 --static
systemctl stop rabbitmq-server #(先停 止mq)vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.200.108 node1
192.168.200.109 node2
192.168.200.102 node3
共享Erlang Cookie
需要将所有机器的.erlang.cookie文件与集群主节点进行同步,同步前需要关闭所有机器的rabbitmq服务
# 关闭rabbitmq服务 systemctl stop rabbitmq-server
[root@node1 ~]# more /var/lib/rabbitmq/.erlang.cookie
PZIJZCVFEXCZCCXPMZFE
[root@node2 ~]# more /var/lib/rabbitmq/.erlang.cookie
GQJUECIAZXPIYQFBASUT
#对比两台主机cookie文件并不一致,集群必须保证一致性#
chmod 600 /var/lib/rabbitmq/.erlang.cookie
启动mq服务和erlang
在3台节点上分别都执行命令
rabbitmq-server -detached (3台该命令可以重启mq和erlang)
systemctl start rabbitmq-server (3台启动mq)
集群搭建
以node1为主节点,其余的node2和node3加入主节点
# 1.停止服务
rabbitmqctl stop_app
# 2.重置状态
rabbitmqctl reset
# 3.节点加入, 在一个node加入cluster之前,必须先停止该node的rabbitmq应用,即先执行stop_app
# node2加入node1, node3加入node2
rabbitmqctl join_cluster --ram rabbit@node1 //加入到磁盘节点
# 4.启动服务
rabbitmqctl start_app
#此时一个普通集群就搭建起来了,在任意一个节点查看集群状态
rabbitmqctl cluster_status
默认的 cluster_name 名字为 rabbit@rabbit1,如果你想进行修改,可以使用以下命令:
rabbitmqctl set_cluster_name rabbitmq_cluster
开启镜像集群
以上部署的这种集群,是无法在各个节点之间保存数据的,数据只会保存在接受到消息的节点上当 ram 的节点挂了之后 数据会丢失;这里我们为所有队列开启镜像配置,高可用策略。
####表示开启HA模式 适用于所有的队列rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'
创建集群账号
[root@node1 ~]# rabbitmqctl add_user admin 123Adding user "admin" ...[root@node1 ~]# rabbitmqctl set_user_tags admin administratorSetting tags for user "admin" to [administrator] ...[root@node1 ~]# rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"Setting permissions for user "admin" in vhost "/" ...[root@node1 ~]#
步骤
1.创建用户admin密码123 (生产环境密码必须高难度密码)
2.给admin用户管理员身份
3.授予admin用户权限
前期准备
开启ip转发功能
#查看是否开启转发
cat /proc/sys/net/ipv4/ip_forward
#返回1代表IP已开启,0 未开启
#临时开启
echo 1 > /proc/sys/net/ipv4/ip_forward
#永久开启
vi /etc/sysctl.conf
net.ipv4.ip_forward = 1
#立即生效
sysctl -p /etc/sysctl.conf &
关闭selinux
#查看selinux状态
getenforce
#永久关闭selinux
vi /etc/selinux/config
#将 SELINUX=enforcing 改为 SELINUX=disabled
#上一个命令需要重启生效,因此建议执行以下命令,临时关闭selinux
setenforce 0
HAproxy
我们用haproxy做负载均衡,在两台虚拟机上都安装。
#解压haprpxy
tar xf haproxy-2.9.0.tar.gz
#进入目录编译安装
cd haproxy-2.9.0
make TARGET=linux-glibc PREFIX=/opt/haproxy-2.9.0
make install PREFIX=/opt/haproxy-2.9.0
#设置环境变量并生效
vim /etc/profile
export HAPROXY_HOME=/opt/haproxy-2.9.0
export PATH=$PATH:$HAPROXY_HOME/sbin
source /etc/profile
#查看版本验证安装是否成功
haproxy -v
HAProxy version 2.9.0-fddb8c1 2023/12/05 - https://haproxy.org/
Status: development branch - not safe for use in production.
Known bugs: http://www.haproxy.org/bugs/bugs-2.9.0.html
Running on: Linux 3.10.0-1160.36.2.el7.x86_64 #1 SMP Wed Jul 21 11:57:15 UTC 2021 x86_64
配置haproxy文件
mkdir /etc/haproxyvim /etc/haproxy/haproxy.cfg
# 全局配置
global
# 日志输出配置、所有日志都记录在本机,通过 local0 进行输出
log 127.0.0.1 local0 info
# 最大连接数
maxconn 4096
# 改变当前的工作目录
chroot /opt/haproxy-2.1.10
# 以指定的 UID 运行 haproxy 进程
uid 99
# 以指定的 GID 运行 haproxy 进程
gid 99
# 以守护进行的方式运行
daemon
# 当前进程的 pid 文件存放位置
pidfile /opt/haproxy-2.1.10/haproxy.pid
# 默认配置
defaults
# 应用全局的日志配置
log global
# 使用4层代理模式,7层代理模式则为"http"
mode tcp
# 日志类别
option tcplog ##记录TCP请求日志
# 不记录健康检查的日志信息
option dontlognull
# 3次失败则认为服务不可用
retries 3
# 每个进程可用的最大连接数
maxconn 2000
# 连接超时
timeout connect 5s
# 客户端超时
timeout client 120s
# 服务端超时
timeout server 120s
# 绑定配置
listen rabbitmq_cluster
bind :5672 #绑定端口
# 配置TCP模式
mode tcpoption tcpka ##是否允许想server和client发送keepalive
# 采用加权轮询的机制进行负载均衡
balance roundrobin
# RabbitMQ 集群节点配置
server mq-node1 node1:5672 check inter 5000 rise 2 fall 3 weight 1
server mq-node2 node2:5672 check inter 5000 rise 2 fall 3 weight 1
server mq-node3 node3:5672 check inter 5000 rise 2 fall 3 weight 1
# 配置监控页面
listen monitor
bind :8100
mode http
option httplog
stats enable
stats uri /stats
stats refresh 5s
haproxy -f /etc/haproxy/haproxy.cfg -c #检查配置文件
netstat -ntpl启动haproxy前检查端口占用,若占用则更改/etc/haproxy/haproxy.cfg对应的端口号
#启动haproxy配置文件haproxy -f /etc/haproxy/haproxy.cfg#查看Haproxy 启动状态ps -ef|grep haproxy
网页访问
访问haproxy网址http://192.168.200.102:8100/stats检查是否配置成功,所有节点表示绿色mq集群状态健康。
Keepalived
下载keepalived
以2.2.8版本为例,如下为下载地址
https://www.keepalived.org/download.html
安装依赖软件
rpm -qa|grep automake|wc -l 检查没有automake则安装
yum -y install automake
解压软件
tar -xvf keepalived-2.2.8.tar.gz
在keepalived-2.2.8目录执行./autogen.sh
./autogen.sh
使用configure命令配置安装目录与核心配置文件所在位置
./configure --prefix=/usr/local/keepalived --sysconf=/etc
-
prefix:keepalived安装的位置
-
sysconf:keepalived核心配置文件所在位置,固定位置,改成其他位置则keepalived启动不了,/var/log/messages中会报错
安装
make && make install
keepalived配置文件
Ifconfig查看网卡
vim /etc/keepalived/keepalived.conf
部分配置信息(只显示使用到的):
global_defs {
# 路由id,主备节点不能相同
router_id node1
vrrp_skip_check_adv_addr
# 使用 unicast_src_ip 需要注释 vrrp_strict,而且也可以进行 ping 测试
#vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
# 自定义监控脚本
vrrp_script chk_haproxy {
# 脚本位置
script "/etc/keepalived/haproxy_check.sh"
# 脚本执行的时间间隔
interval 5
# 权重
weight 10
}
vrrp_instance VI_1 {
# Keepalived的角色,MASTER 表示主节点,BACKUP 表示备份节点
state MASTER
# 指定监测的网卡,可以使用 ifconfig 进行查看
interface ens192
#指定发送单播的源IP
mcast_src_ip 10.9.37.104 # 当前主机ip
# 虚拟路由的id,主备节点需要设置为相同
virtual_router_id 51
# 优先级,主节点的优先级需要设置比备份节点高
priority 100
# 设置主备之间的检查时间,单位为秒
advert_int 1
# 定义验证类型和密码
authentication {
auth_type PASS
auth_pass w123456
}
# 调用上面自定义的监控脚本
track_script {
chk_haproxy
}
unicast_peer {
#指定接收单播的对方目标主机IP
172.21.9.203
172.21.9.202
}
virtual_ipaddress {
# 虚拟IP地址,可以设置多个
10.9.37.199
}
}
/etc/keepalived/script/check_haproxy.sh内容
vim /etc/keepalived/script/check_haproxy.sh
#!/bin/bash
LOGFILE="/var/log/keepalived-haproxy-status.log"
date >> $LOGFILE
A=`ps -C haproxy --no-header |wc -l`
# 判断haproxy是否已经启动
if [ $A -eq 0 ];then
#如果没有启动,则启动
echo "warning: restart haproxy" >> $LOGFILE
haproxy -f /etc/haproxy/haproxy.cfg
fi
#睡眠3秒以便haproxy完全启动
sleep 3
#如果haproxy还是没有启动,此时需要将本机的keepalived服务停掉,以便让VIP自动漂移到另外一台haproxy
if [ $A -eq 0 ];then
echo "fail: check_haproxy status" >> $LOGFILE
systemctl stop keepalived
fi
else
echo "success: check_haproxy status" >> $LOGFILE
fi
说明:
Keepalived组之间的心跳检查并不能察觉到HAproxy负载是否正常,所以需要使用此脚本。
在Keepalived主机上,开启此脚本检测HAproxy是否正常工作,如正常工作,记录日志。
如进程不存在,则尝试重启HAproxy,三秒后检测,如果还没有则关掉主Keepalived,此时备Keepalived检测到主Keepalive挂掉,接管VIP,继续服务。
#给脚本添加执行权限
chmod +x /etc/keepalived/script/check_haproxy.sh
#配置ip转发
echo "net.ipv4.ip_nonlocal_bind = 1" >> /etc/sysctl.conf
#生效
sysctl -p
#启动keepalived并设置开机自启
systemctl start keepalived
systemctl enable keepalived
相关文章:

rabbitmq版本升级并部署高可用
RabbitMQ版本升级 先检查是否已经安装rabbitmq rpm -qa|grep rabbitmq|wc -l //如果结果是0,表示没有安装 rpm -e --nodeps $(rpm -qa|grep rabbitmq) //如安装了,则进行卸载 先检查是否已经安装erlang rpm -qa|grep erlang|wc -l //如果结果…...

Visual Studio 2022新建c语言项目的详细步骤
步骤1:点击创建新项目 步骤2:到了项目模板 --> 选择“控制台应用” (在window终端运行代码。默认打印"Hello World") --> 点击 “下一步” 步骤3:到了配置新项目模块 --> 输入“项目名称” --> 更改“位置”路径&…...

Spring Boot使用JDBC /JPA访问达梦数据库
Spring Boot 是一个广泛使用的 Java 框架,用于快速构建基于 Spring 的应用程序。对于达梦数据库(DMDB)的支持,Spring Boot 本身并没有直接内置对达梦数据库的集成,但你可以通过一些配置和依赖来支持达梦数据库。 以下…...
Spring Boot 消息队列(以RabbitMQ为例)
文章目录 RabbitMQ 简介与安装1. RabbitMQ 简介2. RabbitMQ 安装 Spring Boot 集成 RabbitMQ1. 创建 Spring Boot 项目2. 配置 RabbitMQ3. 定义消息队列和交换机4. 发送消息5. 接收消息6. 测试消息发送和接收 RabbitMQ 简介与安装 1. RabbitMQ 简介 RabbitMQ 是一个开源的消息…...
单元测试与仿真程序之间的选择
为什么写这篇文章 现在的工作需求,让我有必要总结和整理一下。 凡事都有适用的场景。首先这里我需要提示一下,这里的信息,可能并不普适。 但是可以肯定一点的是,有些人,不论做事还是写书,上下文还没有交待…...
确认机制面临的挑战
在传输控制协议中,确认机制(ACK 机制)是确保数据可靠交付、实现拥塞控制和丢包恢复的重要组成部分。然而,随着网络环境和业务需求的不断演进,确认机制在实际应用中面临着诸多挑战。今天我们探讨确认机制主要面临的几项…...
在MATLAB环境中,对矩阵拼接(Matrix Concatenation)的测试
在MATLAB环境中,对矩阵拼接(Matrix Concatenation)的正确性与鲁棒性开展测试时,需要依据不同的拼接场景精心设计测试用例,全面验证矩阵维度、数据顺序、边界条件以及异常处理等关键方面。以下是详尽的测试方法与具体示…...

[MySQL初阶]MySQL(4)基本查询
标题:[MySQL初阶]MySQL(4)基本查询 水墨不写bug 文章目录 一. 数据表设计二、对数据表的操作1. Create 操作(插入数据)查看最近受影响的行数: 2. Retrieve 操作(读取数据)࿰…...

基于STM32的智能家居蓝牙系统(论文+源码)
1总体方案设计 本次基于STM32的智能家居蓝牙系统,其系统总体架构如图2.1所示,采用STM32f103单片机作为控制器,通过DHT11传感器实现温湿度检测,MQ-2烟雾传感器实现烟雾检测,光敏电阻实现光照检测,同时将数据…...

QTS单元测试框架
1.QTS单元测试框架介绍 目前QTS项目采用C/C语言,而CppUnit就是xUnit家族中的一员,它是一个专门面向C的单元测试框架。因此,QTS采用CppUnit测试框架是比较理想的选择。 CppUnit按照层次来管理测试,最底层的就是TestCase,当有了几个TestCase以后,可以将它们组织成Te…...

《水利水电安全员考试各题型对比分析及应对攻略》
《水利水电安全员考试各题型对比分析及应对攻略》 单选题: 特点:四个选项中只有一个正确答案,相对难度较小。主要考查对基础知识的掌握程度。 应对攻略:认真审题,看清题目要求。对于熟悉的知识点,直接选择…...
sqlite3 c++ client选择; c++环境搭建 : abseil-cpp | fnc12/sqlite_orm
sqlite3 c client选择 今日20250305 2.4K星: 7月前最后提交核心: SRombauts/SQLiteCpp.git : 薄封装、命令式sql、非orm、支持事务2.4K星: 1月前最后提交核心: fnc12/sqlite_orm.git : 厚封装、非侵入、真orm、真泛型、类型复杂、支持事务、报错信息不完整(启动事…...

IMX6ULL驱动开发uboot篇02
目录 网络操作 第零步:先将网线跟电脑接好,打开串口连接到开发板上,然后上电,让UBoot停下来 第一步:查看我们的网线构成的虚拟子网是哪一个 第二步:我们必须把虚拟机的网卡模式从NAT改成桥接,…...

智谱AI-FunctionCall
智谱AI-FunctionCall 编写FuncationCall大模型的函数调用,先直观的感受一下的感受下FunctionCall的魅力 文章目录 智谱AI-FunctionCall[toc]1-参考网址2-思路整理3-代码拆件1-[非核心]两个业务函数2-[非核心]业务函数的JsonSchema定义3-[核心]FunctionCall的调用1-打…...

数据保险箱:备份文件的关键价值与自动化实践
在信息化社会,数据已经成为我们生活、工作和学习的核心组成部分。无论是企业机密、个人隐私,还是创意作品、研究数据,它们都以数字形式存在于我们的电子设备中。然而,数据如同脆弱的玻璃制品,稍有不慎就可能面临丢失或…...

数字电路基础——逻辑门
逻辑门是数字电子技术中的基本构建块。这些组件用于对1和0进行操作,可以将它们组合起来创建其他构建块,并设计出如锁存器、触发器、加法器、移位寄存器等电路。 七种主要的逻辑门类型: 一、基本逻辑门 1.1 与门(AND gate) 1.1.1 逻辑运算规则 与门有多个输入端和一个输出…...
爬虫逆向:脱壳工具BlackDex的详细使用
更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、BlackDex简介二、下载与安装三、基本使用步骤3.1 启动BlackDex3.2 导入目标APK文件3.3 开始脱壳3.4 查看脱壳结果四、后续分析4.1 使用 JADX 反编译 Dex 文件4.2 使用 Apktool 反编译 Dex 文件4.3 JD-GUI4.4 dex2ja…...

JavaScript中的Math()
目录 一、Math() 1.1floor() 1.2ceil() 1.3round() 1.4random() 1.5max() 1.6min() 1.7pow() 1.8sqrt() 1.9trunc() 二、parseFloat() 三、toFixed() 四、toString() 4.1Number类型转换为字符串 4.2Boolean类型转换为字符串 4.3Date()类型转换为字符串 4.4Arr…...

深度学习模型Transformer初步认识整体架构
第一章:人工智能之不同数据类型及其特点梳理 第二章:自然语言处理(NLP):文本向量化从文字到数字的原理 第三章:循环神经网络RNN:理解 RNN的工作机制与应用场景(附代码) 第四章:循环神经网络RNN、LSTM以及GR…...
【从模仿到超越:AIGC的崛起与AGI的终极梦想】
一、基本概念 1. AIGC(人工智能生成内容) 定义:基于人工智能技术生成文本、图像、音频、视频等数字内容的方法。技术基础:依赖深度学习模型(如GPT、DALL-E、Stable Diffusion)和自然语言处理(…...
SkyWalking 10.2.0 SWCK 配置过程
SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...
【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)
要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况,可以通过以下几种方式模拟或触发: 1. 增加CPU负载 运行大量计算密集型任务,例如: 使用多线程循环执行复杂计算(如数学运算、加密解密等)。运行图…...

Linux --进程控制
本文从以下五个方面来初步认识进程控制: 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程,创建出来的进程就是子进程,原来的进程为父进程。…...

算法笔记2
1.字符串拼接最好用StringBuilder,不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...
快刀集(1): 一刀斩断视频片头广告
一刀流:用一个简单脚本,秒杀视频片头广告,还你清爽观影体验。 1. 引子 作为一个爱生活、爱学习、爱收藏高清资源的老码农,平时写代码之余看看电影、补补片,是再正常不过的事。 电影嘛,要沉浸,…...

C++ 设计模式 《小明的奶茶加料风波》
👨🎓 模式名称:装饰器模式(Decorator Pattern) 👦 小明最近上线了校园奶茶配送功能,业务火爆,大家都在加料: 有的同学要加波霸 🟤,有的要加椰果…...
BLEU评分:机器翻译质量评估的黄金标准
BLEU评分:机器翻译质量评估的黄金标准 1. 引言 在自然语言处理(NLP)领域,衡量一个机器翻译模型的性能至关重要。BLEU (Bilingual Evaluation Understudy) 作为一种自动化评估指标,自2002年由IBM的Kishore Papineni等人提出以来,…...

医疗AI模型可解释性编程研究:基于SHAP、LIME与Anchor
1 医疗树模型与可解释人工智能基础 医疗领域的人工智能应用正迅速从理论研究转向临床实践,在这一过程中,模型可解释性已成为确保AI系统被医疗专业人员接受和信任的关键因素。基于树模型的集成算法(如RandomForest、XGBoost、LightGBM)因其卓越的预测性能和相对良好的解释性…...

大模型——基于Docker+DeepSeek+Dify :搭建企业级本地私有化知识库超详细教程
基于Docker+DeepSeek+Dify :搭建企业级本地私有化知识库超详细教程 下载安装Docker Docker官网:https://www.docker.com/ 自定义Docker安装路径 Docker默认安装在C盘,大小大概2.9G,做这行最忌讳的就是安装软件全装C盘,所以我调整了下安装路径。 新建安装目录:E:\MyS…...

【版本控制】GitHub Desktop 入门教程与开源协作全流程解析
目录 0 引言1 GitHub Desktop 入门教程1.1 安装与基础配置1.2 核心功能使用指南仓库管理日常开发流程分支管理 2 GitHub 开源协作流程详解2.1 Fork & Pull Request 模型2.2 完整协作流程步骤步骤 1: Fork(创建个人副本)步骤 2: Clone(克隆…...