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

SOME/IP报文格式及发现协议详解

        在之前的文章中,我们介绍了SOME/IP协议的几种服务接口。在本篇博客中,主要介绍some/ip协议传输的header报文格式以及SOME/IP-SD发现协议。

目录

流程

报文格式

Message ID

Length

Request ID

protocal version/Interface Version 

Message  Type

Return Code

SOME/IP-SD

什么是SOME/IP-SD?

SD 消息类型解析

订阅相关

例子

SOME/IP-SD如何实现服务发现

分类

Find(查找服务)

Offer(服务器提供服务信息)

关键概念

工作流程

        Eventgroup

        Method


流程

        SOME/IP协议主要工作如果在TCP/IP模型下处于应用层,而在OSI7层模型中他的序列化反序列化处于表示层,RPC处于会话层。因为表示层处理加密解密/压缩解压缩,会话层管理建立和终止通信。具体来说就是SOME/IP协议先给数据加一个协议头部再交给传输层。如果有三台设备连接在switch上,任何设备想将数据发送给其他设备,都需要将数据发送给switch(交换机)中转,然后由switch发送给其他设备。如果直接发送源消息,switch并不知道要发送给谁,因此有了报文封装。每层往下依次添加协议头.

报文格式

        这是AP AUTOSAR文档中《SOME/IP Protocol Specification.pdf》中的一段SOME/IP报文格式。我们可以看到他有16字节的大小。

Message ID

        Message ID占4字节,其中method id和service id分别占两字节,在之前的服务接口我们有提到,首先不同的服务有不同的service id.service ID往下则分为组ID,method 也有不同的ID。那么some/ip报文前4个字节就是用来确定服务和使用哪种功能的。这里需要注意的是event id 保存在method Id 字段 当someip消息类型是event时候,那么method id保存的是event id。有些朋友可能会疑惑,我们知道method就一个ID但是组有组ID和对应的事件ID也就是2个,这个method字段放得下吗?需要解答这个问题首先我们要知道我们只需要订阅一个组,所有的event就都会向你推送消息。some/ip不能想ros或者dds那样单独订阅一个话题。event id用于服务端管理和识别不同的事件而,对客户端来说没什么用。但是我怎么知道是event id还是method id呢?这里给出解答,可以通过 method id进行区分。大于0x8000的是event,小于的是method。

Length

        他和IP协议16位总长度不太一样,它并不表示报文头+负载数据二十,表示request id 到后面负载结束的长度,接收方可以通过Length知道是否已经完整接收到消息。也就是说他上面8字节的长度是不包含在内的。

Request ID

        Request ID由Client ID和Session ID组成,各占两个字节。Client ID用于区分使用同一method的不同客户端,相当于mac地址,也就是身份证号,不然他不知道给谁。不同的客户想使用相同服务ID的同一个Method怎么进行区分呢,一般来说是使用端口+ip地址进行区分,但是很遗憾vsomeip并不支持端口与Ip地址。在respond和request中,client的ID都是一样的,这样能知道返回的客户是谁,seesion ID,数据的发送方每发送一次数据,这个ID就加1,他从0x1加到 0xffff满了之后又从0x1开始加。因此session ID可以帮助我们区分每一条消息,每个消息的session ID都不一样。Request seesion id 为1000 代表这是客户端发送的第1000次请求消息。同时respond的seesion ID也是和request一样的,这样可以让我们知道服务端是在响应客户端的哪一次请求。

protocal version/Interface Version 

       这俩一般请求和响应的头都是一样的,毕竟只有协议版本接口版本一致,才能完成通信。在vsomeip中,接口版本是1 在someip中接口版本默认是0。

Message  Type

        前面留了个疑问,如何分辨event消息还是method 消息?这里给出解答,可以通过 method id进行区分。大于0x8000的是event,小于的是method。那么我们怎么知道method消息,是服务端发送的reponse还是客户端发送的request?这时候method id是一致的,那我们就可以通过Message Type字段来进行判断了。0x00是 RR,0x01是FF,event是0x02.

Return Code

        当服务端不能正确处理request消息,那么他的原因就会存储在return code中.

