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

RTSP协议

1 前言

RTSP协议作为音视频实时监控一个非常重要的协议,具有非常广泛的应用。RTSP由RFC 2326规范化,它允许客户端通过请求不同的媒体资源来控制流媒体服务器。RTSP是一种应用层协议,通常基于TCP连接,用于建立和控制媒体会话。这使得RTSP成为了许多实时流媒体应用的核心组成部分,包括视频会议、IP摄像头、流媒体服务器等。本文将深入探讨RTSP协议的原理、交互流程、高级用法以及如何进行抓包分析。

2 RTSP协议

RTSP协议定义主要是是在RFC2326规定,这是一个文本类的协议,用于控制实时的音视频流的传输协议。

2.1 RTSP协议交互流程

将重点讨论协议协商的过程,RTSP采用的是服务器客户端的模式,一个服务器可以承载多个客户端同时连接。这里需要注意的是服务器一直监听某个端口默认端口554。客户端发起TCP连接后即开始进行RTSP协商。下图是一个基本的RTSP协商流程:
在这里插入图片描述

  1. OPTIONS
    客户端行为:客户端发送OPTIONS请求,以了解服务器支持哪些方法。
    服务器响应:服务器将支持的方法列表包含在响应中,这有助于客户端了解服务器的功能。
  2. DESCRIBE
    客户端行为:客户端发送DESCRIBE请求,以获取关于媒体资源的描述信息,如编码、分辨率等。
    服务器响应:服务器返回媒体资源的描述信息,通常是SDP(会话描述协议)格式,包括媒体流的属性和相关参数。
  3. SETUP
    客户端行为:客户端发送SETUP请求,用于建立媒体会话,指定传输通道,如UDP或TCP,并请求分配端口。
    服务器响应:服务器确认SETUP请求,指定了媒体流的传输通道和端口,允许客户端与服务器建立连接。
  4. PLAY
    客户端行为:客户端发送PLAY请求,以开始媒体流的播放。
    服务器响应:服务器确认PLAY请求,并启动媒体流的传输。
  5. GET_PARAMETER
    客户端行为:客户端发送GET_PARAMETER请求,以获取有关媒体会话的参数信息,如媒体流的播放状态或其他参数。
    服务器响应:服务器通常返回与GET_PARAMETER请求相关的参数信息。
  6. TEARDOWN
    客户端行为:客户端发送TEARDOWN请求,以终止媒体会话,停止播放并释放资源。
    服务器响应:服务器确认TEARDOWN请求,关闭会话并释放与媒体流相关的资源。

2.2 RTSP媒体描述

RTSP协商核心的流程是媒体信息的交换,主要是通过DESCRIBE请求来完成。服务器是通过SDP将媒体信息回复给客户端,这里主要是携带媒体的信息,分为音频和视频两部分。

音频媒体描述字段:

m=(媒体行):指定媒体类型,通常为"audio",以及用于传输媒体的协议和端口号。例如:m=audio 5004 RTP/AVP 0,表示音频流使用RTP协议在端口5004上传
输,媒体格式为0(通常对应PCMU或G.711u编码)。
a=rtpmap(RTP映射):指定RTP负载类型(Payload Type)和媒体格式。例如:a=rtpmap:0 PCMU/8000,表示Payload Type为0的RTP流使用PCMU编码,采样率
为8000Hz。
a=control(控制URL):指定控制媒体流的URL。例如:a=control:audio,表示控制音频流的URL。
a=recvonly(只接收):指定该媒体流为只接收模式,表示该端只接收媒体,不发送。例如:a=recvonly。

视频媒体描述字段:

m=(媒体行):指定媒体类型,通常为"video",以及用于传输媒体的协议和端口号。例如:m=video 5006 RTP/AVP 96,表示视频流使用RTP协议在端口5006上
传输,媒体格式为96(通常对应H.264编码)。
a=rtpmap(RTP映射):指定RTP负载类型(Payload Type)和媒体格式。例如:a=rtpmap:96 H264/90000,表示Payload Type为96的RTP流使用H.264编码,
时钟速率为90000。
a=control(控制URL):指定控制媒体流的URL。例如:a=control:video,表示控制视频流的URL。
a=recvonly(只接收):指定该媒体流为只接收模式,表示该端只接收媒体,不发送。例如:a=recvonly。

