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

SOME/IP--协议英文原文讲解12(完结)

前言
SOME/IP协议越来越多的用于汽车电子行业中,关于协议详细完全的中文资料却没有,所以我将结合工作经验并对照英文原版协议做一系列的文章。基本分三大块:

1. SOME/IP协议讲解

2. SOME/IP-SD协议讲解

3. python/C++举例调试讲解


4.3 Compatibility Rules for Interface Version
The Interface Version identifies the Payload format. The Payload format is affected by
• the Service Interface specification
• the serialization configuration (e.g. usage of variable size arrays, size of length
fields, padding, TLV, SOME/IP-TP).
[PRS_SOMEIP_00937]
Upstream requirements: RS_SOMEIP_00003
The Interface Version shall be increased for any of the following reasons:
• incompatible changes in the Payload format
• incompatible changes in the service behaviour
• required by application design

Note: The Interface Version shall not be increased for compatible changes in the Payload format.
[PRS_SOMEIP_00938]
Upstream requirements: RS_SOMEIP_00003
The rules in [PRS_SOMEIP_00758] shall define the compatibility of changes of the
payload format. For complex data types the rules shall be applied recursively. X denotes a compatible change, an empty cell denotes an incompatible change.
Note:
This table is based on the specification of the SOME/IP protocol. As a rule of thumb,
interfaces are compatible if the receiver of data finds all expected information on the
expected locations.

这段内容讨论了 **SOME/IP 协议** 中 **接口版本(Interface Version)** 的兼容性规则,特别是关于 **Payload 格式** 和 **服务行为** 的变化。以下是详细解释:

---对于车厂而言一般不会用到这个字段,因为如果有变更的话,会直接更新释放矩阵表版本。不允许有多版本兼容的情况存在。

### 核心内容
1. **接口版本的作用**:
   - 接口版本用于标识 Payload 格式。
   - Payload 格式受以下因素影响:
     - 服务接口规范(Service Interface specification)。
     - 序列化配置(例如变长数组的使用、长度字段的大小、填充、TLV、SOME/IP-TP)。

2. **接口版本增加的规则**:
   - 在以下情况下,必须增加接口版本:
     - Payload 格式发生不兼容的变化。
     - 服务行为发生不兼容的变化。
     - 应用程序设计要求。

3. **兼容性变化的处理**:
   - 如果 Payload 格式的变化是兼容的,则不应增加接口版本。
   - 兼容性变化的规则在 [PRS_SOMEIP_00758] 中定义。

---

### 关键点
1. **不兼容变化**:
   - 不兼容变化是指接收方无法正确解析或处理 Payload 的变化。
   - 例如:
     - 更改字段的顺序。
     - 删除或重命名字段。
     - 更改字段的数据类型。

2. **兼容变化**:
   - 兼容变化是指接收方仍然能够正确解析和处理 Payload 的变化。
   - 例如:
     - 添加新字段(不影响现有字段的解析)。
     - 扩展字段的长度(不影响现有数据的解析)。

3. **复杂数据类型的兼容性**:
   - 对于复杂数据类型(如结构体、数组),兼容性规则应递归应用。
   - 例如,如果结构体中的某个字段发生不兼容变化,则整个结构体被视为不兼容。

下面表格列举了会引起内部版本号变更的payload的各种可能的情况:

The following legend to the table applies:
ENUM-REMARK: The "Receiver" of an Enumeration needs to know all values it can receive, while the "Transmitter" does not have to send all values the "Receiver" knows.
接收端必须知道它接收到的所有枚举的值的含义。发送端不需要发送所有的枚举给接收端
假如一个服务,给client1 和 client2 用到的枚举值的范围不一致 也是有可能的。
MAXIMUM-MESSAGE-SIZE (MMS): The compability in Classic Platform is limited by
the maximum configured size of message. This means that if the message size is configured
larger than necessary, additional text could be added and, independently of the message size
on tag, can be replaced by a new one.
OPTIONAL-METHOD-ARGUMENTS-REMARK: See note above [PRS_SOMEIP_00230].
DEFAULT-VALUE: A default value is required for this change to be compatible.
ZERO-TERMINATED: Strings are terminated with a "\0"-character(see [PRS_SOMEIP_00373],
[PRS_SOMEIP_00911], [PRS_SOMEIP_00912] and [PRS_SOMEIP_00913])

