SOME/IP协议详解 基础解读 涵盖SOME/IP协议解析 SOME/IP通讯机制 协议特点 错误处理机制
车载以太网协议栈总共可划分为五层,分别为物理层,数据链路层,网络层,传输层,应用层,其中今天所要介绍的内容SOME/IP就是一种应用层协议。
SOME/IP协议内容按照AUTOSAR中的描述,我们可以更进一步的拆分为三类子协议:应用层的SOME/IP标准协议,SOME/IP-SD协议以及TP层的SOME/IP-TP协议。
SOME/IP协议特点
特点 | 描述 |
Serialization(序列化) | 在ECU内部进行序列化及反序列化以实现信息的高效传输 |
Remote Procedure Calls(远程调用) | 该协议可以传递消息(作为字段发送)以及方法的远程调用(实现过程/函数调用) |
Service Discovery(服务发现) | SOME/IP协议的数据通信发生在客户端-服务器模型中,同时服务器提供客户端可以订阅的许多不同服务。该协议允许客户端动态查找服务、订阅服务并配置对服务的访问。 |
Publish/Subscribe(发布与订阅) | SOME/IP中的数据通信通过发布/订阅进行。客户端可以订阅服务器提供的服务,服务器可以向活跃的订阅者发布通知。 |
Segementation of UDP message | 每当服务器必须向活动订阅者发送通知时,他们是通过UDP协议发送的。SOME/IP能够在不需要任何分段的情况下传送大型UDP消息。 |
SOME/IP协议解析
如果应用了 E2E 通信保护,则 E2E 报头将放置在 Return Code 之后,具体取决于为 E2E 报头选择的偏移值。默认偏移值为 64 位,这将 E2E 报头恰好放置在 Return Code 和 Payload 之间。
SOME/IP协议Header包含Message ID,Request ID, Protocal Version 以及Interface Version。
各字段解释如下:
Item | Description |
Message ID | 前2个字节为Service ID,后2个字节为Method ID(每个服务仅定义一个唯一的Service ID,Method ID的最高位为0即为方法(包括Method Filed.Getter及Filed.Setter),最高位为1就为事件(包括Event和Filed.Notify)) |
Length | 标识从Request ID开始至SOME/IP报文结束的长度 |
Request ID | 前2个字节为Client ID,用来识别一个客户端;后2个字节为Session ID,用来识别同一个客户端的多次请求。(其中Client ID可通过配置前缀或者固定值来实现唯一性,可不进行Session处理,如果需要,则Session ID需根据各自的用例从0x0001递增) |
Protocol Version | 协议版本号,目前固定为1 |
Interface Version | 用来识别服务接口的主版本号,由用户定义 |
Message Type | 用来识别不同的消息类型,Message Type(8Bits)的Bit5标识TP-Flag,当TP-Flag=1时,标识一个TP类型的Message Type (当SOME/IP下层通信协议为UDP,且SOME/IP传输大数据(>1452Bytes)时,将使用SomeIpTp进行分段) |
Return Code | 用来指示Message是否被成功处理了,或针对请求中的错误内容进行反馈 |
E2E Header | 可选是否使能,并且可变长度(默认长度是8Bytes),可选使用一种E2E profile(常用E2E Profile4) |
Payload | 有效载荷,序列化和反序列化定义了 PDU 中所有数据结构的确切位置,并且考虑了内存对齐 |
Message Type
用来识别不同的消息类型,目前存在的类型如下所示,其中TP表示分包的报文,按照AUTOSAR标准(R21-11)定义如下:
ID | Name | Description |
0x00 | REQUEST | A request expecting a response 请求并期待响应 |
0x01 | REQUEST_NO_RETURN | A fire&forget request 请求但不期待响应 |
0x02 | NOTIFICATION | A request for a notification expecting no response 通知/事件回调的请求,不期待有响应 |
0x40 | REQUEST_ACK | Acknowledgment for REQUEST (optional) REQUEST的ACK确认 |
0x41 | REQUEST_NO_RETURN_ACK | Acknowledgment for REQUEST_NO_RETURN (informational) REQUEST_NO_RETURN的ACK确认 |
0x42 | NOTIFICATION_ACK | Acknowledgment for NOTIFICATION (informational) NOTIFICATION的ACK确认 |
0x80 | RESPONSE | The response message 响应 |
0x81 | ERROR | The response containing an error 响应中包含的错误 |
0x20 | TP_REQUEST | TP segment of a Request Message for methods TP请求并期待响应 |
0x21 | TP_REQUEST_NO_RETURN | TP segment of a Request Message for Fire & Forget methods TP请求但不期待响应 |
0x22 | TP_NOTIFICATION | TP segment of an Event (Notification) Message TP通知/事件回调的请求,不期待有响应 |
0xA0 | TP_RESPONSE | TP segment of a Response Message for methods TP响应 |
0xA1 | TP_ERROR | TP segment of an Error Message for methods TP响应中包含的错误 |
Return Code
用来指示Message是否被成功处理了,或针对请求中的错误内容进行反馈,如下为AUTOSAR(R21-11)中定义的Return Code类型:
ID | Name | Description |
0x00 | E_OK | 没有错误发生 |
0x01 | E_NOT_OK | 发生了未定义的错误 |
0x02 | SOMEIPXF_E_UNKNOWN_SERVICE | 未知的服务ID |
0x03 | SOMEIPXF_E_UNKNOWN_METHOD | 未知的Method ID |
0x04 | SOMEIPXF_E_NOT_READY | 应用程序未就绪 |
0x05 | SOMEIPXF_E_NOT_REACHABLE | 运行该服务的系统不可用 |
0x06 | SOMEIPXF_E_TIMEOUT | 发生超时 |
0x07 | SOMEIPXF_E_WRONG_PROTOCOL_VERSION | SOME/IP协议版本不支持 |
0x08 | SOMEIPXF_E_WRONG_INTERFACE_VERSION | 接口版本不匹配 |
0x09 | SOMEIPXF_E_MALFORMED_MESSAGE | 反序列化错误 |
0x0A | SOMEIPXF_E_WRONG_MESSAGE_TYPE | 接收到不符合预期的消息类型 |
0x0B | E_E2E_REPEATED | E2E重复错误 |
0x0C | E_E2E_WRONG_SEQUENCE | E2E错误的时序 |
0x0D | E_E2E | 没有进一步的E2E错误 |
0x0E | E_E2E_NOT_AVAILABLE | E2E不可用 |
0x0F | E_E2E_NO_NEW_DATA | 没有E2E计算的新数据 |
0x10-0x1F | RESERVED | 预留给到SOME/IP一般性错误 |
0x20-0x5E | RESERVED | 预留给到服务及方法的特定错误 |
Payload的序列化与反序列化
SOME/IP报文收发的过程中,上层应用所定义的Method、Event、Field参数都是面向用户的struct,string等,序列化就是将这些输出参数转换为字节流的过程;而反序列化的过程正好相反,就是将字节流反向解析成struct、string等具体的参数。
大小端:
SOME/IP报文的payload(负载)大小端(字节序)指的是数据在内存中的存储和传输顺序。在计算机系统中,数据的存储和传输顺序主要有两种标准:大端字节序(Big-Endian)和小端字节序(Little-Endian)。
-大端字节序(Big-Endian):是指数据的高位字节存放在低地址处,而低位字节存放在高地址处。也就是说,从内存的起始位置开始,第一个字节是最高位字节。
-小端字节序(Little-Endian):是指数据的低位字节存放在低地址处,而高位字节存放在高地址处。在这个模式下,内存起始位置存放的是最低位字节。
SOME/IP报文的payload部分可以采用上述两种字节序中的任何一种,这取决于数据交换双方的协议约定或者通信端点的实现。在网格协议中,端字节序通常由协议规范明确指出。开发者在处理SOME/IPP报文时,必须确保发送方和接收方在端字节序上保持一致,以避免数据解析错误。
SOME/IP通信机制
服务发现(Service Discovery)
服务发现的通信机制是通过SOME/IP-SD协议实现的,主要是为了实现在车载以太网中告知客户端当前服务实例的可用性及访问方式,可通过Find Service 和Offer Service来实现。
SOME/IP 服务发现流程可以分为以下三大基本步骤:
Client通过发送Find Service的报文去寻找车载网络中可用的服务实例;
Server接收到Client的Find Server后通过UDP发送Offer Service响应;
Client通过发送Subcribe Event Group去订阅相关Event;
Server检查是否满足Client是否满足订阅条件,如果满足回复ACK,如果不满足,则回复NACK;
Client成功订阅相关事件后,Server会按照事件本身属性来实现对已订阅该事件的Client的发布;
远程进程调用(RPC)
远程进程调用主要可分为四种通信模式:
Request/Response通信模式
可归纳为Method中的一种;其基本通信模型如下图所示:
Request-Response模型作为一种最为常见的通信方式,其主要任务就是客户端发送请求信息,服务端接收到请求,进行相关处理之后进行相应的响应。
Fire&Forget通信模式
可归纳为Method中的一种;
该通信模型的主要任务就是客户端向服务端发送请求,服务端无需进行任何响应,有点类似诊断服务中的抑制正响应。
Notification Event通信模式
该通信模式主要描述了发布 /订阅消息内容,主要任务就是为了实现客户端向服务端订阅相关的事件组,当服务端的事件组发生或者值发生变化时,就需要向已订阅该事件组的客户端发布更新的内容。
远程进程控制(Field)
访问进程通信机制主要是为了实现针对对应用程序的数据获取与更改,主要任务就是实现客户端通过Getter获取Server的值,通过Setter设置Server的值。
Field就可理解为一个Service的基本属性,可包含Getter,Setter,Notifier三种方式。其中Getter就是读取Field中某个值的方法,Setter就是一种改变Field值的方法,而Notifier则是一种当Field中的值发生变化的触发事件,发生变化时就通知Client。
错误处理机制
AUTOSAR为了更为高效的定位到通讯过程中的问题所在,制定了一套检查SOME/IP协议格式内容的错误处理机制。比如版本信息检查,服务ID等,其他故障信息可以在Payload中进行详细定义。目前SOME/IP支持以下两种错误处理机制,这两种uowu处理机制可以根据配置进行选择。
-消息类型0x80,Response信息,即可以通过Response Message中的Return Code来定位到问题所在;
-消息类型0x81,显式的错误信息;
主要是校验协议首部结构,对Message Type和Return code进行赋值,通知对端。
参考:
AUTOSAR SOME/IP Protocol Specification:https://www.autosar.org/fileadmin/standards/R19-11/FO/AUTOSAR_PRS_SOMEIPProtocol.pdf
智猩猩
相关文章:
SOME/IP协议详解 基础解读 涵盖SOME/IP协议解析 SOME/IP通讯机制 协议特点 错误处理机制
车载以太网协议栈总共可划分为五层,分别为物理层,数据链路层,网络层,传输层,应用层,其中今天所要介绍的内容SOME/IP就是一种应用层协议。 SOME/IP协议内容按照AUTOSAR中的描述,我们可以更进一步…...
nginx 实现 正向代理、反向代理 、SSL(证书配置)、负载均衡 、虚拟域名 ,使用其他中间件监控
我们可以详细地配置 Nginx 来实现正向代理、反向代理、SSL、负载均衡和虚拟域名。同时,我会介绍如何使用一些中间件来监控 Nginx 的状态和性能。 1. 安装 Nginx 如果你还没有安装 Nginx,可以通过以下命令进行安装(以 Ubuntu 为例࿰…...
基于单片机的智能花卉浇水系统的设计与实现
摘要: 随着人们生活水平的不断提高,生活节奏也越来越快。人们经常忽视办公室或者家居的花卉,忘记浇水。本文设计了一种基于单片机的智能浇水系统。目的是解决养殖花卉的人忘记浇水的问题。本系统以单片机AT89S52为控制芯片,能够按…...
《使用 YOLOV8 和 KerasCV 进行高效目标检测》
《使用 YOLOV8 和 KerasCV 进行高效目标检测》 作者:Gitesh Chawda创建日期:2023/06/26最后修改时间:2023/06/26描述:使用 KerasCV 训练自定义 YOLOV8 对象检测模型。 (i) 此示例使用 Keras 2 在 Colab 中…...
【Domain Generalization(3)】领域泛化与文生图之 -- QUOTA 任意领域中的生成物体的数量可控
系列文章目录 【Domain Generalization(1)】增量学习/在线学习/持续学习/迁移学习/多任务学习/元学习/领域适应/领域泛化概念理解第一篇了解了 DG 的概念,那么接下来将介绍 DG 近年在文生图中的相关应用/代表性工作。【Domain Generalization(2)】领域泛化在文生图…...
qml XmlListModel详解
1、概述 XmlListModel是QtQuick用于从XML数据创建只读模型的组件。它可以作为各种view元素的数据源,比如ListView、GridView、PathView等;也可以作为其他和model交互的元素的数据源。通过XmlRole定义角色,如name、age和height,并…...
CAPL如何设置TCP/IP传输层动态端口范围
在TCP/IP协议中,应用程序通过传输层协议TCP/UDP传输数据,接收方传输层收到数据后,根据传输层端口号把接收的数据上交给正确的应用程序。我们可以简单地认为传输层端口号是应用程序的标识,这就是为什么我们说应用程序在使用TCP/IP协议通信时要打开传输层端口号或者绑定端口号…...
Pandas常用数据类型
扩展库pandas常用的数据结构如下: (1)Series:带标签的一维数组 (2)DatetimeIndes:时间序列 (3)DateFrame:带标签且大小可变的二维表格结构 (4…...
【AI大模型】BERT GPT ELMo模型的对比
目录 🍔 BERT, GPT, ELMo之间的不同点 🍔 BERT, GPT, ELMo各自的优点和缺点 🍔 小结 学习目标 理解BERT, GPT, ELMo相互间的不同点理解BERT, GPT, ELMo相互比较下的各自优点和缺点 🍔 BERT, GPT, ELMo之间的不同点 关于特征提取…...
探索AGI:智能助手与自我赋能的新时代
目录 1 AGI1.1 DeepMind Levels(2023年11月)1.2 OpenAI Levels(2024年7月)1.3 对比与总结1.4 AGI可能诞生哪里 2 基于AI的智能自动化助手2.1 通用型大模型2.2 专业的Agent和模型工具开发框架2.3 编程与代码生成助手2.4 视频和多模态生成2.5 商…...
Oracle Dataguard(主库为双节点集群)配置详解(5):将主库复制到备库并启动同步
Oracle Dataguard(主库为双节点集群)配置详解(5):将主库复制到备库并启动同步 目录 Oracle Dataguard(主库为双节点集群)配置详解(5):将主库复制到备库并启动…...
webrtc自适应分辨率的设置
DegradationPreference 是一个枚举类,用于在视频编码或实时通信(如 WebRTC)中指定系统资源不足时如何处理质量下降的策略。以下是该枚举类的中文解释: enum class DegradationPreference {// 禁用:不根据资源过载信号…...
提供的 IP 地址 10.0.0.5 和子网掩码位 /26 来计算相关的网络信息
网络和IP地址计算器 https://www.sojson.com/convert/subnetmask.html提供的 IP 地址 10.0.0.5 和子网掩码位 /26 来计算相关的网络信息。 子网掩码转换 子网掩码 /26 的含义二进制表示:/26 表示前 26 位是网络部分,剩下的 6 位是主机部分。对应的子网掩码为 255…...
WPF系列八:图形控件Path
简介 Path控件支持一种称为路径迷你语言(Path Mini-Language)的紧凑字符串格式,用于描述复杂的几何图形。这种语言通过一系列命令字母和坐标来定义路径上的点和线段,最终绘制出想要的图形。 绘制任意形状:可以用来绘…...
如何移除git中被跟踪的commit文件
忽略已被跟踪的文件 问题描述 如果某个文件已经被 Git 跟踪(即已被提交到仓库),即使后来将其添加到 .gitignore 文件中,Git 仍会继续跟踪它。 解决方案 更新 .gitignore 文件 将需要忽略的文件加入 .gitignore: .env…...
15. C语言 函数指针与回调函数
本章目录: 前言什么是函数指针?定义声明方式 函数指针的基本用法示例:最大值函数输出示例: 回调函数与函数指针什么是回调函数?通俗解释 示例:回调函数实现动态数组填充输出示例: 进一步探索:带…...
tomcat12启动流程源码分析
信息: Server.服务器版本: Apache Tomcat/12.0.x-dev 信息: Java虚拟机版本: 21下载源码https://github.com/apache/tomcat,并用idea打开,配置ant编译插件,或者使用我的代码 启动脚本是/bin/startup.bat,内部又执行了bin\cata…...
Pycharm 使用教程
一、基本配置 1. 切换Python解释器 pycharm切换解释器版本 2. pycharm虚拟环境配置 虚拟环境的目的:创建适用于该项目的环境,与系统环境隔离,防止污染系统环境(包括需要的库)虚拟环境配置存放在项目根目录下的 ven…...
数据仓库: 9- 数据仓库数据治理
目录 9- 数据治理9.1 数据标准化9.1.1 数据标准化的定义9.1.2 数据标准化的重要性9.1.3 数据标准化的主要内容9.1.4 数据标准化的实施步骤9.1.5 数据标准化常用工具9.1.6 数据标准化的挑战与应对策略9.1.7 案例分析9.1.8 总结 9.2 主数据管理(MDM)9.2.1 主数据管理的核心目标9.…...
Kutools for Excel 简体中文版 - 官方正版授权
Kutools for Excel 是一款超棒的 Excel 插件,就像给你的 Excel 加了个超能助手。它有 300 多种实用功能,现在还有 AI 帮忙,能把复杂的任务变简单,重复的事儿也能自动搞定,不管是新手还是老手都能用得顺手。有了它&…...
回归预测 | MATLAB实MLR多元线性回归多输入单输出回归预测
回归预测 | MATLAB实MLR多元线性回归多输入单输出回归预测 目录 回归预测 | MATLAB实MLR多元线性回归多输入单输出回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 回归预测 | MATLAB实MLR多元线性回归多输入单输出回归预测。 程序设计 完整代码:回…...
lerna使用指南
lerna版本 以下所有配置命令都是基于v8.1.9,lerna v5 v7版本差别较大,在使用时,注意自身的lerna版本。 lerna开启缓存及缓存配置 nx缓存是v5版本以后才有的,小于该版本的无法使用该功能。 初始化配置 缓存配置文件nx.json&am…...
LightGCN:为推荐系统简化图卷积网络的创新之作
LightGCN: Simplifying and Powering Graph Convolution Network for RecommendationSIGIR2020Collaborative Filtering, Recommendation, Embedding Propagation, Graph Neural Network 🌟 研究背景 在信息爆炸的互联网时代,个性化推荐系统成为缓解信…...
【图像去噪】论文精读:High-Quality Self-Supervised Deep Image Denoising(HQ-SSL)
请先看【专栏介绍文章】:【图像去噪(Image Denoising)】关于【图像去噪】专栏的相关说明,包含适配人群、专栏简介、专栏亮点、阅读方法、定价理由、品质承诺、关于更新、去噪概述、文章目录、资料汇总、问题汇总(更新中) 文章目录 前言Abstract1 Introduction2 Convoluti…...
Elasticsarch:使用全文搜索在 ES|QL 中进行过滤 - 8.17
8.17 在 ES|QL 中引入了 match 和 qstr 函数,可用于执行全文过滤。本文介绍了它们的作用、使用方法、与现有文本过滤方法的区别、当前的限制以及未来的改进。 ES|QL 现在包含全文函数,可用于使用文本查询过滤数据。我们将回顾可用的文本过滤方法…...
17.C语言输入输出函数详解:从缓存原理到常用函数用法
目录 1.前言2.缓存和字节流3.printf4.scanf5.sscanf6.getchar与putchar7.puts与gets 1.前言 本篇原文为:C语言输入输出函数详解:从缓存原理到常用函数用法。 更多C进阶、rust、python、逆向等等教程,可点击此链接查看:酷程网 C…...
高等数学学习笔记 ☞ 不定积分与积分公式
1. 不定积分的定义 1. 原函数与导函数的定义: 若函数可导,且,则称函数是函数的一个原函数,函数是函数的导函数。 备注: ①:若函数是连续的,则函数一定存在原函数,反之不对。 ②&…...
Debye-Einstein-模型拟合比热容Python脚本
固体比热模型中的德拜模型和爱因斯坦模型是固体物理学中用于估算固体热容的两种重要原子振动模型。 爱因斯坦模型基于三种假设:1.晶格中的每一个原子都是三维量子谐振子;2.原子不互相作用;3.所有的原子都以相同的频率振动(与德拜…...
Ubuntu24.04安装AppImage报错AppImages require FUSE to run.
报错如下: 解决: sudo apt install libfuse2t64如果不行: sudo add-apt-repository universe sudo apt install libfuse2t64安装时又报错: [10354:0109/100149.571068:FATAL:setuid_sandbox_host.cc(158)] The SUID sandbox hel…...
3_CSS3 渐变 --[CSS3 进阶之路]
CSS3 引入了渐变(gradients),它允许在两个或多个指定的颜色之间显示平滑的过渡。CSS3 支持两种类型的渐变: 线性渐变(Linear Gradients):颜色沿着一条线性路径变化,可以是水平、垂直…...
uniapp 左右滑动切换Tab
各种开发会遇到很多奇葩的需求,今天这个是在页面 左右滑动,然后自动去切换Tab <viewtouchstart"touchStart"touchcancel"touchCancel"touchend"touchEnd"><components is"xxx"/></view>//---…...
STM32 FreeRTOS 任务创建和删除实验(动态方法)
动态创建,堆栈是在FreeRTOS管理的堆内存里,注意任务不要重复创建。 xxxxx_STACK_SIZE 128 uxTaskGetStackHighWaterMark()获取指定任务的任务栈的历史剩余最小值,根据这个结果适当调整启动任务的大小。 实验目标 学会 xTaskCreate( ) 和 vTaskDelete( ) 的使用: start_…...
宝塔面板 申请证书后 仍然提示不安全
证书显示有效,但是网站显示不安全 导致的原因是引入静态文件使用的是HTTP,查看方法为F12打开console控制台 可以看到静态文件全部都是HTTP 网站采用wordpress搭建,基于问题解决,其他方式搭建也是一样,处理掉所有的H…...
透明部署、旁路逻辑串联的区别
背景 需讨论防火墙到底是串联,还是旁挂。 通常串联指的就是“透明部署”,旁挂指的就是“逻辑串联”。 透明部署(串联) 也称为透明模式或桥接模式,是一种安全设备的部署方式。在这种模式下,安全设备被串联…...
C++实现设计模式---原型模式 (Prototype)
原型模式 (Prototype) 原型模式 是一种创建型设计模式,它通过复制现有对象来创建新对象,而不是通过实例化。 意图 使用原型实例指定要创建的对象类型,并通过复制该原型来生成新对象。提供一种高效创建对象的方式,尤其是当对象的…...
Canvas简历编辑器-选中绘制与拖拽多选交互方案
Canvas简历编辑器-选中绘制与拖拽多选交互方案 在之前我们聊了聊如何基于Canvas与基本事件组合实现了轻量级DOM,并且在此基础上实现了如何进行管理事件以及多层级渲染的能力设计。那么此时我们就依然在轻量级DOM的基础上,关注于实现选中绘制与拖拽多选交…...
kotlin的dagger hilt依赖注入
依赖注入(dependency injection, di)是设计模式的一种,它的实际作用是给对象赋予实例变量。 基础认识 class MainActivity : ComponentActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceSta…...
Flink类加载机制详解
1. 总览 在运行Flink应用时,它会加载各种类,另外我们用户代码也会引入依赖,由于他们依赖版本以及加载顺序等不同,就可能会导致冲突,所以很要必要了解Flink是如何加载类的。 根据加载的来源的不同,我们可以将类分为三种: Java Classpath:Java类路径下,这是Java通用的…...
在VSCode中设置bash命令行内容简写
在VSCode中设置bash命令行内容简写 1、打开shell配置文件2、在配置文件的末尾,添加以下行来创建别名3、重新加载配置文件以使更改生效4、在命令行使用缩写执行命令 比如,在VSCode的bash中输入 gc daily,而实际执行 git checkout daily. 1、…...
特制一个自己的UI库,只用CSS、图标、emoji图 第二版
图: 代码: index.html <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>M…...
51_Lua面向对象编程
面向对象编程(Object Oriented Programming,OOP)是一种非常流行的计算机编程架构。像C++、Java、Objective-C、Smalltalk、C#、Ruby等编程语言都支持面向对象编程。 1.面向对象编程特性 面向对象编程是一种编程范式,它使用“对象”来设计软件。对象是数据和行为的封装单元…...
Kafka——两种集群搭建详解 k8s
1、简介 Kafka是一个能够支持高并发以及流式消息处理的消息中间件,并且Kafka天生就是支持集群的,今天就主要来介绍一下如何搭建Kafka集群。 Kafka目前支持使用Zookeeper模式搭建集群以及KRaft模式(即无Zookeeper)模式这两种模式搭…...
OPT: Open Pre-trained Transformer语言模型
摘要 大规模语言模型通常需要数十万计算日的训练时间,展现了在零样本和小样本学习中的显著能力。鉴于其计算成本之高,这些模型在没有大量资本投入的情况下难以复现。对于那些通过API提供的少数模型,研究者无法获取完整的模型权重,…...
开源模型应用落地-LangChain高阶-记忆组件-RedisChatMessageHistory正确使用(八)
一、前言 LangChain 的记忆组件发挥着至关重要的作用,其旨在协助大语言模型(LLM)有效地留存历史对话信息。通过这一功能,使得大语言模型在对话过程中能够更出色地维持上下文的连贯性和一致性,进而能够像人类的记忆运作方式那样,进行更为自然、流畅且智能化的交互。 它仿佛…...
http和https有哪些不同
http和https有哪些不同 1.数据传输的安全性:http非加密,https加密 2.端口号:http默认80端口,https默认443端口 3.性能:http基于tcp三次握手建立连接,https在tcp三次握手后还有TLS协议的四次握手确认加密…...
UML系列之Rational Rose笔记七:状态图
一、新建状态图 依旧是新建statechart diagram; 二、工作台介绍 接着就是一个状态的开始:开始黑点依旧可以从左边进行拖动放置: 这就是状态的开始,和活动图泳道图是一样的;只能有一个开始,但是可以有多个…...
一个使用 Golang 编写的新一代网络爬虫框架,支持JS动态内容爬取
大家好,今天给大家分享一个由ProjectDiscovery组织开发的开源“下一代爬虫框架”Katana,旨在提供高效、灵活且功能丰富的网络爬取体验,适用于各种自动化管道和数据收集任务。 项目介绍 Katana 是 ProjectDiscovery 精心打造的命令行界面&…...
mycat介绍与操作步骤
文章目录 1.分库分表2.mycat 入门2.1 概述2.2 案例:水平分表1)准备工作2)配置3)启动并测试 3.mycat 配置详解3.1 schema.xml3.2 rule.xml3.3 server.xml 4.mycat 分片:垂直拆分1)准备工作2)配置…...
【Go】:图片上添加水印的全面指南——从基础到高级特性
前言 在数字内容日益重要的今天,保护版权和标识来源变得关键。为图片添加水印有助于声明所有权、提升品牌认知度,并防止未经授权的使用。本文将介绍如何用Go语言实现图片水印,包括静态图片和带旋转、倾斜效果的文字水印,帮助您有…...
R语言的语法糖
R语言的语法糖 引言 在编程语言中,所谓的“语法糖”是指那些使得程序员能够以更简洁、直观的方式书写代码的语法形式。R语言作为一种用于统计分析和数据可视化的编程语言,具有丰富的功能和灵活的语法。本文将深入探讨R语言中的语法糖,帮助读…...