RabbitMQ的安装
RabbitMQ的安装
1、Windows环境下的RabbitMQ安装步骤
使用的版本:otp_win64_23.2 + rabbitmq-server-3.8.16
版本说明:https://www.rabbitmq.com/which-erlang.html#compatibility-matrix
1.1 下载并安装erlang
RabbitMQ 服务端代码是使用并发式语言 Erlang 编写的,安装 RabbitMQ 的前提是安装 Erlang。
下载地址:
http://www.erlang.org/downloads

https://www.erlang.org/patches/otp-23.2

根据操作系统选择 erlang 下载版本。
下载完的软件包:

双击软件点击下一步进行安装,和平时使用的软件的安装方式是一样的。
安装完之后配置环境变量,此电脑–>鼠标右键属性–>高级系统设置–>环境变量–>新建系统环境变量。
变量名:ERLANG_HOME
变量值就是刚才 erlang 的安装地址,点击确定。

然后编辑系统变量 path,将 %ERLANG_HOME%\bin 加入到 path 中。

最后 windows 键 +R 键,输入 cmd,再输入 erl,看到版本号就说明 erlang 安装成功了。

1.2 下载并安装RabbitMQ
下载地址:http://www.rabbitmq.com/download.html

这里下载 v3.8.16 版本:
https://github.com/rabbitmq/rabbitmq-server/releases/tag/v3.8.16
https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.8.16/rabbitmq-server-3.8.16.exe

双击下载后的 .exe 文件,安装过程与 erlang 的安装过程相同。
RabbitMQ 安装目录中是不允许有空格的。
RabbitMQ 安装好后接下来安装 RabbitMQ-Plugins,打开命令行 cd,输入 RabbitMQ 的 sbin 目录。
我的目录是:C:\zsxsoftware\rabbitmq\rabbitmq_server-3.8.16\sbin
然后在后面输入 rabbitmq-plugins enable rabbitmq_management 命令进行安装:

输入 rabbitmqctl status,如果出现以下的图,说明安装是成功的,并且说明现在 RabbitMQ Server 已经启动
了,运行正常。

打开 sbin 目录,双击 rabbitmq-server.bat
等几秒钟看到这个界面后,访问 http://localhost:15672
然后可以看到如下界面:

默认用户名和密码都是 guest,登陆即可:

1.3 安装遇到的问题
rabbitmq-plugins enable rabbitmq_management 命令执行错误:
rabbitmq-service stop
rabbitmq-service remove
rabbitmq-service install
rabbitmq-plugins enable rabbitmq_management
rabbitmqctl status 命令执行错误:
Error: unable to perform an operation on node 'rabbit@DESKTOP-8VB0JLG'. Please see diagnostics information and suggestions below.
1、将C:\Users\{用户名}\.erlang.cookie 复制到 C:\Windows\System32\config\systemprofile 目录。
2、重启 rabbitMQ 服务。
1.4 配置允许远程访问
更多情况下,队列服务往往不在我们本机上,我们需要远程来控制 RabbitMQ,但是默认是无法通过
http://hostname:15672 来访问的:

添加一个新的用户:


点击 zsx242030 用户:

点击 set permission 赋予权限。

使用 rabbitmqctl list_users 查看用户信息:

然后使用新建的用户尝试登录:



1.5 RabbitMQ常用的命令
# 停止服务
rabbitmq-service stop
# 安装服务
rabbitmq-service install
# 开启服务
rabbitmq-service start
# 查看用户信息
rabbitmqctl list_users

# guest密码忘记,更改密码
rabbitmqctl change_password guest guest
# 设置用户为超级管理员
rabbitmqctl set_user_tags guest administrator
# 赋予权限
rabbitmqctl set_permissions -p / guest '.*' '.*' '.*'

2、Linux环境下的RabbitMQ安装步骤
使用的版本:otp_src_22.3.tar.gz + rabbitmq-server-generic-unix-3.7.15.tar.xz
2.1 安装erlang
由于 rabbitmq 是基于 erlang 语言开发的,所以必须先安装 erlang。
安装依赖:
$ yum -y install gcc glibc-devel make ncurses-devel openssl-devel xmlto perl wget gtk2-devel binutils-devel
去 erlang 官网下载安装包上传到 linux 服务器。
https://www.erlang.org/downloads
或者使用 wget 命令下载:
$ wget http://erlang.org/download/otp_src_22.3.tar.gz
解压:
$ tar -zxvf otp_src_22.3.tar.gz
移走:
$ mv otp_src_22.3 /usr/local/
切换目录:
$ cd /usr/local/otp_src_22.3/
创建即将安装的目录:
$ mkdir ../erlang
配置安装路径:
$ ./configure --prefix=/usr/local/erlang

