webrtc-internals调试工具
Google 的 Chrome(87 或更高版本)WebRTC 内部工具是一套内置于 Chrome 浏览器中的调试工具;
webrtc-internals 能够查看有关视频和音频轨道、使用的编解码器以及流的一般质量的详细信息。这些知识对于解决音频和视频质量差的问题非常有帮助。
webrtc-internals 还提供有关 WebRTC 调用中使用的网络配置的详细信息,例如 STUN/ TURN服务器和 ICE 候选者。
getUserMedia/getDisplayMedia
- 调用地址
- 调用时间
- 媒体约束
RTCPeerConnection 监控信息
Event
创建一个本地描述
createOffer => createOfferOnSuccess
存入本地描述
setLocalDescription => setLocalDescriptionOnSuccess
存入远端描述
setRemoteDescription => setRemoteDescriptionOnSuccess
添加轨道
transceiverAdded
多个ICE候选通过信令传传输给远程端,以便远程端可以选择最佳的路径来建立点对点(P2P)连接
icecandidate
主要用于在NAT(网络地址转换)和防火墙后面建立端到端的连接
{
// 表示这个候选与哪个媒体流(audio或video)
sdpMid: 0,
// 表示这个候选在SDP的m-line中的索引位置
sdpMLineIndex: 0
// 候选字符串,包含了候选的类型、优先级、IP地址、端口号等信息
candidate: candidate:3111111111 1 udp 41111111 11.11.11.11 64434 typ relay raddr 0.0.0.0 rport 0 generation 0 ufrag xdAn network-id 3
url: turn:111.111.11.11:1111?transport=udp, relayProtocol: udp
}
iceconnectionstatechange
ICE的连接状态发生变化
MDN_iceconnectionstatechange
MDN_iceConnectionState
- new: ICE 代理正在收集地址或等待通过调用,或两者)获得远程候选地址
- checking:ICE 代理已获得一个或多个远程候选,并正在检查本地和远程候选对以尝试找到兼容的匹配,但尚未找到允许建立对等连接的对。候选的收集可能仍在进行中
- connected:已为连接的所有组件找到可用的本地和远程候选配对,并且已建立连接。收集可能仍在进行中,ICE 代理也可能仍在相互检查候选以寻找更好的连接。
- completed:ICE 代理已完成候选者的收集,已检查所有对,并已找到所有组件的连接
- failed:ICE 候选已检查所有候选对,但未能为连接的所有组件找到兼容的匹配项。但是,ICE 代理可能确实为某些组件找到了兼容的连接。
- disconnected: 检查以确保组件仍处于连接状态 至少一个组件失败RTCPeerConnection。此测试比 和 的测试要求低failed,可能会间歇性触发,并在可靠性较低的网络上或临时断开连接时自动解决。当问题解决后,连接可能会恢复到 状态connected。
- closed: 该 ICE 代理RTCPeerConnection已关闭并且不再处理请求。
connectionstatechange
PeerConnection的连接状态发生变化
MDN_connectionstatechange
connectionState
- new: 该连接的ICE传输(RTCIceTransport或对象)中至少RTCDtlsTransport有一个处于该new状态,并且它们都不处于以下状态之一:connecting、checking、failed、disconnected,或者该连接的所有传输都处于该closed状态
- connecting: 一个或多个ICE传输当前正在建立连接;也就是说,它们iceConnectionState是checking或connected,并且没有传输处于 该failed状态
- connected: 连接使用的每个ICEconnected传输要么处于正在使用状态(状态或completed),要么处于关闭状态(状态closed);此外,至少一个传输是connected或completed
- disconnected: 连接的ICE传输中至少有一个处于该disconnected状态,且其他传输均不处于以下状态:failed、connecting或checking
- failed: 连接上的一个或多个ICEfailed传输处于该状态
- closed: RTCPeerConnection已关闭
tabls
outbound-rtp(kind=audio)
// 编码器
[codec] opus (111, minptime=10;useinbandfec=1)
// 发送总数据包
packetsSent 1009767
// 每秒发送数据包数量
[packetsSent/s] 50.41123456789
// 发送总字节数量
bytesSent 749670966
// 每秒发送字节数量比特数
[bytesSent_in_bits/s] 28291.412345789
// 每秒头部字节总数
headerBytesSent 28386787
// 每秒发送头部字节比特数
[headerBytesSent_in_bits/s] 11206.52334411
// 比特率为32,000 bps(比特每秒),即32 kbps
targetBitrate 32000
outbound-rtp(kind=video)
// 表示使用的编码器是H.264
[codec] H264 (102, level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f)
// 发送的总数据包数量为616,516个
packetsSent 616516
// 每秒发送的数据包数量,约为30.66个
[packetsSent/s] 30.664317713909526
// 发送的总字节数为179,434,429字节
bytesSent 179434429
// 每秒发送的字节数转换为比特数,约为71,568.30 kbps
[bytesSent_in_bits/s] 71568.30001423245
// 发送的头部字节总数为14,852,818字节
headerBytesSent 14852818
// 每秒发送的头部字节数转换为比特数,约为5,726.59 kbps。
[headerBytesSent_in_bits/s] 5726.59106771328
// 目标比特率为354,830 bps,即354.83 kbps
targetBitrate 354830
// 编码的总帧数为617,019帧
framesEncoded 617019
// 每秒编码的帧数,约为28.19帧
[framesEncoded/s] 28.191334587700172
// 编码的关键帧(I帧)数量为215帧
keyFramesEncoded 215
// 总编码时间为4781.073秒
totalEncodeTime 4781.073
// 每帧编码所需的平均时间,约为11.46毫秒。
[totalEncodeTime/framesEncoded_in_ms] 11.464285714282596
// 帧的宽度为1280像素
frameWidth 1280
// 帧的高度为720像素
frameHeight 720
// 帧率为每秒29帧
framesPerSecond 29
// 发送的总帧数为617,405帧
framesSent 617405
// 每秒发送的帧数,约为29.97帧
[framesSent/s] 29.96823367234663
// 发送的大帧数为32帧
hugeFramesSent 32
// 总的数据包发送延迟为67.48513秒
totalPacketSendDelay 67.48513
// 质量限制持续时间,包括由于带宽限制、CPU限制、无限制和其他原因导致的持续时间
qualityLimitationDurations {"bandwidth":26.155,"cpu":0,"none":20703.08,"other":0}
// 编码器的实现是OpenH264
encoderImplementation OpenH264
// 编码质量
qpSum 7521625
inbound-rtp(kind=audio)下行音频
// 接收到的总数据包数量为1,096,329个
packetsReceived 1096329
// 每秒接收的数据包数量,约为50.28个
[packetsReceived/s] 50.27808810525396
// 接收的总字节数为81,050,273字节
bytesReceived 81050273
// 每秒接收的字节数转换为比特数,约为32,726.79 kbps
[bytesReceived_in_bits/s] 32726.78658970012
// 接收的头部字节总数为26,331,120字节
headerBytesReceived 26331120
// 每秒接收的头部字节数转换为比特数,约为9,696.83 kbps
[headerBytesReceived_in_bits/s] 9696.825656207442
// 最后一个数据包接收的时间戳
lastPacketReceivedTimestamp 1735197274039.8062
// 最后一个数据包接收的日期和时间
[lastPacketReceivedTimestamp] 2024/12/26 15:14:34
// 抖动缓冲区的延迟总和
jitterBufferDelay 56962627.2
// 抖动缓冲区的延迟平均值(以毫秒为单位)
[jitterBufferDelay/jitterBufferEmittedCount_in_ms] 77.05882352950306
// 目标抖动缓冲区延迟
jitterBufferTargetDelay 48588288
// 抖动缓冲区延迟与发出计数的比例(以毫秒为单位)
[jitterBufferDelay/jitterBufferEmittedCount_in_ms] 78.4000000000621
// 另一个目标抖动缓冲区延迟值
jitterBufferTargetDelay 48628550.4
// 抖动缓冲区的最小延迟
[jitterBufferTargetDelay/jitterBufferEmittedCount_in_ms] 60
// 从抖动缓冲区发出的总样本数
jitterBufferMinimumDelay 48628550.4
// 接收到的总样本数
[jitterBufferMinimumDelay/jitterBufferEmittedCount_in_ms] 60
// 每秒接收的样本数
jitterBufferEmittedCount 1053912000
// 隐藏的样本数,通常是指由于丢包等原因导致的数据不连续,需要通过算法进行填补
totalSamplesReceived 1055685600
// 音频级别
[totalSamplesReceived/s] 48042.709969289725
// 总音频能量
concealedSamples 1854928
// 音频级别的均方根值
audioLevel 0.1988891262550737
// 样本的总持续时间
totalAudioEnergy 300.06916838604377
// 总处理延迟
[Audio_Level_in_RMS] 0.14892546098156428
// 处理延迟与发出计数的比例(以毫秒为单位)
totalSamplesDuration 22018.689999409253
// 抖动缓冲区的冲洗次数
totalProcessingDelay 52478673.56832
// 延迟的数据包中断样本数
[totalProcessingDelay/jitterBufferEmittedCount_in_ms] 70.40555102031576
// 相对数据包到达延迟
jitterBufferFlushes 1
// 延迟的数据包中断样本数
delayedPacketOutageSamples 152219
// 相对数据包到达延迟
relativePacketArrivalDelay 8356.16
// 中断次数
interruptionCount 0
// 总中断持续时间
totalInterruptionDuration 0
inbound-rtp(kind=video)下行视频
// 使用的编码器是H.264
[codec] H264 (102, level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f)
// 网络抖动,表示接收数据包的时间变化,单位通常是秒
jitter 0.008
// 丢失的数据包数量为6,294个
packetsLost 6294
// 接收到的总数据包数量为3,361,657个
packetsReceived 3361657
// 每秒接收的数据包数量,约为160.88个
[packetsReceived/s] 160.87532063312926
// 接收的总字节数为3,590,296,459字节
bytesReceived 3590296459
// 每秒接收的字节数转换为比特数,约为1,387,428.49 kbps。
[bytesReceived_in_bits/s] 1387428.4874414976
// 接收的头部字节总数为94,131,424字节
headerBytesReceived 94131424
// 每秒接收的头部字节数转换为比特数,约为36,036.07 kbps
[headerBytesReceived_in_bits/s] 36036.07182182096
// 接收到的重传数据包数量为29,195个
retransmittedPacketsReceived 29195
// 每秒接收的重传数据包数量,约为4.97个
[retransmittedPacketsReceived/s] 4.965287673862014
// 接收到的重传字节总数为31,110,354字节
retransmittedBytesReceived 31110354
// 每秒接收的重传字节数转换为比特数,约为43,615.09 kbps
[retransmittedBytesReceived_in_bits/s] 43615.086927203934
// 重传流的同步源标识符
rtxSsrc 2171748361
// 最后一个数据包接收的时间戳
lastPacketReceivedTimestamp 1735197797031.065
// 最后一个数据包接收的日期和时间
[lastPacketReceivedTimestamp] 2024/12/26 15:23:17
// 抖动缓冲区的延迟
jitterBufferDelay 11971.191576
// 抖动缓冲区的延迟平均值
[jitterBufferDelay/jitterBufferEmittedCount_in_ms] 24.631333333309158
// 目标抖动缓冲区延迟
jitterBufferTargetDelay 15834.935496
[jitterBufferTargetDelay/jitterBufferEmittedCount_in_ms] 29.960066666717466
// 目标抖动缓冲区延迟
jitterBufferMinimumDelay 15834.935496
// 每秒接收的帧数,约为29.79帧
[jitterBufferMinimumDelay/jitterBufferEmittedCount_in_ms] 29.960066666717466
// 从抖动缓冲区发出的总样本数
jitterBufferEmittedCount 668493
// 接收到的总帧数为668,469帧
framesReceived 668469
// 每秒接收的帧数,约为29.79帧
[framesReceived/s] 29.791726043172087
// 接收帧数减去解码帧数再减去丢弃帧数的差值为-24
[framesReceived-framesDecoded-framesDropped] -24
// 帧的宽度为1280像素
frameWidth 1280
// 帧的高度为720像素
frameHeight 720
// 帧率为每秒30帧
framesPerSecond 30
// 解码的总帧数为668,469帧
framesDecoded 668469
// 每秒解码的帧数,约为29.79帧
[framesDecoded/s] 29.791726043172087
// 解码的关键帧(I帧)数量为229帧
keyFramesDecoded 229
[keyFramesDecoded/s] 0
// 丢弃的帧数为24帧
framesDropped 24
// 总解码时间为870.105921秒
totalDecodeTime 870.105921
// 每帧解码所需的平均时间,约为2.41毫秒
[totalDecodeTime/framesDecoded_in_ms] 2.412299999999353
// 总处理延迟
totalProcessingDelay 12952.590836
// 总组装时间为821.873153秒
[totalProcessingDelay/jitterBufferEmittedCount_in_ms] 27.191133333326434
// 这表示总组装时间,单位是秒
totalAssemblyTime 821.873153
// 每帧在组装过程中平均花费的时间
[totalAssemblyTime/framesAssembledFromMultiplePackets_in_ms] 1.539100000002236
// 从多个数据包中组装的帧数为668,004帧
framesAssembledFromMultiplePackets 668004
// 总帧间延迟
totalInterFrameDelay 22503.407
[totalInterFrameDelay/framesDecoded_in_ms] 33.36666666667345
// 总平方帧间延迟
totalSquaredInterFrameDelay 848.3095429981339
// 帧间延迟的标准差(以毫秒为单位)
[interFrameDelayStDev_in_ms] 9.046116416493547
// 暂停次数为0
pauseCount 0
// 总暂停持续时间为0秒
totalPausesDuration 0
// 冻结次数为126次
freezeCount 126
// 总冻结持续时间为34.267秒
totalFreezesDuration 34.267
// 用的解码器实现是外部解码器(D3D11VideoDecoder)
decoderImplementation ExternalDecoder (D3D11VideoDecoder)
// 全帧引用请求(Full Intra Request)的次数为0
firCount 0
// 画面质量指示(Picture Loss Indication)的次数为2
pliCount 2
// 负确认(Negative Acknowledgement)的次数为3,782
nackCount 3782
// 启用了能效解码器
powerEfficientDecoder true
// 最小播放延迟为0秒
minPlayoutDelay 0
拉流黑屏可以结合发送端和接收端去看
Stats graphs for outbound-rtp (kind=video)是否发送了数据
Stats graphs for inbound-rtp (kind=video)图看是否接受到数据
拉流没声音
Stats graphs for inbound-rtp (kind=audio)是否接受到数据
说话时audioLevel在0.01以上关闭麦克的话再0.001一下到接近于0
相关文章:
webrtc-internals调试工具
Google 的 Chrome(87 或更高版本)WebRTC 内部工具是一套内置于 Chrome 浏览器中的调试工具; webrtc-internals 能够查看有关视频和音频轨道、使用的编解码器以及流的一般质量的详细信息。这些知识对于解决音频和视频质量差的问题非常有帮助。 webrtc-int…...
百度PaddleSpeech识别大音频文件报错
一、背景 公司前同事留下了一套语音识别项目,内部使用百度PaddleSpeech。在项目验收的时候发现无法识别大音频文件,但是可以识别小音频文件。 这套项目是通过python调用的百度PaddleSpeech,然后提供了restful接口,然后java项目可…...
No.3十六届蓝桥杯备战|数据类型长度|sizeof|typedef|练习(C++)
数据类型⻓度 每⼀种数据类型都有⾃⼰的⻓度,使⽤不同的数据类型,能够创建出⻓度不同的变量,变量⻓度的不同,存储的数据范围就有所差异。 sizeof操作符 sizeof 是⼀个关键字,也是操作符,专⻔是⽤来计算特…...
MapReduce相关概念(自用)
MapReduce:分布式计算模型 MapReduce 是一种分布式计算模型,由 Google 在 2004 年提出,用于大规模数据集(TB 或 PB 级别)的分布式处理。它通过简单的编程模型,将复杂的分布式计算分解为两个基本阶段&#…...
Nginx - 整合lua 实现对POST请求的参数拦截校验(不使用Openresty)
文章目录 概述步骤 1: 安装 Nginx 和 Lua 模块步骤 2: 创建 Lua 脚本用于参数校验步骤 3: 配置 Nginx 使用 Lua 脚本写法二: 状态码写法三 : 返回自定义JSON复杂的正则校验 步骤 4: 测试和验证ngx.HTTP_* 枚举值 概述 一个不使用 OpenResty 的 Nginx 集…...
I2C(一):存储器模式:stm32作为主机对AT24C02写读数据
存储器模式:在HAL库中,I2C有专门对存储器外设设置的库函数 I2C(一):存储器模式的使用 1、I2C轮询式写读AT24C02一页数据2、I2C轮询式写读AT24C02多页数据3、I2C中断式写读AT24C02一页数据4、I2C使用DMA式写读AT24C02一…...
AI助手网站
chatgpt :https://chatgpt.com/ https://openai.com/index/chatgpt/ 百度ai助手 https://chat.baidu.com/ 百度AI助手https://chat.baidu.com/ 文心快码 文心快码BaiduComate 文心快码BaiduComate 文心快码BaiduComate有代码问题,问文…...
初始nginx
华子目录 nginx介绍nginx功能介绍基础特性web服务相关功能nginx进程结构web请求处理机制 nginx进程间通信nginx启动与http连接建立http处理过程 nginx模块介绍nginx命令演示 nginx介绍 nginx是免费的、开源的、高性能的HTTP和反向代理服务器、邮件代理服务器、以及TCP/UDP代理服…...
可扩展性设计架构模式——事件驱动架构
事件驱动架构(Event-Driven Architecture, EDA)是一种可扩展性设计软件架构模式,它通过事件来触发和通信(以事件为核心),实现不同系统组件之间的解耦(促进应用程序或系统部件之间的松耦合通信&a…...
Prometheus 专栏 —— Prometheus安装、配置
配置文件基本结构 global: 全局配置 scrape_interval: 抓取目标指标的频率,默认为 1minevaluation_interval: 评估告警规则的频率,默认为 1minscrape_timeout: 抓取目标指标数据拉取超时,默认为 10s,如果出现 context deadline e…...
Java并发编程面试题:线程池Fork/Join(19题)
🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编…...
【每日学点鸿蒙知识】WebView代理、2D绘制矩形圆角、TextInput清理按钮、pdf滑动、icon配置问题
1、HarmonyOS Webview 支持设置代理功能吗? 使用Web的onInterceptRequest先拦截再代理来实现。具体可以参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-basic-components-web-V5#ZH-CN_TOPIC_0000001930757269__on…...
抽奖系统(1)(Java 实现)
1. 需求描述 1. 包含管理员的注册与登录 1) 注册包含:姓名、邮箱、手机号、密码 2) 登录包含两种方式 (1) 电话 密码登录 (2) 电话 短信登录;验证码获取 (3) 登录需要校验管理员身份 2. 人员管理:管理员支持创建普通用户,查看…...
数据库系统原理复习汇总
数据库系统原理复习汇总 一、数据库系统原理重点内容提纲 题型:主观题 1、简答题 第一章:数据库的基本概念:数据库、数据库管理系统、三级模式;两级映像、外码 第二章:什么是自然连接、等值连接; 第三…...
基于16QAM的载波同步和定时同步性能仿真,采用四倍采样,包括Costas环和gardner环
目录 1.算法仿真效果 2.算法涉及理论知识概要 3.MATLAB核心程序 4.完整算法代码文件获得 1.算法仿真效果 matlab2022a仿真结果如下(完整代码运行后无水印): 仿真操作步骤可参考程序配套的操作视频。 2.算法涉及理论知识概要 载波同步是…...
鸿蒙next RCP网络请求工具类进阶版来了
前言: 各位同学大家好,有一段时间没有更新文章了,最近因为鸿蒙官方的网络请求换掉了了rcp 之前是使用http 这些都是原生开发的 当然有那种三方大家熟知的 axios (这个也是基于http 后面也会过时)所以大家还是要了解一下rcp的原生的网络请求的。那么我们…...
driftingblues6_vh靶机
首先把靶机换成NAT模式 使用 arp-scan 命令扫描网段内存活的主机,以获取靶机ip地址 arp-scn -l 尝试访问ip 使用御剑扫描子域名,尝试访问robots.txt文件 通过访问文件我们发现了一个/textpattern/textpattern目录 访问一下目录发现了登录页面 他还给了…...
Go语言入门
文章目录 零、Linux下Go的安装1.下载、解压2.添加环境变量3.验证安装4.初始化Go模块(1)cd到项目目录(2)初始化模块(3)获取依赖包(4)清理和验证依赖(5)检查 go.mod 文件(6)介绍 go.mod 和 go.sum 文件 5.项目目录结构 一、感性认识1.从 Hello world 开始2.加法函数 二、Go语法1.…...
VS Code中怎样查看某分支的提交历史记录
VsCode中无法直接查看某分支的提交记录,需借助插件才行,常见的插件如果git history只能查看某页面的改动记录,无法查看某分支的整体提交记录,我们可以安装GIT Graph插件来解决这个问题 1.在 VSCode的插件库中搜索 GIT Graph安装&a…...
【杂谈】-AI搜索引擎如何改变传统SEO及其在内容营销中的作用
AI搜索引擎如何改变传统SEO及其在内容营销中的作用 文章目录 AI搜索引擎如何改变传统SEO及其在内容营销中的作用1、什么是AI搜索引擎2、AI搜索引擎对SEO策略的影响3、AI搜索引擎在内容营销转型中的作用4、AI搜索引擎在营销领域的挑战、道德问题和未来5、总结 在当今的数字营销世…...
快速掌握Haproxy原理架构
文章目录 一、原理架构二、无负载均衡三、四层负载均衡的工作流程四、七层负载均衡工作流程五、基础属性mode 属性retries 属性maxconn 属性clitimeout 属性servtimeout 属性states uri 属性 一、原理架构 四层tcp代理:Haproxy仅在客户端和服务器之间双向转发流量&…...
Java中以某字符串开头且忽略大小写字母如何实现【正则表达式(Regex)】
第一种思路是先将它们都转换为小写或大写,再使用String类的startsWith()方法实现: 例如,如下的二个示例: "Session".toLowerCase().startsWith("sEsSi".toLowerCase()); //例子之一//例子之二String str "Hello Wo…...
如何提高Redis服务器的最大打开文件数限制
文章目录 如何提高Redis服务器的最大打开文件数限制问题诊断解决步骤1. 修改系统级别的限制2. 为Redis进程特别设置限制3. 修改Redis配置文件4. 修改systemd服务文件5. 重新加载systemd并重启Redis6. 验证更改 注意事项 如何提高Redis服务器的最大打开文件数限制 在运行高并发…...
React 组件通信完整指南 以及 自定义事件发布订阅系统
React 组件通信完整指南 1. 父子组件通信 1.1 父组件向子组件传递数据 // 父组件 function ParentComponent() {const [data, setData] useState(Hello from parent);return <ChildComponent message{data} />; }// 子组件 function ChildComponent({ message }) {re…...
代码随想录算法【Day5\Day6】
DAY5\Day6 1.熟悉哈希表的数据结构:数组、map和set,使用方法、使用场景 2.哈希表应用场景:解决给你一个元素,判断它在集合里是否出现过。 242.有效的字母异位词 本题用数组解决的。 class Solution { public:bool isAnagram(…...
Oracle 数据库执行计划的查看与分析技巧
目录 Oracle 数据库执行计划的查看与分析技巧一、什么是执行计划二、查看执行计划的方法(一)使用 EXPLAIN PLAN 命令(二)通过 SQL Developer 工具查看(三)启用 AUTOTRACE 功能 三、执行计划中的关键信息解读…...
VMD-SSA-BiLSTM、VMD-BiLSTM、BiLSTM时间序列预测对比
VMD-SSA-BiLSTM、VMD-BiLSTM、BiLSTM时间序列预测对比 目录 VMD-SSA-BiLSTM、VMD-BiLSTM、BiLSTM时间序列预测对比预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.MATLAB实现VMD-SSA-BiLSTM、VMD-BiLSTM、BiLSTM时间序列预测对比; 2.单变量时间序列预测 就是先vmd把变…...
QGIS二次开发(地图符号库操作)
实习三 地图符号库操作 3.1 任务要求 基于QGIS,实现地图符号的设计/存储与显示;基于QGIS实现一个点、线、面shp矢量图层文件的显示。通过设置引用的符号,改变矢量图层的显示效果;可编辑地图的符号库汇中的点符号、线符号、面符号…...
wordpress网站用token登入开发过程
生成跳转token 示例: function generate_login_token($user_id, $secret_key) {$payload [user_id > $user_id,timestamp > time(),];$payload_json json_encode($payload);$signature hash_hmac(sha256, $payload_json, $secret_key);return base64_en…...
Uniapp在浏览器拉起导航
Uniapp在浏览器拉起导航 最近涉及到要在浏览器中拉起导航,对目标点进行路线规划等功能,踩了一些坑,找到了使用方法。(浏览器拉起) 效果展示 可以拉起三大平台及苹果导航 点击选中某个导航,会携带经纬度跳转…...
在 CentOS 上安装 FFmpeg
在CentOS 上安装 FFmpeg 方法一:在线安装 添加 EPEL 和 RPM Fusion 源: sudo yum install epel-release sudo yum install https://download1.rpmfusion.org/free/el/rpmfusion-free-release-$(rpm -E %rhel).noarch.rpm安装 FFmpeg: sudo yu…...
影刀进阶指令 | liblib反推 (SD AI绘图反推)
文章目录 影刀进阶指令 | liblib反推 (SD AI绘图反推)一. 需求二. 流程三. 实现3.1 流程概览3.2 流程步骤讲解1\. 获取png地址2\. 打开页面3\. 上传png文件4\. 获取png的prompt信息 四. 运维 影刀进阶指令 | liblib反推 (SD AI绘图反推) 先看看我们要实现的功能,li…...
WebStorm 创建一个Vue项目
一、下载并安装WebStorm 步骤一 步骤二 选择激活方式 激活码: I2A0QUY8VU-eyJsaWNlbnNlSWQiOiJJMkEwUVVZOFZVIiwibGljZW5zZWVOYW1lIjoiVU5JVkVSU0lEQURFIEVTVEFEVUFMIERFIENBTVBJTkFTIiwiYXNzaWduZWVOYW1lIjoiVGFvYmFv77yaSkVU5YWo5a625qG25rAIOa0uW3peS9nOWupC…...
回归预测 | MATLAB实现CNN-LSTM卷积长短期记忆神经网络多输入单输出回归预测
回归预测 | MATLAB实现CNN-LSTM卷积长短期记忆神经网络多输入单输出回归预测 目录 回归预测 | MATLAB实现CNN-LSTM卷积长短期记忆神经网络多输入单输出回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 MATLAB实现CNN-LSTM卷积长短期记忆神经网络多输入单输出回归…...
rust windwos 两个edit框
use winapi::shared::minwindef::LOWORD; use windows::{core::*,Win32::{Foundation::*,Graphics::Gdi::{BeginPaint, EndPaint, PAINTSTRUCT},System::LibraryLoader::GetModuleHandleA,UI::WindowsAndMessaging::*,}, };// 两个全局静态变量,用于保存 Edit 控件的…...
ArcGIS计算矢量要素集中每一个面的遥感影像平均值、最大值等统计指标
本文介绍在ArcMap软件中,基于矢量面要素集,计算在其中每一个面区域内,遥感影像的像元个数、平均值、总和等统计值,并将统计信息附加到矢量图层的属性表中的方法。 首先,明确一下本文的需求。现在有一个矢量面要素集&am…...
JavaScript高级程序设计基础(十一)
上接语言基础:JavaScript高级程序设计基础(十) 五、集合引用类型 5.1 object 此处简单介绍object,object由两种方式可以创造:由构造函数new Object(),或者对象字面量。如果想要修改对象的值可以用点语法,如object.na…...
【服务器学习专栏 1.2 -- 带外管理】
请阅读 嵌入式学习必备专栏 文章目录 Overview服务器带外管理BMC 介绍BMC 特点BMC 工作原理 Overview 从技术的角度,网络管理可分为带外管理(out-of-band)和带内管理(in-band)两种管理模式。 带内管理,是指…...
《Vue3 二》Vue 的模板语法
在 React 中,想要编写 HTML,是使用 JSX,之后通过 Babel 将 JSX 编译成 React.createElement 函数调用;在 Vue 中,也支持 JSX 的开发模式,但大多数情况下都是使用基于 HTML 的模板语法,在模板中允…...
手机租赁平台开发全攻略打造高效便捷的租赁服务系统
内容概要 手机租赁平台开发,简单说就是让用户能轻松租赁各类手机的高效系统。这一平台不仅帮助那些想要临时使用高端手机的人们节省了不少资金,还为商家开辟了新的收入渠道。随着智能手机的普及,很多人并不需要长期拥有一部手机,…...
【Ext.js 初步入门】Ext.js 作用以及用法 概述
一、Ext.js的作用 首先我们需要了解类似Ext.js以及easyui类似产品的作用是什么。 我的理解是就是相当于一个组件库,它与bootstrap类似产品的区别在于,bootstrap与ext.js和easyui面向的问题不同,bootstrap面向的问题样式,ext.js和…...
基于源码剖析:深度解读JVM底层运行机制
每日禅语 佛说,给你修路的,是你自己;埋葬你的,也是你自己;帮助你的,是你自己;毁灭你的,也是你自己;成就你的,自然还是你自己。所以佛说:自作自受&…...
redis延迟队列
Redis延迟队列 Redis延迟队列是基于Redis构建的消息队列,用来处理需延迟执行的任务。 基本原理 它借助Redis的有序集合(Sorted Set)数据结构达成目的。会把任务及其执行时间分别当成成员与分值存进有序集合,由于执行时间作为分值&…...
GDPU Vue前端框架开发 期末赛道出勇士篇(更新ing)
记住,年底陪你跨年的不会仅是方便面跟你的闺蜜,还有孑的笔记。 选择题 1.下列选项用于设置Vue.js页面视图的元素是()。 A. Template B. script C. style D. title 2.下列选项中能够定义Vuejs根实例对象的元素是(&…...
WordPress TutorLMS插件 SQL注入漏洞复现(CVE-2024-10400)(附脚本)
0x01 产品描述: Tutor LMS是一个功能强大的...
小程序配置文件 —— 14 全局配置 - tabbar配置
全局配置 - tabBar配置 tabBar 字段:定义小程序顶部、底部 tab 栏,用以实现页面之间的快速切换;可以通过 tabBar 配置项指定 tab 栏的表现,以及 tab 切换时显示的对应页面; 在上面图中,标注了一些 tabBar …...
基于python+Django+mysql文档格式转换工具系统设计与实现
博主介绍:黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育、辅导。 所有项目都配有从入门到精通的基础知识视频课程ÿ…...
异步线程池中,ThreadPoolTaskExecutor和ThreadPoolExecutor有什么区别?
异步线程池中,org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor和java.util.concurrent.ThreadPoolExecutor有什么区别? org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor 和 java.util.concurrent.ThreadPoolExec…...
【机器学习】SVM支持向量机(二)
介绍 支持向量机(Support Vector Machine, SVM)是一种监督学习模型,广泛应用于分类和回归分析。SVM 的核心思想是通过找到一个最优的超平面来划分不同类别的数据点,并且尽可能地最大化离该超平面最近的数据点(支持向量…...
基于NodeMCU的物联网电灯控制系统设计
最终效果 基于NodeMCU的物联网电灯控制系统设计 小程序关灯 上图展现了小程序关灯过程的数据传输过程:用户下达关灯指令→小程序下发关灯指令→MQTT服务器接收关灯指令→下位机接收与处理关灯指令。 项目介绍 该项目是“物联网实验室监测控制系统设计(…...