这些字段描述了媒体流的基本信息,包括媒体类型、传输协议、端口号、编码格式、时钟速率等。这些描述对于RTSP客户端和服务器之间的媒体会话建立和控制非常重要,因为它们帮助确定如何处理媒体数据以及如何与媒体流进行交互。不同的媒体格式和参数可能会导致不同的媒体流配置。

2.3 RTSP端口协商

SETUP命令的主要作用是建立媒体会话的传输通道,它告知服务器客户端希望使用什么协议和端口来接收媒体流。服务器会响应SETUP请求,确认媒体会话的建立,并提供了实际的传输通道信息,以便客户端开始接收媒体流。
音频SETUP:
客户端:
音频SETUP请求用于建立音频媒体会话的传输通道。以下是音频SETUP请求的一般形式:

SETUP rtsp://server-address/audio-resource RTSP/1.0
CSeq: [Sequence Number]
Transport: RTP/AVP;unicast;client_port=5000-5001
rtsp://server-address/audio-resource:指定音频资源的URL路径。

Transport: RTP/AVP:这部分说明音频传输使用的协议和配置,通常为RTP/AVP,表示使用RTP传输协议。
client_port=5000-5001:客户端指定了用于接收音频的端口范围,即5000到5001,这意味着服务器应该将音频流发送到这个端口范围。
服务器:
服务器将响应音频SETUP请求,确认了传输通道的建立,并提供实际的传输参数,如服务器分配的端口号。

RTSP/1.0 200 OK
CSeq: [与请求中的CSeq相同]
Transport: RTP/AVP;unicast;client_port=5000-5001;server_port=6000-6001

视频SETUP:
客户端:
视频SETUP请求用于建立视频媒体会话的传输通道。以下是视频SETUP请求的一般形式:

SETUP rtsp://server-address/video-resource RTSP/1.0
CSeq: [Sequence Number]
Transport: RTP/AVP;unicast;client_port=6000-6001
rtsp://server-address/video-resource:指定视频资源的URL路径。

Transport: RTP/AVP:这部分说明视频传输使用的协议和配置,通常为RTP/AVP,表示使用RTP传输协议。
client_port=6000-6001:客户端指定了用于接收视频的端口范围,即6000到6001,这意味着服务器应该将视频流发送到这个端口范围。

服务器:
服务器将响应视频SETUP请求,确认了传输通道的建立,并提供实际的传输参数,如服务器分配的端口号。

RTSP/1.0 200 OK
CSeq: [与请求中的CSeq相同]
Transport: RTP/AVP;unicast;client_port=6000-6001;server_port=7000-7001

2.4 RTSP 播放确认

RTSP(实时流媒体传输协议)中的PLAY字段用于启动或继续媒体流的播放。它是RTSP协议的一种请求命令,通常在SETUP之后用于开始媒体流的传输。以下是PLAY字段的详细解释:
客户端:
PLAY命令格式:PLAY命令通常以如下的格式发送到RTSP服务器:

PLAY rtsp://server-address/resource RTSP/1.0
CSeq: [Sequence Number]
Session: [Session ID]
Range: [播放范围]

rtsp://server-address/resource:这是RTSP服务器的地址和媒体资源的路径。客户端通过此URL指定要播放的资源。
RTSP/1.0:指定了使用的RTSP协议版本。
CSeq:用于命令序列的计数器,以确保命令的顺序性和唯一性。
Session:在SETUP请求成功建立媒体会话后,服务器分配的会话ID,以标识正在播放的会话。
Range:可选字段,用于指定播放的时间范围。这允许客户端进行时间范围内的媒体流播放,如跳转到某个时间点或从某个时间点开始播放。
服务器:
PLAY命令的响应通常遵循RTSP协议的响应格式,以确认播放操作并提供相关信息。以下是PLAY响应的一般格式:

RTSP/1.0 200 OK
CSeq: [与请求中的CSeq相同]
Session: [Session ID]
RTP-Info: [媒体信息]