数值 (8-bit)报文类型 (Message Type)描述适用场景
0x00REQUEST请求消息,客户端向服务器发送请求,并期望得到响应 (RESPONSE)远程方法调用(RPC),如“获取 ECU 状态”
0x00REQUEST_NO_RETURN无返回请求,客户端向服务器发送请求,但不需要响应发送一次性控制指令,如“打开车灯”
0x00NOTIFICATION通知消息,服务器主动推送数据,客户端不需要请求事件通知(Event),如“发动机温度变化”
0x00RESPONSE响应消息,服务器对 REQUEST 请求的回应服务器返回请求结果,如“当前车速”
具体值ERROR错误消息,表示 REQUEST 失败,并包含错误码(Return Code)服务不可用、超时、协议错误等

      

错误码(数值)错误类型含义描述
0x00E_OK无错误请求成功执行
0x01E_NOT_OK未知错误服务器无法识别的错误
0x02E_UNKNOWN_SERVICE未知 Service ID请求的服务 ID 不存在
0x03E_UNKNOWN_METHOD未知 Method ID请求的方法 ID 不存在
0x04E_NOT_READY应用未就绪服务器上的应用程序未运行
0x05E_NOT_REACHABLE无法使用服务服务器内部错误,无法访问服务
0x06E_TIMEOUT请求超时服务器未在规定时间内响应
0x07E_WRONG_PROTOCOL_VERSION协议版本错误客户端和服务器的 SOME/IP 版本不匹配
0x08E_WRONG_INTERFACE_VERSION接口版本错误客户端和服务器的接口版本不匹配
0x09E_MALFORMED_MESSAGE消息格式错误反序列化失败,消息格式不正确
0x0AE_WRONG_MESSAGE_TYPE报文类型错误收到了无效的报文类型

 

SOME/IP-SD

        就像DDS一样,SOME/IP也有自己的发现机制。不过DDS是每个节点都能自己发现,而someip遵循SOA思想,服务发现机制位于服务中心里,订阅消息回应ack与 停止订阅消息都属于sd不属于someip.

协议发现机制发现方式中心化 vs. 去中心化
DDS(Data Distribution Service)内置发现机制(自动发现)每个 DDS 节点(DomainParticipant)都会广播并自动发现其他节点去中心化(Decentralized)
SOME/IP(Scalable service-Oriented Middleware over IP)服务发现(Service Discovery,SD)客户端-服务器模式,服务中心管理注册和发现中心化(Centralized)

什么是SOME/IP-SD?

  • 本质:SOME/IP-SD 是 SOME/IP 的服务发现机制,可以理解为一种特殊的服务,用于动态管理和发现网络中的服务。
  • 功能
    • 定位服务(Service Discovery):客户端寻找某个服务,服务器响应并告知 IP/端口。
    • 订阅(Subscription):客户端订阅事件组(Eventgroup),服务端确认或拒绝。

SD 消息类型解析

SOME/IP-SD 的消息分为 两大类

  1. 服务发现相关(Service Discovery)

    • FindService:客户端查找服务(广播/多播)。(client)
    • OfferService:服务器响应,提供服务 IP 和端口。(server)
    • StopOfferService:服务器通知停止提供某个服务。(server)
  2. 订阅相关(Event Subscription)

    • SubscribeEventgroup:客户端请求订阅某个事件组。(client)
    • SubscribeEventgroupACK:服务器确认订阅成功。(server)
    • SubscribeEventgroupNACK:服务器拒绝订阅请求。(server)
    • StopSubscribeEventgroup:客户端取消订阅事件组。(client)

        SD就是靠这7种不同的消息实现,server和client都有自己的独有消息,只有自己可以发送.客户端可以通过发送FindService消息来查找自己感兴趣的服务,服务端可以根据offerservice消息通知客户端,自己可以提供哪些服务。并且通过offerservice消息将他的ip传输层协议端口这些通信必要信息告知给客户端。服务端可以根据StopOfferServiced来告诉客户端他不再提供某些服务,比如要升级服务端消息,就先停止再发送

