《UDS协议从入门到精通(UDS速查手册)》(完结撒花版)

article/2025/8/11 20:55:40

总目录:《UDS协议从入门到精通(UDS速查手册)》(完结撒花版)

  • 前言
  • 一、UDS简介
    • 1.1 从汽车诊断说起
    • 1.2 两种常见的诊断协议:OBD & UDS
  • 二、相关术语介绍
    • 2.1 Service ID(SID)
    • 2.2 诊断请求(Diagnostic Request)
    • 2.3 正响应/负响应(Positive/Negative Response)
      • 2.3.1 正响应报文格式
      • 2.3.2 负响应报文格式
    • 2.4 负响应码(Negative Response Code - NRC)
  • 三、UDS服务详述
    • 3.1 诊断和通信管理类
    • 3.2 数据传输类
    • 3.3 存储数据传输类
    • 3.4 IO控制类
    • 3.5 例程功能类 - 调用ECU内部预置函数
    • 3.6 上传下载类
  • 四、写在最后

  本专栏仅用于讲解UDS协议,于2024年6月24日已将所有UDS服务讲解更新完毕。博主能力有限,专栏文章中不免有疏漏之处,欢迎并感谢众多同学提出宝贵意见,博主会仔细查阅相关内容并及时修正。
  另外,结合部分同学建议,后续将添加对实际工况下UDS日志的分析、UDS中对OTA相关内容的梳理、以及对UDS协议中会话层时间参数的讲解,这些文章将陆续更新在新专栏车载系统开发精品文章集锦中,欢迎关注,共同学习进步!

  博主已开通同名公众号,通过文末或主页二维码关注博主,将为你推送最新、最细、最硬核的车载系统知识和嵌入式开发知识!公众号主页设有交流群作为同行江湖朋友们相互交流学习的驿站。

前言

  汽车软件开发/测试工作中不免涉及到UDS协议。实际上该协议的应用不仅仅局限于最常见的汽车故障检测工作中(比如4S店对汽车故障的快速定位),在车载ECU间的通信、数据传输、ECU软件的升级刷写等场景中都有着广泛的应用。
  经查阅各类资料和网络文章,仔细阅读14229-1协议标准,集众多网友、博主以及自己对该协议的理解,在本专栏针对UDS 14229-1中定义的全部26种服务作详细阐述, 并以图示方式给出直观的通信示例,可以作为一部中文UDS手册,便于随手查询

一、UDS简介

1.1 从汽车诊断说起

  汽车诊断是指对汽车进行故障检测和定位的过程,它是确保汽车安全和性能的重要环节。

  在汽车维修和开发工作中,诊断工具是必不可少的设备。通过诊断工具,技师可以读取车辆的故障码,进而定位故障原因。汽车软件开发或者测试人员也可以通过诊断工具连接到汽车的电子系统,读取和解析车辆的实时数据。而汽车诊断协议就是指诊断工具与车辆之间的通信协议。目前,市场上最常见的两种汽车诊断协议是OBD(On-Board Diagnostics)和UDS(Unified Diagnostic Services)。

  Tip📌:诊断工具也就是下文常提到的Tester,它可以是任何实现了通信协议的东西,比如可以是一个实现了UDS协议的上位机软件、实际的硬件设备(4S店的诊断仪)甚至是一个实现了UDS协议的系统中的测试脚本。

  在过去的几十年里,汽车诊断系统经历了巨大的变革和发展。起初,汽车诊断主要依靠人工检测和经验判断来发现问题。随着科技的进步,电子系统在汽车中的应用越来越广泛,汽车诊断也逐渐走向了自动化和数字化。从最初的简单故障指示灯到现在的复杂电子控制单元(ECU)和诊断协议的应用,汽车诊断技术已经取得了长足进步。

1.2 两种常见的诊断协议:OBD & UDS

  OBD和UDS是两种常见的诊断协议,它们在目标和应用领域上存在一些区别。OBD协议主要用于监测车辆的排放情况,通过读取车辆的故障码来判断是否符合排放标准。而UDS协议则更加全面和灵活,在各个ECU上是一种通用型的协议。

