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

AUTOSAR:SOME/IP 概念

文章目录

  • 1. 用例与需求
    • 1.1 典型用例
    • 1.2 对中间件的要求
  • 2. 协议栈示例
  • 3. SOME/IP 概念
    • 3.1 中间件整体功能与架构
    • 3.2 服务组成元素详细解释
  • 4. 服务发现机制深入剖析
  • 5. 总结

1. 用例与需求

1.1 典型用例

在这里插入图片描述
信息娱乐系统:

  • 后座娱乐系统连接:允许后排乘客连接外部设备(如平板电脑),通过以太网实现高速数据传输,播放视频或音乐,提升乘车体验。
  • AV 运输:用于车内音频视频信号传输,如将车载 DVD 播放器的视频信号传输到多个显示屏,确保多媒体内容高质量呈现。

驾驶员辅助:

  • 环视系统:利用以太网高带宽、低延迟特性传输摄像头图像数据,为驾驶员提供实时车辆周围环境视图,辅助驾驶操作,如停车、倒车、通过狭窄路段等。

诊断与闪存更新:

  • 以太网可快速传输诊断数据,方便维修人员准确、迅速检测车辆故障。
  • 在车辆软件更新(如发动机控制单元软件升级)时,高效传输大量闪存更新数据,减少更新时间,增强车辆可维护性和性能。

1.2 对中间件的要求

  1. 支持类似 CAN 的通信,以兼容汽车中广泛应用的 CAN 总线,用于实时性高、数据量小的控制信号传输(如发动机、刹车控制)。
  2. 具备类似 MOST 的控制通信能力,满足车内多媒体信息传输和控制需求(如音频视频系统控制信号)。
  3. 高效利用以太网交换介质,适应车载系统增长的数据传输需求(如高清地图、大量传感器数据)。
  4. 支持单播通信,保障特定设备间一对一通信(如控制单元与传感器数据交互),避免数据扩散。
  5. 限制组播 / 广播范围,减少网络拥塞,确保关键控制信号和实时数据传输,维持车辆系统稳定可靠。

2. 协议栈示例

在这里插入图片描述
1. Layer 5 - 7(应用层及相关协议层)

  • IEEE 1722 AVB:负责音频 / 视频传输,保障车内多媒体服务质量,提供低延迟、高质量视听体验。

  • IEEE 802.1AS AVB:用于时间同步,确保多设备和传感器协同工作准确有效,在自动驾驶等场景至关重要。

  • UDP - NM:基于 UDP 实现车载网络管理,涵盖节点状态监测、唤醒休眠等功能,维护网络正常运行。

  • DoIP:通过 IP 实现车辆诊断,支持远程诊断操作,提升诊断效率和准确性。

  • SOME/IP:作为核心中间件,实现服务通信,使不同 ECU 能以服务导向交互,促进系统协同。

  • SOME/IP - SD:提供服务发现机制,助力 ECU 查找和交互服务,实现动态服务管理。

  • DHCP:动态分配 IP 地址,简化车载网络配置,适应设备动态变化。

  • ICMP:用于网络诊断和错误报告,及时反馈网络问题,便于故障排查。

  • ARP:将 IP 地址解析为 MAC 地址,确保以太网数据准确传输。

2. Layer 4(传输层)

  • UDP:为 SOME/IP 提供无连接、不可靠数据报服务,适用于实时性优先、少量数据丢失可接受场景(如车辆状态监测数据传输)。

  • TCP:在特定场景与 SOME/IP 协同,提供可靠数据传输,用于传输大量配置或更新数据(如软件更新、地图数据更新)。

3. Layer 3(网络层)

  • IP 协议:负责数据包路由和转发,实现不同网络节点通信和子网数据交换。

4. Layer 2(数据链路层)

  • IEEE 以太网 MAC + VLAN(802.1Q):控制数据在以太网上访问和传输,通过 MAC 识别设备,VLAN 划分虚拟局域网,增强网络安全性和管理效率(如区分车辆控制和信息娱乐系统网络)。

5. Layer 1(物理层)

  • 汽车以太网物理层(如 OABR):提供数据传输物理介质和电气特性,转换数据信号,保障设备间可靠传输。

在协议栈中,除了 Layer 1 和 Layer 7 需要特定的协议来适配车载环境外,其他层大多重用了现有的网络协议技术。例如,Layer 3 的 IP 协议、Layer 4 的 UDP 和 TCP 协议等都是在互联网和其他网络环境中广泛应用的成熟技术,通过在车载以太网中的应用,减少了开发成本和时间,提高了技术的可靠性和兼容性。

3. SOME/IP 概念

3.1 中间件整体功能与架构

