Supervisor进程管理工具安装

news2024/11/17 21:51:15

Supervisor进程管理工具安装

  • 一、Supervisor概况及作用
    • 1.概况
    • 2.主要作用
      • 1)、进程管理
        • (1). 启动与停止进程
        • (2). 自动重启进程
        • (3). 进程状态监控
      • 2)、日志管理
        • (1).集中化日志记录
      • 3)、资源管理与优化
        • (1). 控制进程资源使用
  • 二.安装 Supervisor
    • 1. 方法一:使用pip安装
      • 1).​pip​ 来安装 Supervisor:
      • 2).验证安装
    • 2.方法二、CentOS系统中分别使用yum
      • 1)、使用yum安装Supervisor
      • (1). 安装EPEL仓库(如果没有安装的话)
      • 2). 安装Supervisor
      • 3).验证安装
  • 三、配置 Supervisor
    • 1.配置文件位置
    • 2.基本配置修改(可选)
      • 2.1整体优点
        • 2.1.1. 标准性和兼容性
        • 2.1.2. 日志管理合理性
        • 2.1.3. 进程管理适应性
      • 2.2整体缺点
        • 2.2.1.日志文件位置的潜在风险(`logfile`)
        • 2.2.2.资源设置的灵活性(`minfds`和`minprocs`)
        • 2.2.3日志备份数量(`logfile_backups`)
      • 2.3端口相关配置
        • 2.3.1.端口配置
        • 2.3.2注意事项
    • 3.启动 Supervisor及验证是成功
    • 4.supervisord.service配置
      • 4.1查看supervisord和supervisorctl所在位置
      • 4.2检查 ​supervisord​ 服务单元文件: 如果您找不到 ​supervisord.service​ 文件,您可以手动创建它。以下是一个简单的 ​supervisord.service​ 文件示例:
      • 4.3重新加载 ​systemd​ 配置:
      • 4.4)supervisord开机启动
      • 4.5)supervisord启停命令
    • 5.配置被管理的进程(程序)
      • 5.1).创建/etc/supervisord.d/目录,并修改配置文件
      • 5.2).在/etc/supervisord.d/目录下创建配置文件(以.ini为扩展名)来管理各个进程。
    • 6.重新加载配置。
    • 7.Supervisor常用命令

一、Supervisor概况及作用

1.概况

supervisor 是一个用 Python 编写的客户端/服务器系统,允许其用户在类 Unix 系统上控制多个进程。它是一个进程管理工具,可以帮助你管理和监控进程的生命周期,包括启动、停止、重启以及自动重启失败的进程。
以下是 Supervisor 的一些主要特点和用途:

  • 进程管理:Supervisor 可以管理任何类型的进程,不仅仅是 Python 进程。你可以使用它来管理 Web 服务器、数据库服务器、后台任务等。
  • 自动重启:如果一个进程意外退出,Supervisor 可以自动重启它,确保服务持续运行。
  • 进程组:Supervisor 允许你将多个进程组织成组,并对整个组进行操作,如启动、停止或重启。
  • 事件监听:Supervisor 支持事件监听机制,允许你编写自定义脚本来响应进程状态的变化。
  • Web 界面和命令行工具:Supervisor 提供了一个简单的 Web 界面和命令行工具,方便你监控和管理进程。
    配置简单:Supervisor 的配置文件通常是一个简单的 INI 格式文件,易于理解和维护。

2.主要作用

Supervisor主要有以下作用:

1)、进程管理

(1). 启动与停止进程
  • 可以方便地启动、停止和重启由它管理的进程。例如,如果你有一个Web应用程序,使用Supervisor管理时,你可以通过简单的命令(如 supervisorctl start mywebapp)来启动这个Web应用程序进程。如果需要停止,使用 supervisorctl stop mywebapp
(2). 自动重启进程
  • 当被管理的进程意外退出(例如由于程序错误、系统资源不足等原因)时,Supervisor能够自动重启该进程。例如,一个Python脚本在运行过程中因为某个未处理的异常而崩溃,Supervisor会按照配置自动重新启动这个脚本进程,确保服务的连续性。
