当前位置: 首页 > news >正文

视频监控实时接入——以海康威视为例(2023.2.16)

海康威视实时视频监控接入学习 2023.2.16

  • 引言
  • 1、视频协议简介
    • 1.1 RTSP——Real Time Streaming Protocol(实时流传输协议)
    • 1.2 RTMP——Real Time Messaging Protocol(实时消息传输协议)
    • 1.3 HLS——HTTP Live Streaming(基于HTTP的自适应码率流媒体传输协议)
  • 2、海康在线视频接入实例
    • 2.1 查看海康官网API
      • 2.1.1 查看获取监控资源列表接口(接口1)
      • 2.1.2 查看获取取流地址接口(接口2)
    • 2.2 调用接口获取视频流地址
      • 2.2.1 Java 调用(可封装为后端服务供前端js调用)
      • 2.2.2 C++ 调用
      • 2.2.3 JS调用(有待测试)
    • 2.3 实时视频流在线查看
      • 2.3.1 rtsp协议(rtsp://ip:port/BSwvVkAUrG6XAMhIEeIMYb66A84s)
      • 2.3.2 rtmp协议(rtmp://ip:port/livetv/hunantv)
      • 2.3.3 hls协议(http://ip:port/openUrl/AID3VR/live.m3u8)
        • 2.3.3.1 video.js库简介
        • 2.3.3.2 video.js库解析hls视频(.m3u8)
          • 2.3.3.2.1 html 代码
          • 2.3.3.2.2 视频效果
  • 3 总结

引言

        信息时代万物互联、数据共享的发展趋势犹如冬春交替、万象更新一般不可阻挡,与此同时带来的网络及数据安全问题也油然而生,当前视频在线直播、实时安全监控、物联智慧感知在人们的生产和生活中随处可见,极大地体现了计算机硬件、软件和网络等技术的飞速发展。

        不得不承认的是,海康威视在国内视频监控领域无疑是行业翘楚,无论是走在大街上、马路边,还是在大型商超、学校、公园、文娱场所、小区、企业、交通路口,我们都可以看到无处不在的监控设备,如摄像头,那么问题来了,现在需要接入远端视频流,该如何去实现呢?

  1. 第一种做法(简单快速、直接高效、需要一定成本):寻找监控设备厂商,向其咨询相关的SDK,搭建充足的网络及软硬件环境,使用厂商提供的插件来接入在线视频;
  2. 第二种做法(耗时费力、实时性效果和画面质量不一定理想):选择适合监控设备支持的回传视频流协议,网上搜集相关文档或利用开源库实现远端视频流实时回传;
  3. 第三种做法(难度较大、短期较难实现、成本高):开发者寻找相关论文,了解视频协议原理,自己编写解析代码,进行功能封装后实现视频流解析加载。

1、视频协议简介

        除了常见的文本、图片、音频之外,视频作为一种喜闻乐见的数据类型,深受广大用户的喜爱和好评,不但包含画面声音,还支持同步进行播放或者循环回放,甚至可以远程呼叫操控角度。视频文件格式多种多样(如avi、wmv、mpeg、mp4、m4v、mov、asf、flv、f4v、rmvb、rm、3gp、vob等),每类格式的诞生和发展都体现了时代和技术的进步,为了在Windows、Linux、Unix、macOS等多种平台下将视频进行高效集成,需要设计和约定多种视频协议以提高兼容性和可用性,其中常见的视频协议包含rtsp、rtmp和hls等。

1.1 RTSP——Real Time Streaming Protocol(实时流传输协议)

        实时流协议RTSP)是一种应用级网络协议,设计用于通过合适的传输协议复用和打包多媒体传输流(例如交互式媒体、视频和音频)。RTSP在娱乐和通信系统中用于控制流媒体服务器。该协议用于建立和控制端点之间的媒体会话。媒体服务器的客户端发出诸如播放、录制和暂停之类的命令,以便于实时控制从服务器到客户端(视频点播)或从客户端到服务器(语音录制)的媒体流。此外,关于rtsp视频协议的内容,大家可以参考文章[MS-RTSP]: Real-Time Streaming Protocol (RTSP) Windows Media Extensions

1.2 RTMP——Real Time Messaging Protocol(实时消息传输协议)

        实时消息传递协议RTMP)是一种通信技术,它支持通过互联网进行实时视频流传输。它基于传输控制协议TCP)技术,最初由Macromedia为其Flash Player开发,后来被Adobe收购后成为Adobe Flash Player
        最初,RTMP主要用于在托管服务器和视频播放器之间传输内容。就最现代的直播设置而言,RTMP的主要作用是将内容从编码器传送到在线视频主机。这是一个被称为“摄取”的过程。在直播流媒体的新角色背景下,RTMP能够进行低延迟流媒体,这对于实时直播重大事件的广播公司来说是一个重要的优势。它还以最小的缓冲而闻名,这确实增强了用户体验。RTMP流媒体是传递低缓冲区流媒体内容的最佳方式之一,同时也在自适应比特率流和一些网络会议工具中发挥作用。此外,关于rtmp视频协议的内容,大家可以参考文章What is RTMP? The Real-Time Messaging Protocol: What you Need to Know in 2022