订阅相关

        客户端可以向服务端发送SubscribeEventgroup来订阅某个事件组,同时也告诉服务端自身的Ip端口通信协议并且会携带客户端感兴趣的service id和eventgroup id.服务端可以根据实际情况发送ack 订阅事件组ack消息,来告诉客户端已经成功订阅事件组。或者另一个来告诉客户端订阅失败

例子

客户端发送0x1234的消息来查找可以提供0x1234服务的客户端,你们谁提供。可以提工单就发送offer,根据通过service消息将他的ip传输层协议端口这些通信必要信息告知给客户端。

SOME/IP-SD如何实现服务发现

        想想这样一个场景有5台设备连接了交换机,那么他能进行单播(一对一直接发),广播(255.255.255.255),组播(239.0.0.0~239.,255.255.255),some/ip默认是224.244.224.245,默认端口是30490。正如我们之间传输层讲解的那样,单播:比如这里的设备1发出的消息只有设备5能够收到,广播是一对多的关系,广播将发送方的消传递给局域网内的所有接收端。组播:与广播不同的是,只有特定条件的客户端可以收到消息他是以ip来对组播组进行划分 比如224.1.3.1就是一个组。

分类

SOME/IP-SD(Service Discovery) 中,服务发现的流程包括:

  • Find(客户端查找服务)
  • Offer(服务器提供服务信息)

Find(查找服务)

  • 触发条件:当 客户端(Client)启动 时,它需要找到某个 服务(Service),例如 0x1234
  • 查找方式
    • 组播(Multicast)方式:客户端通过 UDP 组播 发送 FindService 消息,查询 "谁提供 0x1234 服务?"
    • 客户端会发送 nFind 消息,以确保所有服务器都能收到请求。

📌 解析(Find 阶段):

  • Client 启动后,向局域网内的所有服务器广播 FindService(橙色箭头)。
  • 这个过程是**“快速对外发送”**,客户端会连续发送多条 Find 消息,确保覆盖整个网络。

Offer(服务器提供服务信息)

服务器在收到 FindService 消息后,会通过 OfferService 进行响应,该过程分为两个阶段:

  1. 阶段 1(Server 启动后主动广播 Offer 消息)

            服务器启动后,会周期性以组播(Multicast)方式发送n条 OfferService,告诉网络中的设备:"我提供 0x1234 服务,我的 IP 是 192.x.x.x,端口是 55001。"

        阶段 2(周期性发送Offer 消息)

                这保证即使客户端晚一些启动也能发现这个服务

  1. 阶段 3(Server 收到 Find 后,单播 Offer 消息)
    • 如果服务器收到了 FindService 请求,它会直接单播(Unicast)OfferService 给该客户端,告诉它服务可用,并提供IP 和端口信息

关键概念

阶段角色通信方式描述
FindClientUDP 组播(Multicast)客户端查找 FindService,广播请求
Offer(阶段1)ServerUDP 组播(Multicast)服务器启动时主动广播 OfferService
Offer(阶段2)ServerUDP 单播(Unicast)服务器收到 FindService 请求后,直接单播 OfferService 给客户端

        为什么find和offer消息是以组播形式传播的?是因为他不知道系统中谁能提供自己感兴趣的服务,使用组播而不使用广播是因为可以避免其他没有使用someip协议的接收到消息,为什么要发送多条消息?是因为定位使用的是upd协议,不可靠,为什么要分为两个阶段先快速发送offer消息然后再周期性发送消息?第一时间的快速发送消息就是为了让客户端能第一时间接收到服务端的offer消息,而第二阶段的存在是为了避免浪费网络带宽如果服务端收到了find消息,服务端就会以单播形式发送给客户端,有了周期性发送offer为什么还要单播呢?这是因为周期性发送offer消息的时间间隔过长,让客户端第一时间接受offer消息.

工作流程

        Eventgroup

         client发送FindService报文,server发送offerService报文。之后客户端才能发订阅某个方法啊,订阅的时候发具体订阅某哪个事件组.server会回一个同意或者不同意的ack,之后就正常推送event事件。不需要了就发一个停止订阅组。

        Method

        如果客户端不知道服务端的ip&&port。那么就需要通过发现协议先知道Ip和端口,然后就可以直接调用rpc了,不需要发什么请求订阅消息组之类的。直接调用,请求消息头部的Message ID和Message Type会告诉server是Method请求还是请求订阅事件组。如果是RPC会直接调用方法。

