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)和自然语言处理(…...

标量、向量、矩阵与张量:从维度理解数据结构的层次
在数学和计算机科学中,维度描述了数据结构的复杂性,而标量、向量、矩阵、张量则是不同维度的数据表示形式。它们的关系可以理解为从简单到复杂的扩展,以下是详细解析: 1. 标量(Scalar):0维数据 …...

windows 上删除 node_modules
在 Windows 11 上,你可以通过命令行来删除 node_modules 文件夹并清除 npm 缓存。以下是具体步骤: 删除 node_modules 打开命令提示符(Command Prompt)或终端(PowerShell)。 导航到项目目录。你可以使用 …...

单例模式的五种实现方式
1、饿汉式 ①实现:在类加载的时候就初始化实例 ②优点:线程安全 ③缺点:实例在类加载的时候创建,可能会浪费资源 //饿汉式 public class EagerSingleton{private EagerSingleton(){} //私有构造方法private static EagerSingle…...

启智平台华为昇腾910B使用MS-Swift微调Janus-Pro-7/1B
最近想要微调一下DeepSeek出品的Janus多模态大模型 利用启智平台的昇腾910B国产计算卡进行大模型的微调 查看了一下MS-Swift支持了Janus模型的微调,LLamafactory好像暂时还不支持该模型的微调 看到了MS-Swift有单独对昇腾的支持,因此首先要安装swift&…...

蓝桥试题:传球游戏(二维dp)
一、题目描述 上体育课的时候,小蛮的老师经常带着同学们一起做游戏。这次,老师带着同学们一起做传球游戏。 游戏规则是这样的:n 个同学站成一个圆圈,其中的一个同学手里拿着一个球,当老师吹哨子时开始传球࿰…...

迷你世界脚本小地图接口:Mapmark
小地图接口:Mapmark 彼得兔 更新时间: 2023-10-25 10:33:48 具体函数名及描述如下: 序号 函数名 函数描述 1 newShape(...) 新增一个形状(线,矩形,圆形) 2 deleteShape(...) 删除一个形状 3 setShapeColor(...) 设置…...

从零开始在Windows使用VMware虚拟机安装黑群晖7.2系统并实现远程访问
文章目录 前言1.软件准备2. 安装VMware17虚拟机3.安装黑群晖4. 安装群晖搜索助手5. 配置黑群晖系统6. 安装内网穿透6.1 下载cpolar套件6.2 配置群辉虚拟机6.3 配置公网地址6.4 配置固定公网地址 总结 前言 本文主要介绍如何从零开始在Windows系统电脑使用VMware17虚拟机安装黑…...

Qt6.8.2创建WebAssmebly项目使用FFmpeg资源
Qt6新出了WebAssmebly功能,可以将C写的软件到浏览器中运行,最近一段时间正在研究这方便内容,普通的控件响应都能实现,今天主要为大家分享如何将FFmpeg中的功能应用到浏览器中。 开发环境:window11,Qt6.8.2…...

Java阻塞队列深度解析:高并发场景下的安全卫士
一、阻塞队列的核心价值 在电商秒杀系统中,瞬时涌入的10万请求如果直接冲击数据库,必然导致系统崩溃。阻塞队列如同一个智能缓冲带,通过流量削峰和异步解耦两大核心能力,成为高并发系统的核心组件。 二、Java阻塞队列实现类对比 …...

软件信息安全性测试流程有哪些?专业软件测评服务机构分享
在数字化时代,软件信息安全性测试的重要性愈发凸显。尤其是对于企业来说,确保软件的安全性不仅是维护用户信任的关键,也是满足合规要求的必要条件。 软件信息安全性测试是指通过一系列系统化的测试手段,评估软件应用在受到攻击时…...