在这里插入图片描述
1. SOME/IP 允许应用程序进行通信

  • 在图中,客户端(Client)和服务器(Server)都有各自的应用程序(App.)。SOME/IP 中间件(SOME/IP Middleware)作为桥梁,允许客户端应用程序和服务器应用程序进行通信。这意味着不同电子控制单元(ECU)中的应用程序可以通过 SOME/IP 实现数据交换和交互。

  • SOME/IP 为车载网络中的应用程序提供了一种标准化的通信机制,使得它们能够在车辆的复杂网络环境中有效地交互。

2. 数据包格式由服务规范自动确定

  • 图中显示了 SOME/IP 中间件,它负责处理客户端和服务器之间的通信。当应用程序通过 SOME/IP 进行通信时,数据包的格式由服务的规范决定。这意味着不同的服务会有特定的数据包格式要求,SOME/IP 会根据这些要求自动生成和解析数据包。
  • SOME/IP 通过服务规范来确保数据包格式的一致性和正确性,减少了应用程序之间通信的复杂性和错误率。

3. 服务器提供实现服务接口的服务实例

  • 在图中,服务器应用程序通过 SOME/IP 中间件向客户端提供服务。服务器实现了服务接口,并提供了具体的服务实例。例如,服务器可能提供车辆状态监测服务,其服务接口定义了如何获取车辆速度、温度等数据,而服务实例则是具体实现这些数据获取功能的代码。
  • 服务器在 SOME/IP 架构中扮演着服务提供者的角色,通过实现服务接口和提供服务实例,使得客户端能够访问和使用这些服务。

4. 客户端使用 SOME/IP 使用服务实例

  • 图中显示客户端应用程序通过 SOME/IP 中间件与服务器进行通信。客户端首先发现可用的服务实例(通过 SOME/IP - SD 服务发现机制),然后使用 SOME/IP 发送请求来调用服务器提供的服务实例。例如,客户端可能请求获取车辆当前速度,通过 SOME/IP 将请求发送到服务器,服务器处理请求后返回速度数据。
  • 客户端在 SOME/IP 架构中是服务的使用者,通过 SOME/IP 中间件来调用服务器提供的服务实例,实现所需的功能。

客户端和服务器的应用程序通过接口(Visible: Interface)与 SOME/IP 中间件交互,而 TCP/IP 协议栈负责处理数据包的传输(Visible: Packets)。

这种架构使得车载网络中的应用程序能够高效、可靠地进行通信,同时支持服务发现和多种服务类型,适应了现代车辆电子系统日益复杂的需求。

3.2 服务组成元素详细解释

  1. 方法(Methods)
  • 请求 / 响应方法(Request/Response): 客户端请求调用服务器方法,服务器返回结果,如车辆控制系统获取发动机工作参数。
    在这里插入图片描述

允许客户端获取服务器端的信息或触发服务器执行特定操作,实现分布式系统中不同组件间的功能交互。

例如在车载系统中,车辆仪表盘(客户端)需要获取发动机的实时状态数据(如转速、温度等),通过向发动机控制单元(服务器)发送请求并接收响应,实现数据的获取和显示,让驾驶员了解车辆运行状态。

实现了系统功能的解耦,客户端无需了解服务器内部实现细节,只需按照约定的请求 / 响应格式进行通信,便于系统的扩展和维护。当发动机控制单元升级或修改内部算法时,只要请求 / 响应接口不变,仪表盘的功能不受影响。

  • Fire&Forget 方法(Fire&Forget)(发送后即忘): 客户端发送请求后不等待响应,适用于实时性高且无需反馈场景。
    在这里插入图片描述

这明确表示了 Fire&Forget 类型请求的特性,即不支持返回答案和处理错误。 对于这种类型的请求,服务器在接收到请求后,会尽力处理请求,但不会向客户端发送任何关于处理结果的反馈。如果在处理过程中服务器遇到错误(如数据存储已满无法记录传感器数据),它也不会将错误信息返回给客户端。这种机制简化了通信流程,减少了客户端等待响应的时间和资源消耗,但同时也意味着客户端无法直接得知请求是否被成功处理,所以通常适用于对实时性要求较高且对处理结果反馈不敏感的场景。

比如实时数据采集和传输,只要数据发送出去即可,后续处理结果对当前数据采集任务影响不大。

在某些场景下,减少不必要的通信开销和等待时间

例如在车载系统中,大量的传感器数据(如车辆速度、发动机温度、轮胎压力等)需要实时传输,若每个数据传输都等待服务器响应,会导致通信延迟增加,影响系统的实时性。

通过 Fire&Forget 机制,传感器可以快速发送数据后继续进行下一次采集,提高了数据传输的频率和效率。 对于整个车载系统来说,能够更及时地获取各种状态数据,有助于系统对车辆状态的实时监测和控制,提升系统性能。

例如,车辆的安全控制系统可以更快地获取传感器数据,及时做出制动或稳定车辆的决策。

2. 事件(Events)
服务器向客户端发送消息,类似 CAN 消息,无初始值和明确生命周期,用于通知事件发生。

