安裝部署_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
英文地址,請注明出處:http://en.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命令啟動服務時會自動啟動依賴服…