相关文章:

SOME/IP报文格式及发现协议详解

在之前的文章中,我们介绍了SOME/IP协议的几种服务接口。在本篇博客中,主要介绍some/ip协议传输的header报文格式以及SOME/IP-SD发现协议。 目录 流程 报文格式 Message ID Length Request ID protocal version/Interface Version Message Type…...

elementplus 使用日期时间选择器,设置可选范围为前后大于2年且只能选择历史时间不能大于当前时间点

需求&#xff1a;时间选择器可选的时间范围进行限制&#xff0c;-2年<a<2年且a<new Date().getTime()核心&#xff1a;这里需要注意plus版没有picker-options换成disabled-date属性了&#xff0c;使用了visible-change和calendar-change属性逻辑&#xff1a;另设一个参…...

C语言·关键字·char关键字

C语言菜鸟入门关键字char关键字_c char-CSDN博客...

Ansible简单介绍及用法

一、简介 Ansible是一个简单的自动化运维管理工具&#xff0c;基于Python语言实现&#xff0c;由Paramiko和PyYAML两个关键模块构建&#xff0c;可用于自动化部署应用、配置、编排task(持续交付、无宕机更新等)。主版本大概每2个月发布一次。 Ansible与Saltstack最大的区别是…...

Mac 本地搭建自己的 DeepSeek

Mac 本地搭建自己的 DeepSeek 安装 Ollama通过Ollama命令安装 DeepSeek 模型安装一个UI客户端&#xff0c;提升体验 注&#xff1a;本文章完全参考网上教程&#xff0c;没有丝毫原创&#xff0c;只是记录一下我本人在安装DeepSeek 的步骤 安装 Ollama https://ollama.com/dow…...

深度学习-交易预测

下面为你详细介绍如何使用Python结合深度学习库TensorFlow和Keras来构建一个简单的交易预测模型。在这个示例中&#xff0c;我们以股票价格预测为例&#xff0c;假设我们要根据过去一段时间的股票价格数据来预测未来的价格走势。 步骤分析 数据准备&#xff1a;获取股票价格数…...

Prompt逆向工程:如何“骗“大模型吐露其Prompt?

提示词的“逆向工程”&#xff0c;让AI大语言模型帮你反推提示词 一、前言 在日常生活中&#xff0c;我们不时会遇到一些令人惊艳的文本&#xff0c;不论是一篇精彩绝伦的小说、一篇深入浅出的科普文章&#xff0c;还是一篇充满热情的音乐推荐&#xff0c;它们都能在我们的心…...

游戏手柄Type-c方案,支持一边充电一边传输数据

乐得瑞推出LDR6023SS&#xff0c;专门针对USB-C接口手机手柄方案&#xff0c;支持手机快充&#xff0c;支持任天堂游戏机&#xff0c;PS4等设备~同时支持手机充电跟数据传输 1、概述 LDR6023SS SSOP16 是乐得瑞科技针对 USB Type-C 标准中的 Bridge 设备而开发的双 USB-C DRP …...

Vue设计模式到底多少种?

Vue设计模式到底多少种&#xff1f; 很多同学问&#xff0c;Vue到底有多少种设计模式&#xff1f;&#xff1f;各个模式到底是什么意思&#xff1f;&#xff1f;又各自适合什么场景&#xff1f;&#xff1f; 这里我给大家直接说下&#xff0c;Vue的设计模式没有一个固定的数值…...

C++ 中的 std::timed_mutex 和 std::recursive_timed_mutex

1、背景 在多线程编程中&#xff0c;互斥锁&#xff08;Mutex&#xff09;是用于保护共享资源的重要工具。C 标准库提供了多种互斥锁类型&#xff0c;其中 std::timed_mutex 和 std::recursive_timed_mutex 是两种支持超时功能的互斥锁。在阅读FastDDS源码时&#xff0c;发现了…...

HAL库外设宝典:基于CubeMX的STM32开发手册(持续更新)