The column "Transmitter" refers to the side transmitting a SOME/IP message, which
can be the transmitter of an event (provider of the interface) or the method arguments
used by the caller of a method (user of the interface) or the method result returned by
the callee of a method (provider of the interface). The column "Receiver" refers to the
side receiving a SOME/IP message, which can be the receiver of an event (user of the
interface) or the method arguments forwarded to the callee of a method (provider of the
interface) or the method result forwarded to the caller of a message (user of the interface). For fields, compatibility is only given if both the "Transmitter" and the "Receiver"
columns are marked as compatible, because the same content will be transmitted by
the side defined by the provider of the interface (notification event, getter method) and
the user of the interface (setter method).

1. MAXIMUM-MESSAGE-SIZE (MMS)(最大消息大小)

  • 解释:在 Classic Platform(经典平台) 中,消息的兼容性受到配置的最大消息大小的限制。也就是说,如果配置的消息大小比实际需要的要大,那么可能会附加额外的文本,且无论标签中的消息大小如何,最终可能会被新的消息替代。

  • 影响:配置不当的消息大小可能导致不必要的数据被添加,或者消息内容被不期望地替换,这可能会影响系统的稳定性或传输的正确性。

2. OPTIONAL-METHOD-ARGUMENTS-REMARK(可选方法参数说明)

  • 解释:这部分提到了可选方法参数的情况,具体的说明可以参考 PRS_SOMEIP_00230,这是一个SOME/IP协议相关的注释或标准文档编号。

  • 作用:如果方法参数是可选的,那么需要特别注意它们的处理方式,以保证接口的兼容性。

3. DEFAULT-VALUE(默认值)

  • 解释:对于一些变更或设置,必须提供一个默认值,以确保这些变更与现有系统兼容。如果没有默认值,可能会导致兼容性问题。

  • 影响:默认值的缺失可能导致系统无法正常工作或接口不兼容,因此必须在设计时明确指定默认值。

4. ZERO-TERMINATED(零终止符)

  • 解释:字符串在SOME/IP协议中使用 "\0" 字符来进行终止,表示字符串的结束。这是C语言等编程语言中常见的字符串终止方式。

  • 参考:具体的规定可以参考 PRS_SOMEIP_00373PRS_SOMEIP_00911PRS_SOMEIP_00912PRS_SOMEIP_00913 等文档。这些标准文档详细描述了如何处理字符串的终止符问题。

5. Transmitter(发送方) 和 Receiver(接收方)

  • 解释:SOME/IP协议中的“发送方”和“接收方”分别指的是消息的发送方和接收方。
    • 发送方:可以是事件的发送方(接口的提供者),方法调用中的参数发送方(接口的使用者)或方法返回结果的发送方(接口的提供者)。
    • 接收方:可以是事件的接收方(接口的使用者),方法参数转发到方法调用方(接口的提供者),或者方法结果转发给方法调用方(接口的使用者)。
  • 兼容性:对于字段的兼容性要求,如果“发送方”和“接收方”都标记为兼容,那么这个字段才算是兼容的。这是因为相同的内容会在接口提供者(例如通知事件、获取方法)和接口使用者(例如设置方法)之间传递。

1. SOMEIPTP_REASSEMBLY_TIMEOUT

  • 描述:这个参数是一个可配置的计时器,用于接收SOME/IP-TCP分段的超时时间。简而言之,这是在接收SOME/IP协议段时,设置的最大等待时间。如果在这个时间内未完成接收,则认为该消息的接收超时。

2. Upstream Requirements(上游需求):

  • 提到的上游需求包括 RS_SOMEIP_00010RS_SOMEIP_00014,这些是具体的标准或文档编号,说明该参数与其他要求或标准的关系。