RTSP/1.0 200 OK:这表示服务器成功接受并处理了PLAY请求,通信正常。
CSeq:响应中的CSeq与请求中的CSeq相同,以维护命令的顺序性。
Session:在SETUP请求成功建立媒体会话后,服务器分配的会话ID,以标识正在播放的会话。这个会话ID是客户端和服务器之间识别会话的关键。
RTP-Info:这是一个可选字段,它包含有关媒体流的信息,如媒体流的SSRC(同步信源标识符)和RTP序列号。这些信息可以用于帮助客户端更好地解析和处理媒体流。

2.5 异常流程

在RTSP(实时流媒体传输协议)中,异常流程通常涉及客户端或服务器遇到问题时,通过特定的状态码来表示错误或异常情况。以下是一些常见的RTSP状态码,用于标识异常流程的情况。状态代码的第一位数字定义了响应的类别。这最后两位数字没有任何分类作用。有 5 个
第一个数字的值:具体状态码需要查RFC2326文档。

1xx:信息 - 已收到请求,正在继续处理
2xx:成功 - 操作已成功接收、理解,并接受
3xx:重定向 - 必须采取进一步的操作才能完成请求
4xx:客户端错误 - 请求包含错误语法或无法实现了
5xx:服务器错误 - 服务器未能完成明显的任务有效请求

3 RTSP高级用法

3.1 RTSP over TCP

RTSP over TCP允许使用可靠的TCP连接来进行RTSP握手和媒体传输,与RTSP over UDP相比,具有更高的可靠性和更容易穿越防火墙和代理服务器。在协商过程中,主要差异包括TCP连接的建立,Transport字段的参数以及双工通道的使用。这种方式适用于需要可靠传输和高级控制的实时流媒体应用。RTSP over TCP采用与默认的UDP传输音视频不一样的地方是,音视频也是走服务器端口,比如是554公用一个连接进行数据的传输。协商主要是在SETUP字段上完成。
RTSP over TCP传输格式:

SETUP rtsp://server-address/resource/trackID RTSP/1.0
CSeq: 3
Transport: RTP/AVP/TCP;interleaved=[双数开始的RTP通道号]-[双数开始的RTCP通道号]

注意,RTSP over TCP使用Transport字段的RTP/AVP/TCP参数来指示TCP传输,而interleaved参数指示了双工通道的RTP和RTCP通道号。
RTSP over UDP传输格式

SETUP rtsp://server-address/video-resource RTSP/1.0
CSeq: [Sequence Number]
Transport: RTP/AVP;unicast;client_port=6000-6001

媒体数据封装,RTSP over TCP采用的是Magic头部来进行音视频数据的区分,一般第一个字节是固定的 Magic:0x24;第二个字节是指定媒体的通道,第三和第四个字节是指定RTP包的长度,一般不用,直接用Magic头进行分割。
所描述的 “Interleaved Channel” 头部是一种特定于 RTSP over TCP 的私有协议扩展,用于标识和传输 RTP 和 RTCP 数据。这个头部的格式如下:

第一个字节(byte 1)为 '$',通常用作 Interleaved Channel 的开始标志。
第二个字节(byte 2)用于指示通道的 ID,其取值由 RTSP-SETUP 消息中确定。
通常,0 表示视频的 RTP 数据,1 表示视频的 RTCP 数据,2 表示音频的 RTP 数据,3 表示音频的 RTCP 数据。
第三和第四个字节(byte 3-4)用于指示 RTP 包的长度

4 抓包分析

rtsp协商过程中抓包分析是一个非常重要的手段,很多时候兼容性问题都需要通过wareshark进行抓包分析,首先抓包后第一步是利用流追踪将抓包转换为文本流进一步分析,下面是rtsp over tcp的一个抓包。
在这里插入图片描述
从抓包中可以看出,这里做了两次options操作,第一次没有携带账号密码,服务器回复了401,第二次客户端带上账号密码才协商成功。
RTSP over TCP协商主要体现在SETUP字段。
在这里插入图片描述
下面是一个完整的RTSP over UDP的协商过程:
在这里插入图片描述

