webrtc初了解
1. webrtc的简介
一、WebRTC 是什么?
Web Real-Time Communication(网页实时通信),是浏览器原生支持的实时音视频通信技术,无需安装插件或客户端,可直接在浏览器之间实现点对点(P2P)通信。
核心目标:让浏览器具备实时数据传输能力(音视频、文本、文件等),常用于视频会议、直播连麦、在线教育等场景。
二、WebRTC 的角色定位
-
核心在客户端(浏览器)
WebRTC 是 浏览器内置的 API 和协议栈(如 getUserMedia、RTCPeerConnection 等),用于在 客户端之间直接建立实时连接(如音视频流、数据传输)。
举例:当你用浏览器打开腾讯会议时,WebRTC 负责在你的浏览器和对方浏览器之间直接传输音视频数据,无需依赖中间服务器转发(除非无法直连时才通过服务器中转)。 -
需要服务端辅助
虽然 WebRTC 支持客户端直连,但仍需服务端完成以下关键任务:- 信令交互(Signaling):客户端需通过服务端交换连接元数据(如 IP 地址、端口、编解码参数等),这是建立 P2P 连接的前提(类似打电话前先通过短信约定时间)。
- NAT 穿透失败时的中继:若客户端因防火墙限制无法直连,需通过服务端中转数据(此时服务端作为 “中继服务器”)。
- 房间管理、用户鉴权:多人会议场景中,服务端负责管理用户列表、房间创建 / 销毁等逻
** 三、WebRTC架构**
Web API 层:由 W3C 组织编辑制定,是面向 Web 开发者的 JavaScript API,如RTCPeerConnection用于在浏览器间建立直接通讯,DataChannel实现节点间双向数据传输 。通过这些 API,开发者能轻松开发网络视频聊天等 Web 应用。
传输层:
- RTP Stack 协议栈:即 Real - Time Protocol(实时协议) ,用于音视频数据的实时传输。
- STUN/ICE:STUN(Session Traversal Utilities for NAT ,NAT 会话穿越应用程序)和 ICE(Interactive - – Connectivity Establishment ,交互式连通建立)用于建立不同类型网络间的呼叫连接,实现 NAT 穿透。
- SRTP:安全实时传输协议(Secure Real - Time Transport Protocol),对传输的音视频数据进行加密 。
Multiplexing:复用技术,提高传输效率 。
音频引擎(VoiceEngine) :
- 编解码器:iSAC(Internet Speech Audio Codec)是针对 VoIP 和音频流的宽带及超宽带音频编解码器,为默认编解码器;iLBC(Internet Low Bitrate Codec)是 VoIP 音频流的窄带语音编解码器 。
- NetEQ for Voice:具备自适应抖动控制和语音包丢失隐藏算法,可适应网络环境变化,保障音质 。
回声消除(Echo Canceler):消除麦克风采集到的回声 。 - 噪声抑制(Noise Reduction):降低特定背景噪声 。
视频引擎(VideoEngine) :
- VP8 编解码器:是默认视频图像编解码器,针对低延迟设计,适合实时通信 。
- 视频抖动缓冲器(Video jitter buffer):降低视频抖动和数据包丢失带来的不良影响 。
- 图像增强(Image enhancements):对采集图像进行明暗度检测、颜色增强、降噪等处理,提升视频质量 。
四、webRTC的应用场景
- 操作系统兼容:WebRTC 具备跨操作系统的兼容性,在移动平台方面,支持主流的 Android 和 iOS 系统 。在 PC 端,对 Windows、macOS、Linux 等常见操作系统也能很好适配。就像在 Android 手机和平板上可借助相关应用基于 WebRTC 实现实时音视频通话;在 Windows 电脑上用浏览器访问视频会议网站,也能基于 WebRTC 技术进行实时交流。
- 浏览器适配:WebRTC 是浏览器原生支持的技术,主流浏览器如 Chrome、Firefox 等在移动和 PC 端均支持 WebRTC 。这意味着开发者基于 WebRTC 开发的实时通信应用,用户无需额外安装插件,直接在浏览器中就能使用,使用便捷性高。
2 基本概念
2.1 网络基本知识
一、本地链路地址(无网络连接时的IP)
- 存在场景:
当设备未连接路由器或DHCP服务器(如断开网线、未连Wi-Fi)时,系统会自动生成本地链路地址(如IPv4的169.254.x.x
或IPv6的fe80::
开头地址)。
关键点:它不是“没有IP”,而是系统自动分配的临时地址,用于同一链路内(如直连的两台设备)的通信。 - 作用:
- 无需路由器即可实现设备间临时互传文件、共享资源。
- 提示网络故障:若联网后仍显示此地址,说明设备无法从路由器获取正常IP(如DHCP服务异常)。
二、局域网IP(路由器分配的私有IP)
- 定义:
设备连接到路由器后,由路由器(通过DHCP协议)分配的私有IP地址,属于局域网(LAN)范围。 - 常见地址段(IPv4):
192.168.x.x
(最常见,如192.168.1.100
)10.x.x.x
(如10.0.0.5
)172.16.x.x
~172.31.x.x
(如172.16.1.20
)
- 特点:
- 仅在局域网内有效,无法直接被互联网访问。
- 同一路由器下的设备通过局域网IP互相通信(如手机连接家用Wi-Fi后,与电脑共享文件)。
- 与本地链路地址的区别:
- 局域网IP由路由器分配,属于正常联网状态;本地链路地址由系统自动生成,属于无路由联网状态。
- 局域网IP支持跨子网通信(通过路由器转发),而本地链路地址仅限同一链路内通信。
三、公网IP(通过NAT映射的互联网IP)
- 定义:
公网IP是直接连接互联网的唯一标识,具有全球唯一性。但大多数家庭/企业网络中,路由器会通过 NAT(网络地址转换)技术,将局域网内的多个私有IP共享一个公网IP访问互联网。 - 实现逻辑:
- 当局域网内设备(如手机)访问互联网时,路由器会将设备的私有IP(如
192.168.1.100
)和端口(如8080
),映射为路由器的公网IP和一个随机端口(如202.100.1.1:50001
)。 - 互联网服务器返回数据时,通过公网IP和端口找到路由器,路由器再根据映射关系将数据转发给对应的局域网设备。
- 当局域网内设备(如手机)访问互联网时,路由器会将设备的私有IP(如
- 公网IP的类型:
- 动态公网IP:由运营商动态分配(多数家庭宽带属于此类),每次重启路由器可能变更。
- 静态公网IP:需向运营商申请,地址固定(常用于企业服务器或需要远程访问的场景)。
- 关键点:
- 公网IP不是“端口”,而是IP地址本身;端口是NAT映射时用于区分不同设备的“通道编号”。
- 只有拥有公网IP的设备(如路由器)才能被互联网直接访问,局域网内设备需通过NAT“借道”路由器上网。
四、关系
“当设备未连接路由器时,系统会自动生成本地链路地址(如169.254.x.x
)用于临时通信;连接路由器后,设备获取局域网IP(如192.168.1.x
),属于私有地址,仅在局域网内有效;路由器通过 NAT技术,将局域网IP和端口映射到公网IP(运营商分配的互联网地址),实现多设备共享一个公网IP访问互联网。”
五、核心区别总结表
类型 | 分配方式 | 地址范围/示例 | 能否被互联网访问 | 典型场景 |
---|---|---|---|---|
本地链路地址 | 系统自动生成(无路由) | IPv4: 169.254.x.x | 否(仅限本地链路) | 两台直连电脑互传文件 |
局域网IP(私有) | 路由器DHCP分配 | IPv4: 192.168.x.x | 否(需通过NAT转发) | 家用Wi-Fi下手机与电脑共享文件 |
公网IP(公有) | 运营商分配(静态/动态) | 如202.100.1.1 | 是(全球唯一) | 路由器连接互联网、服务器对外服务 |
NAT 模式的本质:共享你电脑的网络,但藏起虚拟机你电脑的真实网络:
- 比如你电脑连了家里的 Wi-Fi,有一个真实的 IP(比如 192.168.1.100),能上网。
- 虚拟机的 “虚拟小网络”:
当你用 NAT 模式启动虚拟机时,软件会在你电脑里偷偷创建一个 虚拟路由器 和 虚拟宽带:- 虚拟路由器:负责把虚拟机的网络请求 “转发” 到你电脑的真实网络(就像你家真实路由器把手机请求转发到宽带一样)。
- 虚拟宽带:让虚拟机 “假装” 自己连了一个独立的网络,但其实用的是你电脑的网络流量。
关键:虚拟机的 IP 是 “虚拟路由器” 分配的:
就像你家路由器会给手机分配 192.168.1.101 这样的 IP 一样,虚拟机软件里的 “虚拟路由器” 会给虚拟机分配一个 虚拟局域网 IP(比如 192.168.137.100),这个 IP 只在你电脑的虚拟网络里有效。
2.2 webrtc的痛点以及解决
一、媒体协商:SDP 协议确定编解码规则
目标:解决“如何让双方解对方的码”的问题,本质是协商一致的音视频格式与参数。
- SDP(Session Description Protocol,会话描述协议)
- 作用:
- 描述终端支持的编解码器(如 VP8/H.264 视频、Opus/iSAC 音频)。
- 协商媒体传输格式(如 RTP 载荷类型、时间戳频率)。
- 提供网络连接元数据(如 IP 地址、端口,但实际中常由 ICE 处理)。
- 核心字段:
m=video 9 UDP/TLS/RTP/SAVPF 100 101
:声明视频流使用的端口和编解码列表(如 payload 100 对应 VP8)。a=rtpmap:100 VP8/90000
:将 payload 100 映射到 VP8 编解码器,采样率 90000Hz。a=fingerprint:sha-256 ...
:用于 DTLS 加密的证书指纹验证。
- 协商流程:
- 作用:
- 关键逻辑:
- 双方通过信令服务器交换 SDP,最终达成交集编解码方案(如均支持 VP8 则选 VP8,否则降级)。
- SDP 不直接传输媒体数据,仅用于“对暗号”,确保双方使用相同规则编解码。
二、网络协商:ICE 框架整合 STUN/TURN 实现连接建立
目标:解决“双方公网 IP 是否能通信”的问题,本质是穿越 NAT 建立有效连接路径。
1. ICE(Interactive Connectivity Establishment,交互式连接建立)
- 定位:
- 不是协议,而是整合 STUN/TURN 的框架,用于收集、测试、选择最优网络路径。
- 核心流程:收集候选地址 → 排序优先级 → 尝试连接。
- 候选地址类型:
- 主机候选(Host):终端本地 IP(如虚拟机内网 IP
192.168.137.100
)。 - 服务器反射候选(SRFLX):通过 STUN 服务器获取的公网 IP+端口(如
202.100.1.1:50001
)。 - 中继候选(RELAY):通过 TURN 服务器中转的地址(如
39.100.200.5:8080
)。
- 主机候选(Host):终端本地 IP(如虚拟机内网 IP
2. STUN:获取公网地址与 NAT 类型
- 核心功能:
- 终端向 STUN 服务器发送请求,服务器返回终端的公网 IP+端口及NAT 类型(如完全圆锥型、对称型)。
- 用途:
- 判断是否可直接 P2P 连接(如对称型 NAT 需 TURN 中继)。
- 生成“服务器反射候选地址”用于 ICE 连接测试。
- 典型交互流程:
客户端 → STUN服务器:"我在哪?" STUN服务器 → 客户端:"你的公网地址是 X.X.X.X:端口,NAT类型是对称型"
- 局限性:
- 仅适用于UDP 穿透,且无法穿越对称型 NAT(约占 30% 网络环境)。
- 仅适用于UDP 穿透,且无法穿越对称型 NAT(约占 30% 网络环境)。
3. TURN:中继转发突破复杂网络限制
- 核心功能:
- 当 STUN 无法建立直连时,作为中继服务器转发媒体数据,充当“数据中转站”。
- 适用场景:
- 双方均位于对称型 NAT 后(无法直连)。
- 防火墙禁止 UDP 传输(TURN 可封装数据为 TCP)。
- 代价与优化:
- 带宽成本:数据经服务器中转,消耗服务器带宽(适合多人会议场景,单人通话尽量走 P2P)。
- 延迟增加:中继路径增加约 1 个 RTT 延迟,需结合 CDN 部署多区域 TURN 节点降低延迟。
2.3 信令服务器
一、信令服务器的核心作用
信令服务器不直接传输音视频或数据,而是负责协调通信双方的连接过程,主要功能包括:
- 交换元数据
传递双方的媒体信息(如编码格式、分辨率)、网络信息(如公网 IP、端口)。
例如:通过 SDP 协议描述媒体参数,通过STUN/TURN 获得的网络地址需通过信令服务器中转 - 控制通信流程
- 管理连接的建立、断开、重连等状态(如发起呼叫、接受 / 拒绝请求)。
- 类似 “电话交换机”,只负责建立通话链路,不参与通话内容传输。
二、数据传输的两种场景
- 直接 P2P 传输(无需信令服务器)
条件:双方处于同一局域网(网段相同)或公网可直接互通(无 NAT 或 NAT 类型支持 P2P)。
过程:
双方直接获取对方的 IP 和端口(如通过本地广播、预共享信息)。
无需信令服务器中转,直接建立连接传输数据(如文件、消息)。
局限:
受限于网络环境(NAT 穿透失败时无法通信)。
无法处理复杂场景(如多人通信、动态地址变更)。
2. 复杂网络环境下的传输(必须依赖信令服务器)
场景:
- 双方位于不同网段(如虚拟机与主机、跨公网的两台设备)。
- 存在 NAT 防火墙(需通过 STUN/TURN 穿透或中继)。
- 多人通信(需协调多方的媒体流路由)。
过程:
- 信令交互:
设备 A 通过信令服务器向设备 B 发送连接请求(含自身媒体和网络信息)。
设备 B 响应请求并返回自身信息(如经 STUN 解析的公网地址,或 TURN 中继地址)。 - 媒体协商:
双方通过信令服务器交换 SDP,协商一致的编解码格式。 - 网络协商:
若直接连接失败(如 NAT 类型不兼容),信令服务器协助分配 STUN/TURN 服务器地址,建立中继连接。 - 关键依赖:
信令服务器是建立连接的桥梁,没有它,双方无法得知彼此的 “通信地址” 和 “能力参数”。
数据最终通过 P2P 或中继传输,但信令交互是前提。
信令服务器不只是交互 媒体信息sdp和网络信息candidate,比如:
(1)房间管理
(2)人员进出房间
3 peer to peer的原理
- 初始化阶段
- 创建PeerConnection对象:Peer - A和Peer - B都各自创建一个
RTCPeerConnection
对象,这是WebRTC进行点对点通信的核心对象,用于管理连接、媒体流传输等操作 。 - 添加媒体流:双方分别调用
AddStream
将本地采集的音视频媒体流添加到PeerConnection
对象中,准备后续传输。比如,摄像头采集的视频流和麦克风采集的音频流。
- 媒体协商阶段
- 创建Offer并设置本地描述:Peer - A通过
CreateOffer & SetLocalDescription
生成一个Offer SDP
(会话描述协议)。SDP中包含了Peer - A支持的音视频编解码器(如VP8视频编解码器、Opus音频编解码器 )、媒体传输格式等信息 。然后将这个Offer SDP
设置为本地描述,即告知自身后续通信使用这些媒体参数。 - 信令服务器中继Offer SDP:Peer - A通过
Send Offer SDP
将Offer SDP
发送给信令服务器,信令服务器再通过Relay Offer SDP
将其转发给Peer - B。 - Peer - B处理Offer并生成Answer:Peer - B收到
Offer SDP
后,调用setRemoteDescription
设置远程描述,即知晓Peer - A的媒体参数。然后Peer - B通过CreateAnswer & SetLocalDescription
生成Answer SDP
,其中包含了Peer - B根据自身能力和Peer - A的Offer SDP
协商后的媒体参数 。 - 信令服务器中继Answer SDP:Peer - B通过
Send Answer SDP
将Answer SDP
发送给信令服务器,信令服务器再通过Relay Answer SDP
转发给Peer - A,Peer - A收到后调用setRemoteDescription
设置远程描述。 - 媒体协商总结:通过SDP在信令服务器的中继下交换,双方确定了一致的音视频编解码等媒体参数,解决了双方如何编解码媒体流的问题,确保双方能正确处理对方传来的音视频数据。
- 网络协商阶段
- ICE候选地址收集:
- Peer - A和Peer - B在本地通过
ICE Request
触发ICE(交互式连接建立)流程,收集各自的ICE候选地址。这些候选地址包括主机候选地址(本地局域网IP地址 )、服务器反射候选地址(通过STUN服务器获取的公网IP地址 )和中继候选地址(通过TURN服务器获取的地址 )。 - 当收集到ICE候选地址时,会触发
oniceCandidate
事件。
- Peer - A和Peer - B在本地通过
- 信令服务器中继ICE候选地址:
- Peer - A和Peer - B分别通过
Send ICE Candidate
将各自的ICE候选地址发送给信令服务器,信令服务器通过Relay ICE Candidate
相互转发。 - 双方收到对方的ICE候选地址后,通过
AddIceCandidate
将其添加到PeerConnection
对象中。
- Peer - A和Peer - B分别通过
- 连接建立尝试:双方根据收集到的ICE候选地址,按照优先级(通常主机候选 > 服务器反射候选 > 中继候选 )尝试建立连接。如果双方处于可以直接穿透NAT的网络环境,可能通过主机候选地址或服务器反射候选地址直接建立P2P连接 。但如果像在中国网络环境下,至少一半网络无法直接穿透打洞,就需要借助TURN服务器,通过中继候选地址进行数据中继转发来建立连接。
-
媒体流传输阶段
当连接成功建立后,双方就可以通过已建立的链路进行媒体流传输。Peer - A和Peer - B分别通过onAddStream
事件接收对方传来的媒体流,并进行播放展示,从而实现一对一的实时通话 。 -
信令服务器的作用
信令服务器在整个过程中扮演着至关重要的角色。它负责中继双方的SDP信息和ICE候选地址等信令消息,协调双方的媒体协商和网络协商过程。没有信令服务器,双方无法得知对方的媒体参数和网络地址信息,也就无法建立起通信连接 。 -
STUN和TURN服务器的作用
- STUN服务器:帮助Peer - A和Peer - B获取自身的公网IP地址和端口,以及检测所在的NAT类型 。在网络协商中,用于生成服务器反射候选地址,尝试实现P2P连接。
- TURN服务器:当STUN无法成功穿透NAT建立P2P连接时,TURN服务器作为中继,对双方的数据进行转发。在复杂网络环境下,保障通话能够顺利进行 。
相关文章:

webrtc初了解
1. webrtc的简介 一、WebRTC 是什么? Web Real-Time Communication(网页实时通信),是浏览器原生支持的实时音视频通信技术,无需安装插件或客户端,可直接在浏览器之间实现点对点(P2P)…...

[STM32学习笔记(九)]CubeMX项目使用系统定时器SysTick的中断服务函数进行定时
有很多文章说明了由于HAL_Delay()函数的本质是系统定时器计数,通过全局变量uwTick的不断增加实现的比较延迟。调用HAL_Delay()函数会阻塞其他工作,因此在外设ISR进程调用该延迟时,要特别小心。 因此,现在考虑,既然系统…...
5G 核心网 NGAP UE-TNL 偶联和绑定
引言: 在 5G 核心网架构中,NG 接口作为连接无线接入网(RAN)与核心网(5GC)的关键纽带,承载着大量控制面信令交互。NG 应用协议(NGAP)作为 NG 接口上的核心协议,负责管理 RAN 与 5GC 之间的通信,其中 UE - TNL(User Equipment - Transport Network Layer)偶联和绑定…...
性能测试怎么做?方法、流程与核心要点解析
目录 一、性能测试核心方法论 性能测试五大类型解析 七项关键性能指标 二、性能测试实施流程 需求分析阶段 测试设计阶段 环境搭建要点 测试执行策略 三、性能问题定位与优化 常见瓶颈识别 优化实战案例 四、测试报告编写规范 核心内容框架 数据可视化建议 五、企…...

将ipynb文件转换为markdown格式文件
文章目录 将ipynb文件转换为markdown格式文件nbconvert 包安装nbconvert 使用 将ipynb文件转换为markdown格式文件 有时候,我们需要把Jupyter notebook的.ipynb格式文件转换为markdown格式.md,便于使用。 那么,我们可以通过安装nbconvert包&a…...

Vulnhub_Zico2_wp
一、信息收集 1、主机发现 arp-scan -l 2、端口扫描 nmap -sS -sV 192.168.66.144 nmap -p- -Pn -sC -sV -n 192.168.66.144 whatweb -v 192.168.66.144 这里开放了3个端口,先80端口拿去目录,然后测试下22端口有没有什么未授权之类的,然后…...

【玩转腾讯混元大模型】腾讯混元大模型AIGC系列产品深度体验
【玩转腾讯混元大模型】腾讯混元大模型AIGC系列产品深度体验 腾讯推出的系列AI产品:混元大模型、大模型图像创作引擎、大模型视频创作引擎、腾讯元宝,共同构成了一个强大的AI生态系统;凭借腾讯自研的大规模预训练技术和先进的自然语言处理、计…...
品优购项目(HTML\CSS)
项目效果可访问 http://zhousunyu.3vdo.club 查看 主页 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><titl…...

Attention Is All You Need论文阅读笔记
Attention is All You Need是如今机器学习研究者必读的论文,该文章提出的Transformer架构是如今很多机器学习项目的基础,说该文章极大推动了机器学习领域的研究也不为过。 但这么重要,也是必读的文章对初学者来说其实并不友好,很多…...
深入理解设计模式之中介者模式
深入理解设计模式之:中介者模式(Mediator Pattern) 一、什么是中介者模式? 中介者模式(Mediator Pattern)是一种行为型设计模式。它通过引入一个中介对象,来封装一组对象之间的交互࿰…...
OpenCV 图像像素的读写操作
一、知识点 1、在OpenCV中,一切图像皆Mat。 2、对图像像素的读写操作,就是对Mat元素的遍历与访问。 3、对Mat使用数组方式遍历与访问。 (1)、函数声明: template<typename _Tp> inline_Tp & Mat::at(int i0, int i1) (2)、参数说明:…...
【前端】【Vue3】vue3性能优化总结
第一章 Vue3性能优化概述 1.1 Vue3性能提升背景 1.1.1 Vue2性能瓶颈分析 1. 响应式原理的局限性 Object.defineProperty 的缺陷:Vue2 使用 Object.defineProperty 来实现响应式。这个方法只能劫持对象的属性,对于新增或删除属性无法自动响应。例如&a…...

如何制作全景VR图?
全景VR图,特别是720度全景VR,为观众提供一种沉浸式体验。 全景VR图能够捕捉场景的全貌,还能将多个角度的图片或视频无缝拼接成一个完整的全景视角,让观众在虚拟环境中自由探索。随着虚拟现实(VR)技术的飞速…...
动态防御新纪元:AI如何重构DDoS攻防成本格局
1. 传统高防IP的静态瓶颈与成本困境 传统高防IP依赖预定义规则库,面对SYN Flood、CC攻击等威胁时,常因规则更新滞后导致误封合法流量。例如,某电商平台曾因静态阈值过滤误封20%的订单接口流量,直接影响营收。以下代码模拟传统方案…...
汽车软件刷写 APP SBL PBL概念
目录 PBL(Primary Boot Loader)SBL(Secondary Boot Loader)PBL与SBL的协作流程在汽车刷写中,APP、PBL、SBL的含义如下: APP:指应用程序(Application),是汽车电子控制单元(ECU)中实现具体功能的软件,如发动机控制、变速箱控制、车身电子稳定系统等功能的程序。在刷…...
自动化中的伦理:驯服人工智能中的偏见与守护合规之路
当算法取代人脑做出关乎就业、信贷、医疗乃至法律判决的决定时,我们赋予机器的不仅仅是效率,更是塑造社会公平的巨大力量。自动化系统在提升生产力的同时,其内在的偏见风险如同暗流涌动,若缺乏道德罗盘与严格约束,本应…...

Flask与PostgreSQL交互教程
目录 1. 项目结构2. 环境准备2.1 安装依赖2.2 使用Docker启动PostgreSQL 3. 数据库配置3.1 环境变量配置3.2 数据库连接配置 4. 定义数据库模型5. 实现API接口5.1 创建用户5.2 获取所有用户5.3 获取单个用户5.4 更新用户5.5 删除用户 6. 运行应用7. API测试7.1 创建用户7.2 获取…...

XJTU-SY轴承振动数据集的json自封装
1.最终形式的形式 不用再去翻文档找对应的故障类型,采样率等信息了,所有的信息自包含在.json文件里,15个测试例,一个测试例对应一整个.json文件。 {"dataset": {"name": "XJTU-SY_Bearing_Datasets&quo…...

Spring AI 系列2: Advisors增强器简介
一、Advisors简介 1.1 Advisors定义 Advisors 是在 AI 应用程序中处理请求和响应的拦截器。我们可以使用它们为提示流程设置额外的功能。例如,可以建立聊天历史、排除敏感词或为每个请求添加额外的上下文。 Spring AI的Advisor,本质上是一个拦截…...

通过Func实现飞书应用通知消息加急处理
前言 在现代企业运作中,及时响应告警信息对保障系统的稳定性和业务的连续性至关重要。随着业务的数字化转型,越来越多的企业依赖于复杂的技术架构,这使得故障和异常事件的及时处理变得愈发重要。传统的告警通知方式往往存在响应不及时、信息…...

【目标检测】【AAAI-2022】Anchor DETR
Anchor DETR: Query Design for Transformer-Based Object Detection 锚点DETR:基于Transformer的目标检测查询设计 论文链接 代码链接 摘要 在本文中,我们提出了一种基于Transformer的目标检测新型查询设计。此前的Transformer检测器中&am…...
Spring Cloud Alibaba 学习 —— 简单了解常用技术栈
Spring Cloud Alibaba 官网:https://sca.aliyun.com/ 什么是 Spring Cloud Alibaba Spring Cloud Alibaba 是 Spring Cloud 规范在阿里生态的扩展实现,结合了阿里自研组件与开源生态,提供面向云原生场景的微服务解决方案。其核心功能可概括…...

智慧工厂整体解决方案
该方案围绕智能工厂建设,阐述其基于工业 4.0 和数字化转型需求,通过物联网、大数据、人工智能等技术实现生产自动化、数据化管理及联网协同的特点。建设步骤包括评估现状、设定目标、制定方案、测试调整、实施计划及持续改进,需整合 MES、ERP 等软件系统与传感器、机器人等硬…...

秋招Day12 - 计算机网络 - TCP
详细说一下TCP的三次握手机制 TCP的三次握手机制是为了在两个主机之间建立可靠的连接,这个机制确保两端的通信是同步的,并且在开始传输数据前,双方都做好了要通信的准备。 说说SYN的概念? SYN 是 TCP 协议中用来建立连接的一个标…...
KubeMQ 深度实践:构建可扩展的 LLM 中台架构
文章简介 在 AI 应用开发中,集成 OpenAI、Anthropic Claude 等多大型语言模型(LLM)常面临 API 碎片化、请求路由复杂等挑战。本文将介绍如何通过 ** 消息代理(Message Broker)** 实现高效的 LLM 管理,以开…...

vueflow
自定义节点,自定义线,具体细节还未完善,实现效果: 1.安装vueflow 2.目录如下 3. index.vue <script setup> import { ref } from vue import { VueFlow, useVueFlow } from vue-flow/core import { Background } from vue-…...

LearnOpenGL-笔记-其十一
Normal Mapping 又到了介绍法线贴图的地方,我感觉我已经写了很多遍了... 法线贴图用最简单的话来介绍的话,就是通过修改贴图对应物体表面的法线来修改光照效果,从而在不修改物体实际几何形状的前提下实现不同于物体几何形状的视觉效果。 因…...
@Docker Compose 部署 Prometheus
文章目录 Docker Compose 部署 Prometheus1. 环境准备2. 配置文件准备3. 编写 Docker Compose 文件4. 启动服务5. 验证部署6. 常用操作7. 生产环境增强建议8. 扩展监控对象 Docker Compose 部署 Prometheus 1. 环境准备 安装 Docker(版本 ≥ 20.10)和 …...

openppp2 -- 1.0.0.25225 优化多线接入运营商路由调配
本文涉及到的内容,涉及到上个发行版本相关内容,人们在阅读本文之前,建议应当详细阅读上个版本之中的VBGP技术相关的介绍。 openppp2 -- 1.0.0.25196 版本新增的VBGP技术-CSDN博客 我们知道在现代大型的 Internet 网络服务商,很多…...
二次封装 Vuex for Uniapp 微信小程序开发
作为高级前端开发工程师,我将为你提供一个针对 Uniapp Vue2 Vuex 的 Store 二次封装方案,使团队成员能够更便捷地使用和管理状态。 封装目标 模块化管理状态 简化调用方式 提供类型提示(在 Vue2 中尽可能实现) 便于维护和查…...