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

实时通信协议概述:WebRTC、RTP/RTCP、RTMP、HLS 和 FLV 的比较与应用

文章目录

    • 一、协议总览
    • 二、WebRTC
      • 2.1 时序图
      • 2.2 代码示例
    • 三、RTP/RTCP
      • 3.1 时序图
      • 3.2 代码示例
    • 四、RTMP
      • 4.1 时序图
      • 4.2 代码示例
    • 五、HLS
      • 5.1 时序图
      • 5.2 代码示例
    • 六、总结

一、协议总览

协议/格式细节对比适用场景用法
WebRTC使用 UDP 传输协议,支持 P2P 通信,可以实现低延迟的实时通信。与其他需要服务器中转的协议相比,WebRTC 可以直接在客户端之间传输数据,降低了延迟和带宽消耗。适用于需要实时交互的场景,如视频会议、在线教育、实时游戏等。WebRTC 提供了 JavaScript API,开发者可以在网页中直接使用这些 API 实现实时通信。
RTP/RTCPRTP 通常使用 UDP 传输协议,可以提供时间戳和序列号,支持数据的同步和重组。与其他协议相比,RTP/RTCP 更专注于实时性,但可能需要更复杂的网络设施来支持。适用于需要实时传输音视频的场景,如视频会议、在线直播等。RTP/RTCP 通常在更底层的网络库中使用,开发者需要有一定的网络知识才能使用。
RTMP使用 TCP 传输协议,可以提供稳定的数据传输,但延迟较高。与其他协议相比,RTMP 更稳定,但实时性较差。适用于需要稳定传输的场景,如在线直播、视频点播等。RTMP 通常在 Flash Player 中使用,但现在也有很多其他的库和工具支持 RTMP。
HLS使用 HTTP 传输协议,通过将流媒体切分为一系列小的文件来传输,可以适应网络状况的变化。与其他协议相比,HLS 更易于通过防火墙,且兼容性更好。适用于各种网络状况下的流媒体传输,如在线直播、视频点播等。HLS 可以在所有支持 HTTP 和 M3U8 播放列表的播放器中使用。
FLVFLV 是 Adobe 开发的格式,通常与 Flash Player 和 RTMP 一起使用。与 MP4 相比,FLV 的兼容性较差。适用于视频点播、存储和分享等场景。FLV 可以在大多数媒体播放器和网页播放器中播放。
MP4MP4 是一种国际标准格式,支持多种编码和多种数据类型。与 FLV 相比,MP4 兼容性更好,支持的编码和数据类型也更多。适用于视频点播、存储和分享等场景。MP4 可以在大多数媒体播放器和网页播放器中播放。

二、WebRTC

2.1 时序图

简化的 WebRTC 信令过程的时序图如下:

对等端 A 信令服务器 对等端 B 创建 Offer 转发 Offer 创建 Answer 转发 Answer 发送 ICE 候选 转发 ICE 候选 发送 ICE 候选 转发 ICE 候选 对等端 A 信令服务器 对等端 B

这个图展示了一个基本的 WebRTC 信令过程,包括创建 offer、创建 answer 和交换 ICE 候选。

2.2 代码示例

下面是使用 WebRTC API 的 JavaScript 代码示例:

