【GB28181】wvp-GB28181-pro部署安装教程(Ubuntu平台)

目录

  • 前言
  • 1 安装依赖
  • 2 安装MySQL
  • 3 安装redis
  • 4 编译ZLMediaKit
    • 代码及依赖下载
    • 编译
    • 运行(如果要运行wvp整个项目,这步可以先不执行)
  • 5 编译wvp-pro
    • 下载源码(建议从github上下载,gitee上维护有时候不是很同步)
    • 编译前端界面
    • 打包项目, 生成可执行jar
  • 6 创建wvp数据库
  • 7 配置文件修改
    • ZLMediaKit
    • WVP配置文件
  • 8 启动服务
    • 启动ZML
    • wvp服务启动
    • 验证服务

前言

本文基于ZMLMediaKit+WVP-PRO进行编译部署GB28181平台,网上教程也比较多,都大同小异,实际操作过程中容易出错的地方也比较多:redis安装服务密码,mysql安装后密码的修改以及wvp数据可的创建,配置文件侧修改,尤其是和端口相关的项,再就是运行服务时各种错误需要注意,常见的错误已经做了汇总,遇到问题大家不要怕,找到报错的地方查看定位即可。

1 安装依赖

依赖版本用途开发环境需要生产环境需要
jdk>=1.8运行与编译java代码
maven>=3.3管理java代码依赖
git下载/更新/提交代码
nodejs编译于运行前端文件
npm管理前端文件依赖

ubuntu环境:

sudo apt-get install -y openjdk-11-jre git maven nodejs npm  cmake

在这里插入图片描述

centos环境:

yum install -y java-1.8.0-openjdk.x86_64 git maven nodejs npm

2 安装MySQL

在终端执行以下命令:

#安装MySQL服务器 在安装过程中,系统将提示您创建root密码。选择一个安全的,并确保记住它,因为后面需要用到这个密码
sudo apt-get install mysql-server#安装MySQL客户端
sudo apt-get install mysql-client
#运行MySQL初始化安全脚本
sudo mysql_secure_installation

初始化安全脚本参考以下:

linux@ubuntu:/mnt/hgfs/GB28181$ sudo mysql_secure_installationSecuring the MySQL server deployment.Connecting to MySQL using a blank password.VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?Press y|Y for Yes, any other key for No: y
There are three levels of password validation policy:LOW    Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary                  filePlease enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 0Skipping password set for root as authentication with auth_socket is used by default.
If you would like to use password authentication instead, this can be done with the "ALTER_USER" command.
See https://dev.mysql.com/doc/refman/8.0/en/alter-user.html#alter-user-password-management for more information.By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
Success.Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.Disallow root login remotely? (Press y|Y for Yes, any other key for No) : n... skipping.
By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y- Dropping test database...
Success.- Removing privileges on test database...
Success.Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
Success.All done! 

查看数据库运行状态

linux@ubuntu:/mnt/hgfs/GB28181$ systemctl status mysql.service

运行结果如下:

● mysql.service - MySQL Community ServerLoaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)Active: active (running) since Sun 2024-02-25 00:18:58 PST; 12min agoMain PID: 20851 (mysqld)Status: "Server is operational"Tasks: 38 (limit: 2227)Memory: 364.0MCGroup: /system.slice/mysql.service└─20851 /usr/sbin/mysqldFeb 25 00:18:58 ubuntu systemd[1]: Starting MySQL Community Server...
Feb 25 00:18:58 ubuntu systemd[1]: Started MySQL Community Server.

设置密码:这里我设置为 12345678
sudo mysql

ALTER USER ‘root’@‘localhost’ IDENTIFIED WITH mysql_native_password BY ‘12345678’;
在这里插入图片描述

3 安装redis

参见【Redis】安装与部署-Ubuntu

4 编译ZLMediaKit

代码及依赖下载

注意:务必使用git克隆ZLMediaKit的代码,因为ZLMediaKit依赖于第三方代码,zip包不会下载第三方依赖源码

# 国内用户推荐从同步镜像网站gitee下载 
git clone --depth 1 https://gitee.com/xia-chu/ZLMediaKit
cd ZLMediaKit
# 千万不要忘记执行这句命令
git submodule update --init

在这里插入图片描述

编译

mkdir build
cd build
cmake ..
make -j4

在这里插入图片描述