(3). 进程状态监控
  • 能够实时监控被管理进程的运行状态。通过 supervisorctl status 命令,可以查看各个进程是处于运行(RUNNING)、停止(STOPPED)还是其他状态(如FATAL表示进程启动失败等)。这有助于系统管理员快速了解系统中关键服务的运行情况。

2)、日志管理

(1).集中化日志记录
  • Supervisor可以将被管理进程的标准输出(stdout)和标准错误(stderr)重定向到指定的日志文件。这样,对于多个进程的日志管理就变得更加方便。例如,有多个不同功能的Python脚本在运行,Supervisor可以分别为每个脚本的输出和错误信息设置独立的日志文件,便于故障排查和系统监控。

3)、资源管理与优化

(1). 控制进程资源使用
  • 在一定程度上可以对被管理进程的资源使用进行控制。虽然它不是专门的资源管理工具,但可以通过一些配置选项(如设置进程的启动优先级等)来避免某个进程过度占用系统资源,从而保证系统整体的稳定性和性能。例如,在一个多进程的服务器环境中,通过Supervisor合理配置不同进程的启动顺序和资源分配优先级,可以确保关键服务(如数据库服务)优先获取资源,避免被其他非关键进程抢占资源而导致性能下降。

二.安装 Supervisor

1. 方法一:使用pip安装

1).​pip​ 来安装 Supervisor:

pip install supervisor

在这里插入图片描述
您可以使用 ​sudo​ 命令来提升权限,以便 ​pip​ 可以写入系统目录。例如:

sudo pip install supervisor

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

2).验证安装

supervisord -v

在这里插入图片描述

2.方法二、CentOS系统中分别使用yum

以下是在CentOS系统中分别使用yum和pip安装Supervisor的步骤:

1)、使用yum安装Supervisor

(1). 安装EPEL仓库(如果没有安装的话)

EPEL(Extra Packages for Enterprise Linux)仓库包含了许多额外的软件包,Supervisor可能就在其中。

yum install epel-release -y

在这里插入图片描述

2). 安装Supervisor

yum install supervisor -y

在这里插入图片描述

3).验证安装

supervisord -v

在这里插入图片描述

三、配置 Supervisor

1.配置文件位置

安装完成后,你需要创建一个配置文件。通常,这个文件位于 ​/etc/supervisord.conf​。你可以使用以下命令生成一个默认配置文件:

echo_supervisord_conf > /etc/supervisord.conf

在这里插入图片描述

2.基本配置修改(可选)

在[supervisord]部分,可以修改一些基本的配置参数,例如日志文件的位置、端口号等。
例如,修改日志文件位置:

[supervisord]
logfile =/var/log/supervisord.log ; 日志文件路径
logfile_maxbytes=50MB; 日志文件大小
logfile_backups=10 ;保留10个备份日志文件个数
loglevel = info ; 日志级别,可以是debug、info、warn、error等
pidfile =/var/run/supervisord.pid ; PID文件路径
nodaemon = false ; 是否以守护进程模式运行,默认是true(后台运行)
minfds = 1024 ; 最小文件描述符数量
minprocs = 200 ; 最小进程数量
silent = false ;允许将日志输出到标准输出,方便查看和监控Supervisor的运行情况

以下是对上述配置的优缺点分析:

2.1整体优点

2.1.1. 标准性和兼容性
  • 这种配置遵循了许多Linux系统中的常见实践。例如,将logfile设置为/var/log/supervisord.logpidfile设置为/var/run/supervisord.pid,这些都是在Linux系统中管理日志和进程相关文件的标准位置。这有助于与系统的日志管理工具(如logrotate)和进程管理机制更好地集成。