如果遇到这个错你就假装没看到:

安装:
$ make install

查看一下是否安装成功:
$ ll /usr/local/erlang/bin

添加环境变量:
$ echo 'export PATH=$PATH:/usr/local/erlang/bin' >> /etc/profile
刷新环境变量:
$ source /etc/profile
甩一条命令:
$ erl

在里面输入 halt(). 命令退出来(那个点号别忘记)

2.2 安装RabbitMQ
使用下面命令下载 rabbitmq 或者是下载好之后上传到 linux 服务器。
$ wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.7.15/rabbitmq-server-generic-unix-3.7.15.tar.xz
由于是 tar.xz 格式的所以需要用到 xz,没有的话就先安装:
$ yum install -y xz
第一次解压:
$ /bin/xz -d rabbitmq-server-generic-unix-3.7.15.tar.xz
第二次解压:
$ tar -xvf rabbitmq-server-generic-unix-3.7.15.tar
移走:
$ mv rabbitmq_server-3.7.15/ /usr/local/
改名:
$ mv /usr/local/rabbitmq_server-3.7.15 /usr/local/rabbitmq
配置环境变量
$ echo 'export PATH=$PATH:/usr/local/rabbitmq/sbin' >> /etc/profile
刷新环境变量
$ source /etc/profile
2.3 启动
启动:
$ rabbitmq-server -detached

编辑 /etc/hosts 文件,在文件的末尾加一条 127.0.0.1 zsx 即可。
重新启动:


状态:
$ rabbitmqctl status

停止:
$ rabbitmqctl stop

2.4 WEB管理
开启web插件
$ rabbitmq-plugins enable rabbitmq_management

开放 15672 端口:
# 查看开放的端口号
firewall-cmd --list-all
# 设置开放的端口号
firewall-cmd --add-port=15672/tcp --permanent
# 重启防火墙
firewall-cmd --reload
访问:http://192.168.94.186:15672/

默认账号密码(这个账号只允许本机访问):guest/guest
2.5 用户管理
查看所有用户:
$ rabbitmqctl list_users

添加一个用户:
$ rabbitmqctl add_user zsx242030 zsx242030
配置权限:
$ rabbitmqctl set_permissions -p "/" zsx242030 ".*" ".*" ".*"

查看用户权限:
$ rabbitmqctl list_user_permissions zsx242030

设置 tag:
$ rabbitmqctl set_user_tags zsx242030 administrator

删除用户(安全起见,删除默认用户)
$ rabbitmqctl delete_user guest
2.6 登陆
配置好用户之后然后就可以用新账号进行登陆:

3、Docker安装RabbitMQ
3.1 搜索镜像
$ docker search rabbitmq

3.2 拉取镜像
$ docker pull rabbitmq:3.7.15

3.3 启动运行
$ docker run -d -p 15672:15672 -p 5672:5672 -e RABBITMQ_DEFAULT_VHOST=my_vhost -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin --hostname myRabbit --name rabbitmq --restart=always rabbitmq:3.7.15
参数说明:
-d:表示在后台运行容器;
-p:将容器的端口 5672(应用访问端口)和15672(控制台Web端口号)映射到主机中;
-e:指定环境变量:
-
RABBITMQ_DEFAULT_VHOST:默认虚拟机名; -
RABBITMQ_DEFAULT_USER:默认的用户名; -
RABBITMQ_DEFAULT_PASS:默认的用户密码;
--hostname:指定主机名(RabbitMQ 的一个重要注意事项是它根据所谓的节点名称存储数据,默认为主机名);
--name:设置容器名称;
rabbitmq:3.7.15:容器使用的镜像名称;

3.4 查看启动情况
$ docker logs -f rabbitmq

$ docker ps -l

3.5 启动 rabbitmq_management
$ docker exec -it rabbitmq /bin/bash
$ rabbitmq-plugins enable rabbitmq_management

