六、Linux核心服务与包管理

作者:IvanCodes
日期:2025年8月3日
专栏:Linux教程

要保证一个Linux系统稳定、安全、功能完备有效管理后台服务软件包至关重要的。本文将深入介绍现代Linux系统中四个核心的管理工具:systemctl (服务管理),wget (文件下载),以及 rpmyum/dnf (软件包管理)

思维导图 (占位)

(此处可以放置您为本主题制作的思维导图)

一、 系统服务管理器 systemctl

systemctlsystemd 初始化系统的主控制命令,用于管理系统服务

常用命令与功能:

start <service>: 启动服务
stop <service>: 停止服务
restart <service>: 重启服务
reload <service>: 重新加载配置文件 (不中断服务)
status <service>: 查看服务状态
enable <service>: 设置服务开机自启
disable <service>: 取消服务开机自启
is-enabled <service>: 检查是否开机自启

代码示例 (以 httpd 服务为例):

systemctl start httpdsystemctl enable httpdsystemctl status httpdsystemctl stop httpdsystemctl disable httpd

二、文件下载工具 wget

wget 是一个强大非交互式网络下载器,常用于从网络获取软件包文件或配置文件。

常用选项:

-O <file>: 将下载内容另存为指定文件名
-P <dir>: 将文件下载到指定目录
-c: 断点续传

代码示例:

wget https://www.python.org/ftp/python/3.12.4/Python-3.12.4.tgzwget -O nginx.conf_example https://raw.githubusercontent.com/nginx/nginx/master/conf/nginx.confwget -P ./datasets https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data

在这里插入图片描述

三、RPM包管理器

rpm功能强大且直接,但它本身不解决软件包之间的依赖关系

a. 安装与升级 (-i, -U)

在没有网络的情况下,使用系统安装光盘是获取RPM包的常用方法。

第一步:准备软件包源 (挂载光盘)

  1. 连接并挂载光盘
    在虚拟机或物理机上连接系统安装光盘/ISO,设备名通常是 /dev/sr0
mount /dev/sr0 /mnt

mount 命令可能会提示 /dev/sr0 is write-protected, mounting read-only,这是正常现象

  1. 验证挂载并进入Packages目录
df -h
# 确认 /dev/sr0 已挂载到 /mnt
cd /mnt/Packages
# ls | wc -l # (可选) 查看包的数量

在这里插入图片描述

第二步:执行安装

-i: 安装 (install)。
-v: 显示详细信息 (verbose)。
-h: 显示带 #的进度条 (hash)。

案例1:安装一个无依赖或依赖已满足的包 (vsftpd)

# 检查 vsftpd 是否已安装
rpm -q vsftpd
# 提示 "package vsftpd is not installed"# 安装时必须使用软件包的完整文件名
rpm -ivh vsftpd-3.0.2-28.el7.x86_64.rpm# 再次检查,确认安装成功
rpm -q vsftpd
# 显示 vsftpd-3.0.2-28.el7.x86_64

在这里插入图片描述

注意rpm 命令需要指定RPM文件的完整路径或当前目录下。如果包名不完整或文件不存在,会报错

案例2:安装一个有依赖关系的包 (httpd)

rpm -ivh httpd-2.4.6-97.el7.centos.x86_64.rpm

此时,你会看到典型的依赖错误
在这里插入图片描述

处理依赖问题的危险选项 (应极力避免)
某些特殊明确知道后果的情况下,可以使用以下参数强制安装

--nodeps: 忽略依赖关系。
--force: 强制安装 (覆盖文件、替换已安装包)。

rpm -ivh httpd-2.4.6-97.el7.centos.x86_64.rpm --nodeps --force
# 这种安装方式极有可能导致httpd服务无法正常启动!

在这里插入图片描述

正确做法应先手动安装所有被依赖的包,或者直接使用 yum/dnf

升级 (-Uvh)
-U (upgrade) 选项更常用,因为它既可以升级一个已安装的包,也可以安装一个新包。

rpm -Uvh new-version-httpd.rpm

b. 查询 (-q)
rpm -q最安全、最常用的子命令。

rpm -q <package_name>: 查询包是否安装
rpm -qa: 查询所有 (all) 已安装的包。
rpm -qi <package_name>: 查询包的详细信息 (information)。
rpm -ql <package_name>: 列出包安装的所有文件 (list)。
rpm -qc <package_name>: 只列出包的配置文件 (config)。
rpm -qf <file_path>: 根据文件反查所属的包 (file)。