3. Parameter Support in AP (应用平台):

  • 这个参数在应用平台(AP)中的支持包括:
    • SomeipEventDeployment.segmentReceptionTimeoutTime,用于配置事件部署中段接收的超时时间。
    • SomeipMethodDeployment.segmentReceptionTimeoutTimeRequest,用于配置方法部署中段接收的超时时间请求。
    • SomeipMethodDeployment.segmentReceptionTimeoutTimeResponse,用于配置方法部署中段接收的超时时间响应。

4. Parameter Support in CP (控制平台):

  • 在控制平台(CP)中,参数的支持包括:
    • SomeipTpChannel,指示SOME/IP协议中的传输通道。
    • SomeipTpRxTimeoutTime,指示接收超时时间。
    • EUCU_-SomeIpTp_00023,这是一个参考标准或文档,提供进一步的详细信息。

5. Mapping Table(映射表)

  • 在表格的最后部分,提到这是 SOME/IP协议参数的映射表。通过这个表格可以了解在不同平台和不同实现中,如何映射和使用这些配置参数。

总结:

此图表主要描述了 SOMEIPTP_REASSEMBLY_TIMEOUT 参数的功能和如何在不同的系统平台(应用平台AP和控制平台CP)中进行配置和支持。该参数用于设置SOME/IP协议中,接收SOME/IP-TCP分段的超时时间,从而影响消息的传输和处理。


6 Protocol usage and guidelines
6.1 Choosing the transport protocol 关于如何选择传输协议
SOME/IP supports User Datagram Protocol (UDP) and Transmission Control Protocol
(TCP). While UDP is a very lean transport protocol supporting only the most important
features (multiplexing and error detecting using a checksum), TCP adds additional
features for achieving a reliable communication. TCP not only handles bit errors but
also segmentation, loss, duplication, reordering, and network congestion.
Inside a vehicle many applications requires very short timeout to react quickly. These
requirements are better met using UDP because the application itself can handle the
unlikely event of errors. For example, in use cases with cyclic data it is often the best
approach to just wait for the next data transmission instead of trying to repair the last
one. The major disadvantage of UDP is that it does not handle segmentation. Hence,
only being able to transport smaller chunks of data.
Guideline:
• Use TCP only if very large chunks of data need to be transported (> 1400 Bytes)
and no hard latency requirements in the case of errors exists
• Use UDP if very hard latency requirements (<100ms) in case of errors is needed
• Use UDP together with SOME/IP-TP if very large chunks of data need to be
transported (> 1400 Bytes) and hard latency requirements in the case of errors
exists
• Try using external transport or transfer mechanisms (Network File System, APIX
link, 1722, ...) when they are more suited for the use case. In this case SOME/IP
can transport a file handle or a comparable identifier. This gives the designer
additional freedom (e.g. in regard to caching).
The transport protocol used is specified by the interface specification on a per-message
basis. Methods, Events, and Fields should commonly only use a single transport protocol.

1. TCP:
 数据大于 1400个字节,且没有严格的延迟要求(可 > 100ms)
2. UDP
数据小于 1400 ,且延时要求较高(< 100ms)
3. UDP + TP分段
数据 大于 1400 且延迟要求高

6.2 Security Considerations for SOME/IP
[PRS_SOMEIP_00946] Restricting Server Connection from Clients
Upstream requirements: RS_SOMEIP_00002
A server may enforce communication policies to protect the server from malicious
or unauthorized clients. I.e. the server may reject subscriptions to eventgroups, or
method calls from unauthorized clients.
Note: These policies are beyond the scope of this specification. Such policies can be
based on the IP address of the client or any other means to identify the client.
[PRS_SOMEIP_00947] Restricting Client Connection to Server
Upstream requirements: RS_SOMEIP_00002
A client may enforce communication policies to protect the client from malicious
servers. I.e. the client may deny communication to unauthorized servers.
Note: These policies are beyond the scope of this specification. Such policies can be
based on the IP address of the server or any other means to identify the client.
总结:通过IP识别,server/client发现对方不认识 对于对方的连接或请求可以不予理会
 