目录 前言 GPIO&#xff08;通用输入输出引脚&#xff09; 推挽输出模式 浮空输入和上拉输入模式 GPIO其他模式以及内部电路原理 输出驱动器 输入驱动器 中断 外部中断&#xff08;EXTI&#xff09; 深入中断&#xff08;内部机制及原理&#xff09; 外部中断/事件控…...

Kotlin实战经验:将接口回调转换成suspend挂起函数

在 Kotlin 协程中, suspendCoroutine 和 suspendCancellableCoroutine 是用于将回调或基于 future 的异步操作转换成挂起函数。 suspendCoroutine 用途:将回调式异步操作转换为可挂起函数 行为: 启动一个新的协程来处理基于回调的操作挂起当前协程,直到调用回调回调负责…...

银行国际结算

银行国结项目&#xff0c;即国际结算项目&#xff0c;是银行业务中的重要组成部分&#xff0c;它涉及跨国界的货币收付和资金转移。 一、银行国结项目的定义 银行国结项目是指银行为国际贸易、投资等活动提供的国际结算服务&#xff0c;包括各种国际支付和资金清算业务。这些…...

java后端开发day13--面向对象综合练习

&#xff08;以下内容全部来自上述课程&#xff09; 注意&#xff1a;先有javabean&#xff0c;才能创建对象。 1.文字版格斗游戏 格斗游戏&#xff0c;每个游戏角色的姓名&#xff0c;血量&#xff0c;都不相同&#xff0c;在选定人物的时候&#xff08;new对象的时候&#…...

Vue解决父子组件传值,子组件改变值后父组件的值也改变的问题

vue开发过程中&#xff0c;父组件通过props传值给子组件&#xff0c;子组件在页面展示父组件的值&#xff0c;在操作子组件值以后&#xff0c;即使不点击确定按钮&#xff0c;父组件中的值也发生了变化&#xff0c;但是需求是操作子组件数据以后&#xff0c;必须点击"确定…...

【通俗解释,入门级】DeepSeek - R1 - Zero:强化学习提升LLM推理能力的奥秘

DeepSeek - R1 - Zero&#xff1a;强化学习提升LLM推理能力的奥秘 第一节&#xff1a;强化学习在DeepSeek - R1 - Zero中的基本概念与公式解释【通俗解释】 强化学习在DeepSeek - R1 - Zero里就像是一位“聪明的探险家”&#xff0c;在各种可能的推理路径中探索&#xff0c;通…...

《图解设计模式》笔记(六)访问数据结构

十三、Visitor 模式&#xff1a;访问数据结构并处理数据 Visitor&#xff1a;访问者 我们会“处理”在数据结构中保存着的元素&#xff0c;通常把“处理”代码放在表示数据结构的类中。 但每增加一种处理&#xff0c;就不得不去修改表示数据结构的类。 在 Visitor模式中&am…...

windows11上,使用pipx安装Poetry,Poetry的安装路径是什么?

当使用 pipx 安装 Poetry 时&#xff0c;pipx 会将 Poetry 安装到一个独立的虚拟环境中&#xff0c;并将其可执行文件链接到一个集中的目录中。以下是 pipx 安装 Poetry 时的路径信息&#xff1a; 1. Poetry 的安装路径 pipx 会为每个工具&#xff08;如 Poetry&#xff09;创…...

使用 vcpkg 简化 C++ 项目依赖管理

使用 vcpkg 简化 C 项目依赖管理 什么是 vcpkg&#xff1f; vcpkg 是微软推出的跨平台 C/C 包管理工具&#xff0c;支持 Windows/Linux/macOS。它可以帮助开发者&#xff1a; ✅ 一键安装 2000 开源库 ✅ 自动解决依赖关系 ✅ 生成 Visual Studio 集成配置 ✅ 支持自定义编译…...

怎样确定网站访问速度出现问题是后台还是服务器造成的?

网站的访问速度会影响到用户的体验感&#xff0c;当网络过于卡顿或访问速度较慢时&#xff0c;会给用户带来不好的体验感&#xff0c;但是网站访问速度不仅会是后台造成影响的&#xff0c;也可能是服务器的原因&#xff0c;那么我们该如何分辨呢&#xff1f; 当网站使用了数据库…...