代码示例

# 查询httpd包的详细信息
rpm -qi httpd# 列出vsftpd包安装的所有文件
rpm -ql vsftpd# 列出httpd包安装的配置文件
rpm -qc httpd# 查看/etc/vsftpd/vsftpd.conf这个文件属于哪个包
rpm -qf /etc/vsftpd/vsftpd.conf

c. 卸载 (-e)
-e (erase) 用于卸载软件包。

代码示例

# 卸载 httpd 和 vsftpd
rpm -e httpd
rpm -e vsftpd# 验证卸载结果
rpm -q httpd
rpm -q vsftpd

注意:卸载时同样会检查依赖关系。如果有其他包依赖于你要卸载的包,卸载会失败

d. 其他实用查询与校验

  • 查询未安装的包文件 (-p)
# 查看一个RPM文件将要安装哪些文件,而不实际安装它
rpm -qpl vsftpd-3.0.2-28.el7.x86_64.rpm
  • 校验已安装的包 (-V)
    rpm -V (Verify) 检查软件包的文件是否被修改过。没有任何输出表示文件完好
rpm -V vsftpd
# 如果修改了 /etc/vsftpd/vsftpd.conf,此命令会有输出

命令总结表

操作类型常用命令格式描述
安装/升级rpm -ivh <file.rpm>安装一个新包,显示详细过程和进度。
rpm -Uvh <file.rpm>升级安装一个包 (推荐使用)。
查询已安装rpm -qa列出所有已安装的软件包。
rpm -q <pkg_name>检查指定软件包是否已安装。
rpm -qi <pkg_name>显示指定软件包的详细信息
rpm -ql <pkg_name>列出指定软件包包含的所有文件
rpm -qc <pkg_name>只列出指定软件包的配置文件
rpm -qf <file_path>查询一个文件是由哪个软件包安装的。
查询未安装rpm -qpl <file.rpm>预览一个RPM包文件将会安装哪些文件。
rpm -qpR <file.rpm>查看一个RPM包文件需要哪些依赖
卸载rpm -e <pkg_name>卸载一个已安装的软件包。
校验rpm -V <pkg_name>验证已安装软件包的文件是否被修改。

四、YUM/DNF包管理工具 (yum/dnf)

yum/dnf高级包管理器,自动处理依赖关系,从远程仓库获取软件。

常用命令:

install: 安装
remove: 卸载
update: 更新
search: 搜索
info: 查看信息
list: 列出包 (yum list installed)
groupinstall: 安装包组 (如 “Development Tools”)
history: 查看、撤销、重做事务历史
provides (或 whatprovides): 查找哪个包提供某个文件或功能
clean: 清理缓存 (yum clean all)
repolist: 列出已启用的仓库

代码示例

yum groupinstall "Development Tools"yum history listyum history undo 25yum provides htpasswdyum clean all

五、YUM/DNF 仓库配置

YUM/DNF 从哪里下载软件包,完全取决于 /etc/yum.repos.d/ 目录下的 .repo 配置文件。

.repo 文件核心字段:

[repository_id]: 仓库的唯一ID,用中括号括起来。
name: 仓库的描述性名称
baseurl: 仓库的URL地址。可以是 http://, https://, ftp://file:///
mirrorlist: (与baseurl二选一) 指向一个包含多个镜像URL元文件地址。
enabled: 1 (启用) 或 0 (禁用)。
gpgcheck: 1 (检查RPM包的GPG签名以保证安全) 或 0 (不检查)。
gpgkey: 指向GPG公钥文件的URL或本地路径,用于验证签名

场景一:配置网络镜像源 (例如,使用阿里云镜像)
在生产环境中,为了提高下载速度,通常会替换官方源为国内的镜像源
操作步骤:

  1. 备份现有repo文件 (非常重要!):
mkdir /etc/yum.repos.d/backup
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup
  1. 使用 wget 下载新的repo文件: (以CentOS 7为例)
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
  1. 清理旧缓存并生成新缓存:
yum clean all
yum makecache

场景二:配置本地文件镜像源 (使用系统安装光盘/ISO)
无法访问互联网的环境下,或者为了快速安装系统自带的基础软件包,直接使用系统安装光盘或ISO文件作为本地YUM源是一种非常便捷的方法。