如防盗系统检测入侵后向报警系统发送事件触发警报。

在这里插入图片描述
基于特定条件触发向客户端推送信息: 事件是一种回调机制,意味着它是在服务器端特定条件(如周期性触发条件到达或状态发生变化)被满足时,自动向客户端发送消息的一种方式。这与传统的客户端主动请求获取信息不同,而是服务器主动向客户端推送相关信息。例如,车辆的安全系统(服务器)在检测到车门未关好(特定状态变化条件)时,会自动向车辆的提示系统(客户端)发送车门未关事件,就像是一种由服务器端触发的回调操作,提醒客户端做出相应处理(如发出警报或显示提示信息),这是回调机制的体现。

与 Fire&Forget 特性相结合:将这种回调机制与 Fire&Forget 特性相结合,就形成了一种独特的通信模式。服务器在满足特定条件时自动向客户端推送信息(回调),且推送后不等待客户端回应(Fire&Forget),使得信息能够及时从服务器传递到客户端,同时又不会给服务器带来额外的等待和处理负担,保证了服务器的高效运行,也确保了客户端能够及时获取到相关信息,适用于车载系统中许多对实时性要求较高的场景,如车辆状态监测、安全预警等。

3. 字段(Fields)
代表远程可访问属性,包含 Getter(读值)、Setter(设值)和 Notifier(值变通知)。
在这里插入图片描述
代表可远程访问的属性:字段是一种用于表示在车载系统中可被远程访问的属性的概念。在车辆的网络架构中,不同的电子控制单元(ECU)可能需要获取或修改其他 ECU 的某些属性值,字段就提供了这样一种机制。

例如,车辆的仪表盘显示系统(一个 ECU)可能需要获取发动机控制单元(另一个ECU)的发动机转速、水温等属性,这些属性就可以通过字段来表示,使得仪表盘能够远程访问并显示这些信息。

Getter(获取方法):Getter 是用于读取字段值的方法。
Setter(设置方法):Setter 则是用于设置字段值的方法。
Notification(通知机制):当字段的值发生变化时,会通过发送事件(Event)的方式进行通知。

4. 事件组(Eventgroups)
Eventgroups(事件组) 是一种用于发布 / 订阅处理的逻辑分组机制,它包含了事件(Events)和字段(Fields)。

在车载系统中,可能存在多个不同类型的事件和字段,为了更有效地管理和处理这些事件和字段之间的关系,将相关的事件和字段组合成一个事件组。

例如,在车辆的安全系统中,可能有车门状态变化事件(如车门打开、关闭事件)、车辆入侵检测事件等多个与安全相关的事件,以及一些相关的字段(如车门锁状态字段、车辆防盗系统状态字段等),这些可以被组合成一个 “车辆安全事件组”。这样的分组使得系统能够从逻辑上对这些相关的元素进行统一管理,便于理解和处理与车辆安全相关的信息。

发布(Publish)方面:当事件组中的某个事件发生或字段值发生变化时,系统可以将这个事件组作为一个整体进行发布。

例如,在上述车辆安全事件组中,如果车门被非法打开(车门状态变化事件发生),系统可以发布这个包含车门状态变化事件以及相关字段(如当前车门锁状态)的事件组,以便其他相关系统(如车辆报警系统、车主手机应用等)能够接收到这个信息。

订阅(Subscribe)方面:其他系统或组件可以根据自身的需求订阅特定的事件组。

比如,车辆报警系统可能订阅 “车辆安全事件组”,以便在该事件组中的任何相关事件发生时(如车门被非法打开或车辆入侵检测到异常),能够及时接收到通知并采取相应的报警措施(如发出警报声、向车主发送报警信息等)。

通过这种发布 / 订阅机制,基于事件组的方式提高了系统的灵活性和可扩展性,使得不同的系统组件能够根据自己的关注点选择性地接收和处理相关信息,避免了不必要的信息传输和处理,提高了车载网络的通信效率和系统的整体性能。同时,事件组的概念也有助于系统的模块化设计,不同的功能模块可以通过订阅不同的事件组来实现信息交互和协同工作,使得系统架构更加清晰,易于维护和升级。

在 SOME/IP 的概念中,方法、事件和字段都是服务接口的组成部分。一个服务通过其接口定义了它所提供的功能(方法)、可以通知客户端的情况(事件)以及可访问和管理的属性(字段)。