0voice · GitHub

相关文章:

SOME/IP--协议英文原文讲解12(完结)

前言 SOME/IP协议越来越多的用于汽车电子行业中&#xff0c;关于协议详细完全的中文资料却没有&#xff0c;所以我将结合工作经验并对照英文原版协议做一系列的文章。基本分三大块&#xff1a; 1. SOME/IP协议讲解 2. SOME/IP-SD协议讲解 3. python/C举例调试讲解 4.3 Compa…...

Linux 命令大全完整版(12)

Linux 命令大全 5. 文件管理命令 ln(link) 功能说明&#xff1a;连接文件或目录。语  法&#xff1a;ln [-bdfinsv][-S <字尾备份字符串>][-V <备份方式>][--help][--version][源文件或目录][目标文件或目录] 或 ln [-bdfinsv][-S <字尾备份字符串>][-V…...

AI学习第二,三天-Python基础

变量、运算符与数据类型详解 注释 在 Python 中&#xff0c;注释是用于增加代码可读性、解释代码功能但不会被程序执行的部分。 单行注释&#xff1a;使用 # 符号&#xff0c;从 # 开始到本行末尾的内容均为注释。例如&#xff1a; 收起 python # 这是一个单行注释&#xff…...

Nginx代理ElasticSearch

1、将ES的账号:密码通过Base64加密 假设账号密码如下&#xff1a; 账号&#xff1a;elastic密码&#xff1a;elastichuayunworld.com echo -n elastic:elastichuayunworld.com | base64 ZWxhc3RpYzplbGFzdGljQGh1YXl1bndvcmxkLmNvbQ2、在 Nginx 配置中传递认证信息 locatio…...

开源AI网络爬虫工具Crawl4AI

引言 在信息化时代&#xff0c;网络爬虫作为从互联网中提取信息的重要工具&#xff0c;扮演着至关重要的角色。Crawl4AI作为一款开源AI网络爬虫工具&#xff0c;凭借其功能强大和易用性&#xff0c;受到了广泛关注。本文将详细探讨Crawl4AI的定义、特点、优势&#xff0c;以及…...

实现 INFINI Console 与 GitHub 的单点登录集成:一站式身份验证解决方案

本文将为您详细解析如何通过 GitHub OAuth 2.0 协议&#xff0c;为 INFINI Console 实现高效、安全的单点登录&#xff08;Single Sign-On, SSO&#xff09;集成。通过此方案&#xff0c;用户可直接使用 GitHub 账户无缝登录 INFINI Console&#xff0c;简化身份验证流程&#…...

Linux系统安装MySQL5.7(其他版本类似)避坑指南

1.远程连接 在Linux系统安装好MySQL5.7数据库&#xff0c;不要以为就大功告成了后面还有大坑等着你踩了。宏哥这里介绍一下远程连接遇到的坑以及如何处理。由于征文要求安装环境教学除外宏哥这里就不介绍在Linux系统安装mysql数据库&#xff0c;有需要的可以自己百度一下。但是…...

新数据结构(12)——代理

什么是代理 在进行操作时有时不希望用户直接接触到目标&#xff0c;这时需要使用代理让用户间接接触到目标 给目标对象提供一个代理对象&#xff0c;并且由代理对象控制着对目标对象的引用 图解&#xff1a; 代理的目的 控制访问&#xff1a;通过代理对象的方式间接的访问目…...

VLM(视觉语言模型)与DeepSeek R1(奖励机制)如何结合

VLM&#xff08;视觉语言模型&#xff09;与DeepSeek R1&#xff08;奖励机制&#xff09;如何结合 flyfish VLM的传统训练依赖于监督学习&#xff08;直接拟合问答对&#xff09;&#xff0c;而规则奖励函数通常用于强化学习&#xff08;通过试错和奖励反馈优化策略&#xf…...

问题:Flask应用中的用户会话(Session)管理失效