编译成功后,生成的可执行文件路径在release目录下
在这里插入图片描述

运行(如果要运行wvp整个项目,这步可以先不执行)

cd ZLMediaKit/release/linux/Debug
./MediaServer 

5 编译wvp-pro

下载源码(建议从github上下载,gitee上维护有时候不是很同步)

从gitee克隆

git clone https://gitee.com/pan648540858/wvp-GB28181-pro.git

从github克隆

git clone https://github.com/648540858/wvp-GB28181-pro.git

编译前端界面

cd wvp-GB28181-pro/web_src/
npm --registry=https://registry.npm.taobao.org install
npm run build

ps报错:
一般都是网络问题, 导致的依赖包下载失败, --registry=https://registry.npmmirror.com install 重新尝试

成功:
在这里插入图片描述
在这里插入图片描述

打包项目, 生成可执行jar

在wvp-GB28181-pro目录下执行

cd wvp-GB28181-pro
mvn package

在这里插入图片描述

编译如果报错, 一般都是网络问题, 导致的依赖包下载失败
编译完成后在target目录下出现wvp-pro-***.jar文件即可
在这里插入图片描述

6 创建wvp数据库

在MySql中创建一个名字为wvp的数据库,并在wvp数据库中执行wvp-GB28181-pro/sql/下的mysql.sql脚本创建表结构
连接mysql数据库,输入密码:

mysql -u root -p

新建一个名字为wvp的数据库:

mysql>CREATE DATABASE wvp;

这里可以用以下命令查看数据库:

mysql>show databases;

使用这个数据库:

mysql>use wvp;

执行数据库脚本
这里按照自己的路径进行修改

mysql>source /home/linux/GB28181/wvp-GB28181-pro/数据库/初始化-mysql.sql

在这里插入图片描述
查看表是否生成
在这里插入图片描述

7 配置文件修改

ZLMediaKit

文件位置:/home/linux/GB28181/ZLMediaKit/release/linux/Debug/config.ini
在这里插入图片描述

记录下http port和mediaServerId,这里原本的mediaServerId=your_server_id,将其修改为自己的id即可,可以随意命名,但是需要和后面wvp配置文件中的media中的id保持一致。这里采用的的是wvp配置文件application.yml中默认的id。http port也可以自定义更改。同理,conf文件和application文件中要保持一致。

[http]
port=8088
[general]
mediaServerId=wvp_server

在这里插入图片描述
在这里插入图片描述
完整配置文件参考:

; auto-generated by mINI class {[api]
apiDebug=1
defaultSnap=./www/logo.png
downloadRoot=./www
secret=qVE5Hxl8N7OtLL6J5TGRImztPcP9kkka
snapRoot=./www/snap/[cluster]
origin_url=
retry_count=3
timeout_sec=15[ffmpeg]
bin=/usr/bin/ffmpeg
cmd=%s -re -i %s -c:a aac -strict -2 -ar 44100 -ab 48k -c:v libx264 -f flv %s
log=./ffmpeg/ffmpeg.log
restart_sec=0
snap=%s -i %s -y -f mjpeg -frames:v 1 -an %s[general]
check_nvidia_dev=1
enableVhost=0
enable_ffmpeg_log=0
flowThreshold=1024
maxStreamWaitMS=15000
mediaServerId=wvp_server
mergeWriteMS=0
resetWhenRePlay=1
streamNoneReaderDelayMS=20000
unready_frame_cache=100
wait_add_track_ms=3001
wait_track_ready_ms=10000[hls]
broadcastRecordTs=0
deleteDelaySec=10
fastRegister=0
fileBufSize=65536
segDelay=0
segDur=2
segKeep=0
segNum=3
segRetain=5[hook]
alive_interval=10.0
enable=0
on_flow_report=
on_http_access=
on_play=
on_publish=
on_record_mp4=
on_record_ts=
on_rtp_server_timeout=
on_rtsp_auth=
on_rtsp_realm=
on_send_rtp_stopped=
on_server_exited=
on_server_keepalive=
on_server_started=
on_shell_login=
on_stream_changed=
on_stream_none_reader=
on_stream_not_found=
retry=1
retry_delay=3.0
stream_changed_schemas=rtsp/rtmp/fmp4/ts/hls/hls.fmp4
timeoutSec=10[http]
allow_cross_domains=1
allow_ip_range=::1,127.0.0.1,172.16.0.0-172.31.255.255,192.168.0.0-192.168.255.255,10.0.0.0-10.255.255.255
charSet=utf-8
dirMenu=1
forbidCacheSuffix=
forwarded_ip_header=
keepAliveSecond=30
maxReqSize=40960
notFound=<html><head><title>404 Not Found</title></head><body bgcolor="white"><center><h1>您访问的资源不存在!</h1></center><hr><center>ZLMediaKit(git hash:87cb488/2024-02-19T11:54:13+08:00,branch:master,build time:2024-02-25T00:46:44)</center></body></html>
port=8088
rootPath=./www
sendBufSize=65536
sslport=443
virtualPath=[multicast]
addrMax=239.255.255.255
addrMin=239.0.0.0
udpTTL=64[protocol]
add_mute_audio=1
auto_close=0
continue_push_ms=15000
enable_audio=1
enable_fmp4=1
enable_hls=1
enable_hls_fmp4=0
enable_mp4=0
enable_rtmp=1
enable_rtsp=1
enable_ts=1
fmp4_demand=0
hls_demand=0
hls_save_path=./www
modify_stamp=2
mp4_as_player=0
mp4_max_second=3600
mp4_save_path=./www
paced_sender_ms=0
rtmp_demand=0
rtsp_demand=0
ts_demand=0[record]
appName=record
fastStart=0
fileBufSize=65536
fileRepeat=0
sampleMS=500[rtc]
externIP=
max_bitrate=0
min_bitrate=0
port=8000
preferredCodecA=PCMU,PCMA,opus,mpeg4-generic
preferredCodecV=H264,H265,AV1,VP9,VP8
rembBitRate=0
start_bitrate=0
tcpPort=8000
timeoutSec=15[rtmp]
directProxy=1
enhanced=0
handshakeSecond=15
keepAliveSecond=15
port=1935
sslport=0[rtp]
audioMtuSize=600
h264_stap_a=1
lowLatency=0
rtpMaxSize=10
videoMtuSize=1400[rtp_proxy]
dumpDir=
gop_cache=1
h264_pt=98
h265_pt=99
opus_pt=100
port=10000
port_range=30000-35000
ps_pt=96
timeoutSec=15[rtsp]
authBasic=0
directProxy=1
handshakeSecond=15
keepAliveSecond=15
lowLatency=0
port=554
rtpTransportType=-1
sslport=0[shell]
maxReqSize=1024
port=0[srt]
latencyMul=4
pktBufSize=8192
port=9000
timeoutSec=5; } ---

WVP配置文件

WVP配置文件位置
wvp-GB28181-pro/src/main/resources/application-dev.yml
拷贝至target目录下
cp …/src/main/resources/application-dev.yml application.yml

在这里插入图片描述
application.yml配置文件的修改
修改redis配置,密码为空
在这里插入图片描述

修改MySQL数据库中使用的数据库,即刚刚创建的wvp数据库,修改root密码
在这里插入图片描述
修改sip的配置
ip地址为自己虚拟机的ip地址
在这里插入图片描述
配置ZLMediaKit连接信息
id必须与之前config.ini中的名称一致
ip修改为本虚拟机的IP地址
http的端口号同样与之前config.ini中的端口号一致
在这里插入图片描述
完整application.yml 配置参考:

spring:# 设置接口超时时间mvc:async:request-timeout: 20000thymeleaf:cache: false# [可选]上传文件大小限制servlet:multipart:max-file-size: 10MBmax-request-size: 100MB# REDIS数据库配置redis:# [必须修改] Redis服务器IP, REDIS安装在本机的,使用127.0.0.1host: 127.0.0.1# [必须修改] 端口号port: 6379# [可选] 数据库 DBdatabase: 7# [可选] 访问密码,若你的redis服务器没有设置密码,就不需要用密码去连接password: # [可选] 超时时间timeout: 10000# mysql数据源datasource:dynamic:primary: masterdatasource:master:type: com.zaxxer.hikari.HikariDataSourcedriver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://127.0.0.1:3306/wvp?useUnicode=true&characterEncoding=UTF8&rewriteBatchedStatements=true&serverTimezone=PRC&useSSL=false&allowMultiQueries=trueusername: rootpassword: 12345678hikari:connection-timeout: 20000             # 是客户端等待连接池连接的最大毫秒数initialSize: 50                       # 连接池初始化连接数maximum-pool-size: 200                # 连接池最大连接数minimum-idle: 10                       # 连接池最小空闲连接数idle-timeout: 300000                  # 允许连接在连接池中空闲的最长时间(以毫秒为单位)max-lifetime: 1200000                 # 是池中连接关闭后的最长生命周期(以毫秒为单位)
#[可选] WVP监听的HTTP端口, 网页和接口调用都是这个端口
server:port: 8080# [可选] HTTPS配置, 默认不开启ssl:# [可选] 是否开启HTTPS访问enabled: false# [可选] 证书文件路径,放置在resource/目录下即可,修改xxx为文件名key-store: classpath:test.monitor.89iot.cn.jks# [可选] 证书密码key-store-password: gpf64qmw# [可选] 证书类型, 默认为jks,根据实际修改key-store-type: JKS# 作为28181服务器的配置
sip:# [必须修改] 本机的IP,对应你的网卡,监听什么ip就是使用什么网卡,# 如果要监听多张网卡,可以使用逗号分隔多个IP, 例如: 192.168.1.4,10.0.0.4# 如果不明白,就使用0.0.0.0,大部分情况都是可以的# 请不要使用127.0.0.1,任何包括localhost在内的域名都是不可以的。ip: 0.0.0.0# [可选] 28181服务监听的端口port: 8116# 根据国标6.1.2中规定,domain宜采用ID统一编码的前十位编码。国标附录D中定义前8位为中心编码(由省级、市级、区级、基层编号组成,参照GB/T 2260-2007)# 后两位为行业编码,定义参照附录D.3# 3701020049标识山东济南历下区 信息行业接入# [可选]domain: 4101050000# [可选]id: 41010500002000000001# [可选] 默认设备认证密码,后续扩展使用设备单独密码, 移除密码将不进行校验password: bajiuwulian1006# 是否存储alarm信息alarm: true#zlm 默认服务器配置
media:id: wvp_server# [必须修改] zlm服务器的内网IPip: 0.0.0.0# [必须修改] zlm服务器的http.porthttp-port: 8088# [可选] 返回流地址时的ip,置空使用 media.ipstream-ip: 172.19.128.50# [可选] wvp在国标信令中使用的ip,此ip为摄像机可以访问到的ip, 置空使用 media.ipsdp-ip: 172.19.128.50# [可选] zlm服务器的hook所使用的IP, 默认使用sip.iphook-ip: 172.19.128.50# [可选] zlm服务器的http.sslport, 置空使用zlm配置文件配置http-ssl-port: 1443# [可选] zlm服务器的hook.admin_params=secretsecret: 10000# 启用多端口模式, 多端口模式使用端口区分每路流,兼容性更好。 单端口使用流的ssrc区分, 点播超时建议使用多端口测试rtp:# [可选] 是否启用多端口模式, 开启后会在portRange范围内选择端口用于媒体流传输enable: true# [可选] 在此范围内选择端口用于媒体流传输, 必须提前在zlm上配置该属性,不然自动配置此属性可能不成功port-range: 50000,50300 # 端口范围# [可选] 国标级联在此范围内选择端口发送媒体流,send-port-range: 50000,50300 # 端口范围# 录像辅助服务, 部署此服务可以实现zlm录像的管理与下载, 0 表示不使用record-assist-port: 18081
# [根据业务需求配置]
user-settings:# 点播/录像回放 等待超时时间,单位:毫秒play-timeout: 180000# [可选] 自动点播, 使用固定流地址进行播放时,如果未点播则自动进行点播, 需要rtp.enable=trueauto-apply-play: true# 设备/通道状态变化时发送消息device-status-notify: true
# [可选] 日志配置, 一般不需要改
logging:config: logback-spring.xml

8 启动服务

启动ZML

进入~/GB28181/ZLMediaKit/release/linux/Debug下,执行命令

linux@ubuntu:~/GB28181/ZLMediaKit/release/linux/Debug$ sudo ./MediaServer 

服务启动成功:
在这里插入图片描述
浏览器输入:http://192.168.1.7:8088/
在这里插入图片描述

wvp服务启动

java -jar wvp-pro-2.7.0-02250919.jar 

