安装部署_WVP流媒体

文章目录

  • 一、DEV_WVP流媒体开发手册
    • 1、搭建流媒体服务
      • clone代码:
      • 安装编译器
      • cmake
      • 构建和编译项目
      • 修改配置文件
      • 启动项目
    • 2、搭建GB28181协议视频平台
      • 安装 jdk, nodejs, maven, git
      • 安装redis
      • 安装postgresql
      • clone代码
      • 编译前端代码
      • 编译后端代码
      • 配置文件修改
    • 3、设备接入测测试
      • EasyGBD
      • OBS推流
    • 4、附录
      • sql

一、DEV_WVP流媒体开发手册

1、搭建流媒体服务

clone代码:

  • 请不要使用github 下载zip包的方式下载源码,务必使用git克隆ZLMediaKit的代码,因为ZLMediaKit依赖于第三方代码,zip包不会下载第三方依赖源码,你可以这样操作、
git clone --depth 1 https://gitee.com/xia-chu/ZLMediaKit
cd ZLMediaKit
git submodule update --init #务必执行

安装编译器

sudo apt update
sudo apt install -y build-essential

说明:

  • build-essential 包含了 gccg++make 等常用开发工具,适用于大多数编译需求。
  • 不需要单独安装 gccg++,除非你有特殊版本要求。

cmake

  • ZLMediaKit采用cmake来构建项目,通过cmake才能生成Makefile(或Xcode/VS工程),所以必须先安装cmake才能完成后续步骤。
sudo apt update
sudo apt install -y cmake

构建和编译项目

cd ZLMediaKit
mkdir build
cd build
cmake ..
make

在这里插入图片描述

修改配置文件

config.ini

cd ZLMediaKit/release/linux/Debug

在这里插入图片描述

配置文件相关修改

  1. secret

在这里插入图片描述

  1. mediaServerId

在这里插入图片描述

  1. 端口修改

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

启动项目

cd ZLMediaKit/release/linux/Debug
#通过-h可以了解启动参数
./MediaServer -h
#以守护进程模式启动
nohup ./MediaServer -d -m 3 &

启动成功如下

在这里插入图片描述

2、搭建GB28181协议视频平台

WVP-GB28181-PRO

安装 jdk, nodejs, maven, git

sudo apt update
sudo apt install -y openjdk-8-jdk git maven nodejs npm

项目需要nodejs版本≥16

安装redis

使用 Docker CLI:

docker pull redis:6.2

在这里插入图片描述

启动 Redis 容器

docker run -d \--name redis \--restart unless-stopped \-p 6379:6379 \redis:6.2

参数说明:

参数说明
-d后台运行
--name redis容器名称为 redis
--restart unless-stopped开机自动启动,除非手动停止
-p 6379:6379将主机的 6379 端口映射到容器内 Redis 默认端口
redis:6.2指定镜像和版本

在这里插入图片描述

安装postgresql

使用 Docker CLI:

docker pull postgis/postgis:14-3.3

在这里插入图片描述

启动 postgresql 容器

ocker run --name postgres -d \--restart unless-stopped \-p 55432:5432 \-v ./pg/data:/var/lib/postgresql/data \-v ./backup:/backup \-e POSTGRES_PASSWORD=postgres \-e POSTGRES_USER=postgres \-e POSTGRES_DB=postgres \postgis/postgis:14-3.3

参数说明:

参数说明
--name postgres设置容器名称为 postgres,方便管理(如 docker stop postgres
-d以后台方式运行容器
--restart unless-stopped开机自动启动容器,除非你手动停止过它
-p 55432:5432将主机的 55432 端口映射到容器的 PostgreSQL 默认端口 5432(避免和主机已有 PostgreSQL 冲突)
-v ./pg/data:/var/lib/postgresql/data将 PostgreSQL 数据文件映射到本地 ./pg/data,实现数据持久化
-v ./backup:/backup将容器中的 /backup 目录映射到主机的 ./backup,用于备份数据库
-e POSTGRES_PASSWORD=postgres设置 PostgreSQL 的 postgres 用户密码为 postgres
-e POSTGRES_USER=postgres设置初始化用户名为 postgres
-e POSTGRES_DB=postgres设置初始化数据库名称为 postgres
postgis/postgis:14-3.3使用带有 PostGIS 扩展的 PostgreSQL 14 镜像,PostGIS 版本为 3.3

创建数据库名为wvp273

插入数据SQL

clone代码

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

如果无法拉取镜像,请手动下载 ZIP 包并放置到指定目录下。

编译前端代码

cd wvp-GB28181-pro/web/
npm --registry=https://registry.npmmirror.com install
npm run build:prod

项目需要nodejs版本≥16

编译后端代码

cd wvp-GB28181-pro
mvn package

在这里插入图片描述

如需使用war部署

# 如需使用war部署
cd wvp-GB28181-pro
mvn package -P war

配置文件修改

cd wvp-GB28181-pro/target
# 移动配置文件到当前 target目录下
mv ../src/main/resources/application-dev.yml application.yml 

编辑application.yml

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

启动

nohup java -jar wvp-pro-*.jar &

在这里插入图片描述

3、设备接入测测试

默认使用以下地址访问 WVP 管理界面:

http://192.168.0.44:18080/

默认账号:admin
默认密码:admin

在这里插入图片描述

EasyGBD

通过 EasyGBD 工具可快速模拟或注册 GB28181 设备。

在这里插入图片描述

在这里插入图片描述

成功录入设备示例:

在这里插入图片描述

在这里插入图片描述

OBS推流

推流到 ZLMediaKit(ZLM)时,请务必设置正确的应用名和鉴权信息,否则视频流将无法播放。

OBS 推流地址:

  • 服务器(Server):

    rtmp://192.168.0.44:1935/live
    
  • 串流密钥(Stream Key):

    live?sign=41db35390ddad33f83944f44b8b75ded
    

这样 ZLM 会注册为:

  • 应用名:live
  • 流名:live

当前的 sign 是从 wvp_user 表中 push_key 字段的值生成的,方式是对该值进行 MD5 加密,结果是:41db35390ddad33f83944f44b8b75ded

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

推流成功后,你可以在管理界面中查看流状态:

在这里插入图片描述

在这里插入图片描述

4、附录

sql

/*建表*/
drop table IF EXISTS wvp_device;
create table IF NOT EXISTS wvp_device
(id                                  serial primary key,device_id                           character varying(50) not null,name                                character varying(255),manufacturer                        character varying(255),model                               character varying(255),firmware                            character varying(255),transport                           character varying(50),stream_mode                         character varying(50),on_line                             bool    default false,register_time                       character varying(50),keepalive_time                      character varying(50),ip                                  character varying(50),create_time                         character varying(50),update_time                         character varying(50),port                                integer,expires                             integer,subscribe_cycle_for_catalog         integer DEFAULT 0,subscribe_cycle_for_mobile_position integer DEFAULT 0,mobile_position_submission_interval integer DEFAULT 5,subscribe_cycle_for_alarm           integer DEFAULT 0,host_address                        character varying(50),charset                             character varying(50),ssrc_check                          bool    default false,geo_coord_sys                       character varying(50),media_server_id                     character varying(50) default 'auto',custom_name                         character varying(255),sdp_ip                              character varying(50),local_ip                            character varying(50),password                            character varying(255),as_message_channel                  bool    default false,heart_beat_interval                 integer,heart_beat_count                    integer,position_capability                 integer,broadcast_push_after_ack            bool    default false,server_id                           character varying(50),constraint uk_device_device unique (device_id)
);drop table IF EXISTS wvp_device_alarm;
create table IF NOT EXISTS wvp_device_alarm
(id                serial primary key,device_id         character varying(50) not null,channel_id        character varying(50) not null,alarm_priority    character varying(50),alarm_method      character varying(50),alarm_time        character varying(50),alarm_description character varying(255),longitude         double precision,latitude          double precision,alarm_type        character varying(50),create_time       character varying(50) not null
);drop table IF EXISTS wvp_device_mobile_position;
create table IF NOT EXISTS wvp_device_mobile_position
(id              serial primary key,device_id       character varying(50) not null,channel_id      character varying(50) not null,device_name     character varying(255),time            character varying(50),longitude       double precision,latitude        double precision,altitude        double precision,speed           double precision,direction       double precision,report_source   character varying(50),create_time     character varying(50)
);drop table IF EXISTS wvp_device_channel;
create table IF NOT EXISTS wvp_device_channel
(id                           serial primary key,device_id                    character varying(50),name                         character varying(255),manufacturer                 character varying(50),model                        character varying(50),owner                        character varying(50),civil_code                   character varying(50),block                        character varying(50),address                      character varying(50),parental                     integer,parent_id                    character varying(50),safety_way                   integer,register_way                 integer,cert_num                     character varying(50),certifiable                  integer,err_code                     integer,end_time                     character varying(50),secrecy                      integer,ip_address                   character varying(50),port                         integer,password                     character varying(255),status                       character varying(50),longitude                    double precision,latitude                     double precision,ptz_type                     integer,position_type                integer,room_type                    integer,use_type                     integer,supply_light_type            integer,direction_type               integer,resolution                   character varying(255),business_group_id            character varying(255),download_speed               character varying(255),svc_space_support_mod        integer,svc_time_support_mode        integer,create_time                  character varying(50) not null,update_time                  character varying(50) not null,sub_count                    integer,stream_id                    character varying(255),has_audio                    bool default false,gps_time                     character varying(50),stream_identification        character varying(50),channel_type                 int  default 0        not null,gb_device_id                 character varying(50),gb_name                      character varying(255),gb_manufacturer              character varying(255),gb_model                     character varying(255),gb_owner                     character varying(255),gb_civil_code                character varying(255),gb_block                     character varying(255),gb_address                   character varying(255),gb_parental                  integer,gb_parent_id                 character varying(255),gb_safety_way                integer,gb_register_way              integer,gb_cert_num                  character varying(50),gb_certifiable               integer,gb_err_code                  integer,gb_end_time                  character varying(50),gb_secrecy                   integer,gb_ip_address                character varying(50),gb_port                      integer,gb_password                  character varying(50),gb_status                    character varying(50),gb_longitude                 double precision,gb_latitude                  double precision,gb_business_group_id         character varying(50),gb_ptz_type                  integer,gb_position_type             integer,gb_room_type                 integer,gb_use_type                  integer,gb_supply_light_type         integer,gb_direction_type            integer,gb_resolution                character varying(255),gb_download_speed            character varying(255),gb_svc_space_support_mod     integer,gb_svc_time_support_mode     integer,record_plan_id               integer,data_type                    integer not null,data_device_id               integer not null,gps_speed                    double precision,gps_altitude                 double precision,gps_direction                double precision,constraint uk_wvp_unique_channel unique (gb_device_id)
);CREATE INDEX idx_data_type ON wvp_device_channel (data_type);
CREATE INDEX idx_data_device_id ON wvp_device_channel (data_device_id);drop table IF EXISTS wvp_media_server;
create table IF NOT EXISTS wvp_media_server
(id                  character varying(255) primary key,ip                  character varying(50),hook_ip             character varying(50),sdp_ip              character varying(50),stream_ip           character varying(50),http_port           integer,http_ssl_port       integer,rtmp_port           integer,rtmp_ssl_port       integer,rtp_proxy_port      integer,rtsp_port           integer,rtsp_ssl_port       integer,flv_port            integer,flv_ssl_port        integer,ws_flv_port         integer,ws_flv_ssl_port     integer,auto_config         bool                  default false,secret              character varying(50),type                character varying(50) default 'zlm',rtp_enable          bool                  default false,rtp_port_range      character varying(50),send_rtp_port_range character varying(50),record_assist_port  integer,default_server      bool                  default false,create_time         character varying(50),update_time         character varying(50),hook_alive_interval integer,record_path         character varying(255),record_day          integer               default 7,transcode_suffix    character varying(255),server_id           character varying(50),constraint uk_media_server_unique_ip_http_port unique (ip, http_port, server_id)
);drop table IF EXISTS wvp_platform;
create table IF NOT EXISTS wvp_platform
(id                    serial primary key,enable                bool default false,name                  character varying(255),server_gb_id          character varying(50),server_gb_domain      character varying(50),server_ip             character varying(50),server_port           integer,device_gb_id          character varying(50),device_ip             character varying(50),device_port           character varying(50),username              character varying(255),password              character varying(50),expires               character varying(50),keep_timeout          character varying(50),transport             character varying(50),civil_code            character varying(50),manufacturer          character varying(255),model                 character varying(255),address               character varying(255),character_set         character varying(50),ptz                   bool default false,rtcp                  bool default false,status                bool default false,catalog_group         integer,register_way          integer,secrecy               integer,create_time           character varying(50),update_time           character varying(50),as_message_channel    bool default false,catalog_with_platform integer default 1,catalog_with_group    integer default 1,catalog_with_region   integer default 1,auto_push_channel     bool default true,send_stream_ip        character varying(50),server_id             character varying(50),constraint uk_platform_unique_server_gb_id unique (server_gb_id)
);drop table IF EXISTS wvp_platform_channel;
create table IF NOT EXISTS wvp_platform_channel
(id                           serial primary key,platform_id                  integer,device_channel_id            integer,custom_device_id             character varying(50),custom_name                  character varying(255),custom_manufacturer          character varying(50),custom_model                 character varying(50),custom_owner                 character varying(50),custom_civil_code            character varying(50),custom_block                 character varying(50),custom_address               character varying(50),custom_parental              integer,custom_parent_id             character varying(50),custom_safety_way            integer,custom_register_way          integer,custom_cert_num              character varying(50),custom_certifiable           integer,custom_err_code              integer,custom_end_time              character varying(50),custom_secrecy               integer,custom_ip_address            character varying(50),custom_port                  integer,custom_password              character varying(255),custom_status                character varying(50),custom_longitude             double precision,custom_latitude              double precision,custom_ptz_type              integer,custom_position_type         integer,custom_room_type             integer,custom_use_type              integer,custom_supply_light_type     integer,custom_direction_type        integer,custom_resolution            character varying(255),custom_business_group_id     character varying(255),custom_download_speed        character varying(255),custom_svc_space_support_mod integer,custom_svc_time_support_mode integer,constraint uk_platform_gb_channel_platform_id_catalog_id_device_channel_id unique (platform_id, device_channel_id),constraint uk_platform_gb_channel_device_id unique (custom_device_id)
);drop table IF EXISTS wvp_platform_group;
create table IF NOT EXISTS wvp_platform_group
(id          serial primary key,platform_id integer,group_id    integer,constraint uk_wvp_platform_group_platform_id_group_id unique (platform_id, group_id)
);drop table IF EXISTS wvp_platform_region;
create table IF NOT EXISTS wvp_platform_region
(id          serial primary key,platform_id integer,region_id   integer,constraint uk_wvp_platform_region_platform_id_group_id unique (platform_id, region_id)
);drop table IF EXISTS wvp_stream_proxy;
create table IF NOT EXISTS wvp_stream_proxy
(id                         serial primary key,type                       character varying(50),app                        character varying(255),stream                     character varying(255),src_url                    character varying(255),timeout                    integer,ffmpeg_cmd_key             character varying(255),rtsp_type                  character varying(50),media_server_id            character varying(50),enable_audio               bool default false,enable_mp4                 bool default false,pulling                    bool default false,enable                     bool default false,enable_remove_none_reader  bool default false,create_time                character varying(50),name                       character varying(255),update_time                character varying(50),stream_key                 character varying(255),server_id                  character varying(50),enable_disable_none_reader bool default false,relates_media_server_id    character varying(50),constraint uk_stream_proxy_app_stream unique (app, stream)
);drop table IF EXISTS wvp_stream_push;
create table IF NOT EXISTS wvp_stream_push
(id                 serial primary key,app                character varying(255),stream             character varying(255),create_time        character varying(50),media_server_id    character varying(50),server_id          character varying(50),push_time          character varying(50),status             bool default false,update_time        character varying(50),pushing            bool default false,self               bool default false,start_offline_push bool default true,constraint uk_stream_push_app_stream unique (app, stream)
);drop table IF EXISTS wvp_cloud_record;
create table IF NOT EXISTS wvp_cloud_record
(id              serial primary key,app             character varying(255),stream          character varying(255),call_id         character varying(255),start_time      int8,end_time        int8,media_server_id character varying(50),server_id       character varying(50),file_name       character varying(255),folder          character varying(500),file_path       character varying(500),collect         bool default false,file_size       int8,time_len        double precision
);drop table IF EXISTS wvp_user;
create table IF NOT EXISTS wvp_user
(id          serial primary key,username    character varying(255),password    character varying(255),role_id     integer,create_time character varying(50),update_time character varying(50),push_key    character varying(50),constraint uk_user_username unique (username)
);drop table IF EXISTS wvp_user_role;
create table IF NOT EXISTS wvp_user_role
(id          serial primary key,name        character varying(50),authority   character varying(50),create_time character varying(50),update_time character varying(50)
);drop table IF EXISTS wvp_user_api_key;
create table IF NOT EXISTS wvp_user_api_key
(id          serial primary key,user_id     int8,app         character varying(255),api_key     text,expired_at  int8,remark      character varying(255),enable      bool default true,create_time character varying(50),update_time character varying(50)
);/*初始数据*/
INSERT INTO wvp_user
VALUES (1, 'admin', '21232f297a57a5a743894a0e4a801fc3', 1, '2021-04-13 14:14:57', '2021-04-13 14:14:57','3e80d1762a324d5b0ff636e0bd16f1e3');
INSERT INTO wvp_user_role
VALUES (1, 'admin', '0', '2021-04-13 14:14:57', '2021-04-13 14:14:57');drop table IF EXISTS wvp_common_group;
create table IF NOT EXISTS wvp_common_group
(id               serial primary key,device_id        varchar(50)  NOT NULL,name             varchar(255) NOT NULL,parent_id        int,parent_device_id varchar(50) DEFAULT NULL,business_group   varchar(50)  NOT NULL,create_time      varchar(50)  NOT NULL,update_time      varchar(50)  NOT NULL,civil_code       varchar(50) default null,constraint uk_common_group_device_platform unique (device_id)
);drop table IF EXISTS wvp_common_region;
create table IF NOT EXISTS wvp_common_region
(id               serial primary key,device_id        varchar(50)  NOT NULL,name             varchar(255) NOT NULL,parent_id        int,parent_device_id varchar(50) DEFAULT NULL,create_time      varchar(50)  NOT NULL,update_time      varchar(50)  NOT NULL,constraint uk_common_region_device_id unique (device_id)
);drop table IF EXISTS wvp_record_plan;
create table IF NOT EXISTS wvp_record_plan
(id              serial primary key,snap            bool default false,name            varchar(255) NOT NULL,create_time     character varying(50),update_time     character varying(50)
);drop table IF EXISTS wvp_record_plan_item;
create table IF NOT EXISTS wvp_record_plan_item
(id              serial primary key,"start"           int,stop            int,week_day        int,plan_id        int,create_time     character varying(50),update_time     character varying(50)
);

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

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

相关文章

软件I2C实现(2):I2C协议实现

0 参考资料 I2C 总线规范.pdf 1 I2C协议实现 1.1 SCL、SDA引脚初始化 将SCL、SDA初始化为开漏输出,电平设置为高电平(使用外部上拉电阻拉高)。 /*** @brief 软件I2C初始化** @param sw_i2c_cfg 软件I2C配置指针*/ int sw_i2c_init(sw_i2c_cfg_t *sw_i2c_cfg) {GPIO_InitT…

疯狂星期四文案网第40天运营日记

网站运营第40天,点击观站: 疯狂星期四 crazy-thursday.com 全网最全的疯狂星期四文案网站 运营报告 今日访问量 今日搜索引擎收录情况 必应秒发秒收 百度收录很慢 网站优化点 优化seo 修复已知bug

【大语言模型 01】注意力机制数学推导:从零实现Self-Attention

注意力机制数学推导:从零实现Self-Attention - 开启大语言模型的核心密码 关键词:注意力机制、Self-Attention、Transformer、数学推导、PyTorch实现、大语言模型、深度学习 摘要:本文从数学原理出发,详细推导Self-Attention的完整…

2025 环法战车科技对决!维乐 Angel Glide定义舒适新标

环法赛场不仅是顶尖车手的竞技舞台,更是自行车科技的时尚秀场。然而经常骑行的朋友都知道,当顶级战车遇上专业坐垫,方能成就完美骑行体验。2025 年环法赛场上的新战车们各展神通,而维乐 Angel Glide 坐垫以其独特的科技与设计&…

VS Code配置MinGW64编译ALGLIB库

VS Code用MinGW64编译C代码安装MSYS2软件并配置ALGLIB库和测试引用库代码的完整具体步骤。 1. 安装 MSYS2 下载 MSYS2: 访问 MSYS2 官网下载最新安装包(如 msys2-x86_64-latest.exe) 安装: 运行安装程序,默认路径为 C…

《WINDOWS 环境下32位汇编语言程序设计》第2章 准备编程环境

2.1 Win32可执行文件的开发过程 在DOS下,生成一个可执行文件的步骤比较简单,用编译器将源程序编译为obj文件,再用链接器将obj文件链接成exe文件,不同语言的开发过程都差不多。 DOS可执行文件中的内容是由源程序中所写的代码和数…

kubernetes(4) 微服务

一、什么是微服务在 Kubernetes 中,控制器负责维持业务副本,但真正把业务“暴露”出去的是 Service。 一句话理解:Service 一组 Pod 的稳定访问入口 4 层负载均衡Ingress 7 层路由 统一入口 灰度 / 认证 / 重写等高级能力默认情况下&…

Pandas 2.0 + Arrow 加速、Dask vs Ray、Plotly 可视化:数据分析的未来

在大数据与人工智能时代,数据分析与可视化的技术栈正在快速演进。过去十年,Pandas 几乎是数据科学家的“瑞士军刀”,Matplotlib 和 Seaborn 是最常用的可视化工具。但如今,随着数据规模与分析需求的增长,新的趋势正在出现: Pandas 2.0 引入 Apache Arrow 后端,性能显著提…

windows扩展(外接)显示器位置调节

概述有的时候我们想把屏幕往左或往右拖动,默认情况下,屏幕都是默认往右拖动的,如果想往左拖动,则需要进行设置。具体步骤如下:当然不止这些还可以往上调,下调等多个位置可调至,这里只显示左右调…

【分数求和2】

题目&#xff1a;分数求和&#xff08;1/22/33/44/55/66/77/88/9&#xff09;代码实现&#xff1a;#include <stdio.h>int main(){double sum 0.0;int i;for(i2;i<10;i){sum((i-1.0)/i);}printf("1/22/33/44/55/66/77/88/9%f\n",sum);return 0;} 注&#x…

软件SPI实现(3):SPI协议测试(使用W25Q64)

0 参考资料 SPI通信协议中文版(SPIV3).pdf 1 SPI协议测试(使用W25Q64) 1.1 测试方法 这里使用W25Q64作为SPI从机,测试实现的软件SPI工作是否正常。测试步骤如下: (0)使用SPI模式0 (1)使用sw_spi_tx_rx_nbyte API向W25Q64起始地址0写入32字节数据 (2)使用sw_spi_tx_…

Redis 04 Reactor

Reactor 设计模式是事件驱动的并发处理模式&#xff0c;高效处理多个输入源的请求。多路分解事件&#xff0c;同步分发到处理器。 单线程 reactor 模型 redis6.0 之前采用单线程 reactor 模型。即业务线程完成网络IO及命令处理。 reactor 模型处理三类事件&#xff1a; 连接事件…

基于多分类的工业异常声检测及应用

摘 要 随着工业4.0的快速发展&#xff0c;工业设备的智能化监测与维护成为保障生产安全与效率的关键环节。工业异常声检测作为一种非侵入式、实时性强的监测手段&#xff0c;能够有效识别设备运行中的潜在故障&#xff0c;具有重要的应用价值。本文提出了一种基于多分类的工业…

AirReceiverLite:轻松实现手机隔空投屏

在多设备互联的今天&#xff0c;屏幕镜像功能成为了许多用户在演示、教学、娱乐等场景中的重要需求。AirReceiverLite作为一款运行在Android平台上的应用程序&#xff0c;为用户提供了便捷的解决方案。它允许用户通过AirPlay协议将iPhone、iPad、Macbook等iOS设备以及Windows P…

双指针和codetop复习

双指针和codetop复习1.双指针1.[移动零](https://leetcode.cn/problems/move-zeroes/description/)递归1.[计算布尔二叉树的值](https://leetcode.cn/problems/evaluate-boolean-binary-tree/)2.[Pow(X,n)](https://leetcode.cn/problems/powx-n/)3.[两两交换链表中的节点](htt…

抽丝剥茧丨PostgreSQL 系国产数据库%SYS CPU newfstatat() high 调优一例(一)

最近一个客户从 Oracle 迁移到 PostgreSQL 系的国产数据库后&#xff0c;CPU一直接近100%&#xff0c;但是再仔细分析&#xff0c;发现%system CPU占到60%左右&#xff0c;当然这是一种不正常的现象。之前我写过《如何在 Linux 上诊断高%Sys CPU》&#xff08;https://www.anbo…

[Linux] Linux提权管理 文件权限管理

目录 Linux提权管理 su命令 准备一个用户 sudo命令 sudo配置 Linux文件权限管理 文件系统权限介绍 rwx 权限解读 文件系统权限管理 chmod 命令 针对文件 针对目录 chown chgrp 命令 验证文件权限rwx效果 验证目录权限rwx效果 权限补充说明 管理文件默认权限 u…

Kubernetes(2)pod的管理及优化

【一】Kubernetes 资源管理与操作方式 1.1 资源管理介绍 Kubernetes 把一切抽象为“资源”&#xff0c;用户通过操作资源来管理集群。 集群中运行服务 运行容器&#xff0c;而容器必须放在 Pod 内。 最小管理单元是 Pod&#xff0c;但通常不直接操作 Pod&#xff0c;而是借…

深入剖析 TOTP 算法:基于时间的一次性密码生成机制

标准原文&#xff1a;https://datatracker.ietf.org/doc/html/rfc6238 在数字化时代&#xff0c;信息安全至关重要&#xff0c;身份验证成为保障系统和数据安全的第一道防线。传统的用户名加密码方式已难以应对日益复杂的安全挑战&#xff0c;基于时间的一次性密码&#xff08;…

Centos7 服务管理

注&#xff1a;从Centos7开始systemd代替了init&#xff0c;使用systemd机制来管理服务优势&#xff1a;并行处理所有服务&#xff0c;加速开机流程命令相对简单&#xff1a;所有操作均有systemctl命令来执行服务依赖性检测&#xff1a;systemctl命令启动服务时会自动启动依赖服…