我来分享一个常见的PythonWeb开发问题&#xff1a; 问题&#xff1a;Flask应用中的用户会话(Session)管理失效 这是一个在Flask开发中经常遇到的问题。当用户登录后&#xff0c;有时会话会意外失效&#xff0c;导致用户需要重复登录。 解决方案&#xff1a; 1. 首先&#x…...

Qt/C++面试【速通笔记一】

Qt 信号与槽机制 什么是信号&#xff08;Signal&#xff09;和槽&#xff08;Slot&#xff09;&#xff1f; 在Qt中&#xff0c;信号&#xff08;Signal&#xff09;和槽&#xff08;Slot&#xff09;是实现对象之间通信的一种机制。信号是对象在某些事件发生时发出的通知&…...

RoCBert:具有多模态对比预训练的健壮中文BERT

摘要 大规模预训练语言模型在自然语言处理&#xff08;NLP&#xff09;任务上取得了最新的最优结果&#xff08;SOTA&#xff09;。然而&#xff0c;这些模型容易受到对抗攻击的影响&#xff0c;尤其是对于表意文字语言&#xff08;如中文&#xff09;。 在本研究中&#xff0…...

DeepSeek入门到大师 清华大学[1-5版]全集

1、文件概览 1、清华大学《DeepSeek:从入门到精通》 2、清华大学《Deepseek如何赋能职场应用?》 3、清华大学《普通人如何抓住DeepSeek红利》 4、清华大学《DeepSeekDeepResearch让科研像聊天一样简单》 5、清华大学《DeepSeek与AI幻觉》 6、天津大学《深度解读Deepseek:原理…...

Debezium:实时数据捕获与同步的利器

一、什么是 Debezium Debezium 是一个开源的分布式平台&#xff0c;专门用于捕获数据库中的数据变更。它通过读取数据库的事务日志&#xff0c;能够以非侵入性的方式捕获数据库中发生的所有变化&#xff0c;并将这些变化转化为事件流&#xff0c;实时推送到像 Kafka 这样的消息…...

【蓝桥杯】第十五届省赛大学真题组真题解析

【蓝桥杯】第十五届省赛大学真题组真题解析 一、智能停车系统 1、知识点 &#xff08;1&#xff09;flex-wrap 控制子元素的换行方式 属性值有&#xff1a; no-wrap不换行wrap伸缩容器不够则自动往下换行wrap-reverse伸缩容器不够则自动往上换行 &#xff08;2&#xff0…...

AI助力下的PPT革命:DeepSeek 与Kimi的高效创作实践

清华大学出品《DeepSeek&#xff1a;从入门到精通》分享 在忙碌的职场中&#xff0c;制作一份高质量的PPT往往需要投入大量时间和精力&#xff0c;尤其是在临近截止日期时。今天&#xff0c;我们将探索如何借助 AI 工具 —— DeepSeek 和 Kimi —— 让 PPT 制作变得既快捷又高…...

【MySQL篇】持久化和非持久化统计信息的深度剖析(含analyze命令和mysqlcheck工具两种收集方式)

&#x1f4ab;《博主介绍》&#xff1a;✨又是一天没白过&#xff0c;我是奈斯&#xff0c;从事IT领域✨ &#x1f4ab;《擅长领域》&#xff1a;✌️擅长阿里云AnalyticDB for MySQL(分布式数据仓库)、Oracle、MySQL、Linux、prometheus监控&#xff1b;并对SQLserver、NoSQL(…...

C++ 手撕定时器

C 手撕定时器 思路与知识调用场景类声明 参考 思路与知识 1. 为了支持相同时间戳下多个任务&#xff0c;需要考虑到支持重复key的std::mutimap, 以及成员函数equal_range 2. 工具函数Timer::GetTick 返回一个uint64_t毫秒时间戳作为multimap的key&#xff0c;需要会使用chrono…...

邮件安全之发件人伪造