5. 事件 VS 字段
在这里插入图片描述

  • 本质与触发机制:

    事件(Event):事件是一种由服务器在特定条件下(如周期性或状态变化时)向客户端发送的消息,其本质是一种 “Fire&Forget(发送后即忘)” 类型的回调机制。

    字段(Field):字段代表可远程访问的属性,用于表示和管理系统中的各种属性值。它包含了 Getter/Setter 和 / 或 Notification。

  • 信息传递与功能侧重:

    事件(Event):事件的信息传递是单向的,从服务器到客户端,服务器发送事件后不期望得到客户端的响应。事件消息格式虽然与字段相同,但事件本身不携带初始值等额外信息,只是简单地通知客户端某些事情发生了。

    字段(Field):字段的操作涉及双向数据交互,客户端可以通过 Getter 获取字段值,通过 Setter 设置字段值,同时字段值变化时通过 Notification 发送事件通知客户端。字段不仅可以传递属性值本身,还可以通过相关方法对属性值进行操作。

  • 在系统中的角色与应用场景:

    事件(Event):在车载系统中,事件扮演着通知者的角色,用于触发系统的响应动作。

    字段(Field):字段则是系统中属性信息的载体和管理者。

4. 服务发现机制深入剖析

在这里插入图片描述
服务发现通过循环消息携带条目实现,包含服务操作(查找、提供、停止提供)和事件组操作(订阅、取消订阅等)信息。车辆启动时,ECU 借此互相发现识别,信息娱乐系统可查找并订阅音频播放服务相关事件组,实现交互。

1. 服务发现(Service Discovery)的作用概述:

服务发现是车载以太网通信中用于管理服务实例状态和信息交互的重要机制。它通过特定的方式明确地传输服务实例的状态信息,使得系统中的各个组件能够清楚地了解服务的可用性以及如何与之进行通信。这对于构建一个可靠、高效且动态的车载网络系统至关重要,因为车载系统中存在众多的服务和组件,它们需要实时地知道彼此的状态和连接方式,以便协同工作。

2. 明确传输服务实例状态:

服务可用性状态:服务发现明确地指示服务实例是否可用。例如,在车辆的多媒体娱乐系统中,音乐播放服务可能由多个服务实例组成,如音频解码服务、音频输出服务等。服务发现机制会明确地告知其他组件(如车辆的控制面板、音频控制面板等)这些服务实例当前是否处于可用状态。如果音频解码服务出现故障,服务发现会及时将其状态更新为不可用,这样其他组件就不会尝试向不可用的服务发送请求,避免了系统资源的浪费和错误的操作。

服务可达性信息: 除了可用性状态,服务发现还提供了如何到达服务的信息。这包括服务所在的网络地址、端口号等关键信息。在车载网络中,不同的服务可能分布在不同的电子控制单元(ECU)上,服务发现就像是一个导航系统,为其他组件指引如何找到并连接到所需的服务。例如,车辆的导航系统需要获取实时交通信息服务,服务发现会告知导航系统该服务所在的具体网络位置(如某个特定 ECU 的 IP 地址和端口号),使得导航系统能够准确地建立连接并获取信息。

3. 客户端需求指定

客户端需求表达: 客户端通过服务发现机制明确指定其需要的事件(Events)和字段(Fields)。这使得系统能够根据客户端的需求,精准地向其推送相关信息,避免了不必要的信息传输,提高了网络带宽的利用率。例如,车辆的自动驾驶系统可能只需要订阅车辆周围环境感知相关的事件(如雷达检测到的障碍物信息、摄像头捕捉的路况变化事件等)和一些关键的字段(如车辆当前速度、转向角度等),而不需要接收其他不相关的信息,如音乐播放服务的相关事件和字段。

服务发现的作用: 服务发现负责记录和管理客户端的这些需求,并协调服务器端的信息发布。当客户端订阅了特定的事件或字段后,服务发现会确保服务器在这些事件发生或字段值变化时,将相关信息及时发送给订阅的客户端。例如,车辆的发动机控制系统发布发动机转速、油温等字段的更新信息,服务发现根据订阅列表,将这些信息准确地发送给订阅了这些字段的客户端(如仪表盘显示系统、车辆诊断系统等),使得这些客户端能够实时获取最新的发动机状态信息,实现系统的协同工作和高效运行。同时,服务发现也会处理客户端的订阅请求,包括验证请求的合法性、管理订阅关系等。如果客户端请求订阅不存在或无权访问的事件或字段,服务发现会进行相应的处理(如拒绝订阅请求),确保系统的安全性和稳定性。

4. 通过循环消息(cyclic messages)传输状态

循环消息的构成与作用:服务发现使用循环消息来携带状态信息,这些循环消息包含了关于服务的各种条目(entries)。例如,消息中会包含服务相关的操作指令,如 “Find(查找服务)”、“Offer(提供服务)” 和 “StopOffer(停止提供服务)” 等。当一个新的服务实例启动并准备提供服务时,它会发送包含 “Offer” 指令的循环消息,告知其他组件该服务的存在和相关信息。如果服务出现故障或需要停止服务,就会发送 “StopOffer” 消息。