操作步骤:

  1. 连接并挂载光盘/ISO
    将您的系统安装光盘 (通常设备名为 /dev/cdrom/dev/sr0) 挂载到一个临时目录,例如 /mnt
mount /dev/sr0 /mnt

验证挂载

df -h
# 你应该能看到 /dev/sr0 挂载在了 /mnt 上
  1. 配置仓库文件
    为了避免网络源冲突,最佳实践是先将所有现有.repo 文件移动到一个备份目录 (如果场景一中尚未操作)。
# 如果还未备份,请执行
mkdir -p /etc/yum.repos.d/backup
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup
然后,<font color="blue">创建一个新</font>的 `.repo` 文件来<font color="red">指向我们</font>挂载的<font color="green">光盘</font>。
vi /etc/yum.repos.d/local-iso.repo
在 `local-iso.repo` 文件中,<font color="orange">添加以下内容</font> (二选一,建议初学者使用版本一):**版本一 (简单,不校验GPG签名):**
```ini
[local-iso]
name=Local CentOS ISO Repo
baseurl=file:///mnt
enabled=1
gpgcheck=0
```
**版本二 (安全,校验GPG签名):**
```ini
[local-iso]
name=Local CentOS ISO Repo
baseurl=file:///mnt
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
```
*   `[local-iso]`: <font color="purple">仓库ID</font>,可自定义。
*   `baseurl=file:///mnt`: <font color="teal">核心配置</font>。`file:///` 协议<font color="brown">告诉YUM</font>这是一个<font color="darkgreen">本地文件系统路径</font>,`/mnt` 是我们<font color="darkred">挂载光盘</font>的目录。
*   `gpgcheck=0`: <font color="navy">禁用</font>GPG签名检查,<font color="olive">最简单</font>。
*   `gpgcheck=1` 和 `gpgkey`: <font color="darkcyan">启用</font>GPG检查,并<font color="saddlebrown">指定</font>GPG公钥文件的<font color="darkmagenta">位置</font> (通常系统<font color="firebrick">自带</font>了对应版本的<font color="darkslategray">公钥</font>)。
  1. 应用配置并测试
    配置好 .repo 文件后,必须清理旧缓存并生成新的缓存。
yum clean all
yum makecache
现在,<font color="red">检查仓库列表</font>,应该<font color="green">只能看到</font>我们刚刚<font color="orange">配置的本地源</font>。
yum repolist
最后,<font color="purple">尝试安装</font>一个<font color="teal">光盘里</font>肯定有的<font color="brown">小工具</font>来<font color="darkgreen">测试</font>。
yum install -y tree
如果<font color="darkred">安装成功</font>,说明<font color="navy">本地文件源</font>配置<font color="olive">成功</font>!

场景三:配置局域网YUM源 (网络镜像)
企业环境中,搭建统一的局域网YUM源可以节省带宽加快速度控制版本

1. 在源服务器 (假设 IP: 192.168.1.100) 上操作:
a. 安装必要工具

yum install -y httpd createrepo

b. 准备软件包目录并同步
(假设系统安装光盘已挂载到 /mnt/cdrom)