【Elasticsearch】管道聚合

管道聚合就是在已有聚合结果之上在进行聚合&#xff0c;管道聚合是针对于聚合的聚合 在 Elasticsearch 中&#xff0c;管道聚合&#xff08;Pipeline Aggregations&#xff09;是一种特殊的聚合类型&#xff0c;用于对其他聚合的结果进行进一步的计算和处理&#xff0c;而不是直…...

CNN-GRU卷积神经网络门控循环单元多变量多步预测,光伏功率预测(Matlab完整源码和数据)

代码地址&#xff1a;CNN-GRU卷积神经网络门控循环单元多变量多步预测&#xff0c;光伏功率预测&#xff08;Matlab完整源码和数据) CNN-GRU卷积神经网络门控循环单元多变量多步预测&#xff0c;光伏功率预测 一、引言 1.1、研究背景和意义 随着全球能源危机和环境问题的日…...

后端java工程师经验之谈,工作7年,mysql使用心得

mysql 工作7年&#xff0c;mysql使用心得 mysql1.创建变量2.创建存储过程2.1&#xff1a;WHILE循环2.2&#xff1a;repeat循环2.3&#xff1a;loop循环2.4&#xff1a;存储过程&#xff0c;游标2.5&#xff1a;存储过程&#xff0c;有输入参数和输出参数 3.三种注释写法4.case …...

综合评价 | 基于随机变异系数-TOPSIS组合法的综合评价模型(Matlab)

基于随机变异系数-TOPSIS组合法的综合评价模型 代码获取私信回复&#xff1a;综合评价 | 基于随机变异系数-TOPSIS组合法的综合评价模型&#xff08;Matlab&#xff09; 一、引言 1.1、研究背景与意义 在现代社会&#xff0c;随着信息量的不断增加和数据复杂性的提升&#…...

Visual Studio Code中文出现黄色框子的解决办法

Visual Studio Code中文出现黄色框子的解决办法 一、vsCode中文出现黄色框子-如图二、解决办法 一、vsCode中文出现黄色框子-如图 二、解决办法 点击 “文件”点击 “首选项”点击 “设置” 搜索框直接搜索unicode选择“文本编辑器”&#xff0c;往下滑动&#xff0c;找到“Un…...

手写一个C++ Android Binder服务及源码分析

手写一个C Android Binder服务及源码分析 前言一、 基于C语言编写Android Binder跨进程通信Demo总结及改进二、C语言编写自己的Binder服务Demo1. binder服务demo功能介绍2. binder服务demo代码结构图3. binder服务demo代码实现3.1 IHelloService.h代码实现3.2 BnHelloService.c…...

【AIGC】在VSCode中集成 DeepSeek(OPEN AI同理)

在 Visual Studio Code (VSCode) 中集成 AI 编程能力&#xff0c;可以通过安装和配置特定插件来实现。以下是如何通过 Continue 和 Cline 插件集成 DeepSeek&#xff1a; 一、集成 DeepSeek 获取 DeepSeek API 密钥&#xff1a;访问 DeepSeek 官方网站&#xff0c;注册并获取 …...

使用 Three.js 实现热力渐变效果

大家好&#xff01;我是 [数擎 AI]&#xff0c;一位热爱探索新技术的前端开发者&#xff0c;在这里分享前端和 Web3D、AI 技术的干货与实战经验。如果你对技术有热情&#xff0c;欢迎关注我的文章&#xff0c;我们一起成长、进步&#xff01; 开发领域&#xff1a;前端开发 | A…...

Vue事件处理 - 绑定事件

Vue 渐进式JavaScript 框架 基于Vue2的学习笔记 - Vue事件处理 - 绑定事件及事件处理 目录 事件处理 绑定方式 函数表达式 绑定函数名 输入框绑定事件 拿到输入框的值 传值加事件源 事件第三种写法 总结 事件处理 绑定方式 函数表达式 在按钮上使用函数表达式绑定事…...

DVWA靶场通关——SQL Injection篇