OPTIONS rtsp://192.168.88.101:554/ch0 RTSP/1.0
CSeq: 2
User-Agent: LibVLC/3.0.18 (LIVE555 Streaming Media v2016.11.28)RTSP/1.0 200 OK
CSeq: 2
Date: Sun, Jun 25 2023 01:16:55 GMT
Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, GET_PARAMETER, SET_PARAMETERDESCRIBE rtsp://192.168.88.101:554/ch0 RTSP/1.0
CSeq: 3
User-Agent: LibVLC/3.0.18 (LIVE555 Streaming Media v2016.11.28)
Accept: application/sdpRTSP/1.0 200 OK
CSeq: 3
Date: Sun, Jun 25 2023 01:16:55 GMT
Content-Base: rtsp://192.168.88.101/ch0/
Content-Type: application/sdp
Content-Length: 605v=0
o=- 1687655781765442 1 IN IP4 192.168.88.101
s=face recognition live
i=LIVE555 Streaming Media v2023.05.10
t=0 0
a=tool:LIVE555 Streaming Media v2023.05.10
a=type:broadcast
a=control:*
a=range:npt=now-
a=x-qt-text-nam:face recognition live
a=x-qt-text-inf:LIVE555 Streaming Media v2023.05.10
m=video 0 RTP/AVP 96
c=IN IP4 0.0.0.0
b=AS:100
a=rtpmap:96 H264/90000
a=fmtp:96 packetization-mode=1;profile-level-id=640033;sprop-parameter-sets=Z2QAM6zoBQBbJsgAAB9AAAdTBCA=,aO48sA==
a=control:track1
m=audio 0 RTP/AVP 96
c=IN IP4 0.0.0.0
b=AS:100
a=rtpmap:96 PCMA/8000
a=control:track2
SETUP rtsp://192.168.88.101/ch0/track1 RTSP/1.0
CSeq: 4
User-Agent: LibVLC/3.0.18 (LIVE555 Streaming Media v2016.11.28)
Transport: RTP/AVP;unicast;client_port=52624-52625RTSP/1.0 200 OK
CSeq: 4
Date: Sun, Jun 25 2023 01:16:55 GMT
Transport: RTP/AVP;unicast;destination=192.168.88.171;source=192.168.88.101;client_port=52624-52625;server_port=6970-6971
Session: 71F8DA1A;timeout=65SETUP rtsp://192.168.88.101/ch0/track2 RTSP/1.0
CSeq: 5
User-Agent: LibVLC/3.0.18 (LIVE555 Streaming Media v2016.11.28)
Transport: RTP/AVP;unicast;client_port=52626-52627
Session: 71F8DA1ARTSP/1.0 200 OK
CSeq: 5
Date: Sun, Jun 25 2023 01:16:55 GMT
Transport: RTP/AVP;unicast;destination=192.168.88.171;source=192.168.88.101;client_port=52626-52627;server_port=6972-6973
Session: 71F8DA1A;timeout=65PLAY rtsp://192.168.88.101/ch0/ RTSP/1.0
CSeq: 6
User-Agent: LibVLC/3.0.18 (LIVE555 Streaming Media v2016.11.28)
Session: 71F8DA1A
Range: npt=0.000-RTSP/1.0 200 OK
CSeq: 6
Date: Sun, Jun 25 2023 01:16:55 GMT
Range: npt=0.000-
Session: 71F8DA1A
RTP-Info: url=rtsp://192.168.88.101/ch0/track1;seq=50270;rtptime=1941266457,url=rtsp://192.168.88.101/ch0/track2;seq=32464;rtptime=2232875491TEARDOWN rtsp://192.168.88.101/ch0/ RTSP/1.0
CSeq: 7
User-Agent: LibVLC/3.0.18 (LIVE555 Streaming Media v2016.11.28)
Session: 71F8DA1ARTSP/1.0 200 OK
CSeq: 7
Date: Sun, Jun 25 2023 01:17:02 GMT

相关文章:

RTSP协议

1 前言 RTSP协议作为音视频实时监控一个非常重要的协议,具有非常广泛的应用。RTSP由RFC 2326规范化,它允许客户端通过请求不同的媒体资源来控制流媒体服务器。RTSP是一种应用层协议,通常基于TCP连接,用于建立和控制媒体会话。这使…...

Maven系列第6篇:生命周期和插件详解?

maven系列目标:从入门开始开始掌握一个高级开发所需要的maven技能。 这是maven系列第6篇。 整个maven系列的内容前后是有依赖的,如果之前没有接触过maven,建议从第一篇看起,本文尾部有maven完整系列的连接。 前面我们使用maven…...