事件组(Eventgroup)相关操作在循环消息中的体现:循环消息中还涉及事件组(Eventgroup)的操作指令,如 “Subscribe(订阅事件组)”、“StopSubscribe(停止订阅事件组)”、“SubscribeAck(订阅确认)” 和 “SubscribeNack(订阅拒绝)” 等。这些指令用于管理客户端对事件组的订阅关系。例如,车辆的仪表盘显示系统可能需要订阅车辆状态相关的事件组,它会通过发送 “Subscribe” 指令的循环消息来表达订阅需求。服务发现机制收到订阅请求后,如果订阅合法,会返回 “SubscribeAck” 确认消息,同时开始向仪表盘显示系统发送相关事件组的信息。如果订阅存在问题(如权限不足或事件组不存在),则会返回 “SubscribeNack” 拒绝消息。通过这种循环消息的方式,服务发现能够持续地更新和维护系统中服务实例的状态信息,确保各个组件之间的通信和协作始终处于正确的状态,实现车载系统的稳定运行和高效功能。

5. 总结

车载以太网通信基于以太网协议栈和 SOME/IP 有优势,但面临挑战。SOME/IP 支持 GENIVI 和 AUTOSAR 架构,有明确服务发现机制,协议栈重用技术并优化资源利用。要实现高效可靠通信,需解决架构支持、敏捷与标准化平衡、测试复杂性等问题,以适应汽车电子系统发展需求和技术趋势。

AOTUSAR SOMEIP 文档需要的留下邮箱

相关文章:

AUTOSAR:SOME/IP 概念

文章目录 1. 用例与需求1.1 典型用例1.2 对中间件的要求 2. 协议栈示例3. SOME/IP 概念3.1 中间件整体功能与架构3.2 服务组成元素详细解释 4. 服务发现机制深入剖析5. 总结 1. 用例与需求 1.1 典型用例 信息娱乐系统: 后座娱乐系统连接:允许后排乘客连…...

STM32--中断

中断 中断向量表 定义一段固定的内存,以4字节对齐,存放各个中断服务函数程序的首地址。定义在启动文件中。 中断相关寄存器 内核中断不经过中断使能、除能寄存器。 中断优先级 1、抢占优先级:高高抢占优先级可以打断正在执行的低抢占优先…...

海思3559a开发

目录 固件烧录配置网络nfs挂载虚拟机文件使用telnet连接开发板 固件烧录 1、配置好HiTool烧录工具 需要注意长度必须不小于对应文件大小 2、开始烧录 先点击擦除全器件,重新给开发板上电,擦除成功后如下图所示。 点击烧写,重新给开发板上电…...

优选算法——位运算

1. 常见位运算总结 2. 判定字符是否唯一 题目链接:面试题 01.01. 判定字符是否唯一 - 力扣(LeetCode) 题目展示: 题目分析:本题有很多种做法,这里我们使用位图来解决,这种做法是一种效率很高…...

【JAVA】旅游行业中大数据的使用

一、应用场景 数据采集与整合:全面收集旅游数据,如客流量、游客满意度等,整合形成统一数据集,为后续分析提供便利。 舆情监测与分析:实时监测旅游目的地的舆情信息,运用NLP算法进行智能处理,及…...

使用html和JavaScript实现一个简易的物业管理系统

码实现了一个简易的物业管理系统,主要使用了以下技术和功能: 1.主要技术 使用的技术: HTML: 用于构建网页的基本结构。包括表单、表格、按钮等元素。 CSS: 用于美化网页的外观和布局。设置字体、颜色、边距、对齐方式等样式。 JavaScript…...

浅谈Kubernetes(K8s)之RC控制器与RS控制器

1.RC控制器 1.1RC概述 Replication Controller 控制器会持续监控正在运行的Pod列表,并保证相应类型的Pod的数量与期望相符合,如果Pod数量过少,它会根据Pod模板创建新的副本,反之则会删除多余副本。通过RC可实现了应用服务的高可用…...

如何在 openAI Sora 上生成视频内容

近期OpenAI 推出了我们期待已久的视频生成模型 Sora。能够生成包含多个角色、特定类型的动作以及主体和背景的精确细节的复杂场景。该模型不仅了解用户在提示中要求的内容,还了解这些内容在物理世界中的存在方式。 如何在 openAI Sora 上生成视频内容 使用Sora 视频…...

【Oracle11g SQL详解】日期和时间函数:SYSDATE、TO_DATE、TO_CHAR 等

日期和时间函数:SYSDATE、TO_DATE、TO_CHAR 等 在 Oracle 数据库中,日期和时间函数用于处理日期和时间数据。它们在记录创建时间、分析时间间隔、格式化输出等场景中非常重要。本文将详细讲解常用的日期和时间函数及其应用。 一、SYSDATE:获…...

STM32 串口收发文本数据包

单片机学习! 目录 前言 一、文本数据包格式 二、串口收发文本数据包代码 三、代码解析 3.1 标志位清除 3.2 数据包接收 四、代码问题改进 总结 前言 本文介绍了串口收发文本数据包程序设计的思路并详解代码作用。 一、文本数据包格式 文本数据包的格式的定义…...