一&#xff0c;Low难度下unionget字符串select****注入 1&#xff0c;首先手工注入判断是否存在SQL注入漏洞&#xff0c;输入1 这是正常回显的结果&#xff0c;再键入1’ You have an error in your SQL syntax; check the manual that corresponds to your MySQL server ver…...

DeepSeek 助力 Vue 开发:打造丝滑的步骤条

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享一篇文章&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 目录 Deep…...

今日学习总结

1.完成了P2242公路维修问题 2.完成了P10605下头论文 1.P2242 思考&#xff1a;建立单向链表&#xff0c;使用qsort降序排序。 #include<stdio.h> #include<stdlib.h> #include<stdbool.h> #include<string.h> int n,m; int a[15005],b[15005],ans;…...

Transformer 的辉煌与大模型方向确立,点燃AGI之火把

GPT3&#xff0c;指明大模型发展方向&#xff0c;点燃大模型软件行业繁荣之火&#xff0c;目前大模型有100万个。 DeepSeek-V3&#xff0c;指明下一个阶段大模型发张方向&#xff0c;破壁&#xff1a; 资金壁垒&#xff1a;训练成本降低&#xff0c;适配丰富硬件&#xff0c;总…...

DeepSeek-Coder系列模型:智能编程助手的未来

文章目录 一、模型架构与核心功能1. 模型架构2. 核心功能 二、多语言支持与代码生成1. Python代码生成2. Java代码生成3. C代码生成4. JavaScript代码生成 三、仓库级代码理解1. 代码结构分析2. 上下文理解 四、FIM填充技术1. 函数自动填充2. 代码补全 五、应用场景1. 代码补全…...

微信小程序longpress以及touchend的bug,touchend不触发,touchend不执行

核心原因&#xff1a;bind&#xff1a;touchend里面不能放wx:if 举例&#xff1a; <view bind:longpress"longpressBtn" bind:touchend"touchendBtn"><view wx:if"{{isRecording}}" >松开发送</view><view wx:else"…...

多租户架构设计与实现:基于 PostgreSQL 和 Node.js

多租户架构设计与实现:基于 PostgreSQL 和 Node.js 引言 多租户架构(Multi-tenancy)是现代 SaaS(Software as a Service)应用的核心设计模式之一。它允许多个租户共享同一套应用实例,同时确保数据隔离和安全性。本文将详细介绍多租户架构的设计方案,并基于 PostgreSQL…...

四、OSG学习笔记-基础图元

前一章节&#xff1a; 三、OSG学习笔记-应用基础-CSDN博客https://blog.csdn.net/weixin_36323170/article/details/145514021 代码&#xff1a;CuiQingCheng/OsgStudy - Gitee.com 一、绘制盒子模型 下面一个简单的 demo #include<windows.h> #include<osg/Node&…...

windows平台本地部署DeepSeek大模型+Open WebUI网页界面(可以离线使用)

环境准备: 确定部署方案请参考:DeepSeek-R1系列(1.5b/7b/8b/32b/70b/761b)大模型部署需要什么硬件条件-CSDN博客 根据本人电脑配置:windows11 + i9-13900HX+RTX4060+DDR5 5600 32G内存 确定部署方案:DeepSeek-R1:7b + Ollama + Open WebUI 1. 安装 Ollama Ollama 是一…...

功能架构元模型

功能架构的元模型是对功能架构进行描述和建模的基础框架,它有助于统一不同团队对系统的理解,并为系统的设计和开发提供一致的标准和规范。虽然具体的元模型可能因不同的应用领域和特定需求而有所差异,但一般来说,功能架构的元模型可以涵盖以下几个方面: 组件/模块元模型:…...

云计算——AWS Solutions Architect – Associate(saa)4.安全组和NACL

安全组一充当虚拟防火墙对于关联实例&#xff0c;在实例级别控制入站和出站流量。 网络访问控制列表(NACL)一充当防火墙关联子网&#xff0c;在子网级别控制入站和出站流量。 在专有网络中&#xff0c;安全组和网络ACL(NACL)一起帮助构建分层网络防御。 安全组在实例级别操作…...

Fiddler Classic(HTTP流量代理+半汉化)