运行错误参考:【GB28181】wvp-gb28181-Pro 运行错误汇总避坑大全
运行成功后:
在这里插入图片描述在这里插入图片描述

验证服务

打开浏览器输入虚拟机ip+wvp监听的http端口例如:192.168.1.7:8080/即可看到登录界面。
用户名:admin 密码:admin
在这里插入图片描述
登录成功后
在这里插入图片描述

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

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

相关文章

嵌入式按键处理驱动(easy_button)

简介 在嵌入式裸机开发中&#xff0c;经常有按键的管理需求&#xff0c;GitHub上已经有蛮多成熟的按键驱动了&#xff0c;但是由于这样那样的问题&#xff0c;最终还是自己实现了一套。本项目地址&#xff1a;bobwenstudy/easy_button (github.com)。 项目开发过程中参考了如…

YOLOv9训练教程,并解决部分报错问题,必看❗❗❗

&#x1f951; Welcome to Aedream同学 s blog! &#x1f951; 文章目录 前言基本操作YAML文件解析注意事项❗❗❗gbk codec cant decode byte 0x80 in position 238: illegal multibyte sequencetrain.py, train_dual.py or train_triple.pyAttributeError: list object has n…

搭建Facebook直播网络对IP有要求吗?

在当今数字化时代&#xff0c;Facebook直播已经成为了一种极具吸引力的社交形式&#xff0c;为个人和企业提供了与观众直接互动的机会&#xff0c;成为推广产品、分享经验、建立品牌形象的重要途径。然而&#xff0c;对于许多人来说&#xff0c;搭建一个稳定、高质量的Facebook…

数字化转型与制造企业绿色创新质量——基于供需双侧机制的再检验(2011-2022年)

参照马红&#xff08;2023&#xff09;的做法&#xff0c;本团队对来自软科学《数字化转型与制造企业绿色创新质量—基于供需双侧机制的再检验》一文中的基准回归部分进行复刻 一、数据介绍 数据名称&#xff1a;数字化转型与制造企业绿色创新质量 参考期刊&#xff1a;《软…

主数据管理是数字化转型成功的基石——江淮汽车案例分享

汽车行业数字化转型的背景 在新冠疫情导火索的影响下&#xff0c;经济全球化政治基础逐渐动摇。作为全球最大的汽车市场&#xff0c;我国的汽车市场逐渐由增量转为存量市场。 在数字化改革大背景下&#xff0c;随着工业4.0时代的到来&#xff0c;江淮汽车集团力争实现十四五数…

【MATLAB】小波 MFE_SVM_LSTM 神经网络时序预测算法

有意向获取代码&#xff0c;请转文末观看代码获取方式~也可转原文链接获取~ 1 基本定义 小波MFE_SVM_LSTM神经网络时序预测算法是一种结合了小波变换、多尺度特征提取&#xff08;MFE&#xff09;、支持向量机&#xff08;SVM&#xff09;和长短期记忆神经网络&#xff08;LST…

C#区域医院云LIS信息管理系统源码 标本管理、两癌筛查、数据分析、试剂管理

目录 ​编辑 区域医院云LIS系统功能亮点&#xff1a; 云LIS系统功能&#xff1a; 一、 基础管理 二、 前处理&#xff08;实验室&#xff09; 三、 标本处理 四、 样本检验 五、 统计报表 六、 质控管理 七、 基本工作流程 区域LIS系统特点&#xff1…

Shell函数

一、Shell函数 1、函数定义 函数定义的语法格式&#xff1a; function function_name() {statements[return int_value] }说明&#xff1a; function是 Shell 中的关键字&#xff0c;专门用来定义函数&#xff1b;function_name是函数名&#xff1b;statements是函数要执行…

如何使用程序通过OCR识别解析PDF中的表格

https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.7/ppstructure/table/README_ch.md#41-%E5%BF%AB%E9%80%9F%E5%BC%80%E5%A7%8B Paddle-structure是目前我们能找到的可以做中英文版面分析较好的一个基础模型&#xff0c;其开源版可以识别十类页面元素。这篇文章介绍…

解决IDEA git 提交慢的问题