或者是通过下面命令:
$ docker exec -it rabbitmq rabbitmq-plugins enable rabbitmq_management
3.6 访问 RabbitMQ后台管理
浏览器输入地址:http://192.168.94.186:15672/ 即可访问后台管理页面,这里的 ip 为运行 RabbitMQ 所
在的服务器的 IP 地址。
默认的用户名和密码都是 guest (如果没有在容器创建的时候指定用户名密码)。
但由于我们启动的时候设置了默认的用户名和密码,所以我们可以使用设置的用户名和密码登录。


4、镜像集群搭建
4.1 搭建环境
| IP | 主机 |
|---|---|
| 192.168.54.200 | master |
| 192.168.54.201 | slave1 |
| 192.168.54.202 | slave2 |
$ vi /etc/hosts
192.168.54.200 master
192.168.54.201 slave1
192.168.54.202 slave2
使用的版本:otp_src_22.3.tar.gz + rabbitmq-server-generic-unix-3.7.15.tar.xz
4.2 安装erlang(所有机器)
由于 rabbitmq 是基于 erlang 语言开发的,所以必须先安装 erlang。
安装依赖:
$ yum -y install gcc glibc-devel make ncurses-devel openssl-devel xmlto perl wget gtk2-devel binutils-devel
去 erlang 官网下载安装包上传到 linux 服务器:
http://erlang.org/download/otp_src_22.3.tar.gz
解压:
$ tar -zxvf otp_src_22.3.tar.gz
移走:
$ mv otp_src_22.3 /usr/local/
切换目录:
$ cd /usr/local/otp_src_22.3/
创建即将安装的目录:
$ mkdir ../erlang
配置安装路径:
$ ./configure --prefix=/usr/local/erlang
安装:
$ make install
查看一下是否安装成功:
$ ll /usr/local/erlang/bin
添加环境变量:
$ echo 'export PATH=$PATH:/usr/local/erlang/bin' >> /etc/profile
刷新环境变量:
$ source /etc/profile
甩一条命令:
$ erl
在里面输入 halt(). 命令退出来(那个点号别忘记)
4.3 安装RabbitMQ(所有机器)
将下载好之后的软件上传到 linux 服务器:
https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.7.15/rabbitmq-server-generic-unix-3.7.15.tar.xz
由于是 tar.xz 格式的所以需要用到 xz,没有的话就先安装:
$ yum install -y xz
第一次解压:
$ /bin/xz -d rabbitmq-server-generic-unix-3.7.15.tar.xz
第二次解压:
$ tar -xvf rabbitmq-server-generic-unix-3.7.15.tar
移走:
$ mv rabbitmq_server-3.7.15/ /usr/local/
改名:
$ mv /usr/local/rabbitmq_server-3.7.15 /usr/local/rabbitmq
配置环境变量:
$ echo 'export PATH=$PATH:/usr/local/rabbitmq/sbin' >> /etc/profile
刷新环境变量:
$ source /etc/profile
启动:
$ rabbitmq-server -detached
查看启动状态:
$ ps -ef | grep rabbitmq
状态:
$ rabbitmqctl status
停止:
$ rabbitmqctl stop
4.4 WEB管理(所有机器)
开启 web 插件:
$ rabbitmq-plugins enable rabbitmq_management
开放 15672 端口:
# 查看开放的端口号
firewall-cmd --list-all
# 设置开放的端口号
firewall-cmd --add-port=15672/tcp --permanent
# 重启防火墙
firewall-cmd --reload
访问:http://ip:15672/
默认账号密码(这个账号只允许本机访问):guest/guest
4.5 用户管理(所有机器)
查看所有用户:
$ rabbitmqctl list_users
添加一个用户:
$ rabbitmqctl add_user zsx242030 zsx242030
配置权限:
$ rabbitmqctl set_permissions -p "/" zsx242030 ".*" ".*" ".*"
查看用户权限:
$ rabbitmqctl list_user_permissions zsx242030
设置 tag:
$ rabbitmqctl set_user_tags zsx242030 administrator
删除用户(安全起见,删除默认用户)
$ rabbitmqctl delete_user guest
4.6 镜像模式集群的搭建
4.6.1 停止RabbitMQ服务(所有机器)
$ rabbitmqctl stop
4.6.2 拷贝.erlang.cookie(master机器)
官方在介绍集群的文档中提到过 .erlang.cookie 一般会存在这两个地址:
第一个是 ~/.erlang.cookie
第二个地方就是 /var/lib/rabbitmq/.erlang.cookie
本文的地址在 ~/.erlang.cookie
$ scp /root/.erlang.cookie root@slave1:/root/
$ scp /root/.erlang.cookie root@slave2:/root/
4.6.3 启动RabbitMQ服务
顺带启动 Erlang 虚拟机和 RabbitMQ 应用服务,在 master、slave1、slave2 执行命令:
$ rabbitmq-server -detached
4.6.4 节点加入
RabbitMQ 集群的搭建需要选择其中任意一个节点为基准,将其它节点逐步加入。这里我们以 master 为基准节
点,将 slave1 和 slave2 加入集群。在 slave1 和 slave2 上执行以下命令:
# 1.停止服务
rabbitmqctl stop_app
# rabbitmqctl stop会将Erlang虚拟机关闭,rabbitmqctl stop_app只关闭RabbitMQ服务# 2.重置状态
rabbitmqctl reset# 3.节点加入,在一个node加入cluster之前,必须先停止该node的rabbitmq应用,即先执行stop_app
# slave1加入master,slave2加入master
rabbitmqctl join_cluster rabbit@master# 4.启动服务
rabbitmqctl start_app
4.6.5 查看集群状态
此时可以在任意节点上使用 rabbitmqctl cluster_status 命令查看集群状态,输出如下:
[root@master ~]# rabbitmqctl cluster_status
Cluster status of node rabbit@master ...
[{nodes,[{disc,[rabbit@master,rabbit@slave1,rabbit@slave2]}]},{running_nodes,[rabbit@slave2,rabbit@slave1,rabbit@master]},{cluster_name,<<"rabbit@master">>},{partitions,[]},{alarms,[{rabbit@slave2,[]},{rabbit@slave1,[]},{rabbit@master,[]}]}]
[root@slave1 rabbitmq]# rabbitmqctl cluster_status
Cluster status of node rabbit@slave1 ...
[{nodes,[{disc,[rabbit@master,rabbit@slave1,rabbit@slave2]}]},{running_nodes,[rabbit@slave2,rabbit@master,rabbit@slave1]},{cluster_name,<<"rabbit@master">>},{partitions,[]},{alarms,[{rabbit@slave2,[]},{rabbit@master,[]},{rabbit@slave1,[]}]}]
[root@slave2 rabbitmq]# rabbitmqctl cluster_status
Cluster status of node rabbit@slave2 ...
[{nodes,[{disc,[rabbit@master,rabbit@slave1,rabbit@slave2]}]},{running_nodes,[rabbit@master,rabbit@slave1,rabbit@slave2]},{cluster_name,<<"rabbit@master">>},{partitions,[]},{alarms,[{rabbit@master,[]},{rabbit@slave1,[]},{rabbit@slave2,[]}]}]
4.6.6 UI 界面查看