OBD(On-Board Diagnostic)
  主要用于跟汽车排放系统相关的ECU(电子控制单元,汽车上的板级控制器)的诊断。OBD协议分为两种:OBD-I和OBD-II。OBD-I是由美国为当时制造的加州汽车所制定的排放法规,随后这套法规被逐渐标准化,于是又提出了OBDII标准,包括:标准化的车载ECU数据诊断接口(SAE-J1962,也就是现在常说的OBD接口)、标准化的诊断解码工具(SAE-J1978)、标准化的诊断协议(ISO 9141-2、ISO 14230-4、ISO 15765-4)、标准化的故障码定义(SAE-J2012、ISO 15031-6)、标准化的维修服务指南(SAE-J2000),OBD-II在1996年开始实施,目前已经成为全球汽车行业的标准。因此,OBD标准可以看作一系列标准的集合,是具有强制标准需要参照的,是由法规要求的,其最初目的是环保,用于汽车排放系统相关的ECU上

UDS(Unified diagnostic services)
  UDS(Unified Diagnostic Services)是一种通用的汽车诊断协议,由欧洲汽车制造商协会(ACEA)和日本汽车制造商协会(JAMA)共同制定。它与OBD最大的区别就在于“Unified“上,是面向整车所有ECU的。单就UDS而言,它只是一个应用层协议(ISO 14229-1),不关心应用层以下的实现,比如执行该协议的应用层程序不关心通过何种物理传输方式实现与ECU硬件的通信,因此它既可以基于CAN线通信去实现,也能在Ethernet上实现。并且,UDS提供的是一个诊断服务的基本框架,定义了一系列的诊断服务和通用化的诊断流程,主机厂和零部件供应商可以根据实际情况选择实现其中的一部分或是自定义出一些私有化的诊断服务来,所以基于UDS协议的诊断又常常被称为Enhanced diagnosic(增强型诊断)。可见,UDS不是法规要求的,没有统一实现标准,可以基于该协议提供的诊断请求及响应格式进行二次开发

   简言之,UDS服务主要用于诊断设备Tester(Client)和ECU(Server)之间的诊断通信,诊断设备(Tester)发送诊断请求(request),ECU给出诊断响应(response),通过这种“一问一答”的形式让目标ECU执行一些期望的操作,而UDS就是为不同类型诊断功能的request和response定义了统一的内容和格式。

二、相关术语介绍

2.1 Service ID(SID)

  在UDS协议中,Service ID(SID)是指服务标识符,用于标识要执行的服务。每个服务都有一个唯一的SID,在诊断会话中通过SID来区分要执行/响应哪种服务请求。14229-1中定义了26种服务并将这些服务分为6大类:诊断和通信管理类、数据传输类、存储数据传输类、输入输出控制类、例程功能类、上传下载类。

  Tip📌:表格中标黄部分为常用的服务,其他的不常用。

大类SID (Hex)诊断服务名服务Service
诊断和通信管理类10诊断会话控制Diagnostic Session Control
11ECU复位ECU Reset
27安全访问Security Access
28通讯控制Comunication Control
3E待机握手Tester Present
83访问时间参数Access Timing Parameter
84安全数据传输Secured Data Transmission
85控制DTC的设置Control DTC Setting
86事件响应Response On Event
87链路控制Link Control
数据传输类22通过ID读数据Read Data By Identifier
23通过地址读取内存Read Memory By Adress
24通过ID读比例数据Read Scaling Data By Identifier
2A通过周期ID读取数据Read Data By Periodic Identifier
2C动态定义标识符Dynamically Define Data Identifier
2E通过ID写数据Write Data By Identifier
3D通过地址写内存Write Memory By Adress
存储数据传输类14清除诊断信息Clear Diagnostic Infomation
19读取故障码信息Read DTC Infomation
输入输出控制类2F通过ID控制输入输出Input/Output Control By Identifier
例程功能类31例行程序控制Routine Control
上传下载类34请求下载Request Download
35请求上传Request Upload
36数据传输Transfer Data
37请求退出传输Request Transfer Exit
38请求文件传输Request File Transfer