1.3 HLS——HTTP Live Streaming(基于HTTP的自适应码率流媒体传输协议)

        HTTP Live Streaming(简称HLS) 是 Apple 实现的基于 HTTP 的自适应比特率流通信协议, 由于采用HTTP 协议和跨平台性而被广泛应用,需要根据网络状况播放当前可播放的具有最佳质量的音视频。关于hls视频协议的内容,大家可以参考文章What is HLS (HTTP Live Streaming) and How Does It Work?和Apple官网发布的文章Understanding the HTTP Live Streaming Architecture,个人觉得讲解得非常详细,有时间的小伙伴可以耐心品读和研究一下🔔🔔🔔。

2、海康在线视频接入实例

        假设前提工作已经做好,采用海康威视的智能监控设备,而且设备已经安装调试、部署成功,为了成功接入在线视频,需要进行以下三个步骤:(1)官网API查看;(2)监控视频取流接口调用;(3)页面展示实时视频

2.1 查看海康官网API

        首先打开海康开放平台,点击上方菜单栏中资源中心->智能应用平台Infovision IoT)->海康开放平台智能应用平台对接指南。

海康开放平台
资源中心
智能应用平台

        之后需要认真阅读指南中的一些术语,其中AppKey/AppSecret(简称ak/sk)较为关键,一对AppKey/AppSecret用于标识一个调用方来进行安全认证,接口调用时需要用到这两个参数加以验证进而跳过casLogin登录;可以看到,监控设备目前仅支持RTSP、RTMP和HLS三种视频协议;当前的接口只支持Java、C++、C#、C这四种语言进行调用。

2.1.1 查看获取监控资源列表接口(接口1)

        打开API列表下的监控资源信息页面,找到分页获取监控点资源接口,可以了解到该接口为POST请求,需要传入页面编号每页条数,返回结果中包含多个监控点组成的列表,每个监控点包含经度、纬度、高度和相机索引码等属性,利用这些信息可以在地图中添加监控点位用以展示相机地址,同时利用相机索引码还可获取到相对应的视频流地址,进而弹出实时监控窗口

获取监控资源列表接口

2.1.2 查看获取取流地址接口(接口2)

        打开API列表下的视频应用服务->视频能力,找到获取监控点预览取流URL接口,可以了解到该接口为POST请求,需要传入相机索引码,对于protocol参数,可以传入rtsp、rtmp和hls三种协议字符串,然后返回结果中包含对应相机的取流地址

获取取流地址接口

2.2 调用接口获取视频流地址

在这里插入图片描述

        在海康官方SDK下载地址页面可根据需要下载相关的插件为自己所用,点击开发指南可查看具体的API调用方法和操作步骤

2.2.1 Java 调用(可封装为后端服务供前端js调用)