// 创建 RTCPeerConnection 对象
var pc = new RTCPeerConnection();// 当本地 ICE agent 需要通过信令服务器传递信息给其他对等端时,会触发 icecandidate 事件
pc.onicecandidate = function(event) {if (event.candidate) {// 发送 ICE 候选到其他对等端}
};// 当远程流添加到连接时,会触发 track 事件
pc.ontrack = function(event) {// 使用 event.streams[0] 显示远程视频流
};// 添加本地流到连接
pc.addTrack(localStream.getTracks()[0], localStream);// 创建并发送 offer
pc.createOffer().then(function(offer) {return pc.setLocalDescription(offer);
}).then(function() {// 发送本地描述(offer)到远程对等端
}).catch(function(error) {// 处理错误
});

这个代码示例展示了如何创建 RTCPeerConnection 对象,如何处理 ICE 候选和远程流,以及如何添加本地流和创建 offer。实际的 WebRTC 应用可能会更复杂,需要处理更多的情况和事件。

三、RTP/RTCP

3.1 时序图

下面是简化的 RTP/RTCP 会话的时序图:

发送端 接收端 发送 RTP 数据包 发送 RTCP 接收报告 发送 RTCP 发送报告 发送端 接收端

这个图展示了一个基本的 RTP/RTCP 会话过程,包括发送 RTP 数据包,以及发送和接收 RTCP 报告。

3.2 代码示例

下面是使用 RTP/RTCP 的 Python 代码示例:

import socket
import struct# 创建 UDP 套接字
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)# RTP 数据包头部格式
rtp_header = struct.pack('!BBHII', 0x80, 0x60, 1, 0, 0)# RTP 负载(例如音频或视频数据)
rtp_payload = b'...'# 创建 RTP 数据包
rtp_packet = rtp_header + rtp_payload# 发送 RTP 数据包
sock.sendto(rtp_packet, ('192.0.2.1', 5004))# RTCP 接收报告头部格式
rtcp_header = struct.pack('!BBHII', 0x81, 0xc9, 1, 0, 0)# RTCP 接收报告负载
rtcp_payload = b'...'# 创建 RTCP 接收报告
rtcp_packet = rtcp_header + rtcp_payload# 发送 RTCP 接收报告
sock.sendto(rtcp_packet, ('192.0.2.1', 5005))

这个代码示例展示了如何创建和发送 RTP 数据包和 RTCP 接收报告。实际的 RTP/RTCP 应用可能会更复杂,需要处理更多的情况和事件。

四、RTMP

4.1 时序图

下面是简化的 RTMP 会话的时序图:

客户端 服务器 发送握手请求 发送握手响应 发送连接命令(connect) 发送连接成功响应(_result) 发送发布流命令(publish) 发送发布流成功响应(onStatus) 发送媒体数据 客户端 服务器

这个图展示了一个基本的 RTMP 会话过程,包括握手、连接、发布流和发送媒体数据。

4.2 代码示例

下面是使用 RTMP 的 Python 代码示例:

import librtmp# 创建 RTMP 连接
conn = librtmp.RTMP("rtmp://example.com/live", live=True)# 连接到服务器
conn.connect()# 创建 RTMP 流
stream = conn.create_stream()# 发送媒体数据
stream.write(b'...')# 关闭连接
conn.close()

这个代码示例展示了如何创建 RTMP 连接,如何连接到服务器,如何创建 RTMP 流,以及如何发送媒体数据。实际的 RTMP 应用可能会更复杂,需要处理更多的情况和事件。

五、HLS

5.1 时序图

下面是简化的 HLS(HTTP Live Streaming)会话的时序图:

客户端 服务器 请求播放列表文件(m3u8) 返回播放列表文件 请求媒体分段文件(ts) 返回媒体分段文件 播放媒体分段 请求下一个媒体分段文件 返回下一个媒体分段文件 继续播放媒体分段 客户端 服务器

这个图展示了一个基本的 HLS 会话过程,包括请求和接收播放列表文件,请求和接收媒体分段文件,以及播放媒体分段。

5.2 代码示例

下面是使用 HLS 的 Python 代码示例:

import requests
import m3u8# 请求播放列表文件
response = requests.get('http://example.com/stream.m3u8')# 解析播放列表文件
playlist = m3u8.loads(response.text)# 请求第一个媒体分段文件
segment = requests.get('http://example.com/' + playlist.segments[0].uri)# 保存媒体分段文件
with open('segment.ts', 'wb') as f:f.write(segment.content)

这个代码示例展示了如何请求和解析播放列表文件,如何请求媒体分段文件,以及如何保存媒体分段文件。实际的 HLS 应用可能会更复杂,需要处理更多的情况和事件。

六、总结

本文对多种实时通信协议进行了详细的比较和分析,包括 WebRTC、RTP/RTCP、RTMP、HLS 和 FLV。每种协议的职责、适用场景和用法都被清晰地列出,并通过时序图和代码示例进一步阐明了其工作原理。WebRTC 适用于低延迟的实时通信,RTP/RTCP 专注于音视频数据的实时传输,RTMP 提供稳定的数据传输,HLS 适应网络变化并易于穿越防火墙,而 FLV 和 MP4 则是常用的视频格式。通过这些信息,开发者可以根据具体需求选择合适的协议。