4.6.7 配置镜像模式
在任意节点执行即可:
rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'
4.6.8 从集群中移除节点
1、在需要移除的节点上执行停止命令
rabbitmqctl stop_app
2、在其他节点上执行移除节点命令
rabbitmqctl forget_cluster_node rabbit@slave2
–offline 参数,它允许节点在自身没有启动的情况下将其他节点剔除。
4.6.9 解除集群
重置当前节点:
# 1.停止服务
rabbitmqctl stop_app# 2.重置集群状态
rabbitmqctl reset# 3.重启服务
rabbitmqctl start_app
重新加入集群:
# 1.停止服务
rabbitmqctl stop_app# 2.重置状态
rabbitmqctl reset# 3.节点加入
rabbitmqctl join_cluster rabbit@node1# 4.重启服务
rabbitmqctl start_app
4.6.10 变更节点类型
# 1.停止服务
rabbitmqctl stop_app# 2.变更类型,有两种类型ram和disc
# 我们可以将节点的类型从RAM更改为Disk
rabbitmqctl change_cluster_node_type disc# 3.重启服务
rabbitmqctl start_app
相关文章:
RabbitMQ的安装
RabbitMQ的安装 1、Windows环境下的RabbitMQ安装步骤 使用的版本:otp_win64_23.2 rabbitmq-server-3.8.16 版本说明:https://www.rabbitmq.com/which-erlang.html#compatibility-matrix 1.1 下载并安装erlang RabbitMQ 服务端代码是使用并发式语言…...
GPU版PyTorch对应安装教程
一、正确安装符合自己电脑的对应GPU版本的PyTorch之前需要了解三个基本概念 算力、CUDA driver version、CUDA runtime version ①算力:需要先知道你的显卡,之后根据官网表格进行对应,得到算力 ②CUDA driver version:电脑上显卡…...
医学影像PACS临床信息系统源码
医学影像临床信息系统(Picture Archiving and Communication Systems)PACS是指从医疗影像设备中获得数字影像,利用高速网络进行存储、管理、传输的医疗影像信息管理系统。通过该系统,能实现影像数字化、无胶片化管理。 登记系统 …...
Python(Web时代)——jinja2模板
简介 Jinja2是Flask框架默认支持的模板引擎,是python的web项目中被广泛应用的一种模板引擎,jinja2的作者与Flask是同一个人。 jinja2具有以下特点: 非常灵活,提供了控制结构、表达式与继承等 性能好 可读性强 渲染一个模板&a…...
酷开系统 | 酷开科技,让数据变得更有价值!
身处信息时代,我们每个人时刻都在生成、传递和应用数据,数据已经成为了现代社会中宝贵的资源之一,而在人工智能领域,数据更是被称为人工智能的“燃料”。 而在AI的发展中,只有拥有高质量、多样性且充分代表性的数据集…...
uni——tab切换
案例展示 案例代码 <view class"tablist"><block v-for"(item,index) in tabList" :key"index"><view class"tabItem" :class"current item.id?active:" click"changeTab(item)">{{item.nam…...
类图的6种关系和golang应用
文章目录 1. 依赖和关联1.1 依赖(Dependency)概念类图示例代码示例 1.2 关联(Association)概念类图示例代码示例 2. 组合和聚合(特殊的关联关系)2.1 聚合(Aggregation)概念类图示例代…...
Linux tar 备忘清单
tar 备忘清单 语法选项创建一个 tar 格式的压缩文件创建压缩后的 tar.gz 存档文件生成压缩率更高的 tar.bz2 文件解压缩 tar 文件解压缩 tar.gz 文件解压缩 tar.bz2 文件列出归档内容从 tar 归档文件中提取单个文件从 tar 归档文件中提取多个文件使用通配符提取文件组添加文件或…...
76. 最小覆盖子串
题目链接:力扣 解题思路:滑动窗口 因为只需要最小子串中包含t中的所有字符即可,顺序不重要,所以可以先统计一下 t 中每个字符出现的次数,使用map进行统计: key表示t中的字符,value表示字符的个…...
科兴未来|2023“数智未来,聚放神采”医疗科技创新挑战赛
一、赛事亮点 聚焦前沿神经科学与脑科学领域 展示优质创新产品、技术、平台与服务 汇聚学术端、产业端、投资端多维专业视角 搭建合作交流、产业赋能与生态融合平台 共话行业发展方向与动态趋势 二、赛事简介 2023医疗科技创新挑战赛聚焦于神经科学及脑科学领域的前沿技…...
第56步 深度学习图像识别:CNN梯度权重类激活映射(TensorFlow)
基于WIN10的64位系统演示 一、写在前面 类激活映射(Class Activation Mapping,CAM)和梯度权重类激活映射(Gradient-weighted Class Activation Mapping,Grad-CAM)是两种可视化深度学习模型决策过程的技术…...
云道资本:2023中国氢能源产业-氢制备深度研究报告(附下载)
关于报告的所有内容,公众【营销人星球】获取下载查看 核心观点 中国可再生能源消纳能力提升远远滞后于发电占比的提升。大规模的可再生能源发电是实现碳中和的关键一步,但风电、光伏发电间歌性、波动性强,电网消纳压力较大,且电…...
java文件
一.File类 二.扫描指定目录,并找到名称中包含指定字符的所有普通文件(不包含目录),并且后续询问用户是否要删除该文件 我的代码: import java.io.File; import java.io.IOException; import java.util.Scanner;public class Tes…...
pyqt5 如何终止正在执行的线程?
在 PyQt5 中终止正在执行的线程,可以通过一些协调的方法来实现。一般情况下,直接强行终止线程是不安全的,可能会导致资源泄漏或者程序异常。相反,我们可以使用一种协作的方式,通知线程在合适的时候自行退出。 以下是一…...
力扣第357场周赛补题
6925. 故障键盘 - 力扣(LeetCode) 思路:模拟 class Solution { public:string finalString(string s) {string res;for(auto c : s){if(c i) reverse(res.begin(), res.end());else res c;}return res;} }; 6953. 判断是否能拆分数组 - 力…...
Keras指定model.fit()的输出
model.fit()当verbose1的时候会打印出所有指标和loss, 在多输出的情况下更是一团乱麻. 下面是一个可以指定每个epoch训练完的输入指标的方法: from keras.callbacks import Callback# Custom callback to display loss only at the end of each epoch class LossCallback(Call…...
替换开源LDAP,某科技企业用宁盾目录统一身份,为业务敏捷提供支撑
客户介绍 某高科技企业成立于2015年,是一家深耕于大物流领域的人工智能公司,迄今为止已为全球16个国家和地区,120余家客户打造智能化升级体验,场景覆盖海陆空铁、工厂等货运物流领域。 该公司使用开源LDAP面临的挑战 挑战1 开源…...
解决log4j.xml的url没有注册问题
在对log4j.xml配置文件配置时出现http//jakarta.apache.org/log4j/爆红,IDEA提示uri is not registered。源代码如下 <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration xmlns:log4j"http://jakarta.apache.org/lo…...
深度思考操作系统面经
1 堆和栈的区别:(如果记的不太清楚,可以类比jvm中的堆和栈的区别,大差不差) 存储位置:堆是在计算机内存中动态分配的区域,而栈是在计算机内存中由操作系统自动分配和管理的区域。管理方式&…...
智慧工地源码:数字孪生智慧工地可视化解决方案
一、智慧工地建设背景 我国经济发展正从传统粗放式的高速增长阶段,进入高效率、低成本、可持续的中高速增长阶段。随着现代建筑的复杂度和体量等不断增加,施工现场管理的内容越来越多,管理的技术难度和要求在不断提高。传统的施工现场管理模…...
进程地址空间(比特课总结)
一、进程地址空间 1. 环境变量 1 )⽤户级环境变量与系统级环境变量 全局属性:环境变量具有全局属性,会被⼦进程继承。例如当bash启动⼦进程时,环 境变量会⾃动传递给⼦进程。 本地变量限制:本地变量只在当前进程(ba…...
java 实现excel文件转pdf | 无水印 | 无限制
文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...
CMake基础:构建流程详解
目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...
Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)
目录 1.TCP的连接管理机制(1)三次握手①握手过程②对握手过程的理解 (2)四次挥手(3)握手和挥手的触发(4)状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...
在Ubuntu中设置开机自动运行(sudo)指令的指南
在Ubuntu系统中,有时需要在系统启动时自动执行某些命令,特别是需要 sudo权限的指令。为了实现这一功能,可以使用多种方法,包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法,并提供…...
管理学院权限管理系统开发总结
文章目录 🎓 管理学院权限管理系统开发总结 - 现代化Web应用实践之路📝 项目概述🏗️ 技术架构设计后端技术栈前端技术栈 💡 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 🗄️ 数据库设…...
算法:模拟
1.替换所有的问号 1576. 替换所有的问号 - 力扣(LeetCode) 遍历字符串:通过外层循环逐一检查每个字符。遇到 ? 时处理: 内层循环遍历小写字母(a 到 z)。对每个字母检查是否满足: 与…...
【C++特殊工具与技术】优化内存分配(一):C++中的内存分配
目录 一、C 内存的基本概念 1.1 内存的物理与逻辑结构 1.2 C 程序的内存区域划分 二、栈内存分配 2.1 栈内存的特点 2.2 栈内存分配示例 三、堆内存分配 3.1 new和delete操作符 4.2 内存泄漏与悬空指针问题 4.3 new和delete的重载 四、智能指针…...
MySQL 8.0 事务全面讲解
以下是一个结合两次回答的 MySQL 8.0 事务全面讲解,涵盖了事务的核心概念、操作示例、失败回滚、隔离级别、事务性 DDL 和 XA 事务等内容,并修正了查看隔离级别的命令。 MySQL 8.0 事务全面讲解 一、事务的核心概念(ACID) 事务是…...
提升移动端网页调试效率:WebDebugX 与常见工具组合实践
在日常移动端开发中,网页调试始终是一个高频但又极具挑战的环节。尤其在面对 iOS 与 Android 的混合技术栈、各种设备差异化行为时,开发者迫切需要一套高效、可靠且跨平台的调试方案。过去,我们或多或少使用过 Chrome DevTools、Remote Debug…...