mkdir -p /var/www/html/centos/7
cp -r /mnt/cdrom/* /var/www/html/centos/7/

c. 创建仓库元数据

createrepo /var/www/html/centos/7/

d. 启动并设置Web服务开机自启

systemctl start httpd
systemctl enable httpd
# 确保防火墙允许80端口
firewall-cmd --permanent --add-service=http
firewall-cmd --reload

2. 在客户端服务器上操作:
a. 备份并清空现有repo配置 (同上一步)。
b. 创建新的本地源配置文件

vi /etc/yum.repos.d/lan.repo

c. lan.repo 文件中添加以下内容

[lan-base]
name=LAN CentOS-$releasever - Base
baseurl=http://192.168.1.100/centos/7/
enabled=1
gpgcheck=0

d. 清理并生成缓存

yum clean all
yum makecache

现在,客户端的 yum 命令将完全从你的局域网服务器获取软件包。

总结

本次我们掌握了Linux系统管理中至关重要一系列工具systemctl 负责服务的生命周期管理wget 是获取网络资源的得力助手rpm 作为底层工具,让我们能深入检查和操作软件包。而 yum/dnf在此之上提供了自动化依赖处理强大的仓库管理功能,特别是自定义仓库配置的能力,是高级系统运维自动化部署基石


练习题

题目:

  1. 如何查看 crond 服务的状态,并判断它是否设置为开机自启?
  2. 使用 wgethttp://ftp.gnu.org/gnu/wget/wget-1.21.4.tar.gz 下载文件,并将其保存在 /opt/src 目录下。
  3. 你有一个名为 myapp.rpm 的本地软件包文件,如何查询它将要安装到系统中的所有文件列表,而不是真正安装它?
  4. 如何使用 rpm 查找 /etc/my.cnf 这个配置文件是由哪个软件包安装的?
  5. 如何使用 rpm 校验 openssh-server 软件包的所有文件是否被修改过?
  6. 使用 yum 安装 vim 编辑器,并且在安装过程中自动回答“是”(yes)。
  7. 如何使用 yum 查看名为 epel-release 的软件包的详细信息,包括它的描述、大小、来源仓库等?
  8. 写出一条命令,列出系统中所有已安装的、并且其包名中含有 “kernel” 关键词的软件包。
  9. yum history 显示最近一次 remove 操作的事务ID是 30。如何撤销这次删除操作?
  10. /etc/yum.repos.d/ 目录的作用是什么?
  11. 在一个 .repo 配置文件中,baseurlmirrorlist 这两个参数通常是什么关系?
  12. 为什么在配置指向国内镜像源 (如阿里云、清华大学) 的 .repo 文件后,通常需要执行 yum clean allyum makecache
  13. 你正在搭建一个本地YUM源服务器。在将所有RPM包复制到Web服务器的目录后,你需要运行哪个关键命令来生成仓库所需的元数据?

答案与解析:

  1. 查看 crond 状态与自启设置:
systemctl status crond
systemctl is-enabled crond

解析: status 命令提供全面的实时状态。is-enabled 专门用于检查开机自启的配置状态。

  1. wget 下载到指定目录:
wget -P /opt/src http://ftp.gnu.org/gnu/wget/wget-1.21.4.tar.gz

解析: -P (大写P) 选项用于指定下载文件存放的目录 (prefix directory)。

  1. 查询未安装RPM包的文件列表:
rpm -qpl myapp.rpm

解析: rpm -q 是查询,-p (package) 选项使其作用于一个包文件而不是已安装的包名-l (list) 则是列出文件。

  1. 查找文件归属:
rpm -qf /etc/my.cnf

解析: rpm -qf (query file) 是查询指定文件属于哪个已安装软件包的标准方法

  1. 校验软件包文件:
rpm -V openssh-server

解析: rpm -V (Verify) 会将软件包当前的文件状态与RPM数据库中的原始元数据进行比对,报告任何不一致

  1. yum 自动同意安装:
yum install -y vim

解析: -y 选项会自动对所有交互式提问回答“是”,这在编写自动化脚本非常有用

  1. yum 查看包信息:
yum info epel-release

解析: yum info <package_name> 提供了比 rpm -qi 更丰富的信息,因为它直接从仓库获取,可以查看未安装的包,并包含来源仓库信息。

  1. 列出含 “kernel” 的已安装包:
yum list installed | grep kernel

解析: yum list installed 列出所有已安装的包,然后通过管道 | 将结果传递给 grep进行关键词过滤

  1. yum history 撤销操作:
yum history undo 30

解析: yum history undo <id>执行与指定事务ID相反的操作。如果ID 30是 removeundo 就会重新安装被删除的包。

  1. /etc/yum.repos.d/ 的作用:

    • 解析: 该目录是存放YUM/DNF仓库配置文件 (.repo 文件) 的标准位置。YUM/DNF启动时会扫描此目录下所有 .repo 文件,以确定可以从哪些软件源获取软件包。
  2. baseurlmirrorlist 的关系:

    • 解析: 这两个参数是互斥的,在一个仓库配置中通常只使用一个baseurl 直接指定一个固定的仓库URL。而 mirrorlist 指定一个URL,该URL会返回一个包含多个可用 baseurl列表,YUM会自动选择一个最快或最近的镜像进行下载。
  3. 为何要 clean allmakecache

    • 解析: 当你更改了 .repo 文件 (即更换了软件源) 后,YUM本地的缓存 (包括包列表、元数据等) 仍然是基于旧仓库的。yum clean all 强制清除所有旧缓存。yum makecache主动从新的仓库地址下载元数据建立新的缓存,这会显著加快后续的 searchinstall 操作。
  4. 本地源生成元数据的命令:

createrepo /path/to/your/rpms
  • 解析: createrepo 命令会扫描指定目录下的所有RPM包,并生成一个名为 repodata子目录,其中包含YUM/DNF识别仓库所需元数据文件 (如 repomd.xml)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/94172.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/94172.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【数据结构】哈希表实现

目录 1. 哈希概念 2 哈希冲突和哈希函数 3. 负载因子 4. 将关键字转为整数 5. 哈希函数 5.1直接定址法 5.2 除法散列法/除留余数法 5.3 乘法散列法&#xff08;了解&#xff09; 5.4 全域散列法&#xff08;了解&#xff09; 5.5 其他方法&#xff08;了解&#xff09…

PostgreSQL面试题及详细答案120道(21-40)

《前后端面试题》专栏集合了前后端各个知识模块的面试题&#xff0c;包括html&#xff0c;javascript&#xff0c;css&#xff0c;vue&#xff0c;react&#xff0c;java&#xff0c;Openlayers&#xff0c;leaflet&#xff0c;cesium&#xff0c;mapboxGL&#xff0c;threejs&…

数据建模及基本数据分析

目录 &#xff08;一&#xff09;数据建模 1.以数据预测为核心的建模 2.以数据聚类为核心的建模 &#xff08;二&#xff09;基本数据分析 1.Numpy 2. Pandas 3.实例 4.Matplotlib 资料自取&#xff1a; 链接: https://pan.baidu.com/s/1PROmz-2hR3VCTd6Eei6lFQ?pwdy8…

电动汽车DCDC转换器的用途及工作原理

在电动汽车的电气架构中&#xff0c;DCDC转换器&#xff08;直流-直流转换器&#xff09;是一个至关重要的部件&#xff0c;负责协调高压动力电池&#xff08;通常300V~800V&#xff09;与低压电气系统&#xff08;12V/24V&#xff09;之间的能量流动。它的性能直接影响整车的能…

PyTorch 应用于3D 点云数据处理汇总和点云配准示例演示

PyTorch 已广泛应用于 3D 点云数据处理&#xff0c;特别是在深度学习驱动的任务中如&#xff1a; 分类、分割、配准、重建、姿态估计、SLAM、目标检测 等。 传统 3D 点云处理以 PCL、Open3D 为主&#xff0c;深度学习方法中&#xff0c;PyTorch 是构建神经网络处理点云的核心框…

ABP VNext + Quartz.NET vs Hangfire:灵活调度与任务管理

ABP VNext Quartz.NET vs Hangfire&#xff1a;灵活调度与任务管理 &#x1f680; &#x1f4da; 目录ABP VNext Quartz.NET vs Hangfire&#xff1a;灵活调度与任务管理 &#x1f680;✨ TL;DR&#x1f6e0; 环境与依赖&#x1f527; Quartz.NET 在 ABP 中接入1. 安装与模块…

[硬件电路-148]:数字电路 - 什么是CMOS电平、TTL电平?还有哪些其他电平标准?发展历史?

1. CMOS电平定义&#xff1a; CMOS&#xff08;Complementary Metal-Oxide-Semiconductor&#xff09;电平基于互补金属氧化物半导体工艺&#xff0c;由PMOS和NMOS晶体管组成。其核心特点是低功耗、高抗干扰性和宽电源电压范围&#xff08;通常为3V~18V&#xff09;。关键参数&…

0基礎網站開發技術教學(二) --(前端篇 2)--

書接上回說到的前端3種主語言以及其用法&#xff0c;這期我們再來探討一下javascript的一些編碼技術。 一) 自定義函數 假如你要使用一個功能&#xff0c;正常來說直接敲出來便可。可如果這個功能你要用不止一次呢?難道你每次都敲出來嗎?這個時侯&#xff0c;就要用到我們的自…

前端 拼多多4399笔试题目

拼多多 3 选择题 opacity|visibity|display区别 在CSS中&#xff0c;opacity: 0 和 visibility: hidden 都可以让元素不可见&#xff0c;但它们的行为不同&#xff1a; ✅ opacity: 0&#xff08;透明度为0&#xff09; 元素仍然占据空间&#xff08;不移除文档流&#xff0…

数琨创享:全球汽车高端制造企业 QMS质量管理平台案例

01.行业领军者的质量升级使命在全球汽车产业链加速升级的浪潮中&#xff0c;质量管控能力已成为企业核心竞争力的关键。作为工信部认证的制造业单项冠军示范企业&#xff0c;万向集团始终以“全球制造、全球市场、做行业领跑者”为战略愿景。面对奔驰、宝马、大众等“9N”高端客…

GaussDB 约束的使用举例

1 not null 约束not null 约束强制列不接受 null 值。not null 约束强制字段始终包含值。这意味着&#xff0c;如果不向字段添加值&#xff0c;就无法插入新记录或者更新记录。GaussDB使用pg_get_tabledef()函数获取customers表结构&#xff0c;如&#xff1a;csdn> set sea…

自动驾驶中的传感器技术13——Camera(4)

1、自驾Camera开发的方案是否归一化对于OEM&#xff0c;或者自驾方案商如Mobileye如果进行Camera的开发&#xff0c;一般建议采用Tesla的系统化最优方案&#xff0c;所有Camera统一某个或者某两个MP设计&#xff08;增加CIS议价权&#xff0c;减少Camera PCBA的设计维护数量&am…

开源利器:glTF Compressor——高效优化3D模型的终极工具

在3D图形开发领域,glTF(GL Transmission Format)已成为Web和移动端3D内容的通用标准。然而,3D模型的文件体积和纹理质量往往面临权衡难题。Shopify最新开源的glTF Compressor工具,为开发者提供了一套精细化、自动化的解决方案,让3D模型优化既高效又精准。本文将深入解析这…

LeetCode Hot 100,快速学习,不断更

工作做多了有时候需要回归本心&#xff0c;认真刷题记忆一下算法。那就用我这练习时长两年半的代码农民工来尝试着快速解析LeetCode 100吧 快速解析 哈希 1. 两数之和 - 力扣&#xff08;LeetCode&#xff09; 这题很简单啊&#xff0c;思路也很多 1. 暴力搜索&#xff0c;…

MySQL的子查询:

目录 子查询的相关概念&#xff1a; 子查询的分类&#xff1a; 角度1&#xff1a; 单行子查询&#xff1a; 单行比较操作符&#xff1a; 子查询的空值情况&#xff1a; 多行子查询&#xff1a; 多行比较操作符&#xff1a; ANY和ALL的区别&#xff1a; 子查询为空值的…

Python批处理深度解析:构建高效大规模数据处理系统

引言&#xff1a;批处理的现代价值在大数据时代&#xff0c;批处理&#xff08;Batch Processing&#xff09; 作为数据处理的核心范式&#xff0c;正经历着复兴。尽管实时流处理备受关注&#xff0c;但批处理在数据仓库构建、历史数据分析、报表生成等场景中仍不可替代。Pytho…

是德科技的BenchVue和纳米软件的ATECLOUD有哪些区别?

是德科技的BenchVue和纳米软件的ATECLOUD虽然都是针对仪器仪表测试的软件&#xff0c;但是在功能设计、测试场景、技术架构等方面有着明显的差异。BenchVue&#xff08;是德科技&#xff09;由全球领先的测试测量设备供应商开发&#xff0c;专注于高端仪器控制与数据分析&#…

线上redis的使用

一.String1.缓存玩家单个数据&#xff0c;但是我觉得还是用hash好2.结合过期时间&#xff0c;比如:某个东西结算了&#xff0c;redis记录一下&#xff0c;并设置过期时间3.分布式锁二.Hash1.缓存一个单位的数据&#xff0c;比如&#xff1a;联盟信息2.被封禁的列表&#xff0c;…

【实践记录】github仓库的更新

首先登录&#xff0c;参考&#xff1a;记一次github连接本地git_如何连接github-CSDN博客 SSH&#xff1a; git config --global user.name "GitHubUsername" git config --global user.email "emailexample.com" ssh-keygen -t ed25519 -C "emailex…

Nature图形复现—Graphpad绘制带P值的含数据点的小提琴图

带 P 值的含数据点的小提琴图是一种科研数据可视化图表&#xff0c;它同时呈现数据的分布特征、原始观测值和统计显著性&#xff1a;通过小提琴形状展示概率密度分布&#xff08;反映数据集中趋势和离散程度&#xff09;&#xff0c;叠加抖动散点显示所有原始数据点&#xff08…