相关文章:

实时通信协议概述:WebRTC、RTP/RTCP、RTMP、HLS 和 FLV 的比较与应用

文章目录 一、协议总览二、WebRTC2.1 时序图2.2 代码示例 三、RTP/RTCP3.1 时序图3.2 代码示例 四、RTMP4.1 时序图4.2 代码示例 五、HLS5.1 时序图5.2 代码示例 六、总结 一、协议总览 协议/格式细节对比适用场景用法WebRTC使用 UDP 传输协议,支持 P2P 通信&#…...

Vue路由

目录 1. 安装 vue-router 2. 创建 Vue 项目结构 3. 配置路由 4. 在 main.js 中使用路由 5. 在 App.vue 中添加 6. 创建组件 7. 运行你的应用 在 Vue.js 2 中,路由管理通常通过 vue-router 插件来实现。vue-router 是一个官方的路由管理器,允许你…...

uniapp开发微信小程序笔记3-全局配置、导航栏配置、tabBar配置

前言: 本文记录的是微信小程序的全局配置、导航栏配置、tabBar配置 一、全局配置: 可以直接查官方文档:pages.json 页面路由 | uni-app官网,有非常详细的文档说明 都是在 pages.json里面做配置的,我们可以看到已经有…...

Hash table类算法【leetcode】

哈希表中关键码就是数组的索引下标,然后通过下标直接访问数组中的元素 那么哈希表能解决什么问题呢,一般哈希表都是用来快速判断一个元素是否出现集合里。 例如要查询一个名字是否在这所学校里。 要枚举的话时间复杂度是O(n),但如果使用哈希…...

多算法模型(BI-LSTM GRU Mamba ekan xgboost)实现功率预测

概述 本项目旨在通过结合多算法模型网络实现功率预测。包括数据处理、特征工程、模型训练、模型推理和结果输出,最终结果以 JSON 格式返回。 代码地址:代码...

html 图片转svg 并使用svg路径来裁剪html元素

1.png转svg 工具地址: Vectorizer – 免费图像矢量化 打开svg图片,复制其中的path中的d标签的路径 查看生成的svg路径是否正确 在线SVG路径预览工具 - UU在线工具 2.在html中使用svg路径 <svg xmlns"http://www.w3.org/2000/svg" width"318px" height…...

贴代码框架PasteForm特性介绍之select,selects,lselect和reload

简介 PasteForm是贴代码推出的 “新一代CRUD” &#xff0c;基于ABPvNext&#xff0c;目的是通过对Dto的特性的标注&#xff0c;从而实现管理端的统一UI&#xff0c;借助于配套的PasteBuilder代码生成器&#xff0c;你可以快速的为自己的项目构建后台管理端&#xff01;目前管…...

【Redis】实现异步秒杀功能

一、将判断条件提前缓存到redis中 将判断条件缓存到redis中&#xff0c;如果判断成功直接操作redis中的数据&#xff0c;然后将数据写入redis&#xff0c;如果成功返回一个值。然后根据这个值判断是否成功&#xff0c;如果成功把用户id&#xff0c;优惠卷id&#xff0c;订单id存…...

React的API✅

createContext createContext要和useContext配合使用&#xff0c;可以理解为 “React自带的redux或mobx” &#xff0c;事实上redux就是用context来实现的。但是一番操作下来我还是感觉&#xff0c;简单的context对视图的更新的细粒度把控比不上mobx&#xff0c;除非配合memo等…...

2024亚太杯数学建模C题【Development Analyses and Strategies for Pet Industry 】思路详解

C&#xff1a;宠物行业及相关产业的发展分析与战略 随着人们消费观念的发展&#xff0c;宠物行业作为一个新兴产业&#xff0c;正在全球范围内逐渐积聚势头&#xff0c;这得益于快速的经济发展和人均收入的提高。1992年&#xff0c;中国小动物保护协会成立&#xff0c;随后1993…...

使用Notepad++工具去除重复行