【通义千问】大模型Qwen GitHub开源工程学习笔记(4)-- 模型的量化与离线部署

摘要: 量化方案基于AutoGPTQ,提供了Int4量化模型,其中包括Qwen-7B-Chat和Qwen-14B-Chat。更新承诺在模型评估效果几乎没有损失的情况下,降低存储要求并提高推理速度。量化是指将模型权重和激活的精度降低以节省存储空间并提高推理速度的过程。AutoGPTQ是一种专有量化工具。…...

2022最新版-李宏毅机器学习深度学习课程-P23 为什么用了验证集结果还是过拟合

用了验证集还有可能会过拟合 这个片段可以从理论上证明这一点 以上整个挑选模型的过程也可以想象为一种训练。 把三个模型导出的最小损失公式看成一个集合,现在要做的就是在这个集合中找到某个h(此处可以视为训练),使得在验证集…...

Spring Cloud Alibaba—Sentinel 控制台安装

1、Sentinel 控制台包含如下功能: 查看机器列表以及健康情况:收集 Sentinel 客户端发送的心跳包,用于判断机器是否在线。 监控 (单机和集群聚合):通过 Sentinel 客户端暴露的监控 API,定期拉取并且聚合应用监控信息,最…...

基于动物迁徙优化的BP神经网络(分类应用) - 附代码

基于动物迁徙优化的BP神经网络(分类应用) - 附代码 文章目录 基于动物迁徙优化的BP神经网络(分类应用) - 附代码1.鸢尾花iris数据介绍2.数据集整理3.动物迁徙优化BP神经网络3.1 BP神经网络参数设置3.2 动物迁徙算法应用 4.测试结果…...

一键搞定!黑群晖虚拟机+内网穿透实现校园公网访问攻略!

文章目录 前言本教程解决的问题是:按照本教程方法操作后,达到的效果是前排提醒: 1. 搭建群晖虚拟机1.1 下载黑群晖文件vmvare虚拟机安装包1.2 安装VMware虚拟机:1.3 解压黑群晖虚拟机文件1.4 虚拟机初始化1.5 没有搜索到黑群晖的解…...

【C语言】——通讯录(静态-动态增长-文件储存)

目录 前言: 一:整体框架 关于通讯录结构体的创建 二:通讯录的功能实现(静态) 2.1初始化通讯录 2.2增加联系人 2.3打印通讯录 2.4删除联系人 2.5 查找联系人 2.6修改联系人 2.7排序联系人 三:通…...

win10安装nginx及简单使用(命令)

下载 下载地址:http://nginx.org/en/download.html 使用 解压 更改配置 conf目录下nginx.conf 修改为未被占用的端口,地址改成你的地址 server {# 监听端口 listen 9010;# 地址 server_name 127.0.0.1;# 静态资源location / {root html;i…...

【农业生产系统模型】基于R语言APSIM模型进阶应用与参数优化、批量模拟实践技术

随着数字农业和智慧农业的发展,基于过程的农业生产系统模型在模拟作物对气候变化的响应与适应、农田管理优化、作物品种和株型筛选、农田固碳和温室气体排放等领域扮演着越来越重要的作用。APSIM (Agricultural Production Systems sIMulator)模型是世界知名的作物生…...

金融数学方法:梯度下降法

1.算法介绍 梯度下降法是一种常用的优化算法,其通过沿着梯度下降的方向迭代寻找局部极小值。如果沿着梯度上升的方向迭代,就可以找到极大值。 在梯度下降法中,我们首先需要选择一个初始点 x 0 x_0 x0​作为起始位置,然后计算当前位…...

1031 查验身份证

一.问题: 一个合法的身份证号码由17位地区、日期编号和顺序编号加1位校验码组成。校验码的计算规则如下: 首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4&#xf…...

如何共享 Android 不同模块的构建配置