铭记一次项目重大事故

在程序的世界里,bug 就像隐藏在暗处的小怪兽,时不时跳出来捣乱。而职业生涯中,总有那么一个或几个 bug 让我们刻骨铭心。它或许让项目差点夭折,或许让你熬了无数个通宵,或许有着离奇的出现方式和曲折的解决过程。无论是…...

AUTOSAR 汽车开放系统架构

AUTOSAR 官网 AUTOMOTIVE OPEN SYSTEM ARCHITECTURE AUTOSAR (AUTomotive Open System ARchitecture) is a global partnership of leading companies in the automotive and software industry to develop and establish the standardized software framework and open E/E …...

从零用java实现 小红书 springboot vue uniapp (2)主页优化

前言 移动端演示 http://8.146.211.120:8081/#/ 前面的文章我们基本完成了主页的布局 今天我们具体的去进行实现 并且分享我开发时遇到的问题 首先先看效果 java仿小红书主页 实现效果为 1.顶端全屏切换 2.上划加载更多 3.下拉当前页整体刷新 顶端全屏切换我们选择 gui-switch…...

打电话玩手机识别-支持YOLO,COCO,VOC格式的标记,超高识别率可检测到手持打电话, 非接触式打电话,玩手机自拍等

打电话玩手机识别-支持YOLO,COCO,VOC格式的标记,超高识别率可检测到手持打电话, 非接触式打电话,玩手机自拍等1275个图片。 手持打电话: 非接触打电话 玩手机 数据集下载 yolov11:https://download.csdn…...

黑马程序员Java项目实战《苍穹外卖》Day12

苍穹外卖-day12 课程内容 工作台Apache POI导出运营数据Excel报表 功能实现:工作台、数据导出 工作台效果图: 数据导出效果图: 在数据统计页面点击数据导出:生成Excel报表 1. 工作台 1.1 需求分析和设计 1.1.1 产品原…...

实现SpringBoot项目嵌入其他项目

很多时候我们需要在项目里面嵌入其他项目或者被其他项目嵌入,如我们开发一个开源项目b,用户需要在自己的项目a嵌入b项目,使用b项目的功能,而且要实现a项目工作最小化,最好实现引入即用。 1.定义b项目的自定义配置 …...

海康威视摄像头RTSP使用nginx推流到服务器直播教程

思路: 之前2020年在本科的时候,由于项目的需求需要将海康威视的摄像头使用推流服务器到网页进行直播。这里将自己半个月琢磨出来的步骤给大家发一些。切勿转载!!!! 使用网络摄像头中的rtsp协议---------通…...

【自动化】requirements.txt

1.是什么? 用于列出项目依赖的所有Python包及其版本。这使得其他开发者可以轻松地安装与你的项目兼容的环境,或者在不同的机器上复制相同的开发环境。 2.如何编写requirements.txt 手动创建 格式: 包名版本号 在终端home命令自动生成 创建r…...

C++ 中多态性在实际项目中的应用场景