电子邮件工作原理 电子邮件传输过程中主要涉及到SMTP、IMAP、POP3三种协议&#xff0c;具体功能如下&#xff1a; SMTP:全称Simple Mail Transfer Protocol&#xff0c;即简单邮件传输协议&#xff0c;主要用于发送邮件&#xff0c;使用端口号25。 IMAP:全称Internet Mail Acce…...

前端八股——JS+ES6

前端八股&#xff1a;JSES6 说明&#xff1a;个人总结&#xff0c;用于个人复习回顾&#xff0c;将持续改正创作&#xff0c;已在语雀公开&#xff0c;欢迎评论改正。...

Qt QTreeWidget 总结

Qt QTreeWidget 总结 1. 概述 QTreeWidget 是 Qt 中用于显示树形结构的控件&#xff0c;继承自 QTreeView&#xff0c;但提供了更简单的接口。适合展示层级数据&#xff08;如文件目录、组织结构&#xff09;。每个节点是 QTreeWidgetItem 对象&#xff0c;支持文本、图标、复…...

Python常见面试题的详解16

1. 如何强行关闭客户端和服务器之间的连接&#xff1f; 在网络编程中&#xff0c;有时需要强行中断客户端和服务器之间的连接。对于基于 TCP 协议的连接&#xff0c;由于其面向连接的特性&#xff0c;需要采取特定的步骤来确保连接被正确关闭&#xff1b;而 UDP 是无连接协议&a…...

前端设计模式面试题及参考答案

目录 如何用闭包实现单例模式?列举两种实现方式 工厂模式与构造函数创建对象的核心区别是什么? 抽象工厂模式如何解决多平台 UI 组件兼容问题? 原型模式在前端框架中如何优化对象创建性能? 建造者模式如何实现复杂表单配置的链式调用? 单例模式在全局状态管理中的典型…...

Python Django系列—入门实例(二)

数据库配置 现在&#xff0c;打开 mysite/settings.py 。这是个包含了 Django 项目设置的 Python 模块。 默认情况下&#xff0c;​ DATABASES 配置使用 SQLite。如果你是数据库新手&#xff0c;或者只是想尝试 Django&#xff0c;这是最简单的选择。SQLite 包含在 Python 中…...

STM32-智能台灯项目

一、项目需求 1. 红外传感器检测是否有人&#xff0c;有人的话实时检测距离&#xff0c;过近则报警&#xff1b;同时计时&#xff0c;超过固定时间则报警&#xff1b; 2. 按键 1 切换工作模式&#xff1a;智能模式、按键模式、远程模式&#xff1b; 3. 智能模式下&#xff0c;根…...

HTML之JavaScript DOM操作元素(2)

HTML之JavaScript DOM操作元素&#xff08;2&#xff09; 4.增删元素var element document.createElement("元素名") 创建新元素父元素.appendChild(子元素) 在父元素中追加子元素父元素.insertBefore(新元素,参照元素) 在特定元素之前新增元…...

智能优化算法:莲花算法(Lotus flower algorithm,LFA)介绍,提供MATLAB代码

一、 莲花算法 1.1 算法原理 莲花算法&#xff08;Lotus flower algorithm&#xff0c;LFA&#xff09;是一种受自然启发的优化算法&#xff0c;其灵感来源于莲花的自清洁特性和授粉过程。莲花的自清洁特性&#xff0c;即所谓的“莲花效应”&#xff0c;是由其叶片表面的微纳…...

【复习】计算机网络

网络模型 OSI 应用层&#xff1a;给应用程序提供统一的接口表示层&#xff1a;把数据转换成兼容另一个系统能识别的格式会话层&#xff1a;负责建立、管理、终止表示层实体之间的通信会话传输层&#xff1a;负责端到端的数据传输网络层&#xff1a;负责数据的路由、转发、分片…...

【R语言】读取CSV数据时,显示[1] PK...<0 行> (或0-长度的row.names)

一、问题 当我使用以下代码读取CSV数据后&#xff0c;发现使用head(data)显示[1] PK...<0 行> (或0-长度的row.names)&#xff0c;如下截图所示。 # 尝试读取文件 data <- read.csv("C:\\Users\\11300\\Desktop\\test.csv", header TRUE) # 检查数据 hea…...