最近想重新梳理学习一遍 Android 的各个知识点,于是新建了一个 AndroidStudy 项目仓库,打算每个知识块新建 1 个 module。 类似这样: AndroidStudy (Root Project) ├─app (Module0) ├─CustomView (Module1) ├─KotlinCoroutines (Modul…...

atlas运维中遇到的问题

1、java.lang.NoClassDefFoundError:javax/ws/rs/core/Link$Builder 主要原因:jsr311-api包中javax.ws.rs.core包中没有Link类,而Atlas以HBase作为元数据存储,HBase本身使用的为javax.ws.rs-api包中的core包,其中有Lin…...

06-React的路由

06-React的路由 1.相关理解 1).SPA的理解 单页Web应用(single page web application,SPA)。整个应用只有一个完整的页面。点击页面中的链接不会刷新页面,只会做页面的局部更新。数据都需要通过ajax请求获取, 并在前端异步展现。…...

虹科方案 | 加州理工学院利用HK-TrueNAS开展地震研究

一、客户背景 加州理工学院(CalTech)是世界顶尖的理工类科学研究型学府之一。加州理工学院地震实验室是加州理工学院地质与行星科学部(GPS)的一个分支机构,成立于1921年,自20年代以来一直是世界地震学研究中心,并且几十年来一直是媒体对大地…...

宝塔面板部署express以及MySql项目

第一次在宝塔面板上部署express和MySql项目,部署过程一直跑不通接口,特此记录一下。 在部署的时候,建议第一步把数据库MySql给跑通,中间好多原因是由于数据库的原因给引起的。 一.连接数据库 (1)在宝塔面…...

联盟链学习笔记-网络的创建

联盟链学习笔记 初始网络 下图是初始网络网络N的参考图 排序服务 在定义 网络 N 的时候,第一件事情就是定义一个 排序服务O4。O4 最初被配置并且由组织 R4 的一个管理员来启动,并且由 R4 管理。配置 NC4 包含了描述网络管理能力初始集合的规则。最初在…...

System.Drawing.Common.Bitmap跨平台的替代方案

使用SkiaSharp SkiaSharp是Skia Graphics Library的.Net跨平台实现,它可以在Windows,macOS,Linux,iOS,Android和其他平台上使用。 例如需要Linux版,则安装第一个和第四个: 以下是使用SkiaShar…...

深入理解 Java 泛型

没有泛型是怎样的 了解点 Java 历史的都知道,泛型是从 JDK 1.5 版本添加的特性,在 JDK1.5 之前,Java 很多特性都是没有的例如:泛型、注解、自动装箱和拆箱、可变参数。在介绍泛型之前,我们先来看看,如果没有泛型的世界是怎么样的。 假设有一个 List,我只想把 String 类…...

【基础篇】七、Flink核心概念

文章目录 1、并行度2、并行度的设置3、算子链4、禁用算子链5、任务槽6、任务槽和并行度的关系 1、并行度 要处理的数据量很多时,可以把一个算子的操作(比如前面demo里的flatMap、sum),"复制"多份到多个节点&#xff0c…...

06-Scala面向对象

面向对象编程 ​ Scala是一门完全面向对象的语言,摒弃了Java中很多不是面向对象的语法。 ​ 虽然如此,但其面向对象思想和 Java的面向对象思想还是一致的 Scala包 1)基本语法 Scala中基本的package包语法和 Java 完全一致 例如&#xf…...

【设计模式】单例模式、“多例模式”的实现以及对单例的一些思考

文章目录 1.概述2.单例模式实现代码2.1.饿汉式单例2.2.懒汉式单例2.3.双检锁单例2.4.静态内部类单例2.5.枚举单例 3.对单例的一些思考3.1.是否需要严格的禁止单例被破坏?3.2.懒汉式真的比饿汉式更佳吗?3.3.单例存在的问题 4.其他作用范围的单例模式4.1.线…...

idea 2022 一个工作空间下导入git项目 后 无法导入第二个git项目

idea 2022 一个工作空间下导入git项目 后 无法导入第二个git项目 如图所示 我导入了一个git项目后,菜单栏出现了一个git按钮 找不到 导入git项目的按钮了 方式1、 通过idea设置 打开全局设置 如下图 把git先改为none,保存 保存后就可以看到 VCS按钮 导入…...

泛在电力物联网的关键技术与未来发展策略-安科瑞黄安南