在这里插入图片描述

在这里插入图片描述
artemis-http-client.jar下载地址

        这里采用Java代码调用需要依赖artemis-http-client.jar包,由于安全认证库已上传公网仓库,所以可以直接新建Maven工程,在.pom文件中引入依赖;也可以在Maven库网站下载该jar包后,放至Java工程的依赖库中即可;当然更可以利用官网下载的插件OpenAPI安全认证库(Java)

调用示例代码如下:

import com.hikvision.artemis.sdk.ArtemisHttpUtil;
import com.hikvision.artemis.sdk.config.ArtemisConfig;
import java.util.HashMap;
import java.util.Map;public class GetCameraPreviewURL {public static String GetCameraPreviewURL() {/*** STEP1:设置平台参数,根据实际情况,设置host appkey appsecret 三个参数.*/ArtemisConfig.host = "127.0.0.1:443"; // 平台的ip端口ArtemisConfig.appKey = "29180881";  // 密钥appkeyArtemisConfig.appSecret = "XO0wCAYGi4KV70ybjznx";// 密钥appSecret/*** STEP2:设置OpenAPI接口的上下文*/final String ARTEMIS_PATH = "/artemis";/*** STEP3:设置接口的URI地址*/final String previewURLsApi = ARTEMIS_PATH + "/api/video/v1/cameras/previewURLs";Map<String, String> path = new HashMap<String, String>(2) {{put("https://", previewURLsApi);//根据现场环境部署确认是http还是https}};/*** STEP4:设置参数提交方式*/String contentType = "application/json";/*** STEP5:组装请求参数*/JSONObject jsonBody = new JSONObject();jsonBody.put("cameraIndexCode", "748d84750e3a4a5bbad3cd4af9ed5101");jsonBody.put("streamType", 0);jsonBody.put("protocol", "rtsp");jsonBody.put("transmode", 1);jsonBody.put("expand", "streamform=ps");String body = jsonBody.toJSONString();/*** STEP6:调用接口*/String result = ArtemisHttpUtil.doPostStringArtemis(path, body, null, null, contentType , null);// post请求application/json类型参数return result;}public static void main(String[] args) {String result = GetCameraPreviewURL();System.out.println("result结果示例: " + result);}}

2.2.2 C++ 调用

在这里插入图片描述
调用示例代码如下:

#include "iostream"
#include "sstream"#include "HttpUtillib.h"
#include "HttpHeader.h"typedef struct Unit_query_s
{string artemisIp;              // 平台的ip地址(必填)int artemisPort;               // 平台的Port(必填)string appKey;                 // 密钥的appKey(必填)string appSecret;              // 密钥的appSecret(必填)}Unit_query_t;
/*示例1:(Post)获取当前AppKey的合作方对应监控点列表*/
string FindIndexCodesOfAppKey(Unit_query_t query)
{std::stringstream  ss;ss << "http://" << query.artemisIp << ":" << query.artemisPort<< "/artemis/api/resource/v1/camera/advance/cameraList";map<string, string> headers;//(必填的Http头)根据期望的Response内容类型设置headers.insert(std::make_pair(HttpHeader::HTTP_HEADER_ACCEPT, "application/json"));headers.insert(std::make_pair(HttpHeader::HTTP_HEADER_CONTENT_TYPE, "application/json;charset=UTF-8"));list<string> signHeaderPrefixList;char strBody[1024] = { 0 };sprintf_s(strBody, 1024, "{\"pageNo\":%d,\"pageSize\":%d}", 1, 100);return HttpPost(ss.str(), headers, strBody, query.appKey, query.appSecret, 30, signHeaderPrefixList);
}int main()
{Unit_query_t myQuery;myQuery.appKey = "26018161";myQuery.appSecret = "tdxjiS8bNXZTOf80ymWw";myQuery.artemisIp = "x.x.x.x";myQuery.artemisPort = 80;//1 Poststd::string str1 = FindIndexCodesOfAppKey(myQuery);std::cout << str1 << std::endl << std::endl;system("pause");return 0;
}

2.2.3 JS调用(有待测试)

        在Github搜索artemis-http-client会出现一个nodejs封装的HIKVISION artemis-http-client nodejs SDK,不过这个代码的时效性不够,可能不会随官网更新而改变,因此其中的功能有待验证,由于时间较紧,还是未能加以测试,有时间的小伙伴可以尝试着学习研究👍👍👍。


调用代码示例:

const co = require('co');
const {Client}  = require('artemis-http-client');//new Client(appKey, appSecret)
const client = new Client('23967750', 'BZcz3VlqL1DVhWeF1boE');//GET
co(function* () {var url = 'https://open8200.hikvision.com/artemis/api/artemis/v1/minus';var result = yield client.get(url, {query: {'a': 1,'b': 1},headers: {accept: 'application/json','content-type':'text/plain;charset=UTF-8'}});console.log(JSON.stringify(result));}).catch((error)=>{//请求错误信息console.log(JSON.stringify(error.message));});//POST
co(function* () {var url = 'https://open8200.hikvision.com/artemis/api/artemis/v1/plus';var result = yield client.post(url, {headers: {'content-type': "application/x-www-form-urlencoded;charset=UTF-8"},data: {'a': 1,'b': 1}});console.log(JSON.stringify(result));}).catch((error)=>{//请求错误信息console.log(JSON.stringify(error.message));});

2.3 实时视频流在线查看

2.3.1 rtsp协议(rtsp://ip:port/BSwvVkAUrG6XAMhIEeIMYb66A84s)

        对于rtsp协议的视频流地址,建议采用官方插件,在客户端安装完成后使用。

2.3.2 rtmp协议(rtmp://ip:port/livetv/hunantv)

        对于rtmp协议的视频流地址,可以参考vue-rtmp-cli3.0,但需要客户端的浏览器支持Flash,依赖于Flash插件,有兴趣的小伙伴可以研究一下。

在这里插入图片描述

2.3.3 hls协议(http://ip:port/openUrl/AID3VR/live.m3u8)

        对于hls协议的视频流地址,可以采用video.js库进行实时播放。

2.3.3.1 video.js库简介

        video.js库是一个为HTML5世界从头开始构建的网络视频播放器。它支持HTML5视频和媒体源扩展,以及其他播放技术,如YouTubeVimeo(通过插件)。它支持桌面和移动设备上的视频播放。该项目于2010年中期开始,目前该播放器在超过700000个网站上使用。具体使用教程可参考videojs快速开始。

在这里插入图片描述

2.3.3.2 video.js库解析hls视频(.m3u8)

        利用video.js库可在html静态网页中直接接入hls在线视频,这里分别以m3u8在线url1和m3u8在线url2两个在线实例来进行测试。

2.3.3.2.1 html 代码

video.js调用hls视频实例html代码:

<!DOCTYPE html>
<html>
<head><meta charset=utf-8 /><title>videojs-jjg-online</title><link href="https://vjs.zencdn.net/8.0.4/video-js.css" rel="stylesheet"><script src="https://vjs.zencdn.net/8.0.4/video.min.js"></script>
</head>
<body><h1 style="margin-left:25%;">在线视频(hls-m3ub格式)------<strong style="color:blue;">By jing_zhong 2023.2.16</strong></h1><div style="width:100%;height:90%"><video id="myVideo" class="video-js vjs-default-skin" controls preload="auto" height="770px" width="1720px" height="auto" data-setup='{}'><!--<source src="https://v7.dious.cc/20220807/YeSnYrwi/index.m3u8" type="application/x-mpegURL">--><source src="https://v7.dious.cc/20220802/qyRQEXdQ/index.m3u8" type="application/x-mpegURL"></video></div><script>var myVideo = videojs('myVideo',{ autoplay: true, // 设置自动播放controls: true, // 显示播放的控件preload: "auto", // 预加载muted: true, // 设置了它为true,才可实现自动播放,同时视频也被静音 (Chrome66及以上版本,禁止音视频的自动播放)bigPlayButton : true, textTrackDisplay : false, posterImage: false,errorDisplay : true,controlBar: { volumePanel:{ inline:false}},// playbackRates: [0.5,1,1.25,1.5,2],
},function(){ this.on('error',function(){ myVideo.errorDisplay.close()alert('抱歉,视频地址解析错误≥﹏≤ \n 请检查视频链接地址是否正确')}) 
}
)</script></body>
</html>
2.3.3.2.2 视频效果

在这里插入图片描述

视频1接入效果

在这里插入图片描述

视频2接入效果

3 总结

        交通、安防、视频直播、在线会议、网络带货等领域都需要将视频流快速转发以便客户端接入,希望给用户带来极致的服务体验。当然,如果有条件的话,还是建议到海康官网下载视频插件,然后利用官方SDK解析RTSP和RTMP等协议的视频流,在客户端或浏览器安装好视频插件,这样会比HLS协议的视频流传输效果更加快速、响应时间更短。

本文旨在学习视频实时接入方法,分享个人学习心得,希望与广大开发者共同交流思想,切勿用于非法商业用途!!!

相关文章:

视频监控实时接入——以海康威视为例(2023.2.16)

海康威视实时视频监控接入学习 2023.2.16引言1、视频协议简介1.1 RTSP——Real Time Streaming Protocol&#xff08;实时流传输协议&#xff09;1.2 RTMP——Real Time Messaging Protocol&#xff08;实时消息传输协议&#xff09;1.3 HLS——HTTP Live Streaming&#xff08…...

推荐系统[一]:超详细知识介绍,一份完整的入门指南,解答推荐系统是什么。

1. 推荐算法的初步理解 如果说互联网的目标就是连接一切,那么推荐系统的作用就是建立更加有效率的连接,推荐系统可以更有效率的连接用户与内容和服务,节约了大量的时间和成本。 1.1 推荐系统主要解决问题 任务一:挖掘长尾:帮助用户找到想要的物品(音乐、商品、新闻),…...

新手小白入门必看!如何批量注册Twitter账号?

Twitter是目前海外比较流行的社媒营销平台&#xff0c;所以很多从事跨境电商行业的朋友都需要利用多个Twitter账号来推广营销&#xff0c;但是注册和管理多个Twitter账号其实并不是简单的事情。龙哥将会在这里详细讲讲该如何批量注册并且让这些账号不会因为关联被封号&#xff…...

虚拟环境的创建以及labelme的使用教程

本来打算是将这两部分分开的&#xff0c;但写完虚拟环境的创建似乎字数太少了&#xff0c;不过二者有关联&#xff0c;所以就放一起了。简单介绍一下&#xff0c;虚拟环境的创建有win11系统已经Ubuntu系统&#xff0c;labelme教程包括了下载及其使用的全部流程&#xff0c;以及…...

CSS中的BFC详细讲解(易懂)

带你用最简单的方式理解最全面的BFC~~~1.先了解最常见定位方案普通流元素按照其在 HTML 中的先后位置至上而下布局行内元素水平排列&#xff0c;直到当行被占满然后换行&#xff0c;块级元素则会被渲染为完整的一个新行所有元素默认都是普通流定位浮动元素首先按照普通流的位置…...

华为3面,官网显示面试通过了...开始泡池子,进入漫长等待期

背景&#xff1a; 现在双非本科&#xff0c;非计算机科班&#xff0c;有算法方面的奖&#xff0c;有嵌入式开发经历&#xff0c;官网显示面试通过&#xff0c;短信说录用情况在十个工作日内告知&#xff0c;看别人的说法应该是泡池子了。 全程视频面试&#xff0c;一天面完三…...

【新2023】华为OD机试 - 构成的正方形数量(Python)

构成的正方形数量 题目 输入 N 个互不相同的二维整数坐标, 求这 N 个坐标可以构成的正方形数量。(内积为零的两个向量垂直) 输入 第一行输入为 N,N 代表坐标数量,N为正整数。N <= 100 之后的 K 行输入为坐标 x y以空格分隔,x, y 为整数, -10 <= x, y <= 10 输…...

ElasticSearch之RestClient操作索引库和文档

前言&#xff1a;上文介绍了使用DSL语言操作索引库和文档&#xff0c;本篇文章将介绍使用Java中的RestClient来对索引库和文档进行操作。 希望能够加深自己的印象以及帮助到其他的小伙伴儿们&#x1f609;&#x1f609;。 如果文章有什么需要改进的地方还请大佬不吝赐教&#x…...

Lp正则化

一、L1 和 L2范数&#xff08;norm&#xff09;A norm is a mathematical thing that is applied to a vector. The norm of a vector maps vector values to values in [0,∞). In machine learning, norms are useful because they are used to express distances: this vect…...

云原生 -- Docker进阶(Docker-compose,Docker网络简单介绍)

Dockerfile的构建过程 每条保留字段必须为大写字母。Dockerfile每行只支持一条指令&#xff0c;但是每条指令可以带多个参数&#xff0c;并且每条保留字指令后面至少要带有一个参数。从上到下依次执行。每条指令都会创建一个新的镜像层&#xff0c;并提交新的镜像。 大致流程…...

taskset命令:让进程运行在指定CPU上

1. 操作场景 taskset命令&#xff0c;可用于进程的CPU调优&#xff0c;可以把云服务器上运行的某个进程&#xff0c;指定在某个CPU上工作。 本节操作指导用户使用taskset命令让进程运行在指定CPU上。 2. 操作步骤 2.1. 执行如下命令&#xff0c;查看云服务器CPU核数。 cat …...

Pod基本概念与Pod应用生命周期

Pod是一个逻辑抽象概念&#xff0c;kubernetes创建和管理的最小单元&#xff0c;一个Pod由一个容器或多个容器组成。特点&#xff1a;一个Pod可以理解为是一个应用实例&#xff0c;提供服务Pod中容器始终部署在一个Node上Pod中容器共享网络、存储资源Pod主要用法&#xff1a;运…...

DDL 数据定义语言

DDL 数据定义语言 目录概述一、库的管理1、库的创建2、库的修改【一般不修改&#xff0c;容易出现错误】3、库的删除二、表的管理【重要】1、表的创建2、表的修改3、表的删除4、表的复制 【可以跨库复制】练习题概述 数据定义语言 库和表的管理 一、库的管理 创建、修改、删除…...

设计模式概述

1. 概念 设计模式概念的提出&#xff1a;   设计模式最早于1977年在建筑设计行业中被 克里斯托夫亚历山大&#xff08;Christopher Alexander&#xff09; 在他的著作 《建筑模式语言&#xff1a;城镇、建筑、构造》 中提出。   软件工程界在1990年开始了设计模式话题的研…...

华为OD机试 - 箱子之形摆放(Python)| 真题+思路+考点+代码+岗位

箱子之形摆放 题目 有一批箱子(形式为字符串,设为str), 要求将这批箱子按从上到下以之字形的顺序摆放在宽度为 n 的空地,请输出箱子的摆放位置。 例如:箱子ABCDEFG,空地宽度为3,摆放结果如图: 则输出结果为: AFG BE CD 输入 输入一行字符串,通过空格分隔,前面部…...

第九章:创建用户和用户权限

Windows&#xff1a;创建用户&#xff1a;第一种方法创建用户&#xff1a;先点右上角的工具&#xff0c;然后点击AD用户和计算机双击skills.com打开目录&#xff0c;再双击Users&#xff0c;进入文件夹中在右框中右击空白处&#xff0c;新建用户填充好用户信息后点击下一步然后…...

如何制定人生目标

一、如何分解目标 人生终极目标并不一定要多详细精确&#xff0c;但一定要被分解&#xff0c;要分成长期目标、中期目标和一系列的短期目标&#xff0c;其中短期目标又可以分解为你能够马上操作的一个个的小目标。 二、目标制定的原则 目标制定遵循 SMART-W 原则&#xff1a; …...

用户认证概述

文章目录一、用户身份认证1.1 单一服务器模式1.2 SSO&#xff08;Single Sign On&#xff09;模式1.3 Token模式二、JWT令牌2.1 JWT 令牌说明2.2 JWT令牌的组成2.3 JWT 问题和趋势2.4 JWT 测试一、用户身份认证 1.1 单一服务器模式 一般过程如下&#xff1a; 用户向服务器发送…...

XQuery FLWOR + HTML

XML 实例文档 我们将在下面的例子中继续使用这个 "books.xml" 文档&#xff08;与上一节中的文件相同&#xff09;。 在您的浏览器中查看 "books.xml" 文件。 在一个 HTML 列表中提交结果 请看下面的 XQuery FLWOR 表达式&#xff1a; for $x in doc(&…...

MySQL用户管理

文章目录MySQL用户管理用户用户信息创建用户修改用户密码删除用户数据库的权限MySQL中的权限给用户授权回收权限MySQL用户管理 与Linux操作系统类似&#xff0c;MySQL中也有超级用户和普通用户之分。如果一个用户只需要访问MySQL中的某一个数据库&#xff0c;甚至数据库中的某…...

C++【模板初阶】

✨个人主页&#xff1a; Yohifo &#x1f389;所属专栏&#xff1a; C修行之路 &#x1f38a;每篇一句&#xff1a; 图片来源 No one saves us but ourselves, no one can and no one may. We ourselves must walk the path. 除了我们自己&#xff0c;没有人能拯救我们&#xf…...

华为OD机试 - 磁盘容量(Python)| 真题+思路+考点+代码+岗位

磁盘容量 题目 磁盘的容量单位常用的有M、G、T 他们之间的换算关系为1T =1024G,1G=1024M 现在给定n块磁盘的容量,请对他们按从小到大的顺序进行稳定排序 例如给定5块盘的容量 5 1T 20M 3G 10G6T 3M12G9M 排序后的结果为 20M 3G 3M12G9M 1T 10G6T 注意单位可以重复出现 上述…...

更专业、安全、可控!政企都选择WorkPlus私有化部署

现如今政企机构在信息化建设的过程中&#xff0c;内部的沟通协作都离不开即时通讯软件。但大多数企业使用的即时通讯软件都是Saas部署的&#xff0c;虽然使用Saas部署产品成本低&#xff0c;又方便快捷&#xff0c;但还是建议企业有条件最好使用私有化部署的即时通讯软件&#…...

[SDX12] X12 USB to LTE IPA概率不生效问题分析及优化策略

问题描述 在测试USB to LTE的流量过程中,发现IPA概率失效,正常可以跑到320Mbps,但是跑流1分钟左右会出现IPA失效及跑流掉坑的情况。 问题log dmesg log 3,1862,149793394,-;ipa ipa3_ioctl:3564 using obselete command: IPA_IOC_RM_ADD_DEPENDENCY 3,1863,149793549,-;ipa …...

mysql8.0(单表查询与多表拆线)

目录 单表查询 1、显示所有职工的基本信息。 2、查询所有职工所属部门的部门号&#xff0c;不显示重复的部门号。 3、求出所有职工的人数。 4、列出最高工资和最低工资。 5、列出职工的平均工资和总工资。 6、创建一个只有职工号、姓名和工作时间的新表&…...

用于汽车传感器的混合点云语义压缩:性能评估

Hybrid Point Cloud Semantic Compression for Automotive Sensors: A Performance Evaluation https://arxiv.org/pdf/2103.03819.pdf 在自动驾驶中&#xff0c;车辆与车辆之间的信息共享起着重要作用。在所有传感器中&#xff0c;激光雷达产生的3D点云的数据量通常较高。因…...

最流行十大在线客服系统排行榜-市场常见客服系统软件排行-2023最新

2023年榜单规则依据 在线客服系统十大品牌榜数据由CNPP品牌榜中榜大数据「研究院」和CN10排排榜技术「研究院」通过资料收集整理&#xff0c;并基于大数据统计及人为根据市场和参数条件变化的分析研究专业测评而得出&#xff0c;是大数据、云计算、数据统计真实客观呈现的结果&…...

算法笔记(六)—— 二叉树相关概念及经典算法题

二叉树的相关概念&#xff08;判断方式&#xff09; 1. 搜索二叉树&#xff1a;对每棵子树&#xff0c;左树比头小&#xff0c;右树比头大。 中序遍历&#xff0c;判断是否升序 2. 完全二叉树&#xff1a;最后一层满或从左到右遍满。 宽度遍历&#xff0c;如果有节点有右孩子…...

redux全网最详细教程

一.路由懒加载 关键点&#xff1a; lazy懒加载 Suspense组件&#xff08;添加加载提示&#xff09; utils文件夹 –LazyLoad.js //lazy懒加载 Suspense 组件&#xff08;添加加载提示&#xff09; import {lazy,Suspense} from react export default function LazyLoad(url)…...

华为OD机试 - 匿名信(Python)| 真题+思路+考点+代码+岗位

匿名信 题目 电视剧《分界线》里面有一个片段,男主为了向警察透露案件细节,且不暴露自己,于是将报刊上的字减下来,剪拼成匿名信。 现在又一名举报人,希望借鉴这种手段,使用英文报刊完成举报操作。 但为了增加文章的混淆度,只需满足每个单词中字母数量一致即可,不关注…...

云南 房地产网站建设/sem竞价开户

创建了超级管理员之后登录http://127.0.0.1:8000/admin/怎么都显示查不到url&#xff0c;查了很多网站也没找到原因&#xff0c;后来想起每次新建项目的时候都会有默认的一个url&#xff0c;而系统找不到admin页面的原因就是没有下面的路径 from django.contrib import admin …...

wordpress图像大小/建站快车

ERP扩充了MIS管理信息系统、MRP制造资源计划的管理范围&#xff0c;对供应链上的所有环节进行有效管理&#xff0c;追求企业资源的合理高效利用。CRM&#xff1a;以客户为中心。支柱性功能: 市场营销和客户服务。共享的客户资料库把市场营销和客户服务连接起来。供应链&#xf…...

信阳专业做网站公司/怎么做百度关键词排名

一、赛题解读 1、赛题分析 赛题任务需要对添加了水印的图像&#xff0c;将水印擦除掉&#xff0c;还原原本的图的样子(图1)。 与手写文字擦除任务(图2)一个比较大的区别是&#xff1a;水印占据面积很大&#xff0c;因此对水印擦除后&#xff0c;还需要对被擦除的区域进行一个填…...

网站流量10g/app开发平台开发

一、拼多多做直播的目的&#xff1f;1、拼多多直播毋庸置疑是为了服务商家&#xff0c;帮助商家快速变现&#xff1b;2、丰富商家的营销玩法&#xff0c;目前5g时代&#xff0c;直播势在必行&#xff1b;3、为了加大促进私域流量的一个转换&#xff1b;4、无论是中小型还是头部…...

广州做网站信科建设/网站一键生成

学习Excel技术&#xff0c;关注微信公众号&#xff1a;excelperfect在开始阅读本文前&#xff0c;请先学习下列内容&#xff1a;Excel实战技巧66&#xff1a;创建向导样式的数据输入窗体1Excel实战技巧66&#xff1a;创建向导样式的数据输入窗体2Excel实战技巧66&#xff1a;创…...

wordpress 2012主题/超级seo外链工具

node当使用node获取GBK编码的数据时&#xff0c;nodejs仅仅支持utf-8&#xff0c;node没有提供转换编码的原生支持&#xff0c;有倒是有一个模块iconv能干这个事&#xff0c;但须要本地方法&#xff0c;VC库的支持。国外有个大牛写了一个纯粹用Javascript解码的模块&#xff1a…...