2.2 诊断请求(Diagnostic Request)

  诊断请求是指诊断工具向车辆发送的请求消息,用于请求执行某个服务。诊断请求消息由三个部分组成:SID、子功能和实际数据。其中,SID用于标识要执行的服务,至于子功能:指的是这个服务还能更进一步的划分或者具有启动/暂停之类的子功能。

  尽管服务类型不尽相同,但UDS针对这些服务定义了统一的诊断请求包的格式,每个诊断请求由1个Byte的SID + 1个Byte的 sub-function(实际上是1bit spr + 7bit sub-function,具体解释看下文)+ 不定长的实际数据构成,其格式如下所示:


在这里插入图片描述


Tip📌:spr存在的目的是告诉ECU针对某个服务请求是否需要发送正响应数据,用于减少ECU发送不必要的响应,节约系统资源:

  • spr=1, 抑制正响应,即ECU不给出正响应;
  • spr=0, 需要ECU给出正响应,如果某个服务没有sub-function,即没有第二个字节,那默认是要发正响应的。

2.3 正响应/负响应(Positive/Negative Response)

  诊断工具向车辆发送服务请求后,如果服务执行成功,则返回的响应消息称为正响应,反之返回的响应消息称为负响应。

2.3.1 正响应报文格式

  正响应报文的字节组成格式如下所示:


在这里插入图片描述


  ——举个最简单的例子(0x10-诊断会话控制服务):

诊断仪 目标ECU 10 01 1 诊断仪发送请求: byte1的10是SID, byte2的01是sub-function, 且可知Bit 7是0,即不抑制正响应 50 01 2 目标ECU给出响应: byte1是SID+0x40 = 50, byte2是sub-funtion 诊断仪 目标ECU

  ——再举个不带sub-function的例子(0x22-通过DID读数据):

诊断仪 目标ECU 22 F1 86 1 诊断仪发送请求: byte1的22是SID, byte2和byte3是DID(数据ID), 由于没有sub-function, 因此默认需要目标ECU给出正响应 62 F1 86 01 2 目标ECU给出响应: byte1的62是SID+0x40, byte2和byte3是DID, byte4是读到的数据 诊断仪 目标ECU

2.3.2 负响应报文格式

  负响应消息由两部分组成:SID和负响应码(NRC)。SID用于标识响应的服务,负响应码指示服务执行失败的原因。

  负响应报文的字节组成格式如下所示:


在这里插入图片描述


  ——还是拿0x10-诊断会话控制服务来举例:

诊断仪 目标ECU 10 05 1 诊断仪发送请求: 现在sub-function是05了, 假设系统不支持这个sub-function 7F 10 12 2 目标ECU给出响应: byte1是代表负响应的固定值0x7F, 10为SID,12为NRC, 指代sub-function not supported错误 诊断仪 目标ECU

2.4 负响应码(Negative Response Code - NRC)

  在UDS协议中,负响应码用于指示服务执行失败的原因。NRC用一个字节表示,每个取值都对应一种不同的错误类型。