摘要: 文章分析了泛在电力物联网的内涵及其主要特征,针对泛在电力物联网的建设目标、基本构架以及关键技术与未来发展策略进行综合探讨,期待得到专业人士的指点。 关键词: 泛在电力物联网, 网络规划, 网络发展 随着能源革命的不…...

iWall:支持自定义的Mac动态壁纸软件

iWall Mac是一款动态壁纸软件,它可以使用任何格式的漂亮视频(无须转换)、图片、动画、Flash、gif、swf、程序、网页、网站做为您的动态壁纸、动态桌面,并且可以进行交互。 这款软件功能多、使用简单、体积小巧、不占用资源、运行…...

【Docker 内核详解】namespace 资源隔离(四):Mount namespace Network namespace

【Docker 内核详解 - namespace 资源隔离】系列包含: namespace 资源隔离(一):进行 namespace API 操作的 4 种方式namespace 资源隔离(二):UTS namespace & IPC namespacenamespace 资源隔…...

STM32简介

STM32是ST公司基于ARM Cortex-M内核开发的32位微控制器,常应用在嵌入式领域如: 智能车(用stm32做寻迹小车,读取光电传感器或者摄像头数据,然后驱动电机前进和转弯); 无人机(用stm3…...

Yum安装JDK11

一、安装命令 : yum install java-11-openjdk二、执行以下命令来查看 JDK 11 的安装信息: yum list installed | grep java-11-openjdk三、找到 JDK 11 的软件包名称(使用以下命令来查询软件包的安装位置): rpm -ql…...

[HNCTF 2022 WEEK2]ez_ssrf题目解析

这题主要是引入ssrf这个漏洞攻击,本质上没有更深入的考察 本题是需要我们去伪造一个ssrf的请求头去绕过 题目开始给了我们信息让我们去访问index.php fsockopen函数触发ssrf fsockopen() 函数建立与指定主机和端口的 socket 连接。然后,它将传入的 bas…...

做asp动态网站制作流程/建站软件可以不通过网络建设吗

栈与队列就像一对兄弟一样&#xff0c;学习的时候可以一块学习。 栈的特点&#xff1a;先进后出 队列的特点&#xff1a;先进先出 一、头文件 栈的头文件 #include<stack> 队列的头文件 #include<queue> 二、定义 栈的定义&#xff1a;stack<TYPE> s; 队列…...

c2c平台的产品类型/seo短视频网页入口引流

2019独角兽企业重金招聘Python工程师标准>>> import java.io.UnsupportedEncodingException; /** * 转换字符串的编码 */public class ChangeCharset { /** 7位ASCII字符&#xff0c;也叫作ISO646-US、Unicode字符集的基本拉丁块 */ public static final String US_…...

协会工作方案网站建设困难/中国站长之家

hibernate中懒加载和急加载的区别&#xff1f; 1、fetch FetchType.LAZY ----懒加载 在加载一个实体的时候&#xff0c;不会马上从数据库中加载&#xff0c;即从数据库中加载到内存中。 2、fetch FetchType.EAGER ----急加载 在加载一个实体时&#xff0c;会立即从数据库中查…...

直播网站建设重庆/seo网站关键词优化机构

3分钟学会&#xff0c;2种Wincc v14多语言组态&#xff0c;实现工控屏语言切换项目组态效果预览如下方动态图所示&#xff0c;挺好的吧&#xff01;西门子WIncc V14项目多语言组态效果图一&#xff1a;必背技巧1.1&#xff1a;按钮事件组态系统函数修改显示语言(相比于利用VB脚…...

响应式布局网站/互联网项目推广

目录 1 主要内容 共享电站示意图 目标函数 2 部分程序 3 程序结果 4 程序链接 1 主要内容 该程序方法复现《基于共享储能电站的工业用户日前优化经济调度》算例2和算例3&#xff0c;根据共享储能电站的商业运营模式&#xff0c;将共享储能电站应用到工业用户经济优化调度…...

做网站一定要学java吗/网站推广计划书

为了方便读者朋友们自学桌面端编程&#xff0c;本文介绍了一些在线课程。桌面端编程方面的在线课程非常多&#xff0c;更新速度快&#xff0c;读者朋友们也可以在网上自行搜索&#xff0c;选择适合自己的在线课程进行学习。如需要打开课程的网站&#xff0c;请复制课程的网址到…...