使用Notepad工具去除重复行 参考链接&#xff1a;https://blog.csdn.net/londa/article/details/108981396 一 、使用正则表达式 1、对文本进行排序&#xff0c;让重复行排在一起 2、使用正则表达式替换&#xff08;注意&#xff09;^(.*?)$\s?^(?.*^\1$) 在替换时选择正…...

Three.js + AI:AI 算法生成 3D 萤火虫飞舞效果~

AI 驱动 3D 动画 大家好&#xff0c;我是石小石&#xff01;随着 Web 技术的发展&#xff0c;Three.js 成为构建 3D 图形和动画的主流工具。与此同时&#xff0c;人工智能&#xff08;AI&#xff09;在图像处理、动作生成等领域表现出强大能力。将 AI 与 Three.js 结合&#x…...

VScode clangd插件安装

前提 在VScode中写C代码时&#xff0c;总会用到 C/C 这个插件&#xff0c;也就自然而然地使用了这个插件带来的代码跳转和代码提示功能。但是当代码变地很多时&#xff0c;就会变得非常慢。所以经过调查后弃用C/C 插件的这个功能&#xff0c;使用 clangd 这个插件来提示C代码和…...

Swift从0开始学习 对象和类 day3

类&#xff08;Class&#xff09; 是一种类型或模板&#xff0c;描述了对象的特征和行为。对象&#xff08;Object&#xff09; 是类的实例&#xff0c;实际的实体&#xff0c;拥有自己的数据。 新入门的教学都喜欢用“人”来举例为类&#xff0c;在这里我也用“人”吧 //&…...

Linux——从命令行配置网络

1.使用nmcli添加静态网络连接 nmcli con add con-name static-addr \ ifname eth0 type ethernet ipv4.method manual ipv4.dns 172.25.250.220 \ ipv4.addresses 172.25.250.10/24 ipv4.gateway 172.25.250.254 命令概述 这是一条使用 nmcli&#xff08;NetworkManager 命令…...

RabbitMQ实现异步下单与退单

前言&#xff1a; 在电商项目中的支付模块也是一个很重要的模块&#xff0c;其中下订操作以及退订操作就是主要的操作。其次的下单是同步下单&#xff0c;也就是第三方支付、数据库扣减、积分增加、等等其他业务操作&#xff0c;等待全部执行完毕后向用户返回成功响应请求。对…...

[Python] 编程入门:理解变量类型

文章目录 [toc] 整数常见操作 浮点数字符串字符串中混用引号问题字符串长度计算字符串拼接 布尔类型动态类型特性类型转换结语 收录专栏&#xff1a;[Python] 在编程中&#xff0c;变量是用于存储数据的容器&#xff0c;而不同的变量类型则用来存储不同种类的数据。Python 与 C…...

C++ —— 剑斩旧我 破茧成蝶—C++11

江河入海&#xff0c;知识涌动&#xff0c;这是我参与江海计划的第2篇。 目录 1. C11的发展历史 2. 列表初始化 2.1 C98传统的{} 2.2 C11中的{} 2.3 C11中的std::initializer_list 3. 右值引用和移动语义 3.1 左值和右值 3.2 左值引用和右值引用 3.3 引用延长生命周期…...

Perl 简介

Perl 简介 Perl 是一种高级、通用、解释型、动态编程语言。由 Larry Wall 于 1987 年首次发布&#xff0c;它结合了 C、sed、awk 和 shell 脚本语言的特性。Perl 最初被设计用于文本处理&#xff0c;如报告生成和文件转换&#xff0c;但随着时间的推移&#xff0c;它已经发展成…...

Transformer中的Self-Attention机制如何自然地适应于目标检测任务

Transformer中的Self-Attention机制如何自然地适应于目标检测任务&#xff1a; 特征图的降维与重塑 首先&#xff0c;Backbone&#xff08;如ResNet、VGG等&#xff09;会输出一个特征图&#xff0c;这个特征图通常具有较高的通道数、高度和宽度&#xff08;例如CHW&#xff…...

【Linux篇】初学Linux,如何快速搭建Linux开发环境

