音视频入门基础:RTCP专题(4)——RTCP协议简介(下)
本文接着《音视频入门基础:RTCP专题(3)——RTCP协议简介(中)》,继续对RTCP协议进行简介。本文的一级标题从“十四”开始。
十四、SDES: Source Description RTCP Packet
本段内容对应《RFC 3550》的第6.5节:
根据《RFC 3550》第37页,SDES数据包是一种三级结构,由标头(header)和0个或多个数据块(chunks)组成,每个数据块都由描述该数据块所标识的信源的项目组成。这些项目将在随后的章节中逐一介绍。
version (V), padding (P), length:这几个字段跟SR数据包(Sender Report RTCP Packet)中的字段含义是一样的,见《RFC 3550》第6.4.1节。
packet type (PT):占8位。包含常量202,用于将其标识为RTCP SDES数据包。
source count (SC):占5位。该SDES数据包中包含的SSRC/CSRC数据块的数量。值可以为0但值为0时没有意义。
每个数据块由一个SSRC/CSRC标识符(SSRC/CSRC identifier)和一个由0个或多个项目(items)组成的列表组成,这些项目包含SSRC/CSRC的相关信息。每个数据块以32位边界开始。每个项目由一个8位类型字段(type field)、一个描述文本长度的8位八进制计数(因此不包括这两个八进制header)和文本本身组成。请注意,文本长度不能超过255个八位字节,但这符合限制RTCP带宽消耗的需要。
项目(Items)是连续的,即项目不会单独填充到32位边界。文本(Text)不以空字节结束,因为某些多八位位组编码(multi-octet encodings)包含空八位位组。每个数据块中的项目列表(list of items)必须以一个或多个空八位位组结束,第一个空八位位组被解释为项目类型为0,表示列表结束。空项目类型八位位组之后没有长度八位位组,但如果需要,必须包含额外的空八位位组,以填充到下一个32位边界。请注意,这种填充与RTCP报头中P位(P bit)指示的填充是分开的。包含0项(四个空八位位组)的数据块有效但无用。
终端系统(End systems)发送一个SDES数据包,其中包含自己的源标识符(source identifier,与fixed RTP header中的SSRC相同)。混音器(mixer)会发送一个SDES数据包,其中包含它从中接收SDES信息的每个贡献源(contributing source)的一个分块;如果有超过31个此类信息源,则会发送多个上述格式的完整SDES数据包(见《RFC 3550》第7节)。
目前定义的SDES项目将在接下来的章节中介绍。只有CNAME项是强制性的。此处显示的某些项目可能只对特定配置文件(particular profiles)有用,但所有项目类型都是从一个公共空间(common space)分配的,以促进共享使用并简化独立于配置文件的应用。如《RFC 3550》第15节所述,可通过向IANA注册类型编号在配置文件中定义其他项目。
十五、CNAME: Canonical End-Point Identifier SDES Item
本段内容对应《RFC 3550》的第6.5.1节:
根据《RFC 3550》第38页,CNAME标识符(CNAME identifier)具有以下属性:
1.由于随机分配的SSRC标识符在发现冲突或重新启动程序时可能会发生变化,因此必须包含 CNAME项,以便将SSRC标识符绑定到保持不变的源标识符(发送方或接收方)上。
2.与SSRC标识符(SSRC identifier)一样,CNAME标识符在一个RTP会话的所有参与者中也应是唯一的。
3.要在一组相关RTP会话中为一个参与者使用的多个媒体工具提供绑定,该参与者的CNAME应该是固定的。
4.为便于第三方监测,CNAME应适合程序或个人定位来源。
因此,在可能的情况下,CNAME应通过算法得出,而不是手动输入。为满足这些要求,除非某个配置文件指定了其他语法或语义,否则应使用以下格式。CNAME项的格式应为 “user@host”,如果在单用户系统中没有用户名,则应为 “host”。对于这两种格式,“host ”都是实时数据源主机的完全合格域名,格式符合《RFC 1034》、《RFC 1035》和《RFC 1123》第2.1节中规定的规则格式;或者是RTP通信所用接口上主机数字地址的标准ASCII表示法。例如,IP第4版(IP Version 4)地址的标准 ASCII表示法是“点十进制”,也称为点四进制,而对于IP第6版(IP Version 6),地址的文本表示法是由冒号分隔的十六进制数字组(《RFC 3513》中有详细说明)。对于人类观察者来说,完全合格的域名更方便,而且可以避免另外发送NAME项目,但在某些操作环境中可能很难或不可能可靠地获取该域名,因此可能在此类环境中运行的应用程序应使用地址的ASCII表示法。
例如,多用户系统中的 “doe@sleepy.example.com”、“doe@192.0.2.89 ”或 “doe@2201:056D::112E:144A:1E24”。在没有用户名的系统中,示例为 “sleepy.example.com”、“192.0.2.89 ”或 “2201:056D::112E:144A:1E24”。
用户名应采用 “finger ”或 “talk ”等程序可以使用的形式,即通常是登录名,而不是个人名。主机名不一定与参与者电子邮件地址中的主机名相同。
如果应用程序允许用户从一台主机生成多个数据源,则此语法无法为每个数据源提供唯一标识符。这种应用程序必须依靠SSRC来进一步识别源,或者该应用程序的配置文件必须为CNAME标识符指定额外的语法。
如果每个应用程序都独立创建其CNAME,则生成的CNAME可能不完全相同,而这正是在一组相关RTP会话中提供跨属于一个参与者的多个媒体工具绑定所需要的。如果需要跨媒体绑定,每个工具的CNAME可能需要由协调工具以相同的值进行外部配置。
应用程序编写者应注意,私有网络地址分配(如《RFC 1918》中提出的Net-10分配)可能会创建非全局唯一的网络地址。如果具有私有地址且没有直接 IP连接到公共互联网的主机通过RTP级转换器将其 RTP 数据包转发到公共互联网,这将导致非唯一的CNAME。这将导致非唯一的 CNAME。(另请参加《RFC 1627》)为处理这种情况,应用程序可提供一种配置唯一CNAME的方法,但翻译器(translator)有责任在必要时将 CNAME从私有地址翻译为公用地址,以防止私有地址被暴露。
十六、BYE: Goodbye RTCP Packet
本段内容对应《RFC 3550》的第6.6节:
根据《RFC 3550》第43页,BYE数据包表示一个或多个信号源不再活动。
version (V), padding (P), length:这几个字段跟SR数据包(Sender Report RTCP Packet)中的字段含义是一样的,见《RFC 3550》第6.4.1节。
packet type (PT):占8位。包含常量203,用于将其标识为RTCP BYE数据包。
source count (SC):占5位。此BYE数据包中包含的SSRC/CSRC标识符的数量。值可以为0但值为0时没有意义。
《RFC 3550》第6.3.7和8.2节规定了何时发送BYE数据包的规则。如果混音器(mixer)收到BYE 数据包,混音器应转发BYE数据包,并保持SSRC/CSRC标识符不变。如果混音器关闭,则应发送 BYE数据包,列出其处理的所有贡献源(contributing sources)及其自身的SSRC标识符。可选地,BYE数据包可包括一个8位八进制数,然后是表示退出原因的八进制文本,如 “摄像机故障(camera malfunction) ”或 “检测到RTP循环(RTP loop detected)”。字符串的编码与SDES的编码相同。如果字符串将数据包填满到下一个32位边界,则该字符串不以空值结束。否则,BYE 数据包必须使用空八位位组填充到下一个32位边界。这种填充与RTCP报头(RTCP header)中P位指示的填充不同。
十七、APP: Application-Defined RTCP Packet
本段内容对应《RFC 3550》的第6.7节:
根据《RFC 3550》第44页,APP数据包用于开发新应用和新功能时的试验性使用,无需注册数据包类型值。名称未被识别的APP数据包应被忽略。经过测试后,如果有理由更广泛地使用,建议重新定义每个APP数据包,去掉子类型(subtype)和名称(name)字段,并使用RTCP数据包类型向IANA注册。
version (V), padding (P), length:这几个字段跟SR数据包(Sender Report RTCP Packet)中的字段含义是一样的,见《RFC 3550》第6.4.1节。
subtype: 占5位。可作为子类型使用,以便在一个唯一名称下定义一组APP数据包,或用于任何与应用相关的数据。
packet type (PT):占8位。包含常数 204,用于将其标识为RTCP APP数据包。
name:占4个八位字节。由定义APP数据包的人员选择的名称,相对于该应用程序可能收到的其他APP数据包而言是唯一的。应用程序创建者可以选择使用应用程序名称,然后协调分配子类型值给希望为应用程序定义新数据包类型的其他人。或者,建议其他人根据自己所代表的实体选择一个名称,然后在该实体内协调该名称的使用。名称被解释为由四个ASCII字符组成的序列,大写和小写字母被视为不同的字符。
application-dependent data:长度可变。APP 数据包中可能出现也可能不出现应用相关数据。它由应用程序而非RTP本身解释。长度必须是 32 位的倍数。
十八、Summary of Protocol Constants
本段内容对应《RFC 3550》的第12节,根据《RFC 3550》第58页,本节简要列出了《RFC 3550》中定义的常量。
RTP有效载荷类型 (RTP payload type,PT) 常量是在配置文件(profiles)而不是《RFC 3550》中定义的。但是,RTP报头(RTP header)中包含标记位(marker bit)和有效载荷类型的八位位组必须避免使用保留值200和201(十进制),以便在《RFC 3550》附录A.1中描述的报头验证程序中将RTP数据包与RTCP SR和RR数据包类型区分开来。对于《RFC 3550》中所示的一个标记位和一个7 位有效载荷类型字段的标准定义,这一限制意味着有效载荷类型72和73被保留。
(一)RTCP Packet Types
与RTP数据包或其他无关数据包相比,这些类型值的选择范围为200-204,以改进RTCP数据包的报头有效性检查。将RTCP数据包类型字段与RTP报头(RTP header)的相应八位字节进行比较时,该范围对应于标记位为1(数据包中通常不为 1)和标准有效载荷类型字段的高位为1(因为静态有效载荷类型通常定义在低半部分)。由于全0和全1是常见的数据模式,因此该范围在数值上与 0和255之间有一定的距离。
由于所有复合RTCP数据包都必须以SR或RR开头,因此这些代码被选为偶数/奇数对(even/odd pair),以便RTCP有效性检查(RTCP validity check)能测试带掩码和值的最大位数。
其他RTCP数据包类型可通过IANA注册(参见《RFC 3550》第15 节)
(二)SDES Types
其他SDES 类型可通过 IANA 注册(见《RFC 3550》第15节)。
十九、IANA Considerations
本段内容对应《RFC 3550》的第15节,根据《RFC 3550》第61页,其他RTCP数据包类型(Additional RTCP packet types)和SDES项目类型(SDES item types)可通过互联网编号(Internet As-signed Numbers)分配机构 (IANA) 注册。由于这些数字空间较小,允许不受限制地注册新值并非明智之举。为便于审查申请并促进多个应用程序共享新类型,注册新值的申请必须记录在RFC或其他永久性、随时可用的参考资料中,如其他合作标准机构(如 ITU-T)的产品。根据 “指定专家 ”的建议,也可接受其他申请。(有关当前专家的联系信息,请与IANA 联系)。
RTP预案规范应向IANA注册一个格式为“RTP/xxx ”的预案名称,其中xxx是预案标题的简短缩写。这些名称供高级控制协议使用,如会话描述协议(Session Description Protocol,SDP),《RFC 2327 》,用于指代传输方法。
相关文章:
音视频入门基础:RTCP专题(4)——RTCP协议简介(下)
本文接着《音视频入门基础:RTCP专题(3)——RTCP协议简介(中)》,继续对RTCP协议进行简介。本文的一级标题从“十四”开始。 十四、SDES: Source Description RTCP Packet 本段内容对应《RFC 3550》的第6.5节…...
PyCharm2024.3.5专业版解决Conda executable is not found问题
项目场景: pycharm使用anaconda 内的虚拟环境 pycharm 2024.3.5 专业版 C:\Users\Administrator>conda infoactive environment : transmute_recipe_generatoractive env location : D:\anaconda3\envs\transmute_recipe_generatorshell level : 1user config…...
滑动窗口思想 面试算法高频题
基本思想 滑动窗口思想其实就是快慢型的特例 计算机网络中滑动窗口协议(Sliding Window Protocol),该协议是TCP实现流量控制等的核心策略之一。事实上在与流量控制、熔断、限流、超时等场景下都会首先从滑动窗口的角度来思考问题࿰…...
Linux中特殊的变量
1.$# 含义:表示传入脚本或函数的参数数量。 用法:用于检查用户是否提供了足够的参数。 示例: #!/bin/bash echo "参数数量: $#"2.$? 含义:表示上一条命令的退出状态。如果命令成功执行,值为 0;…...
Linux文件系统与日志分析
目录 一.日志 1.1日志的定义 1.2日志的功能 1.3日志的分类 1.4日志的文件格式 1.5用户日志 1.6一些常见的日志 1.7日志消息的级别 二.系统日志管理 rsyslog 2.1rsyslog的定义 2.2rsyslog 配置文件 2.3rsyslog的实际应用----单独显示某一服务的日志 1.编辑rsyslog配…...
从传统物流到智能调度的全链路升级
一、TMS系统升级的核心目标与整体框架 (一)为什么要升级?传统物流管理的三大痛点 调度效率低下:过去依赖人工分单、手动匹配承运商,订单量大时容易出错,比如不同区域的订单混排导致运输路线绕路ÿ…...
UE5中如何修复后处理动画蓝图带来的自然状态下的metablriger身体绑定形变(如耸肩)问题
【[metablriger] UE5中如何修复后处理动画蓝图带来的自然状态下的metablriger身体绑定形变(如耸肩)问题】 UE5中如何修复后处理动画蓝图带来的自然状态下的metablriger身体绑定形变(如耸肩)问题...
STL_vector_01_基本用法
👋 Hi, I’m liubo👀 I’m interested in harmony🌱 I’m currently learning harmony💞️ I’m looking to collaborate on …📫 How to reach me …📇 sssssdsdsdsdsdsdasd🎃 dsdsdsdsdsddfsg…...
css2学习总结之尚品汇静态页面
css2总结之尚品汇 一、布局 在 PC 端网页中,一般都会有一个固定宽度且水平居中的盒子,来显示网页的主要内容,这是网页 的版心。 版心的宽度一般是 960 ~ 1200 像素之间。 版心可以是一个,也可以是多个。 二、布局相关名词 我…...
Lua 第5部分 表
表( Table )是 Lua 语言中最主要(事实上也是唯一的)和强大的数据结构。 使用表,Lua语言可以以一种简单、统一且高效的方式表示数组、集合、记录和其他很多数据结构。 Lua语言也使用表来表示包( package &am…...
01分数规划
https://ac.nowcoder.com/acm/contest/22353/1011 并不需要高级数据结构,对答案二分即可。 假定当前二分的答案为 x x x,则 ∑ v i ∑ w i ≥ x \frac{ \sum_{v_i} }{\sum_{w_i}} ≥ x ∑wi∑vi≥x 成立时 x x x 才可能是最后的答案。 化简式…...
无人机动力系统全维度解析:技术演进、选型策略与未来趋势
一、动力系统技术理念与设计逻辑 (一)核心技术指标 能量密度:决定续航能力的关键参数,单位为 Wh/kg。当前主流锂聚合物电池能量密度约 250-300Wh/kg,氢燃料电池可达 500-800Wh/kg,航空燃油则高达 12,000W…...
重新审视中国的GB标准(44495 – 44497)
此前,我们深入探讨了中国新推出的智能互联汽车(ICV)网络安全标准GB Standard 44495-2024。我们探讨了该标准对汽车制造商的影响、与UNECE R155和ISO/SAE 21434等全球标准的一致性,以及该标准对未来汽车网络安全的意义。 然而,GB 44495-2024并…...
Linux进程控制(五)之做一个简易的shell
文章目录 做一个简易的shell预备知识代码实现运行结果 做一个简易的shell 重谈Shell shell是操作系统的一层外壳程序,帮我们用户执行指令, 获取到指令后,交给操作系统,操作系统执行完后,把执行结果通过shell交给用户…...
Apache Kafka全栈技术解析
目录 第一章 Kafka概述与核心价值 1.1 消息队列的演进与Kafka的诞生 1.2 Kafka的核心应用场景 1.3 Kafka生态全景图 第二章 Kafka核心概念与架构解析 2.1 核心概念深度剖析 2.2 Kafka架构设计精要 第三章 Kafka环境搭建与配置 3.1 单机部署实战 3.2 集群部署最佳实践 …...
结合 Flink/Spark 进行 AI 大数据处理(实时数据 + AI 推理的应用场景)
随着企业对实时智能决策的需求日益增强,将 Flink / Spark 等流批计算框架 与 大模型推理能力相结合,正在成为 AI 工业化落地的重要实践路径。本篇文章将深入介绍如何将 AI 模型集成到大数据流处理系统中,实现实时感知、智能判断与自动反馈。 1. 为什么需要“实时数据 + AI 推…...
开发PDF时,如何比较 PDF 文件
在 PDF 论坛上,“如何比较 PDF 文件”是一个经常被提到的问题。在开始之前,重要的是要明确你想要比较的内容是什么。 不同的 PDF 文件可能看起来一样吗? 是的,可能。不同的 PDF 创建工具可能会生成在视觉上完全相同的页面&#x…...
自动提取pdf公式 ➕ 输出 LaTeX
# 创建打包脚本的主内容 script_content """ from doc2x.extract_formula import extract_formula_imgs from pix2text import Pix2Text from PIL import Image import osdef main():pdf_path "your_file.pdf" # 将你的PDF命名为 your_file.pdf 并…...
abaqus二次开发python程序集
abaqus二次开发python程序集 1、设置字体背景色等2、读取模态频率并写入 csv 文件3、在两个窗口快速对比各价模态 1、设置字体背景色等 # _*_ coding:UTF-8 _*_from abaqusConstants import* def fontsize(sessionNone):#设置字体session.viewports[Viewport: 1].viewportAnno…...
高级java每日一道面试题-2025年3月23日-微服务篇[Nacos篇]-如何使用Nacos进行服务发现?
如果有遗漏,评论区告诉我进行补充 面试官: 如何使用Nacos进行服务发现? 我回答: 在Java高级面试中讨论如何使用Nacos进行服务发现时,可以从多个角度深入探讨,包括基本概念、配置步骤、代码示例以及高级特性。以下是综合了多种信息的详细回…...
k8s核心资源对象一(入门到精通)
本文将深入探讨Kubernetes中的核心资源对象,包括Pod、Deployment、Service、Ingress、ConfigMap和Secret,详细解析其概念、功能以及实际应用场景,帮助读者全面掌握这些关键组件的使用方法。 一、pod 1 pod概念 k8s最小调度单元,…...
了解 DeepSeek R1
了解DeepSeek R1 R1探索纯强化学习是否可以在没有监督微调的情况下学会推理的能力。 ‘Aha’ Moment 这种现象有点类似于人类在解决问题时突然意识到的方式,以下是它的工作原理: 初始尝试:模型对解决问题进行初始尝试识别:识别…...
【C语言】大小端字节序和字节序判断
前言: 在上章介绍了整形在内存的储存,了解了原码,反码,补码,知道了整数在内存的储存一般是补码,解决了负数相加的问题。 那么在本章为大家讲解一下大小端字节序。 一那字节序是什么呢? 字节…...
DrissionPage移动端自动化:从H5到原生App的跨界测试
一、移动端自动化测试的挑战与机遇 移动端测试面临多维度挑战: 设备碎片化:Android/iOS版本、屏幕分辨率差异 混合应用架构:H5页面与原生组件的深度耦合 交互复杂性:多点触控、手势操作、传感器模拟 性能监控:内存…...
ARM 汇编启动代码详解:从中断向量表到中断处理
ARM 汇编启动代码详解:从中断向量表到中断处理 引言 在嵌入式系统开发中,ARM 处理器(如 Cortex-A 系列)的启动代码是系统初始化和运行的基础。启动代码通常包括中断向量表的创建、初始化硬件状态(如关闭缓存和 MMU&a…...
笔试专题(七)
文章目录 乒乓球筐(哈希)题解代码 组队竞赛题解代码 删除相邻数字的最大分数(线性dp)题解代码 乒乓球筐(哈希) 题目链接 题解 1. 两个哈希表 先统计第一个字符串中的字符个数,再统计第二个字…...
React基础知识(一)
文章目录 概念特点React基本使用hello_react案例虚拟DOM的两种创建方式使用jsx创建使用js创建 虚拟DOM和真实DOM React jsxXMLjsx语法规则作用基本语法规则js语句和js代码babel.js作用 模块与组件模块组件 React面向组件编程函数式组件类组件 概念 react是一个将数据渲染为Htm…...
红黑树(Red-Black Tree)核心知识点与面试高频问题
红黑树(Red-Black Tree)核心知识点与面试高频问题 一、红黑树的核心性质 红黑树是一种自平衡的二叉搜索树,通过以下规则确保平衡性: 节点颜色:每个节点是红色或黑色。 根节点:根必须是黑色。 叶子节点&a…...
SpringBoot整合SSM
一、SpringBoot整合SSM SpringBoot整合SpringSpringBoot整合SpringMVCSpringBoot整合MyBatis(主要) 步骤一:创建SpringBoot工程,添加druid依赖 <!-- todo 1 添加druid连接池依赖--> <dependency><groupId>co…...
set/multiset容器
1.概念 所有元素会在插入时自动排序 set/multiset属于关联式容器,底层结构是用二叉树实现。 set不允许重复元素,multiset允许重复元素。 2. set构造和赋值 set<T> st; set(const set &st);// 拷贝构造函数 set& operator(const set &a…...
vim 编辑器 使用教程
Vim是一款强大的文本(代码)编辑器,它是由Bram Moolenaar于1991年开发完成。它的前身是Bill Joy开发的vi。名字的意义是Vi IMproved。 打开vim,直接在命令行输入vim即可,或者vim <filename>. Vim分为四种模式&a…...
去中心化固定利率协议
核心机制与分类 协议类型: 借贷协议(如Yield、Notional):通过零息债券模型(如fyDai、fCash)锁定固定利率。 收益聚合器(如Saffron、BarnBridge):通过风险分级或博弈论…...
Python高阶函数-filter
1. 基本概念 filter() 是Python内置的高阶函数,用于过滤序列中的元素。它接收一个函数和一个可迭代对象作为参数,返回一个迭代器,包含使函数返回True的所有元素。 filter(function, iterable)2. 工作原理 惰性计算:filter对象是…...
hive/doris查询表的创建和更新时间
hive查询表的创建和更新时间: SELECT d.NAME AS database_name, t.TBL_NAME AS table_name, FROM_UNIXTIME(t.CREATE_TIME) AS create_time, FROM_UNIXTIME(tp.PARAM_VALUE) AS last_ddl_time FROM metastore.TBLS t JOIN metastore.DBS d ON t.DB_ID d.DB_ID JOIN…...
40常用控件_WindowFrame的影响
window frame 的影响 如果 widget 作为一个窗口(带有标题栏,最小化,最大化,关闭按钮),那么在计算尺寸和坐标的 时候就有两种算法.包含 window frame 和 不包含 window frame. 其中x(),y0,frameGeometry(), pos(),move() 都是按照包含 window frame 的方式来计算 的. 其中 geome…...
PCB 赋能机器人技术革新:核心功能与前沿趋势
一、智能控制中枢的异构集成 采用 20 层刚挠结合板架构,搭载 NVIDIA Jetson AGX Orin SoC(100TOPS 算力),集成 64 位 ARMv8 内核与 32GB 内存,实现多模态传感器数据融合与实时决策。板载 128MB DDR4 缓存支持 μs 级响…...
unity 环形UI菜单实现方法2
在项目中需要一个环形UI并且循环往复的效果,这个方法思路为提前预设好位置,让UI根据坐标预设的移动,然后使用mask遮罩达到循环往复效果的目的。 下图分别分为了三个列表 第一个列表poslist是提前预设的位置 第二个列表为背景暂时不用看 第三个…...
Redis进阶--主从复制
目录 一、引言 二、介绍 三、解决问题 四、配置主从复制 1.复制 全量复制: 部分复制: 实时复制: 五、总结 一、引言 本篇文章将继续介绍Redis中的主从复制机制 二、介绍 主从复制是在分布式系统中实现的,希望有多个服务器…...
Redisson分布式锁:原理、使用
1. Redisson简介 Redisson是一个基于Redis的Java客户端库,提供了丰富的分布式对象和服务(如分布式锁、信号量、Map等)。其核心优势在于简化分布式锁的实现,并解决了原生Redis分布式锁的常见问题(如死锁、误删…...
Java设计模式之外观、享元、组合模式《三国争霸:模式风云录》
第一章:乱世起(外观初现) 黄巾余孽张角三兄弟操控"混沌子系统",各地流民不堪996劳役。观国隐士诸葛孔明出山,在博望坡构建首个"军师智脑": /*** 外观模式:军师智…...
设计模式之解释器模式:原理、实现与应用
引言 解释器模式(Interpreter Pattern)是一种行为型设计模式,它定义了一种语言的文法表示,并提供一个解释器来解释该语言中的句子。解释器模式适用于需要解析特定语法规则的场景,如正则表达式、SQL解析等。本文将深入…...
redis itheima
缓存问题 核心是如何避免大量请求到达数据库 缓存穿透 既不存在于 redis,也不存在于 mysql 的key,被重复请求 public Result queryById(Long id) {String key CACHE_SHOP_KEYid;// 1. redis & mysqlString shopJson stringRedisTemplate.opsFo…...
AF3 OpenFoldDataModule类setup方法解读
AlphaFold3 data_modules 模块的 OpenFoldDataLoader 类 setup 方法用于设置数据集的关键部分,负责根据不同的模式(训练、验证或预测)生成和初始化相应的数据集。 源代码: def setup(self, stage=None):# Most of the arguments are the same for the three datasets data…...
服务器报错:xxx/libc.so.6: version `GLIBC_2.32‘ not found
/lib/x86_64-linux-gnu/libc.so.6: version GLIBC_2.32 not found (required by ./aima-sim-app-main) 解决思路 根据错误信息,您的应用程序 aima-sim-app-main 和 libmujoco.so.3.1.6 库依赖于较新的 GNU C Library (glibc) 版本(如 GLIBC_2.32, GLIBC…...
FPGA状态机设计:流水灯实现、Modelsim仿真、HDLBits练习
一、状态机思想 1.概念 状态机(Finite State Machine, FSM)是计算机科学和工程领域中的一种抽象模型,用于描述系统在不同状态之间的转换逻辑。其核心思想是将复杂的行为拆解为有限的状态,并通过事件触发状态间的转移。 2.状态机…...
机试题——最少乘坐公交次数
题目描述 春节将近,小明想在节日期间逛一逛城里的 ( N ) 个著名景点。所有景点都能通过坐公交到达。需要设计一种公交路线方案,让小明能最快地逛完所有景点。 输入描述 第一行:一个整数 ( N ),表示景点数量,满足 ( …...
防孤岛保护装置在分布式光伏并网中的应用
什么是光伏的“孤岛效应” 孤岛islanding 包含负荷和电源的部分电网,从主网脱离后继续孤立运行的状态。孤岛可分为非计划性孤岛和计划性孤岛。 孤岛效应的危害 当电网侧停电检修,若并网光伏电站的逆变器仍在继续供电,维修人员不一定…...
记一次gitlab服务器负载过高问题处理
服务器上进程 /var/opt/gitlab/gitlab-rails/etc/unicorn.rb /opt/gitlab/embedded/service/gitlab-rails/config.ru 进程服务器cpu占用过高应该怎么处理 tail -f /var/log/gitlab/gitlab-rails/production.log调整 Unicorn 配置:unicorn.rb 是 Unicorn 服务器的配…...
LiT and Lean: Distilling Listwise Rerankers intoEncoder-Decoder Models
文章:ECIR 2025会议 一、动机 背景:利用LLMs强大的能力,将一个查询(query)和一组候选段落作为输入,整体考虑这些段落的相关性,并对它们进行排序。 先前的研究基础上进行扩展 [14,15],…...
【项目日记】高并发服务器项目总结
生活总是让我们遍体鳞伤, 但到后来, 那些受伤的地方一定会变成我们最强壮的地方。 -- 《老人与海》-- 高并发服务器项目总结 模块关系图项目工具模块缓冲区模块通用类型模块套接字socket模块信道Channel模块多路转接Poller模块 Reactor模块时间轮Tim…...