文章目录 前言解决IDEA git 提交慢的问题 前言 如果您觉得有用的话&#xff0c;记得给博主点个赞&#xff0c;评论&#xff0c;收藏一键三连啊&#xff0c;写作不易啊^ _ ^。   而且听说点赞的人每天的运气都不会太差&#xff0c;实在白嫖的话&#xff0c;那欢迎常来啊!!! 解…

网络编程(JAVA)

前言&#xff1a;Java 是 Internet 上的语言&#xff0c;它从语言级上提供了对网络应用程序的支持&#xff0c;程序员能够很容易开发常见的网络应用程序。 Java 提供的网络类库&#xff0c;可以实现无痛的网络连接&#xff0c;联网的底层细节被隐藏在 Java 的本机安装系统里&a…

Git 突破 文件尺寸限制

前言 当Git本地存储里右超过50MB&#xff0c;却又确实需要上传的时候&#xff0c;就需要用到了不是 解决 本代码就是把大文件进行拆解成小文件&#xff0c;然后上传。 等到拉取下来的时候&#xff0c;可以直接再进行合并&#xff0c;合并成原文件 代码如下&#xff0c;仅供…

AI赋能Oracle DBA:以自然语言与Oracle数据库互动

DBA AI助手&#xff1a;以自然语言与Oracle数据库互动 0. 引言1. AI赋能Oracle DBA的优势2. AI如何与Oracle数据库交互3. 自然语言查询的一些示例4. 未来展望 0. 引言 传统的Oracle数据库管理 (DBA) 依赖于人工操作&#xff0c;包括编写复杂的SQL语句、分析性能指标和解决各种…

分布式ID生成方案详解

✨✨ 祝屏幕前的您天天开心 &#xff0c;每天都有好运相伴。我们一起加油&#xff01;✨✨ &#x1f388;&#x1f388;作者主页&#xff1a; 喔的嘛呀&#x1f388;&#x1f388; 目录 引言 一. UUID&#xff08;Universally …

企业文件防泄密软件哪种软件比较好?——推荐@德人合科技 | 天锐绿盾终端数据安全防泄密管理系统!

德人合科技提供的天锐绿盾终端数据安全防泄密管理系统是一款比较好的企业文件防泄密软件。 ——首页———— www.drhchina.com—— 以下是一些关于该软件的优点&#xff1a; 强大的防泄密功能&#xff1a;该软件采用动态加解密技术&#xff0c;能够在文件创建、编辑存盘时自动…

代码随想录算法训练营day24

题目&#xff1a;77. 组合 参考链接&#xff1a;代码随想录 回溯法理论基础 回溯三部曲&#xff1a;回溯函数模板返回值以及参数、回溯函数终止条件、回溯搜索的遍历过程。 模板框架&#xff1a; void backtracking(参数) {if (终止条件) {存放结果;return;}for (选择&…

Redis7

摘录 https://github.com/Romantic-Lei/Learning-in-practice/blob/master/Redis/ 官网地址: 英文&#xff1a;Redis 中文&#xff1a;CRUG网站 redis中文文档 安装包&#xff1a;https://redis.io/download/&#xff0c;选择redis7.0版本即可 Redis在线测试地址(不用下载也…

等保测评与商用密码共铸工控安全“双评合规”新篇章

最近听说了一个段子&#xff1a;“网络安全就像美女的内衣&#xff0c;等保和密评就是最贴身的内衣两件套&#xff0c;上下身一件都不能少。否则你的魔鬼身材&#xff08;核心数据&#xff09;就有可能被色狼&#xff08;黑客&#xff09;一览无余&#xff08;数据泄漏&#xf…

Ubuntu上Jenkins自动化部署Gitee上SpringBoot项目

文章目录 安装安装JDK安装Maven安装GitNodeJS安装&#xff08;可选&#xff09;安装Jenkins 配置Jenkins为Jenkins更换插件源设置jenkins时区安装插件全局工具配置添加Gitee凭证Gitee项目配置 部署后端1.新建任务2.配置源码管理3.构建触发器4.到Gitee中添加WebHook5.构建环境6.…

详解POCV/SOCV的时序报告

​POCV/SOCV的时序报告中有如下变量&#xff1a; Mean: 高斯分布中的μ值&#xff08;平均值&#xff09; Sensit: sensitivity&#xff0c;也就是1个Sigma的值&#xff1b; Corner: Sigma边界的最差值 cell的delay Delay mean N * Delay sigma; cell 的Transition Sl…