文章目录 前言1. Linux背景介绍1.1 UNIX的发展历史1.2 Linux的发展历史 2. 企业应用现状3. 开源3.1 探索Linux源代码3.2 开源 VS 闭源 4. Linux的版本4.1 技术线4.2 商业产品线 5. os概念&#xff0c;定位6. 搭建Linux环境6.1 Linux环境的搭建方式6.2 购买云服务器 7. 使用XShe…...

竞赛思享会 | 2024年第十届数维杯国际数学建模挑战赛D题【代码+演示】

Hello&#xff0c;这里是Easy数模&#xff01;以下idea仅供参考&#xff0c;无偿分享&#xff01; 题目背景 本题旨在通过对中国特定城市的房产、人口、经济、服务设施等数据进行分析&#xff0c;评估其在应对人口老龄化、负增长趋势和极端气候事件中的韧性与可持续发展能力。…...

vim 使用技巧

使用技巧 正常模式&#xff08;Normal Mode&#xff09;插入模式&#xff08;Insert Mode&#xff09;命令模式&#xff08;Command Mode&#xff09; vim常用三种模式包括正常模式&#xff0c;插入模式&#xff0c;命令模式。 正常模式&#xff08;Normal Mode&#xff09; 进…...

CSS-flex布局

flex常用语法 display: flex 父级元素相关 flex-direction 主轴方向【水平方向&#xff08;默认&#xff09;、垂直方向】justify-content 主轴上的对齐方式【flex-end结束对齐、space-between两端对齐、center】align-items 交叉轴的对齐方式【center、flex-end】flex-wrap…...

小R的随机播放顺序

问题描述 小R有一个特殊的随机播放规则。他首先播放歌单中的第一首歌&#xff0c;播放后将其从歌单中移除。如果歌单中还有歌曲&#xff0c;则会将当前第一首歌移到最后一首。这个过程会一直重复&#xff0c;直到歌单中没有任何歌曲。 例如&#xff0c;给定歌单 [5, 3, 2, 1,…...

docker常见命令

1.启动容器 docker run 运行容器 docker run -d 守护线程运行容器 docker run -p 80:80 指定端口运行容器&#xff0c;左侧为服务器端口&#xff0c;右侧为容器端口 docker run --rm 停止容器后销毁 docker --name 指定容器名称 2.停止容器 docker stop (id/name) …...

C语言-指针作为函数返回值及二级指针

1、指针作为函数返回值 c语言允许函数的返回值是一个指针&#xff08;地址&#xff09;我们将这样的函数称为指针函数&#xff0c;下面的例子定义一了一个函数strlong&#xff08;&#xff09;&#xff0c;用来返回两个字符串中较长的一个&#xff1a; 1. #include <stdio…...

kotlin

参考资料&#xff1a; 参考资料 1、kotlin编译原理是先编译为class文件&#xff0c;再在java 虚拟机上执行2、变量 var 1 变量 val 2 常量 kotlin存在类型推导机制 var c:Int 1kotlin不存在基本类型&#xff0c;将全部使用对象类型3、函数 fun test(){}fun add(a:Int,b Int…...

【STM32】USART串口数据包

数据包的作用是将一个个单独的数据打包起来&#xff0c;方便进行多字节的数据通信 数据包格式 HEX数据包 文本数据包 数据包接收 HEX数据包接收&#xff08;固定包长&#xff09; 文本数据包接收&#xff08;可变包长&#xff09; 串口收发HEX数据包 接线图 Serial模块 se…...

开源TTS语音克隆神器GPT-SoVITS_V2版本地整合包部署与远程使用生成音频

文章目录 前言1.GPT-SoVITS V2下载2.本地运行GPT-SoVITS V23.简单使用演示4.安装内网穿透工具4.1 创建远程连接公网地址 5. 固定远程访问公网地址 前言 本文主要介绍如何在Windows系统电脑使用整合包一键部署开源TTS语音克隆神器GPT-SoVITS&#xff0c;并结合cpolar内网穿透工…...

echarts 图表resize() 报错Cannot read properties of undefined (reading ‘type‘)

原因是我使用了this.trainChart来接收数据&#xff0c;应该使用let或者var定义trainChart&#xff0c;就不会出现错误了。 错误代码如下&#xff1a; 原本 定义的echarts export default {data() {return {: null}} }现在 var trainChart null export default { }...