CentOS环境变量配置+解析

环境变量的作用就是让系统快速通过你的命令找到你的可执行程序&#xff0c;windows系统里也同理&#xff0c;也就是你每次输入个命令&#xff0c;系统就会找环境变量里到底有没有叫这个命令进程的 一、环境变量配置 1.编辑配置文件 vim /etc/profile export PATH$PATH:$JAVA…...

最新版本Exoplayer扩展FFmpeg音频软解码保姆级教程

ExoPlayer 是一个开源的 Android 媒体播放库&#xff0c;由 Google 开发和维护&#xff0c;用于替代 Android 系统自带的 MediaPlayer。它提供了更强大的功能、更好的性能和更高的灵活性&#xff0c;适用于各种复杂的媒体播放场景。所以被广泛用于各种播放器场景。 最近项目中…...

【蓝桥杯集训·每日一题2025】 AcWing 6134. 哞叫时间II python

6134. 哞叫时间II Week 1 2月20日 农夫约翰正在试图向埃尔茜描述他最喜欢的 USACO 竞赛&#xff0c;但她很难理解为什么他这么喜欢它。 他说「竞赛中我最喜欢的部分是贝茜说『现在是哞哞时间』并在整个竞赛中一直哞哞叫」。 埃尔茜仍然不理解&#xff0c;所以农夫约翰将竞赛…...

HTML/CSS中子代选择器

1.作用:选中指定元素中,符合要求的子元素. 子代选择器又称:子元素选择器,子选择器. 2.语法:选择器1>选择器2>选择器3>......选择器n 3.实例 <style>/* div中子代选择器 */div>a{color: red;}</style><div><a href"#">张三</…...

计算机毕业设计SpringBoot+Vue.jst网上购物商城系统(源码+LW文档+PPT+讲解)

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…...

EasyRTC:全平台支持与自研算法驱动的智能音视频通讯解决方案

在智能硬件的浪潮中&#xff0c;设备之间的互联互通已成为提升用户体验的核心需求。无论是智能家居、智能办公&#xff0c;还是工业物联网&#xff0c;高效的音视频通讯和交互能力是实现智能化的关键。然而&#xff0c;传统音视频解决方案往往面临平台兼容性差、交互体验不佳以…...

C#: 日志函数

背景&#xff1a; 1.常见的官方日志模块项目过于复杂&#xff0c;且配置过于繁琐&#xff0c;针对这种现象&#xff0c;实现在大型项目中快速定位错误问题&#xff1b; 实现思路&#xff1a; 1.设置当前日志文件路径&#xff08;获取到当前文件应用程序路径 \ErrorLog) 2.判…...

PyTorch 是如何进行机器学习的

1. 机器学习的核心流程 机器学习的核心是通过数据训练模型&#xff0c;让模型学会从输入数据中提取规律&#xff0c;并对新数据做出预测。整个过程可以分为以下几个步骤&#xff1a; 准备数据&#xff1a;收集并整理数据&#xff0c;分为输入&#xff08;特征&#xff09;和输…...

Java中的Stream API:从入门到实战

引言 在现代Java开发中&#xff0c;Stream API 是处理集合数据的强大工具。它不仅让代码更加简洁易读&#xff0c;还能通过并行处理提升性能。本文将带你从基础概念入手&#xff0c;逐步深入Stream API的使用&#xff0c;并通过实战案例展示其强大功能。 1. 什么是Stream API…...

【蓝桥杯单片机】客观题

一、第十三届省赛&#xff08;一&#xff09; 二、第十三届省赛&#xff08;二&#xff09;...

Spring Boot 中使用 @Transactional 注解配置事务管理

事务管理是应用系统开发中必不可少的一部分。Spring 为事务管理提供了丰富的功能支持。Spring 事务管理分为编程式和声明式的两种方式。编程式事务指的是通过编码方式实现事务&#xff1b;声明式事务基于 AOP,将具体业务逻辑与事务处理解耦。声明式事务管理使业务代码逻辑不受污…...