2.1.2. 日志管理合理性
  • 日志大小限制(logfile_maxbyteslogfile_backups
    • 设置logfile_maxbytes = 50MBlogfile_backups = 10是一种比较合理的日志管理策略。50MB的单个日志文件大小限制可以防止日志文件无限制增长,避免占用过多磁盘空间。同时,保留10个备份日志文件个数能够提供足够的历史日志记录,方便在出现问题时进行回溯和排查。
  • 日志级别(loglevel
    • 选择loglevel = info在大多数情况下是一个很好的平衡。它提供了足够的信息来监控Supervisor及其管理的进程的运行状态,包括进程的启动、停止、重启等操作信息,以及一些可能的错误提示。相比于debug级别,它不会产生过多的日志,从而避免对系统性能和磁盘空间造成过大影响;而相比于warnerror级别,它能提供更详细的正常运行信息。
2.1.3. 进程管理适应性
  • 守护进程模式(nodaemon
    • 设置nodaemon = false表明Supervisor以守护进程模式运行,这是在生产环境和大多数实际应用场景中的常见选择。守护进程模式使得Supervisor在后台运行,不会占用终端会话,并且可以在系统启动时自动启动并持续运行管理进程。
  • 资源相关设置(minfdsminprocs
    • minfds = 1024minprocs = 200为Supervisor及其管理的进程提供了一定的资源保障。在大多数系统中,这些数值能够确保在启动和运行过程中有足够的文件描述符和进程资源可用,特别是在管理多个进程或者处理大量文件和网络连接的情况下。
  • 日志输出(silent
    • 设置silent = false允许将日志输出到标准输出,这在开发、测试和故障排查阶段非常有用。它可以让管理员方便地查看和监控Supervisor的运行情况,直接在终端或控制台获取实时的日志信息。

2.2整体缺点

2.2.1.日志文件位置的潜在风险(logfile
  • 虽然/var/log是标准的日志存储位置,但在某些情况下,这个目录可能会受到磁盘空间限制或者权限问题的影响。例如,如果/var分区的磁盘空间有限,大量的日志文件可能会填满该分区,导致系统出现问题。此外,如果系统的日志管理策略对/var/log目录有特殊的权限设置,可能会影响Supervisor对日志文件的写入操作。
2.2.2.资源设置的灵活性(minfdsminprocs
  • 对于minfds = 1024minprocs = 200这两个设置,在某些特殊的系统环境下可能不够灵活。例如,在资源受限的系统(如小型嵌入式设备或低配置的虚拟机)中,这些数值可能过高,导致资源浪费或者系统启动失败。相反,在处理大量并发进程或者高负载网络应用的系统中,这些数值可能又显得过低,无法满足实际需求。
2.2.3日志备份数量(logfile_backups
  • 虽然保留10个备份日志文件个数(logfile_backups = 10)可以提供较多的历史日志记录,但在磁盘空间有限的系统中,这可能会占用过多的磁盘空间。特别是当每个日志文件都比较大(如logfile_maxbytes = 50MB)时,10个备份文件可能会消耗大量的磁盘资源。

2.3端口相关配置

2.3.1.端口配置
  • 在Supervisor的配置文件中,默认情况下没有直接配置监听端口的选项。Supervisor默认监听在本地的Unix套接字(/var/run/supervisor.sock)上进行进程间通信。
  • 如果想要通过网络端口来访问Supervisor的Web界面(Supervisor提供了一个基本的Web界面用于查看和管理进程状态),需要添加额外的配置。
  • [inet_http_server]部分进行配置(如果配置文件中没有此部分,需要手动添加)。例如:
[inet_http_server]
port = 9001; 这里设置Supervisor的Web界面监听的端口为9001
username = user; 可设置访问Web界面的用户名(可选)
password = pass; 可设置访问Web界面的密码(可选)
2.3.2注意事项
  • 如果设置了监听端口,需要确保防火墙允许相应端口的访问。例如,在CentOS中,如果使用firewalld防火墙:
firewall - cmd --zone = public --add - port = 9001/tcp --permanent
firewall - cmd --reload
  • 另外,从安全角度考虑,如果在生产环境中设置了用户名和密码,要确保密码的强度足够,并且定期更新。同时,限制对Supervisor Web界面的访问来源(例如,只允许特定的IP地址范围访问)也是一种安全措施。

3.启动 Supervisor及验证是成功

supervisord -c /etc/supervisord.conf
ps -aux|grep supervisor

在这里插入图片描述

4.supervisord.service配置

4.1查看supervisord和supervisorctl所在位置

which supervisord
which supervisorctl

在这里插入图片描述

4.2检查 ​supervisord​ 服务单元文件: 如果您找不到 ​supervisord.service​ 文件,您可以手动创建它。以下是一个简单的 ​supervisord.service​ 文件示例:

vim /usr/lib/systemd/system/supervisord.service
[Unit]
Description=Supervisor process control system for UNIX
Documentation=http://supervisord.org
After=network.target

[Service]
#Uncomment the line below if you want to run it as a daemon
#Type=forking 
ExecStart=/usr/bin/supervisord -n -c /etc/supervisord.conf
ExecStop=/usr/bin/supervisorctl $OPTIONS shutdown
ExecReload=/usr/bin/supervisorctl $OPTIONS reload
KillMode=process
Restart=on-failure
RestartSec=20s

[Install]
WantedBy=multi-user.target

在这里插入图片描述

4.3重新加载 ​systemd​ 配置:

systemctl daemon-reload

在这里插入图片描述

4.4)supervisord开机启动

systemctl enable supervisord

在这里插入图片描述

4.5)supervisord启停命令

1.查看状态
systemctl status supervisord
2.启动
systemctl start supervisord
3.停止
systemctl stop supervisord
4.重载
systemctl reload supervisord
4.重启
systemctl reload supervisord

在这里插入图片描述

5.配置被管理的进程(程序)

5.1).创建/etc/supervisord.d/目录,并修改配置文件

mkdir -p /etc/supervisord.d/

在这里插入图片描述

在这里插入图片描述

5.2).在/etc/supervisord.d/目录下创建配置文件(以.ini为扩展名)来管理各个进程。

[program:myapp]
process_name=%(program_name)s
command = /usr/local/python3.9/bin/python3.9 myapp.py
directory = /data/caspaper/ocr
autostart = true
startsecs = 5
autorestart = true
startretries = 3
redirect_stderr = true
stdout_logfile_maxbytes = 200MB
stdout_logfile_backups = 10
stdout_logfile = /tmp/myapp.log

  1. [program:myapp]
    • 这是Supervisor配置文件中的一个节(section)标识。它定义了一个名为“myapp”的程序配置块。在这个块内的所有配置项都与管理名为“myapp”的进程相关。
  2. process_name = %(program_name)s
    • 这里的process_name指定了被管理进程的名称。使用%(program_name)s这种格式表示进程名称将与program_name(在这里就是“myapp”)相同。这有助于在Supervisor中唯一标识这个进程,方便进行管理操作,如查看进程状态、启动或停止进程等。
  3. command = python3 mq_shibie.py C1
    • command定义了启动被管理进程的命令。在这个例子中,它表示使用系统中的python3解释器来运行名为mq_shibie.py的脚本,并传递一个参数C1。这个命令是Supervisor用来启动相关进程的依据。
  4. directory=/data/caspaper/ocr
    • directory指定了在启动进程之前要切换到的工作目录。Supervisor会先将当前工作目录切换到/data/caspaper/ocr,然后再执行command中定义的命令。这个目录可能包含进程运行所需的资源,如配置文件、输入数据等。
  5. autostart = true
    • 当设置为true时,表示Supervisor在自身启动时会自动启动这个名为“myapp”的进程。这对于需要在系统启动后就持续运行的服务非常有用,不需要手动干预就可以确保进程开始运行。
  6. startsecs = 5
    • 这个配置项定义了在启动进程之后,Supervisor需要等待多长时间(以秒为单位)才认为进程启动成功。这里设置为5秒,也就是说,Supervisor启动进程后会等待5秒,如果进程在这5秒内没有异常退出,就认为启动成功。这有助于处理那些启动过程可能稍慢的进程,避免误判为启动失败。
  7. autorestart = true
    • 如果设置为true,当被管理的进程意外退出(例如因为程序错误、系统资源不足等原因)时,Supervisor会自动重新启动该进程。这有助于确保进程的持续运行,提高服务的可靠性。
  8. startretries = 3
    • 定义了在进程启动失败时,Supervisor尝试重新启动的最大次数。这里设置为3次,即如果进程启动失败,Supervisor最多会尝试重新启动3次。
  9. redirect_stderr = true
    • 当设置为true时,被管理进程的标准错误输出(stderr)将会被重定向。通常会与标准输出(stdout)的处理方式相关联,比如重定向到同一个日志文件(根据后续的配置),这样便于在一个地方查看进程的所有输出信息(包括正常输出和错误输出)。
  10. stdout_logfile_maxbytes = 200MB
  • 这个配置项设定了标准输出日志文件(stdout_logfile)的最大容量。当标准输出日志文件达到200MB时,Supervisor可能会根据其他相关配置(如日志轮转相关的配置)采取相应的操作,例如进行日志备份或者截断等操作。
  1. stdout_logfile_backups = 10
  • 定义了标准输出日志文件(stdout_logfile)的备份数量。当达到stdout_logfile_maxbytes设定的大小并且进行日志轮转操作时,Supervisor会保留10个旧版本的日志文件作为备份,以便在需要时查看历史日志信息。
  1. stdout_logfile = /tmp/myapp.log
  • 指定了被管理进程的标准输出(stdout)的日志文件路径。进程正常运行时输出的信息(例如通过print语句输出的内容)将会被记录到这个位于/tmp目录下的myapp.log文件中。这有助于在需要时查看进程的运行状态和输出结果。

6.重新加载配置。

如果在添加配置文件后没有重新加载Supervisor的配置,新的配置不会生效。
可以使用以下命令重新加载配置:

supervisorctl reread
supervisorctl status

reread命令会让Supervisor重新读取配置文件,update命令会根据新的配置启动或重启相关的进程。
在这里插入图片描述

7.Supervisor常用命令

supervisorctl 是一个用于管理 Supervisor 进程控制系统的命令行工具。Supervisor 是一个用于在类 Unix 系统上控制和管理进程的客户端/服务器系统。supervisorctl 允许用户通过命令行与 Supervisor 进行交互,从而启动、停止、重启和管理多个进程。
以下是 supervisorctl 的一些常用命令和作用:
supervisor 英 [su:pvaz®]监督者,管理者;ctl主管
1.启动进程

supervisorctl start <process_name>

#执行的命令,启动所有由 Supervisor 管理的进程。​*​ 表示所有进程。
supervisorctl start *
启动指定的进程。
2.停止进程:: 停止一个或多个进程。

supervisorctl stop <process_name>
supervisorctl start all

停止指定的进程。
3.重启进程:重启一个或多个进程。

supervisorctl restart <process_name>
supervisorctl restart all

重启指定的进程。
4.查看进程状态:

supervisorctl status

显示所有被 Supervisor 管理的进程的状态。
5.重新加载配置文件:

supervisorctl reread

重新加载配置文件,但不应用更改。
6.更新进程列表:

supervisorctl update

应用配置文件的更改,并根据需要启动或停止进程。
7.进入交互模式:

supervisorctl

在这里插入图片描述
在这里插入图片描述
8.查看帮助:

supervisorctl help

显示特定命令的帮助信息。
9.查看特定命令的帮助:

supervisorctl help <command>

显示特定命令的帮助信息。
10.实时查看指定进程的日志输出

supervisorctl tail -f <process_name>

实时查看日志:该命令会实时显示名为 mq_pre02 的进程的日志输出,类似于在终端中使用 tail -f 命令查看日志文件。
持续跟踪:-f 选项使得命令会持续输出日志文件的最新内容,直到你手动停止(通常是按 Ctrl+C)。
11.pid [process]: 获取进程的 PID。

supervisorctl pid <process_name>

12.clear [process]: 清除进程的日志文件。

supervisorctl clear <process_name>

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

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

相关文章

小白学大模型RAG:十大步骤分析GraphRAG的工作原理

对于普通的RAG&#xff0c;也就是前面课程讲的RAG&#xff0c;它的原理是通过将文本进行切分和向量化&#xff0c;通过计算文本之间的向量相似度&#xff0c;从而得到两个文本之间的语义相似度&#xff0c;从知识库中找出跟问题语义相似的知识点&#xff0c;再送给LLM得出最终答…

学习Java (五)

1.学习封装 package com.msb.test07; //封装 public class Girl {private int age; // 赋值public void setAge(int age){if(age > 30){this.age 18;}else{this.age age;}} // 读取public int getAge(){return age;} }package com.msb.test07;public class Test {p…

【Linux 报错】“make: ‘xxxx‘ is up to date.” 解决办法

一、报错原因 我们使用 make 命令&#xff0c;想要将 text.c 文件编译形成 可执行文件 text 时&#xff0c;报错如下 make: test is up to date. 中文含义&#xff1a;test 文件已经达到最新状态 意思是&#xff1a; test.c 文件里面的 所有源代码都没有修改过&#xff0c;你…

c++11~c++20 numeric_limits

在c中应该尽量少使用宏&#xff0c;用模板取而代之是明知的选择。我们可以使用numeric_limits来获取最大值和最小值&#xff0c;例如 #include <iostream> #include <limits> #include <iostream> using namespace std;int main() {cout << "int…

Go基础学习04-变量重声明;类型转换;类型断言;Unicode代码点;类型别名;潜在类型

目录 变量重声明 类型断言 类型转换 类型转换注意事项 Unicode代码点 类型别名、潜在类型 类型别名的意义 变量重声明 编写代码&#xff1a; package mainimport "fmt"var container []string{"Beijing", "Shanghai"}func main() {fmt.Pr…

Qt开发技巧(八)自带对话框的美化,内置快捷代码段,巧用匿名槽函数,另类动态换肤,资源动态加载

继续讲一些Qt开发中的技巧操作&#xff1a; 1.自带对话框的美化 Qt中有一些自带的对话框&#xff0c;比如文件选择对话框&#xff0c;颜色选择对话框等等&#xff0c;这些对话框看着跟系统的对话框没太大差别&#xff0c;实际这是Qt有意为之&#xff0c;为的是跟系统保持一致。…

欺诈文本分类检测(十七):支持分类原因训练

1. 引言 前文数据校正与增强进行了数据增强&#xff0c;本文将使用增强后的数据对模型进行进一步训练&#xff0c;以便得到能同时预测出分类标签、欺诈者、分类原因多个信息的模型。 为此&#xff0c;我们需要对整个训练过程进行调整&#xff0c;包括&#xff1a; 交叉训练逻…

苹果端侧AI布局深度分析

苹果 - 国际巨头的端侧 AI布局 深度分析 1.1.1 苹果AI&#xff1a;模型侧&#xff1a;MM1 3月&#xff0c;苹果发布多模态大模型MM1&#xff0c;拥有高达300亿参数。MM1融合密集模型与MoE变体&#xff0c;涵盖300亿、70亿、30亿参数版。MM1预训练指标领先&#xff0c;在多个多…

ubuntu 安装k8s

#关闭 Swap 内存&#xff0c;配置完成建议重启一下 nano /etc/fstab #注释下面相似的一行 #/swapfile none swap sw 0 0 #重启 reboot#部属k8s apt update && apt install -y apt-transport-https 下载 gpg 密钥 curl https://mi…

基于SpringBoot+Vue的高校实习管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码 精品专栏&#xff1a;Java精选实战项目…

一次眼睛受损然后恢复的过程

由于多年没有社交比较宅,多年长期盯着电脑和手机,没有保护好眼睛 之前早上醒来有一段时间我眼睛老是分泌各种乱起八遭的东西,导致我眼睛看不清, 2023年3月有天的早上,我又不小心眼睛揉出血了,出门上班路上的时候才知道有这个问题,第二天早上就挂了去了眼科,医生给我开了如下的药…

单细胞转录组|scATAC-seq 数据整合

引言 本文在此展示了如何将多个源自人类外周血单核细胞的单细胞染色质数据集进行整合。其中一个数据集是通过10x Genomics的多组学技术获得的&#xff0c;它涵盖了每个细胞的DNA可及性和基因表达数据。另一个数据集则是通过10x Genomics的单细胞ATAC测序(scATAC-seq)技术得到的…

Mybatis-Plus自动填充时间的配置类

引言&#xff1a;在现代软件开发中&#xff0c;数据库操作是不可或缺的一部分。为了确保数据的准确性和完整性&#xff0c;我们常常需要在数据库记录中添加时间戳&#xff0c;例如创建时间和更新时间。MyBatis-Plus作为一个流行的持久层框架&#xff0c;提供了灵活的机制来实现…

官方权威解读|CNAS-CL01计量溯源性部分解读,供CNAS软件测试实验室参考

CNAS-CL01《检测和校准实验室能力认可准则》是软件测试实验室申请CNAS资质&#xff0c;建设符合CNAS要求的实验室质量管理体系时必须要参考的一部强制性准则。CNAS-CL01一共分为五大核心部分&#xff1a;通用要求、结构要求、资源要求、过程要求和管理体系要求。前面的文章中我…

【零散技术】微信支付保姆教程(一)

序言:时间是我们最宝贵的财富,珍惜手上的每个时分 微信支付十余年&#xff0c;早已成为国内必不可少的支付工具。但是开发对接中 繁杂的各类参数与文档&#xff0c;以及各种证书的申请&#xff0c;着实也成了不少开发者的噩梦&#xff0c;那么今天我们来看看&#xff0c;如何申…

3-3 AUTOSAR RTE 对SR Port的作用

返回总目录->返回总目录<- 一、前言 RTE作为SWC和BSW之间的通信机构,支持Sender-Receiver方式实现ECU内及ECU间的通信。 对于Sender-Receiver Port支持三种模式: 显式访问:若运行实体采用显示模式的S/R通信方式,数据读写是即时的;隐式访问:当多个运行实体需要读取…

小阿轩yx-案例:代码管理系统简介与部署

小阿轩yx-案例&#xff1a;代码管理系统简介与部署 前言 开发一个项目时&#xff0c;如果只有几十行代码或几百行代码时维护还算简单&#xff0c;但是代码数量达到一定程度或两三个人共同开发一个项目时&#xff0c;就很容易会出现代码混乱、冲突、排错难等问题。代码编写完成…

vue3中< keep-alive >页面实现缓存及遇到的问题

vue3中< keep-alive >页面实现缓存及遇到的问题 实现原理&#xff1a;keep-alive 是 Vue 的内置组件&#xff0c;当它包裹动态组件时&#xff0c;会缓存不活动的组件实例&#xff0c;而不是销毁它们。实现不同路由是否缓存只需要设置对应路由参数keepAlive为true&#xf…

Excel里的 $ 是什么意思,绝对引用用法详解来了

大家好&#xff0c;这里是效率办公指南&#xff01; &#x1f511; 在Excel中&#xff0c;$符号是一个功能强大的工具&#xff0c;它用于实现单元格引用的绝对引用和混合引用。了解它的用法对于编写公式和处理数据至关重要。今天&#xff0c;我们将详细介绍$符号的用法和一些实…

【C++】设计用户级缓冲区

目录 缓冲区功能分析 缓冲区空间分配策略分析 数据设计和函数介绍 完整代码 接口介绍 个人主页&#xff1a;东洛的克莱斯韦克-CSDN博客 缓冲区功能分析 1.可以向缓冲区写入数据 2.可用从缓冲区读取数据 3.可用窥探数据——把数据拷贝给上层&#xff0c;但缓冲区数据不减少 …