寻的制导律:从理论到应用的全景展示(下)

寻的制导律&#xff1a;从理论到应用的全景展示&#xff08;下&#xff09; 第六章 制导系统设计与实现 在制导系统的设计与实现过程中&#xff0c;系统需求分析、硬件与软件架构设计以及实现与测试方法是关键的三个环节。通过系统化的方法论&#xff0c;可以确保制导系统在复…...

ChatGPT 与其他 AI 技术在短视频营销中的技术应用与协同策略

摘要&#xff1a; 本文深入探讨了 ChatGPT 及其他 AI 技术在短视频营销中的应用。从技术层面剖析了这些技术如何助力短视频内容创作、个性化推荐、用户互动以及营销效果评估等多方面&#xff0c;通过具体方法分析、数据引用与大模型工具介绍&#xff0c;旨在为短视频营销领域提…...

使用PSpice进行第一个电路的仿真

1、单击【开始】菜单&#xff0c;选择【OrCAD Capture CIS Lite】。 2、单击【File】>【New】>【Project】。 3、①填入Name下面的文本框&#xff08;提示&#xff1a;项目名称不要出现汉字&#xff09;&#xff1b; ②选择【Analog or Mixed A/D】&#xff1b; ③单击【…...

SparkSQL 对 SQL 查询的优化静态优化和动态优化两大部分介绍

SparkSQL 对 SQL 查询的优化主要分为 静态优化 和 动态优化 两大部分&#xff0c;其中静态优化主要在查询编译时进行&#xff0c;而动态优化则是在查询执行过程中进行。SparkSQL 的优化包括了多种技术&#xff0c;例如 RBO&#xff08;基于规则的优化&#xff09;、CBO&#xf…...

Android 网络请求(二)OKHttp网络通信

学习笔记 OkHttp 是一个非常强大且流行的 HTTP 客户端库&#xff0c;广泛用于 Android 开发中进行网络请求。与 HttpURLConnection 相比&#xff0c;OkHttp 提供了更简单、更高效的 API&#xff0c;特别是在处理复杂的 HTTP 请求时。 如何使用 OkHttp 进行网络请求 以下是使…...

游戏引擎学习第15天

视频参考:https://www.bilibili.com/video/BV1mbUBY7E24 关于游戏中文件输入输出&#xff08;IO&#xff09;操作的讨论。主要分为两类&#xff1a; 只读资产的加载 这部分主要涉及游戏中用于展示和运行的只读资源&#xff0c;例如音乐、音效、美术资源&#xff08;如 3D 模型和…...

【机器学习】聚类算法原理详解

聚类算法 性能度量&#xff1a; 外部指标 jaccard系数&#xff08;简称JC&#xff09;FM指数&#xff08;简称FMI&#xff09;Rand指数&#xff08;简称RI&#xff09; 内部指标 DB指数&#xff08;简称DBI&#xff09;Dunn指数&#xff08;简称DI&#xff09; 距离计算&am…...

android 使用MediaPlayer实现音乐播放--基础介绍

Android 多媒体框架支持播放各种常见媒体类型&#xff0c;因此 可轻松地将音频、视频和图片集成到您的应用中。你可以播放音频或 从存储在应用资源&#xff08;原始资源&#xff09;的媒体文件&#xff08;原始资源&#xff09;中获取独立文件 或从通过网络连接到达的数据流中&…...

【人工智能】PyTorch、TensorFlow 和 Keras 全面解析与对比:深度学习框架的终极指南

文章目录 PyTorch 全面解析2.1 PyTorch 的发展历程2.2 PyTorch 的核心特点2.3 PyTorch 的应用场景 TensorFlow 全面解析3.1 TensorFlow 的发展历程3.2 TensorFlow 的核心特点3.3 TensorFlow 的应用场景 Keras 全面解析4.1 Keras 的发展历程4.2 Keras 的核心特点4.3 Keras 的应用…...

transformer.js(二):关于pipe管道的一切