嵌入式八股文(五)硬件电路篇

一、名词概念 1. 整流和逆变 &#xff08;1&#xff09;整流&#xff1a;整流是将交流电&#xff08;AC&#xff09;转变为直流电&#xff08;DC&#xff09;。常见的整流电路包括单向整流&#xff08;二极管&#xff09;、桥式整流等。 半波整流&#xff1a;只使用交流电的正…...

《论多源数据集成及应用》审题技巧 - 系统架构设计师

论多源数据集成及应用写作框架 一、考点概述 本论题“论多源数据集成及应用”主要考察的是计算机软件测试工程师在数据管理和集成方面的专业知识与实践能力。论题聚焦于信息爆炸时代企业、组织和个人所面临的数据挑战&#xff0c;特别是如何有效地收集、整理和清洗来自不同渠…...

怎么在Github上readme文件里面怎么插入图片?

环境&#xff1a; Github 问题描述&#xff1a; 怎么在Github上readme文件里面怎么插入图片&#xff1f; https://github.com/latiaoge/AI-Sphere-Butler/tree/master 解决方案&#xff1a; 1.相对路径引用 上传图片到仓库 将图片文件&#xff08;如 .png/.jpg&#xff…...

【NLP 31、预训练模型的发展过程】

人的行为&#xff0c;究竟是人所带来的思维方式不同还是与机器一样&#xff0c;刻在脑海里的公式呢&#xff1f; 只是因为不同的人公式不同&#xff0c;所以人的行为才不同&#xff0c;可这又真的是人引以为傲的意识吗&#xff1f; 人脑只是相当于一个大型、驳杂的处理器&#…...

【计算机网络】传输层TCP协议

传输层 - layer4 - TCP协议 传输层&#xff1a;位于ISO模型的第四层 ——>L4 tcp协议意为传输控制协议&#xff08;Transmission Control Protocol&#xff09; 提供端到端的连接 端口号范围&#xff1a;0-65535 &#xff08;2^16次方&#xff09; 一个应用程序(服务)会占用…...

vscode settings(二):文件资源管理器编辑功能主题快捷键

参考资料 Visual Studio Code权威指南 by 韩骏 一. 文件资源管理器 1.1 文件资源管理器隐藏文件夹 默认情况下&#xff0c;Visual Studio Code会在文件资源管理器中隐藏一些文件夹&#xff08;如.git文件夹&#xff09;​。可以通过files.exclude来配置要被隐藏的文件和文件…...

halcon机器视觉深度学习对象检测,物体检测

目录 效果图操作步骤软件版本halcon参考代码本地函数 get_distinct_colors()本地函数 make_neighboring_colors_distinguishable() 效果图 操作步骤 首先要在Deep Learning Tool工具里面把图片打上标注文本&#xff0c; 然后训练模型&#xff0c;导出模型文件 这个是模型 mod…...

go 反射 interface{} 判断类型 获取值 设置值 指针才可以设置值

内容包括 1. 用interface{}接收值 2. 判断interface{}的类型 switch 3. 打印interface{}的类型 4. 通过字符串对结构体&#xff0c;interface{}等进行设置值、获取值处理 示例代码 package mainimport ("fmt""log""reflect" )type Student…...

单臂路由

单臂路由&#xff08;Router on a Stick&#xff09;是一种网络配置方式&#xff0c;主要用于在单个物理接口上实现多个VLAN之间的路由。它通常用于交换机与路由器之间的连接&#xff0c;适用于VLAN间通信需求较小的情况。 工作原理 VLAN划分&#xff1a;交换机上配置多个VLAN…...

SpringBoot【实用篇】- 测试

文章目录 目标&#xff1a; 1.加载测试专用属性3.Web环境模拟测试2.加载测试专用配置4.数据层测试回滚5.测试用例数据设定 目标&#xff1a; 加载测试专用属性加载测试专用配置Web环境模拟测试数据层测试回滚测试用例数据设定 1.加载测试专用属性 我们在前面讲配置高级的…...