目录 一、关于Fiddler (一) Fiddler Classic (二) Fiddler Everywhere (三) Fiddler Everywhere Reporter (四) FiddlerCore (五) 总结 二、 软件安全性 1. 软件安装包 2. 软件汉化dll 三、安装与半汉化 1. 正常打开安装包点击下一步安装即可&#xff0c;安装路径自…...

【hive】记一次hiveserver内存溢出排查,线程池未正确关闭导致

一、使用 MemoryAnalyzer软件打开hprof文件 很大有30G&#xff0c;win内存24GB&#xff0c;不用担心可以打开&#xff0c;ma软件能够生成索引文件&#xff0c;逐块分析内存&#xff0c;如下图。 大约需要4小时。 overview中开不到具体信息。 二、使用Leak Suspects功能继续…...

MySQL的字段类型

MySQL 字段类型可以简单分为三大类 数值类型&#xff1a;整型&#xff08;TINYINT、SMALLINT、MEDIUMINT、INT 和 BIGINT&#xff09;、浮点型&#xff08;FLOAT 和 DOUBLE&#xff09;、定点型&#xff08;DECIMAL&#xff09;字符串类型&#xff1a;CHAR、VARCHAR、TINYTEXT…...

HTML之JavaScript运算符

HTML之JavaScript运算符 1.算术运算符 - * / %除以0&#xff0c;结果为Infinity取余数&#xff0c;如果除数为0&#xff0c;结果为NaN NAN:Not A Number2.复合赋值运算符 - * / %/ 除以0&#xff0c;结果为Infinity% 如果除数为0&#xff0c;结果为NaN NaN:No…...

UE5--浅析委托原理(Delegate)

委托概述 委托是一种用于事件处理的机制。通过使用委托,可以将一个或多个函数绑定到一个事件上,在事件触发时自动调用这些函数。代理也叫做委托,比如:跳,跑,开枪,伤害等响应,就是注册一个委托回调,其作用就是提供一种消息机制,都知道消息的传递需要发送方和接收方,…...

Android13-系统服务大管家-ServiceManager进程-启动篇

文章目录 关注 ServiceMager 原因ServerManager需要掌握的知识资料参考ServiceManager 进程启动启动脚本涉及到的相关源码文件源码跟踪ServiceManager脚本启动位置ServiceManager关联脚本 Native层源码分析main.cpp流程打开驱动 initWithDriverinitmakeProcessState 构造方法op…...

网络安全溯源 思路 网络安全原理

网络安全背景 网络就是实现不同主机之间的通讯。网络出现之初利用TCP/IP协议簇的相关协议概念&#xff0c;已经满足了互连两台主机之间可以进行通讯的目的&#xff0c;虽然看似简简单单几句话&#xff0c;就描述了网络概念与网络出现的目的&#xff0c;但是为了真正实现两台主机…...

Mac(m1)本地部署deepseek-R1模型

1. 下载安装ollama 直接下载软件&#xff0c;下载完成之后&#xff0c;安装即可&#xff0c;安装完成之后&#xff0c;命令行中可出现ollama命令 2. 在ollama官网查看需要下载的模型下载命令 1. 在官网查看deepseek对应的模型 2. 选择使用电脑配置的模型 3. copy 对应模型的安…...

从零复现DeepSeek R1:从V3中对MoE、MLA、MTP的实现,到Open R1对R1中SFT、GRPO的实现

前言 虽然我司从23年起&#xff0c;便逐步从教育为主转型到了科技为主&#xff0c;但不代表教育业务便没有了 随着DeepSeek特别是R1、其次V3模型的大火&#xff0c;我司七月在线的大模型线上营群里一学员朋友DIFY问道&#xff1a;校长好&#xff0c;deepseek 的课程目前有多少…...

[EAI-033] SFT 记忆,RL 泛化,LLM和VLM的消融研究

Paper Card 论文标题&#xff1a;SFT Memorizes, RL Generalizes: A Comparative Study of Foundation Model Post-training 论文作者&#xff1a;Tianzhe Chu, Yuexiang Zhai, Jihan Yang, Shengbang Tong, Saining Xie, Dale Schuurmans, Quoc V. Le, Sergey Levine, Yi Ma 论…...