前面的章节 transformer.js&#xff08;一&#xff09;&#xff1a;这个前端大模型运行框架的可运行环境、使用方式、代码示例以及适合与不适合的场景介绍了transformer.js的应用场景。 pipe 管道&#xff08;Pipeline&#xff09; 作为 Transformer.js 的核心功能之一&#xf…...

django宠物服务管理系统

摘 要 宠物服务管理系统是一种专门为宠物主人和宠物服务提供商设计的软件。它可以帮助用户快速找到附近的宠物医院、宠物美容店、宠物寄养中心等服务提供商&#xff0c;并预订相关服务。该系统还提供了一系列实用的功能。通过使用宠物服务管理系统&#xff0c;用户可以更加方便…...

设计模式的学习思路

学习设计模式确实需要一定的时间和实践&#xff0c;尤其是对于刚入门的人来说&#xff0c;因为一开始可能会感到有些混淆&#xff0c;尤其是当多个设计模式看起来有相似之处时。本博客是博主学习设计模式的思路历程&#xff0c;大家可以一起学习进步。设计模式学习-CSDN博客 1…...

PgSQL即时编译JIT | 第1期 | JIT初识

PgSQL即时编译JIT | 第1期 | JIT初识 JIT是Just-In-Time的缩写&#xff0c;也就是说程序在执行的时候生成可以执行的代码&#xff0c;然后执行它。在介绍JIT之前&#xff0c;需要说下两种执行方式&#xff1a;解释执行和编译执行。其中解释执行是通过解释器&#xff0c;将代码逐…...

比rsync更强大的文件同步工具rclone

背景 多个复制&#xff0c;拷贝&#xff0c;同步文件场景&#xff0c;最大规模的是每次几千万规模的小文件需要从云上对象存储中拉取到本地。其他的诸如定期数据备份&#xff0c;单次性数据备份。 rsync是单线程的&#xff0c;开源的mrsync是多线程的&#xff0c;但适用范围没…...

【eNSP】OSPF、RIP与静态路由互通实验(四)

OSPF、RIP与静态路由互通实验 实验目的实验要求实验步骤步骤 1&#xff1a;配置R1、R2、R3、R4、R5、R6、R7的端口ip步骤 2&#xff1a;配置R1、R2、R3的OSPF动态路由协议步骤 3&#xff1a;配置R3、R4、R5的RIP动态路由协议步骤 4&#xff1a;配置R3作为边界路由器&#xff0c…...

MODBUS TCP转CANOpen网关

Modbus TCP转CANopen网关 型号&#xff1a;SG-TCP-COE-210 产品用途 本网关可以实现将CANOpen接口设备连接到MODBUS TCP网络中&#xff1b;并且用户不需要了解具体的CANOpen和Modbus TCP 协议即可实现将CANOpen设备挂载到MODBUS TCP接口的 PLC上&#xff0c;并和CANOpen设备…...

Figure 02迎重大升级!!人形机器人独角兽[Figure AI]商业化加速

11月19日知名人形机器人独角兽公司【Figure AI】发布公司汽车巨头【宝马】最新合作进展&#xff0c;旗下人形机器人Figure 02在生产线上的性能得到了显著提升&#xff0c;机器人组成自主舰队&#xff0c;依托端到端技术&#xff0c;速度提高了400%&#xff0c;执行任务成功率提…...

Linux tcpdump 详解教程

简介 tcpdump 是一款在 Linux 平台上广泛使用的网络抓包工具。它可以捕获整个 TCP/IP 协议族的数据包&#xff0c;并支持对网络层、协议、主机、端口等进行过滤。tcpdump 提供了强大的过滤功能&#xff0c;允许使用 and、or、not 等逻辑语句来筛选数据包&#xff0c;非常适合用…...

o1的风又吹到多模态,直接吹翻了GPT-4o-mini

开源LLaVA-o1&#xff1a;一个设计用于进行自主多阶段推理的新型VLM。与思维链提示不同&#xff0c;LLaVA-o1独立地参与到总结、视觉解释、逻辑推理和结论生成的顺序阶段。 LLaVA-o1超过了一些更大甚至是闭源模型的性能&#xff0c;例如Gemini-1.5-pro、GPT-4o-mini和Llama-3.…...