背景与需求 在一个图形绘制软件中,需要绘制多种不同的图形,如圆形、矩形、三角形等。每个图形都有自己的绘制方法,但是它们都可以被看作是一个抽象的 “图形” 概念,并且都有一个共同的操作,比如绘制(draw&…...

手机租赁系统开发指南一站式服务流程解析

内容概要 手机租赁系统的开发是一个复杂但有趣的过程,像搭建乐高一样,只要找到合适的模块,就能打造出一个宾至如归的租赁平台。在这部分,我们将对开发流程的整体结构进行简要概述,并指出每个环节的重要性。 首先&…...

基于Couchbase的数据构建方案:数仓分层

初步方案是将公共层和报表层分别放在不同的bucket中,这种设计从存储和访问优化的角度是合理的,但仍有以下细节需要考虑: 1. 数仓公共层设计(origin bucket) 合理性分析: 将ODS、DWD、DWS层的数据放在一个b…...

Linux中的线程

目录 线程的概念 进程与线程的关系 线程创建 线程终止 线程等待 线程分离 原生线程库 线程局部存储 自己实现线程封装 线程的优缺点 多线程共享与独占资源 线程互斥 互斥锁 自己实现锁的封装 加锁实现互斥的原理 死锁 线程同步 线程的概念 回顾进程相关概念 …...

【保姆级】Mac如何安装+切换Java环境

本文从如何下载不同版本的JDK,到如何丝滑的切换JDK,以及常见坑坑的处理方法,应有尽有,各位看官走过路过不要错过~~~ 下载⏬ 首先上官网: https://www.oracle.com/ 打不开的话可以使用下面👇这个中文的 https://www.oracle.com/cn/java/technologies/downloads/a…...

leetcode 31 Next Permutation

题意 找到下一个permutation是什么,对于一个数组[1,2,3],下一个排列就是[1, 3, 2] 链接 https://leetcode.com/problems/next-permutation/ 思考 首先任何一个permutation满足一个性质,从某个位置往后一定是降序。…...

从RocketMQ到Dubbo:自研中间件技术的崛起

目录 一. 宝兰德 BES 中间件(BES - Business Enterprise Server) 二. TongWeb 中间件 三. 阿里巴巴 RocketMQ 四. 京东 JStorm 五. 华为 GaussDB 六. 华为 FusionInsight 七. 百度 Tinker 八. 中科曙光 Kylin 九. 滴滴 Druid 一. 宝兰德 BES 中间…...

计算机键盘简史 | 键盘按键功能和指法

注:本篇为 “计算机键盘简史 | 键盘按键功能和指法” 相关文章合辑。 英文部分机翻未校。 The Evolution of Keyboards: From Typewriters to Tech Marvels 键盘的演变:从打字机到技术奇迹 Introduction 介绍 The keyboard has journeyed from a humb…...

考研两三题

283. 移动零 - 力扣(LeetCode) 本题解法:使用双指针 解法一: 如上图,在一开始slow指向-1,fast指向数组起始位,进入while循环,保证fast不越界,因为代码中fast会自增&#…...

CentOS8或docker镜像centos8更换镜像源

因为 CentOS 8 已经结束生命周期,原来的镜像源不可用了。我们需要将镜像源改为 CentOS 8 的替代源。 在容器中运行以下命令: 首先备份原有的源 cd /etc/yum.repos.d/ mkdir backup mv *.repo backup/ 创建新的源文件 cat > /etc/yum.repos.d/Cent…...

集成方案 | Docusign + 泛微,实现全流程电子化签署!

本文将详细介绍 Docusign 与泛微的集成步骤及其效果,并通过实际应用场景来展示 Docusign 的强大集成能力,以证明 Docusign 集成功能的高效性和实用性。 在现代企业运营中,效率和合规性是至关重要的。泛微作为企业级办公自动化和流程管理的解决…...

知乎数据分析面试题及参考答案

请阐述大数定理和中心极限定理的内容及其在数据分析中的应用。 大数定理是指在随机试验中,每次出现的结果不同,但是大量重复试验出现的结果的平均值却几乎总是接近于某个确定的值。简单来说,当样本量足够大的时候,样本均值会趋近于总体均值。例如,抛硬币试验,当抛硬币的次…...

8.Vue------如何重新加载子组件key属性----vue知识积累

在子组件中使用key属性是一种强制重新渲染子组件的有效方法。‌通过改变key属性的值,Vue会 销毁旧组件并创建新组件,从而实现组件的重新加载。这种方法适用于需要完全重新渲染子组件, 包括其内部状态和生命周期钩子的场景,特别是…...

C语言动态内存管理

1.为什么要有动态内存分配 内存开辟方式: int val 20;//在栈空间上开辟四个字节 char arr[10] {0};//在栈空间上开辟10个字节的连续空间开辟空间的方式特点 空间开辟大小是固定德的数组在申明的时候,必须指明数组的长度,数组空间一旦确定了大小不能…...

【蓝桥杯备战】Day 1

1.基础题目 LCR 018.验证回文串 给定一个字符串 s ,验证 s 是否是 回文串 ,只考虑字母和数字字符,可以忽略字母的大小写。 本题中,将空字符串定义为有效的 回文串 。 示例 1: 输入: s "A man, a plan, a canal: Panama…...

电子应用设计方案-51:智能镜子系统方案设计

智能镜子系统方案设计 一、引言 智能镜子作为一种新兴的智能家居设备,将传统镜子与现代科技相结合,为用户提供了丰富的功能和便捷的体验。本方案旨在设计一款功能强大、用户友好、外观美观的智能镜子系统。 二、系统概述 1. 系统目标 - 提供清晰的镜面…...

[2015~2024]SmartMediaKit音视频直播技术演进之路

技术背景 2015年,因应急指挥项目需求,我们实现了RTMP推送音视频采集推送(采集摄像头和麦克风数据)模块,在我们做好了RTMP推送模块后,苦于没有一个满足我们毫秒级延迟诉求的RTMP播放器,于是第一…...

图片添加水印的实验原理,实验代码,实验现象

一、图片添加水印的实验原理 1. 选择水印类型 可见水印:这些水印可以直接被肉眼看到,通常用于防止未经授权的使用。它们可以是文字、标志或图案等形式,并且放置在图像的显著位置。不可见水印:这类水印不容易被察觉,但…...

Python Web 开发案例解析

一、Flask 基础应用案例 (一)项目搭建与初始化 环境准备 安装 Python 解释器,确保版本符合 Flask 要求,如 Python 3.6 及以上。使用pip安装 Flask 库,命令为pip install flask。可以创建虚拟环境,如python…...

JPG 转 PDF:免费好用的在线图片转 PDF 工具

JPG 转 PDF:免费好用的在线图片转 PDF 工具 在日常工作和生活中,我们经常需要将图片转换为 PDF 格式。无论是制作电子文档、准备演示材料,还是整理照片集,将图片转换为 PDF 都是一个常见的需求。今天为大家介绍一款完全免费、无需…...

代码随想录44天

1143.最长公共子序列 class Solution:def longestCommonSubsequence(self, s: str, t: str) -> int:n, m len(s), len(t)cache # 缓存装饰器&#xff0c;避免重复计算 dfs 的结果&#xff08;记忆化&#xff09;def dfs(i: int, j: int) -> int:if i < 0 or j <…...

C语言-详细解答-重组字符串并16进制转10进制

1.题目要求 2.代码实现 #include <stdio.h> #include <ctype.h> #include <string.h>int hexToDec(char hex[]) {int len strlen(hex);int base 1;int dec 0;for (int i len - 1; i > 0; i--) {if (isdigit(hex[i])) {dec (hex[i] - 0) * base;} e…...

scala列表

1 不可变 List 说明 &#xff08;1&#xff09;List 默认为不可变集合 &#xff08;2&#xff09;创建一个 List&#xff08;数据有顺序&#xff0c;可重复&#xff09; &#xff08;3&#xff09;遍历 List &#xff08;4&#xff09;List 增加数据 &#xff08;5&#…...

医疗急救技能大赛理论题库

医疗急救技能大赛理论题库 题型包括&#xff1a;A1 型题 400题&#xff0c;A2 型题40题&#xff0c;A3/A4 型40 题&#xff0c; B 型题 80 题 &#xff0c;X 型题 160 题&#xff0c;判断题 80 题。 一、A1 型题:共计400 题 &#xff08;即最佳回答题&#xff0c;它由一个叙…...

深入浅出WebRTC—ULPFEC

FEC 通过在发送端添加额外的冗余信息&#xff0c;使接收端即使在部分数据包丢失的情况下也能恢复原始数据&#xff0c;从而减轻网络丢包的影响。在 WebRTC 中&#xff0c;FEC 主要有两种实现方式&#xff1a;ULPFEC 和 FlexFEC&#xff0c;FlexFEC 是 ULPFEC 的扩展和升级&…...

SQL 在线格式化 - 加菲工具

SQL 在线格式化 打开网站 加菲工具 选择“SQL 在线格式化” 或者直接访问 https://www.orcc.online/tools/sql 输入sql&#xff0c;点击上方的格式化按钮即可 输入框得到格式化后的sql结果...

到达率的变化动态调整服务器的服务率,实现负载均衡,提高资源利用效率

中心可以根据任务到达率的变化动态调整服务器的服务率,实现负载均衡,提高资源利用效率 服务率和到达率 中心可以根据任务到达率的变化动态调整服务器的服务率,实现负载均衡,提高资源利用效率服务率(Service Rate)到达率(Arrival Rate)控制参数实现负载均衡的方法在云计…...

【Golang】Go语言编程思想(六):Channel,第四节,Select

使用 Select 如果此时我们有多个 channel&#xff0c;我们想从多个 channel 接收数据&#xff0c;谁来的快先输出谁&#xff0c;此时应该怎么做呢&#xff1f;答案是使用 select&#xff1a; package mainimport "fmt"func main() {var c1, c2 chan int // c1 and …...

认证插件介绍

本文档是针对 UOS 登录器插件给出开发指南&#xff0c;目的是为了让开发人员了解如何在 UOS 登录器上增加一种自定义认证方式&#xff0c;对插件接口做了详细说明以及实战练习。 文章目录 一、认证插件可以做什么&#xff1f;二、认证流程三、术语说明四、安全性五、可靠性六、…...

MindSearch深度解析实践

1. 课程内容 1.1 MindSearch 简介 MindSearch 是一个开源的 AI 搜索引擎框架&#xff0c;具有与 Perplexity.ai Pro 相同的性能。我们可以轻松部署它来构建自己的专属搜索引擎&#xff0c;可以基于闭源的LLM&#xff08;如GPT、Claude系列&#xff09;&#xff0c;也可以使用…...

[oeasy]python052_[系统开发语言为什么默认是c语言

[系统开发语言为什么默认是c语言 [趣味拓展]c语言发祥史_c是如何成为第一系统语言的 上次我们了解了 标识符 要求 首字符 为 字母和下划线 后面字符 为 字母和下划线 外加 数字 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 使用isidentifier函数 可…...

【java常用算法和应用场景】

java常用算法和应用场景 Java中常用的算法涵盖多个领域&#xff0c;包括排序算法、查找算法、字符串匹配算法、图论算法、动态规划算法、贪心算法、分治算法等。以下是Java中一些常用算法及其应用场景和示例代码&#xff1a; 一、排序算法 排序算法是计算机科学中的一种基本…...