NRC码含义NRC码含义
0x01 - 0x0f暂保留;0x78收到请求,延迟响应;
0x10未知错误,服务被拒绝;0x79 - 0x7d暂保留;
0x11不支持该服务请求;0x7e当前会话下子功能不支持;
0x12不支持子功能;0x7f当前会话下服务不支持;
0x13消息长度或格式错误;0x80暂保留;
0x14请求信息长度超出;0x81rpm(每分钟转速)太高;
0x15 - 0x20暂保留;0x82rpm太低;
0x21服务端正忙;0x83当前引擎正在运行;
0x22条件不满足;0x84当前引擎未运行;
0x23暂保留;0x85截止当前时间引擎运行时间太短;
0x24请求顺序错误;0x86温度过高;
0x25指令已经被接收,但是未被执行;0x87温度过低;
0x26失败的操作导致当前操作无法执行;0x88车速过高;
0x27 - 0x30暂保留;0x89车速过低;
0x31参数错误;0x8a油门/踏板过高(超过了当前要求的最大阈值);
0x32暂保留;0x8b油门/踏板过低;
0x33安全校验未通过;0x8c变速器档位不在空档;
0x34暂保留;0x8d变速器档位不在排挡;
0x35密钥不匹配;0x8e暂保留;
0x36已达到解锁最大错误次数;0x8f制动开关没有关闭
0x37超时时间未到;0x90换挡杆不在驻车档;
0x38 - 0x4f由扩展数据链路安全性保留;0x91变矩器离合器锁定;
0x50 - 0x6f暂保留;0x92电压过高;
0x70不允许上传下载;0x93电压过低;
0x71数据传输中断;0x94 - 0xef暂保留(特定条件下);
0x72擦除或烧写内存错误;0xf0 - 0xfe为汽车制造商保留;
0x73块序列计数错误;0xff暂保留;
0x74 - 0x77暂保留;

  以上内容是对UDS协议及一些入门基础知识的阐述,在接下来的篇章中,将详细介绍UDS协议中定义的全部26种服务。每一种服务都将被仔细解析和阐述,以便大家能够全面理解其功能和用法。各篇章还将通过图示方式给出直观的通信示例,帮助大家更好地理解UDS协议的实际应用。

三、UDS服务详述

  Tip📌:各表格中标黄的为常用服务!!对于不常用服务的讲解会相对没有那么深入和精致,如有特殊需要,尽可提出,博主会尽其所能细化相关不常用服务的讲解!!

3.1 诊断和通信管理类

  诊断和通信管理类是UDS服务的核心部分,它提供了与ECU进行通信以及执行诊断操作的基本功能。这些功能包括诊断会话的建立和终止、ECU的重置和诊断通信的管理。通过诊断和通信管理类,技术人员可以与ECU进行交互,获取ECU的状态信息,并执行各种诊断操作。主要包括如下服务:

Service(点击即可跳转功能简述
0x10:诊断会话控制客户端控制目标ECU的诊断会话状态。
0x11:ECU复位客户端强制让目标ECU执行复位操作。
0x27:安全访问客户端请求解锁受保护的目标ECU。
0x28:通讯控制客户端控制目标ECU的通信行为 (在特定情况下启用或禁用ECU的某些通信功能)。
0x3E:待机握手客户端向目标ECU表明它仍然存在。
0x85:控制DTC的设置客户端控制目标ECU中dtc的设置。
0x83:访问时间参数客户端使用此服务读取/修改当前通信的定时参数。
0x84:安全数据传输客户端使用此服务执行具有扩展数据链路安全性的数据传输。
0x86:事件响应客户端请求设置和/或控制目标ECU中的事件机制。
0x87:链路控制客户端请求控制通信波特率。

3.2 数据传输类

  数据传输类是用于在ECU和诊断工具之间传输数据的UDS服务类别。它提供了可靠的数据传输机制,确保数据的完整性和准确性。数据传输类包括数据的读取和写入功能,允许技术人员读取和修改ECU中的数据。此外,数据传输类还支持数据的块传输,以提高数据传输的效率。主要包括如下服务:

Service(点击即可跳转功能简述
0x22:通过ID读数据客户端请求读取由提供的DID标识的记录的当前值。
0x2E:通过ID写数据客户端请求写入由提供的DID指定的记录数据。
0x23:通过地址读内存客户端请求读取所提供内存范围的当前值。
0x24:通过ID读缩放数据/换算信息客户端请求读取由提供的DID标识的比例数据。
0x2A:通过周期读ID数据客户端请求调度目标ECU中的数据进行周期性传输。
0x2C:动态定义标识符客户端请求动态定义数据标识符,这些标识符随后可能被0x22-读DID服务读取。
0x3D:通过地址写内存客户端请求覆盖提供的内存范围。

3.3 存储数据传输类

  存储数据传输类是一种特殊的数据传输类别,用于在ECU和诊断工具之间传输存储数据。存储数据可以是ECU的配置信息、故障码或日志文件等。通过存储数据传输类,技术人员可以读取和清除ECU中的存储数据,以便进行故障诊断和维修。所涉及的两个服务都是常用服务类型。主要包括如下服务:

Service(点击即可跳转功能简述
0x14:清除诊断信息允许客户端从目标ECU清除诊断信息(包括dtc、捕获的数据等)。
0x19:读取故障码信息允许客户端从目标ECU请求诊断信息(包括dtc、捕获数据等)。

3.4 IO控制类

  IO控制类是用于控制ECU输入输出(IO)功能的UDS服务类别。它提供了对ECU输入输出功能的访问和控制,包括读取和设置ECU的输入输出状态。通过IO控制类,技术人员可以与ECU的IO功能进行交互,实现对车辆系统的控制和监控。主要包括如下服务:

Service(点击即可跳转功能简述
0x2F:通过ID控制输入输出客户端请求控制特定于目标ECU的输入/输出。

3.5 例程功能类 - 调用ECU内部预置函数

  例程功能类是一种特殊的UDS服务类别,它允许技术人员调用ECU内部预置的函数。这些函数可以执行特定的操作,如执行自检、执行校准或执行特殊功能。通过例程功能类,技术人员可以利用ECU内部的功能来进行诊断和维修。主要包括如下服务:

Service(点击即可跳转功能简述
0x31:例行程序控制客户端请求启动、停止目标ECU中的例程(简单理解就是个函数)或请求例程结果。

3.6 上传下载类

  上传下载类是用于在ECU和诊断工具之间进行数据上传和下载的UDS服务类别。它提供了将数据从ECU上传到诊断工具或将数据从诊断工具下载到ECU的功能。上传下载类可用于备份和恢复ECU配置、更新ECU软件或执行其他数据传输操作。主要包括如下服务:

Service(点击即可跳转功能简述
0x34:请求下载客户端请求协商从客户端到目标ECU的数据传输。
0x36:数据传输客户端向目标ECU发送数据(下载)或向目标ECU请求数据(上传)。
0x37:请求退出传输客户端请求终止数据传输。
0x35:请求上传客户端请求从目标ECU到客户端的数据传输。
0x38:请求文件传输客户端请求在目标ECU和客户端之间进行文件传输。

四、写在最后

  汽车软件开发、测试、维修等过程中,UDS协议的使用已经越来越广泛了,不管底层基于哪种物理总线实现ECU间或者诊断设备和ECU间的通信,应用层大多都会经过UDS协议封装数据包。但这个协议细节众多,直接看ISO 14229-1标准文件的话学习成本太高,对不常读英文手册的人来说看起来更是尤为烦躁,而网上很多文章通常直接截取标准文件中的图片加以简单说明,同样不够友好。因此开设该专栏,力争针对ISO14229-1标准做一份细致全面的中文手册,以便随手查阅。

  博主从事车载操作系统的开发工作,以ECU OTA升级为主要工作内容,对UDS、ECU软件刷写、安全启动功能以及部分BSW模块的开发有一定深度的认知,后续将陆续开设各类专栏一方面对工作涉及的内容做较为全面的总结,一方面与大家分享,希望帮助更多的朋友进军汽车软件开发行业,共同学习进步!

  专栏精心制作,历时半年,码字不易,期间收获众多网友的宝贵意见或好评,郑重感谢。本专栏将于2024年7月15日设置为付费专栏,此日期之前任何对于专栏内容曾做出提问、意见、评论的小伙伴,均可将截图记录私信给博主并附上你的邮箱,最迟两日内你的邮箱会收到该专栏的pdf版本。(Tip:pdf版本丧失跳转以及鼠标悬停时名词解释的功能)

>>>>>>>>> 返回专栏总目录 《UDS协议从入门到精通(UDS速查手册)》<<<<<<<<<


http://www.hkcw.cn/article/YDnHuArLmw.shtml

相关文章

静态路由配置

一.静态路由的了解 1.静态路由简介 静态路由&#xff08;Static Routing&#xff09;是一种手动配置的路由方式&#xff0c;管理员通过手动定义路由表中的条目来指定数据包的转发路径。与动态路由&#xff08;如 OSPF、BGP 等&#xff09;不同&#xff0c;静态路由不会自动…

php入门教程(超详细,一篇就够了!!!)

前言 本章节主要学习PHP概念、PHP环境搭建、基本语法、PHP函数、PHP文件管理、PHP操作MySQL数据库等知识点&#xff0c;收录于PHP基础系列。该系列主要讲解PHP相关知识点&#xff0c;欢迎童鞋们互相交流。觉得不错可以三连订阅喔。 目录 一 概述 二 环境搭建 1. 开发环境…

一文弄懂 YOLOv8网络结构解读 、yolov8.yaml配置文件详细解读与说明、模型训练参数详细解析 通俗易懂!入门必看系列!

看这一篇就够了。本文内含YOLOv8网络结构图 yaml配置文件详细解读与说明 训练教程 训练参数设置参数解析说明等一些有关YOLOv8的内容&#xff01; YOLOv8v10专栏订阅链接&#xff1a;YOLOv10 创新改进高效涨点持续改进300多篇永久免费答疑 &#xff08;订阅的小伙伴&#xf…

php+vue+Laravel+uniapp超市售货管理平台小程序-nodejs-计算机毕业设计

文章目录 具体实现截图本项目支持的技术路线源码获取详细视频演示&#xff1a;文章底部获取博主联系方式&#xff01;&#xff01;&#xff01;&#xff01;本系统开发思路进度安排及各阶段主要任务java类核心代码部分展示主要参考文献&#xff1a;源码获取/详细视频演示 ##项目…

【web渗透】SSRF漏洞超详细讲解

SSRF漏洞 一、原理简介二、漏洞形成的原因三、SSRF和CSRF的区别四、SSRF的攻击方式五、寻找漏洞的方法六、伪协议的介绍 * 1、ftp:// 协议2、Gopher://协议3、Dict:// 协议 七、绕过姿势八、漏洞修复 * 1、防护措施2、最佳防护 九、本章小结 一、原理简介 SSRF(Server-Side R…

【M365运维】Sharepoint文档库无法编辑页面

【问题】 Sharepoint文档库设计开发人员反馈说&#xff0c;文档库页面左上角的“编辑页面”变灰了&#xff0c;无法使用。 另外&#xff0c;如果使用Sharepoint Designer去打开文档库链接&#xff0c;登录时会出现下面的提示。 【解决】 1、启用 Custom Script, 步骤&#xff1…

Spring Boot 整合 RabbitMQ 实现延迟消息

关于 RabbitMQ 消息队列&#xff08;Message Queuing&#xff0c;简写为 MQ&#xff09;最初是为了解决金融行业的特定业务需求而产生的。慢慢的&#xff0c;MQ 被应用到了更多的领域&#xff0c;然而商业 MQ 高昂的价格让很多初创公司望而却步&#xff0c;于是 AMQP&#xff0…

RabbitMQ Java客户端安装与配置指南

RabbitMQ Java客户端安装与配置指南 rabbitmq-java-client RabbitMQ Java client 项目地址: https://gitcode.com/gh_mirrors/ra/rabbitmq-java-client 1. 项目基础介绍 RabbitMQ Java客户端是RabbitMQ消息队列系统的官方Java客户端库。它允许Java应用程序通过AMQP协议…

如何保证RabbitMQ消息的可靠传输?

在这个图中&#xff0c;消息可能丢失的场景是1&#xff0c;2&#xff0c;3 1.在生产者将消息发送给RabbitMQ的时候&#xff0c;消息到底有没有正确的到达服务器呢&#xff0c;RabbitMQ提供了两种解决方案&#xff1a; a. 通过事务机制实现&#xff08;比较消耗性能&#xff0…

RabbitMQ3.9.13与ErLang24.2版本下载资源:消息队列与编程语言的最佳搭档

RabbitMQ3.9.13与ErLang24.2版本下载资源&#xff1a;消息队列与编程语言的最佳搭档 【下载地址】RabbitMQ3.9.13与ErLang24.2版本下载资源 本项目为开发者提供了RabbitMQ 3.9.13和ErLang 24.2的便捷下载资源&#xff0c;旨在简化开发环境搭建流程。资源文件经过精心整理&#…

RabbitMQ 工作模式使用案例之(发布订阅模式、路由模式、通配符模式)

Hi~&#xff01;这里是奋斗的明志&#xff0c;很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~~ &#x1f331;&#x1f331;个人主页&#xff1a;奋斗的明志 &#x1f331;&#x1f331;所属专栏&#xff1a;RabbitMQ &#x1f4da;本系列文章为个人学…

【RabbitMQ】路由模式和通配符模式的具体实现

文章目录 路由模式创建队列和交换机生产者代码创建交换机声明队列绑定交换机和队列发送消息完整代码 消费者代码运行程序启动生产者启动消费者 通配符模式创建队列和交换机生产者代码创建交换机声明队列绑定交换机和队列发送消息完整代码 消费者代码运行程序启动生产者启动消费…

【RabbitMQ】RabbitMQ配置与交换机学习

文章目录 简介安装和部署1. 安装RabbitMQ2.创建virtual-host3. 添加依赖4.修改配置文件 WorkQueues模型1.编写消息发送测试类2.编写消息接收&#xff08;监听&#xff09;类3. 实现能者多劳 交换机Fanout交换机1.消息发送2.消息监听 Direct交换机1.消息发送2.消息接收 Topic交换…

详解RabbitMQ工作模式之发布订阅模式

目录 发布订阅模式 概念 概念介绍 特点和优势 应用场景 注意事项 代码案例 引入依赖 常量类 编写生产者代码 编写消费者1代码 运行代码 发布订阅模式 概念 RabbitMQ的发布订阅模式&#xff08;Publish/Subscribe&#xff09;是一种消息传递模式&#xff0c;它允许消…

Java操作RabbitMQ

文章目录 Spring集成RabbitMQ1. AMQP&SpringAMQP2. SpringBoot集成RabbitMQ3. 模型work模型 4.交换机Fanout交换机Direct交换机Topic交换机 5.声明式队列和交换机基于API声明基于注解声明 6.消息转换器 Spring集成RabbitMQ 1. AMQP&SpringAMQP AMQP&#xff08;高级消…

女龙队从佛山九江“扒”向世界 农村大妈划出国际范

临近端午,广东多地的河道里又开始热闹起来,特别是佛山地区的龙舟活动历史悠久。九江镇被誉为全国首个龙舟名镇,赛龙舟的传统已有300年历史。九江是典型的水乡,河网密布,几乎每个村子都有河流经过,划船出行是最便捷的交通方式。在村民眼中,龙舟不仅能聚人气,还能增强村里…

同济大学教授路秉杰逝世 建筑学界痛失“中国塔王”

著名建筑历史学家、建筑教育家路秉杰先生因病医治无效,于2025年5月29日在上海逝世,享年90岁。他生前是中国建筑学会史学分会原副理事长,同济大学建筑与城市规划学院教授及博士生导师。路秉杰出生于1935年,山东聊城人。他在中日两国建筑史、园林史以及中国伊斯兰教建筑等领域…

武汉警界科技精英万松因公牺牲 幕后英雄悄然离去

5月27日0时33分,湖北省武汉市公安局科技信息化支队警务技术四级主任万松因公牺牲,享年50岁。两天后的早晨,武昌殡仪馆告别大厅内庄严肃穆,花圈环绕,哀乐低回。他的遗属、生前亲友及同事百余人含泪忍悲,送别这位警界科技精英。5月26日早上7时30分,青年民警王国栋送完孩子…

UniGUI DBGrid 实现多选

设置unidbgrid属性添加多选框 Options —> dgRowSelect、dgCheckSelect、dgMultiSelect —> True 属性完成后&#xff0c;保存运行&#xff0c;unidbgrid前面就会出现多选框&#xff0c;多选时质检选中前面的多选框或者 shift鼠标左键 将两次点击范围内的数据全选 或是 c…

常见位运算总结

位运算 常见位运算总结位1的个数比特位计数汉明距离只出现一次的数字 常见位运算总结 位1的个数 191. 位1的个数 给定一个正整数 n&#xff0c;编写一个函数&#xff0c;获取一个正整数的二进制形式并返回其二进制表达式中 设置位 的个数&#xff08;也被称为汉明重量&#xf…