DICOM通讯(ACSE->DIMSE->Worklist)
DICOM 通讯协议中的 ACSE → DIMSE → Worklist 这条通讯链路。DICOM 通讯栈本身是一个多层的协议结构,就像 OSI 模型一样,逐层封装功能。
一、DICOM 通讯协议栈总体架构
DICOM 通讯使用 TCP/IP 建立连接,其上面封装了多个协议层次,如下所示:
物理层 (TCP/IP)
└── 应用服务元素层(ACSE)└── DICOM 消息服务元素层(DIMSE)└── DICOM 服务类(如 Worklist、C-FIND、C-STORE)
二、分层结构分析(ACSE → DIMSE → 服务类)
层级 | 全称 | 功能 | 示例 |
---|---|---|---|
ACSE | Association Control Service Element | 建立、维护、释放连接 | 握手、验证 AE Title、协商 SOP Class |
DIMSE | DICOM Message Service Element | 封装具体 DICOM 命令 | C-ECHO(测试联通)、C-FIND(查询)、C-STORE(存储) |
服务类(SCP/SCU) | 如 Worklist、Storage 等 | 提供特定服务操作的实现 | Modality Worklist、Image Store 等 |
三、各层通讯流程详解
1. ACSE – 建立连接和协商参数
- 目的: 类似“握手”,保证双方都支持相同的 SOP Class 和传输语法。
- 主要操作: A-ASSOCIATE 请求/响应。
- 双方角色:
- SCU(Service Class User)——客户端,一般是 Modalities(如 CT、MR);
- SCP(Service Class Provider)——服务端,一般是 RIS、PACS 系统。
🔁 示例流程:
Modality(SCU) ---- A-ASSOCIATE-REQUEST ----> RIS/PACS(SCP)<---- A-ASSOCIATE-ACCEPT ----
2. DIMSE – 封装命令与数据
- DIMSE-C(Command)服务:
C-ECHO
:测试网络连通性;C-FIND
:查找 Worklist;C-STORE
:存储影像;
- DIMSE-N(Normalized)服务:
- 如 N-CREATE, N-SET,多用于打印、影像挂接等场景。
📌 这些命令都是通过 P-DATA 传输的,一次 DICOM 命令可能包含多个数据块(PDUs)。
3. 服务类:Modality Worklist 实际通讯流程
Modality Worklist(MWL)服务帮助 Modalities 自动获取病人检查信息,避免人工输入。
🧭 实际通讯步骤如下:
步骤 | 通讯方向 | 操作 | 协议层 | 说明 |
---|---|---|---|---|
1 | Modality → RIS | A-ASSOCIATE | ACSE | 连接并协商 SOP Class 和传输语法 |
2 | Modality → RIS | C-FIND 请求 | DIMSE | 提交查询条件(如 Scheduled Station AE Title) |
3 | RIS → Modality | C-FIND 响应 | DIMSE | 返回匹配的 Worklist 项(可能多条) |
4 | Modality → RIS | A-RELEASE | ACSE | 释放连接 |
🌐 查询参数举例(Worklist C-FIND 请求 DataSet)
属性标签 | 属性名称 | 说明 | 示例 |
---|---|---|---|
(0008,0050) | Accession Number | 检查号 | 20240401-01 |
(0010,0020) | Patient ID | 病人ID | 123456 |
(0010,0010) | Patient Name | 病人姓名 | 张三 |
(0040,0100) | Scheduled Procedure Step Sequence | 计划检查步骤 | 包含影像类型、时间等信息 |
四、现实系统中的典型场景(示意图)
+-----------+ +-------------+
| Modalities| <--C-FIND--| Worklist SCP|
| (CT/MR) | --C-FIND--> | (如RIS) |
+-----------+ +-------------+\ ^\-C-STORE 影像--------/\--> PACS 存储服务器
🧠 总结知识点(结构化回顾)
层级 | 关键术语 | 说明 | 举例 |
---|---|---|---|
ACSE | A-ASSOCIATE, A-RELEASE, A-RJ | 建立/释放会话连接 | 连接 RIS/PACS |
DIMSE | C-FIND, C-STORE, C-ECHO | 封装 DICOM 操作指令 | 查询 Worklist、发送影像 |
服务类 | Worklist, Storage 等 | 提供具体 DICOM 服务 | 自动查询病人信息、影像归档 |
🌐模块一 DICOM 通讯分层机制简明解析
DICOM 通讯协议遵循类似于 TCP/IP 的分层架构,其核心通信流程由以下三层构成:
🔷 1. ACSE(Association Control Service Element)
负责 建立、确认、拒绝或释放会话连接
✅ 功能:
- 完成 SCU(客户端) 与 SCP(服务器)之间的会话建立和协商
- 协议协商内容:SOP Class、传输语法、AE Title 等
📦 ACSE 层常见 PDU(协议数据单元)类型:
PDU 类型 | 含义 | 功能说明 |
---|---|---|
A-ASSOCIATE-RQ | 请求建立连接 | SCU 发起连接请求 |
A-ASSOCIATE-AC | 接受连接 | SCP 接受并返回 |
A-ASSOCIATE-RJ | 拒绝连接 | SCP 拒绝连接请求 |
A-RELEASE-RQ / RP | 释放连接 | 通讯结束时使用 |
P-DATA-TF | 传输数据 | 封装 DICOM 命令与数据(传入 DIMSE 层) |
🔷 2. DIMSE(DICOM Message Service Element)
处理 DICOM 命令、响应和数据,如查询、存储、回声测试等
✅ 功能:
- 接收 ACSE 层传入的
P-DATA
PDU; - 解包获取 DIMSE 命令:如
C-ECHO
、C-FIND
、C-STORE
等; - 执行 DICOM 服务操作,封装响应回传。
📌 数据识别关键:
📍若接收到的第一个字节为
0x04
(十进制 4),则代表该 PDU 类型为P-DATA-TF
,表明数据需进入 DIMSE 层进一步处理。
🔷 3. DICOM 服务类(以 Worklist 为例)
通过 DIMSE 封装的服务,提供真实的医疗影像业务能力,例如病人信息查询、影像传输等。
✅ Worklist 示例(Modality Worklist):
- 基于 DIMSE 层的
C-FIND
命令; - 查询参数包括病人姓名、检查日期、检查类型等;
- 返回结果包含待检查病人的详细信息,供 Modalities 自动填充。
你的分析很精准,抓住了 DICOM 协议中从 ACSE 到 DIMSE 的过渡细节。下面我将对你这段内容进行条理清晰的结构化分析,并补充:
- PDU → PDV → DIMSE Command/DataSet 的转换流程图解
- DIMSE 服务组(11种服务)全部列出并说明作用
- PDV Flags 字节说明表格
🔄 模块二 DICOM 通讯处理流程:PDU → PDV → DIMSE
当 ACSE 层接收到 PDU 且其类型为 0x04(P-DATA-TF) 时,进入以下处理流程:
PDU(P-DATA-TF)↓
剥离 PDU Header↓
分解为一个或多个 PDV(Presentation Data Value)↓
每个 PDV 包含:- Presentation Context ID(表示关联 SOP Class)- PDV Header Flags(标识 Command/Data Set 及是否结束)- PDV 内容(真正的数据)↓
根据 Flags 判断:- 是 Command 还是 Data Set- 是否已完成该 PDV 单元↓
交由 DIMSE 层解析并执行服务操作(如 C-FIND、C-STORE)
🧱 DIMSE 层完整服务列表(11种)
DIMSE(DICOM Message Service Element)定义了 11种服务原语,包括命令和响应,分为两类:
1️⃣ DIMSE-C 服务(基于 Composite 信息对象,最常用)
服务名 | 操作代码 | 用途说明 |
---|---|---|
C-ECHO | 0x0030 | 测试 DICOM 通讯连通性 |
C-FIND | 0x0020 | 执行查询操作(如 Worklist 查询) |
C-GET | 0x0010 | 从 SCP 获取数据(图像等) |
C-MOVE | 0x0021 | 将数据从 SCP 推送到其他 AE |
C-STORE | 0x0001 | 向 PACS 服务器存储图像或其他实例 |
2️⃣ DIMSE-N 服务(基于 Normalized 信息对象,主要用于打印管理等)
服务名 | 操作代码 | 用途说明 |
---|---|---|
N-EVENT-REPORT | 0x0100 | 报告事件(如打印完成) |
N-GET | 0x0110 | 获取属性信息 |
N-SET | 0x0120 | 设置属性(如修改打印参数) |
N-ACTION | 0x0130 | 请求操作(如开始打印) |
N-CREATE | 0x0140 | 创建对象(如打印作业) |
N-DELETE | 0x0150 | 删除对象 |
🧾 PDV Header Flags 字节说明
每个 PDV(Presentation Data Value) 的头部包含一个 Flags 字节(1字节),用于指示数据性质:
位 | 含义 | 值为 1 时 | 备注 |
---|---|---|---|
bit 0 | 命令/数据集标识 | 表示这是一个命令(Command);为0则为数据集(Data Set) | |
bit 1 | 最后一个片段标识 | 表示这是该 PDV 的最后一个片段 | PDV 可能被分片 |
bit 2-7 | 保留 | 固定为0 | 未来扩展位 |
示例:
Flags 十六进制 | 说明 |
---|---|
0x01 | 命令,未结束(中间片段) |
0x03 | 命令,最后片段 |
0x00 | 数据集,未结束 |
0x02 | 数据集,最后片段 |
🎯 完整结构梳理
层级 | 数据类型 | 说明 |
---|---|---|
PDU 层(ACSE) | P-DATA-TF | 类型值为 0x04,承载 PDV |
表示层(PDV) | Flags + 数据 | 表示是否是命令、数据及是否最后片段 |
DIMSE 层 | 命令/数据集 | 解析 PDV 后进入执行(如 C-FIND 查询) |
每个 DIMSE 服务对应的典型 SOP Class UID(服务对象类唯一标识符) 和实际应用场景。我们将从 DIMSE-C 和 DIMSE-N 两大类出发,列成表格。
🧱 模块三 DIMSE-C 服务类:SOP Class UID & 典型场景
DIMSE 命令 | SOP Class 名称 | SOP Class UID | 应用场景 |
---|---|---|---|
C-ECHO | Verification SOP Class | 1.2.840.10008.1.1 | 检查 DICOM 节点联通性(Ping 测试) |
C-FIND | Modality Worklist Information Model – FIND | 1.2.840.10008.5.1.4.31 | Modalities 查询待检病人信息(从 RIS) |
C-FIND | Patient Root Query/Retrieve Information Model – FIND | 1.2.840.10008.5.1.4.1.2.1.1 | PACS 查询病人级别影像信息 |
C-FIND | Study Root Query/Retrieve Information Model – FIND | 1.2.840.10008.5.1.4.1.2.2.1 | PACS 查询检查级影像信息 |
C-MOVE | Study Root Query/Retrieve Information Model – MOVE | 1.2.840.10008.5.1.4.1.2.2.2 | 从 PACS 将图像“推送”到目标 AE |
C-GET | Study Root Query/Retrieve Information Model – GET | 1.2.840.10008.5.1.4.1.2.2.3 | 客户端主动“拉取”图像 |
C-STORE | CT Image Storage | 1.2.840.10008.5.1.4.1.1.2 | CT 图像发送至 PACS |
C-STORE | MR Image Storage | 1.2.840.10008.5.1.4.1.1.4 | MR 图像发送至 PACS |
C-STORE | Secondary Capture Image Storage | 1.2.840.10008.5.1.4.1.1.7 | 屏幕截图或再处理图像存储 |
📝 说明:
C-FIND
与C-MOVE
、C-GET
对应的 SOP Class UID 会根据查询层级(Patient/Study/Image)变化;C-STORE
的 SOP Class UID 会根据图像类型变化(CT、MR、US、CR 等);- 有超过百种 SOP Class UID,但常用如上所列。
🧱 DIMSE-N 服务类:SOP Class UID & 典型场景
DIMSE 命令 | SOP Class 名称 | SOP Class UID | 应用场景 |
---|---|---|---|
N-CREATE / N-SET / N-ACTION | Basic Film Session | 1.2.840.10008.5.1.1.1 | 打印系统:创建打印会话 |
N-CREATE / N-SET | Basic Film Box | 1.2.840.10008.5.1.1.2 | 打印系统:设置打印页布局 |
N-CREATE / N-SET | Basic Grayscale Image Box | 1.2.840.10008.5.1.1.4 | 打印图像 |
N-GET / N-DELETE | Print Job SOP Class | 1.2.840.10008.5.1.1.14 | 查询或取消打印作业 |
N-EVENT-REPORT | Basic Film Session Event Reporting | 1.2.840.10008.5.1.1.40 | 打印完成等事件通知 |
📝 DIMSE-N 服务多用于 DICOM 打印系统(DICOM Print Management),在临床中已有 PACS 较少使用,但仍用于一些医疗影像打印服务器对接中。
🧩 补充说明:SOP Class UID 的作用
- 每个 SOP Class UID 唯一标识一种 DICOM 服务或数据模型;
- 在 ACSE 建立连接时,双方通过 A-ASSOCIATE-RQ 中的 Presentation Context 协商 SOP Class(即功能);
- 若某一端不支持该 UID,则连接请求会被拒绝或功能无法执行。
📌模块四 总结 Modality Worklist 通讯涉及的完整流程
阶段 | 协议元素 | 操作描述 |
---|---|---|
1️⃣ 连接建立 | A-ASSOCIATE-RQ | SCU(模态设备)发起连接请求,协商服务(如 Worklist SOP Class)和传输语法 |
A-ASSOCIATE-AC | SCP(Worklist Server)返回确认接受连接 | |
2️⃣ 查询发起 | P-DATA-TF (封装 C-FIND-RQ ) | SCU 发送 Worklist 查询请求,封装在 P-DATA-TF 中 |
3️⃣ 查询响应 | P-DATA-TF (封装 C-FIND-RSP ) | SCP 多次返回查询结果(逐条或批量),每次包含状态字段 |
4️⃣ 查询结束 | C-FIND-RSP (Status=0x0000) | 表示查询结果已全部返回,结束 |
5️⃣ 会话释放 | A-RELEASE-RQ / A-RELEASE-RP | 通讯完成后主动释放连接 |
🔁 流程图概览(通讯交互顺序)
[SCU] [SCP]| ||-- A-ASSOCIATE-RQ (请求连接) -------->||<-- A-ASSOCIATE-AC (接受连接) --------|| ||-- P-DATA-TF (封装 C-FIND-RQ) ------->||<-- P-DATA-TF (封装 C-FIND-RSP) -----||<-- P-DATA-TF (封装 C-FIND-RSP) -----| 多次,返回一个或多个结果|<-- P-DATA-TF (Status=0x0000) -------| 表示返回完毕| ||-- A-RELEASE-RQ --------------------->||<-- A-RELEASE-RP ---------------------|
🧾 关键服务元素详解
1️⃣ A-ASSOCIATE-RQ 包含协商内容:
字段 | 含义 |
---|---|
Called AE Title | 接收方 AE 标识(服务器) |
Calling AE Title | 发送方 AE 标识(客户端) |
SOP Class UID | 通讯中使用的服务类(如:1.2.840.10008.5.1.4.31 ) |
Transfer Syntax | 如:Implicit VR Little Endian、Explicit VR 等 |
Presentation Context ID | 绑定 SOP Class + Transfer Syntax |
2️⃣ C-FIND-RQ 包含查询数据集(DataSet)
一个标准的 Worklist 查询参数示例:
(PatientName, PN, “DOE^JOHN”)
(ScheduledProcedureStepStartDate, DA, “20250414”)
(Modality, CS, “CT”)
3️⃣ C-FIND-RSP 包含:
字段 | 含义 |
---|---|
Command Field | C-FIND-RSP |
Status | 0xFF00(匹配项)、0x0000(完成)、其他值(错误) |
DataSet | 一项或多项匹配结果(病人、预约信息) |
🎯 四、Status 字段值说明(C-FIND-RSP)
Status 值 | 含义 | 说明 |
---|---|---|
0xFF00 | Pending | 匹配项返回中,后续还有结果 |
0xFF01 | Pending | 同上(备用代码) |
0x0000 | Success | 所有结果已返回,正常结束 |
0xA700 | Refused | SCP 拒绝处理请求 |
0xA900 | Error | 请求参数错误或内部失败 |
0xCxxx | Failed | 查询失败,具体错误由 x 标识 |
✅典型场景回顾(应用于 Modalities 自动填充)
- CT 设备启动时主动发起 Worklist 查询;
- 查询参数通常为当天日期;
- PACS 或 RIS 返回病人待检查列表;
- 技术员选择一条记录,设备自动填充病人信息;
- 完善检查项后进行采集、图像发送等操作。
📘 模块五 连接释放的作用
在 DICOM 网络通讯中,一个完整的会话由“建立 → 通讯 → 释放”三阶段构成:
阶段 | 操作 | 功能 |
---|---|---|
建立连接 | A-ASSOCIATE-RQ / AC | 建立 DICOM 连接 |
数据交换 | P-DATA-TF 封装 DIMSE 命令 | 进行 C-FIND、C-STORE 等业务操作 |
释放连接 | A-RELEASE-RQ / RP | 优雅关闭连接,释放网络和会话资源 |
📌 释放连接并不是“强制断开”,而是一种双向确认的正常断开过程。
🧱 A-RELEASE-RQ / RP 数据结构说明(简化)
A-RELEASE-RQ
(SCU 发起)
字段 | 值 |
---|---|
PDU Type | 0x05 |
Reserved | 00 |
Length | 固定值 4(或0) |
Data | 空(无实际数据) |
A-RELEASE-RP
(SCP 响应)
字段 | 值 |
---|---|
PDU Type | 0x06 |
Reserved | 00 |
Length | 固定值 4(或0) |
Data | 空(无实际数据) |
🔁 释放流程图(时序)
[SCU] [SCP]| ||-- A-RELEASE-RQ --------------------->| ← 客户端请求释放连接|<-- A-RELEASE-RP ---------------------| ← 服务端确认释放| ||----> 关闭 Socket ------------------->| ← 通讯资源释放完成
🔍 为什么“释放连接”是必须的?
原因 | 描述 |
---|---|
✅ 协议规范要求 | 不释放会话会被视为异常断开,影响后续通讯 |
✅ 系统资源回收 | 每个连接都占用线程、缓冲区、Socket 等资源 |
✅ 日志清晰 | 正常释放连接便于审计和问题追踪 |
❌ 反面案例 | 强制断开(如关闭Socket)可能导致远端状态不一致或挂起 |
🎯 释放连接失败的处理(异常处理建议)
场景 | 建议 |
---|---|
网络中断时强制断开 | 日志记录 + 自动重连机制 |
SCP 未响应 A-RELEASE-RP | 设置超时后断开连接并释放资源 |
出现异常前未释放连接 | 加入 finally 或连接池释放机制 |
✅ 总结:释放连接在 DICOM 中的地位
- 是整个 ACSE 协议的重要组成;
- 是符合 DICOM 协议的“优雅断开”;
- 必须在 SCU 或 SCP 完成所有 DIMSE 命令操作后再发起;
- 在调试网络通讯时,如果发现连接悬挂不释放,极可能是
A-RELEASE
环节未正确处理。
相关文章:
DICOM通讯(ACSE->DIMSE->Worklist)
DICOM 通讯协议中的 ACSE → DIMSE → Worklist 这条通讯链路。DICOM 通讯栈本身是一个多层的协议结构,就像 OSI 模型一样,逐层封装功能。 一、DICOM 通讯协议栈总体架构 DICOM 通讯使用 TCP/IP 建立连接,其上面封装了多个协议层次…...
QML与C++:基于ListView调用外部模型进行增删改查(附自定义组件)
目录 引言相关阅读项目结构文件组织 核心技术实现1. 数据模型设计联系人项目类 (datamodel.h)数据模型类 (datamodel.h)数据模型实现 (datamodel.cpp) 2. 主程序入口点 (main.cpp)3. 主界面设计 (Main.qml)4. 联系人对话框 (ContactDialog.qml)5. 自定义组件CustomTextField.qm…...
# linux 设置宽容模式
linux 设置宽容模式 在Linux系统中,通常没有直接称为“宽容模式”的设置选项,但你可以通过几种方式来模拟或调整系统行为,使其表现得更加“宽容”,特别是在处理错误、权限问题或其他潜在问题时。以下是一些常见的方法:…...
#1 理解物联网
物联不是一个新概念,物联网如其中文译名, 虚拟和物的对应和联接。 对于人类的梦想而言,总是希望自己无比强大,但受限于外部条件而只能为此悻悻念念。 所以人们的目光聚焦在,上世纪70年代发展的传感器、大规模电路、通…...
物联网场景实战:智能电表数据管理与分析(二)
数据管理 数据清洗与预处理 智能电表在数据采集、传输和存储过程中,不可避免地会引入噪声、出现缺失值和异常值等问题,这些问题会严重影响数据的质量和后续分析的准确性,因此数据清洗至关重要。 噪声数据通常是由于测量误差、通信干扰等原…...
linux一次启动多个jar包
linux一次启动多个jar包并且可以自定义路径和端口号 代码使用 分享公司大神使用的一个脚步,可以一次启动多个jar包,也可以指定启动jar包 代码 #! /bin/sh # 端口号 PORTS(8080 8081 8082 8083) # 模块 MODULES(gateway auth system file) # 模块名称 MODULE_NAMES(网关服务 认…...
自然语言交互:NAS进化的下一站革命
自然语言交互:NAS进化的下一站革命 在数据爆炸式增长的数字时代,网络附加存储设备(NAS)早已突破企业级应用的边界,成为个人数字资产管理的核心枢纽。当全球NAS市场年复合增长率稳定在15%之际,耘想科技推出…...
go中我遇到的问题总结
go问题总结 1 - go中的nil等于java中的null吗 在 Go 和 Java 中,nil 和 null 都用于表示“空值”,但它们的实现和使用方式有所不同。 以下是 Go 中的 nil 和 Java 中的 null 之间的对比: 1. Go 中的 nil 在 Go 中,nil 是一个预定义的常量,表示零值。它的行为根据数据类…...
java面试题带答案2025最新整理
文章目录 一、java面试题集合框架1. 请简要介绍 Java 集合框架的体系结构2. ArrayList 和 LinkedList 的区别是什么3. HashMap 的工作原理是什么,它在 JDK 7 和 JDK 8 中有哪些不同4. 如何解决 HashMap 的线程安全问题5. TreeSet 是如何保证元素有序的 二、java面试…...
第七届浙江省大学生网络与信息安全竞赛决赛Unserialize深度解析 1.0
花还会重新开,不同的春来了又来。 - 2025.4.11 0x01 声明 仅作为个人学习使用,仅供参考,欢迎交流 可能是新生赛缘故,突发奇想,想好好梳理此题,顺便写成参考,于是有了这篇文章 当然很多理解可…...
onlyoffice 在线编辑集成
onlyoffice 在线编辑集成 项目中要使用word在线编辑功能,记录一下过程 安装使用docker版本 docker run -itd -p 8001:80 --name kodoffice --restart always registry.cn-hangzhou.aliyuncs.com/kodcloud/kodoffice:7.4.1.1 启动后http://192.168.x.x:8001/web/…...
2.4goweb 项目1
mysql库和表 CREATE DATABASE IF NOT EXISTS book_manager CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;USE book_manager;-- 用户表(用于登录) CREATE TABLE IF NOT EXISTS users (user_id INT AUTO_INCREMENT PRIMARY KEY,username VARCHAR(…...
ESP-ADF外设子系统深度解析:esp_peripherals组件架构与核心设计(系列开篇)
目录 ESP-ADF外设子系统深度解析:esp_peripherals组件架构与核心设计(系列开篇)简介模块概述功能定义架构位置核心特性 接口分析公共API概述1. 外设集合管理API2. 单个外设管理API3. 事件通信API4. 定时器管理API 数据结构关键数据结构分析枚…...
供应链管理:供应链管理的边界
一、追根溯源,什么是真正的财富 序号财富解释1土地作为生产资料,土地是农业、工业、商业的基础 城市中心的土地因稀缺性而价值连城,农业土地的肥沃程度直接影响粮食产量。2资源、矿产提供能源和原材料,支撑工业生产和经济发展。 …...
【Linux网络编程】TCP Echo Server的实现
本文专栏:linux网络编程 本文的基础知识是基于上篇文章:UDP Echo Server的实现 传送门: 【Linux网络编程】UDP Echo Server的实现 -CSDN博客 目录 一,InetAddr类的编写 二,客户端代码编写 创建套接字(s…...
信奥赛CSP-J复赛集训(数学思维专题)(11):P9585 「MXOI Round 2」酒店
信奥赛CSP-J复赛集训(数学思维专题)(11):P9585 「MXOI Round 2」酒店 题目描述 小 C 开了一家酒店,叫做 CC Hotel。 一天,CC Hotel 来了 n n n 位客人。小 C 需要把他们都安排在酒店的某一层…...
python: audioFlux XXCC 提取梅尔频率倒谱系数 MFCC
承上一篇:python:audioFlux 使用教程 XXCC: 倒谱系数,支持所有频谱类型. 可以提取梅尔频率倒谱系数(MFCC) Cepstrum coefficients, supports all spectrum types. 以下是使用 audioflux 库中 XXCC 类计算倒谱系数…...
PHP + Go 如何协同打造高并发微服务?
为什么需要 PHP Go 协同? 在微服务架构中,PHP 和 Go 看似是“两个世界”的语言,但它们的互补性极强: PHP:开发效率高、生态成熟,适合快速实现复杂业务逻辑(如电商订单、用户系统)…...
k8s工具使用
Kubectl Cheat Sheet k8s的命令级别 1.基础命令(初级) 2.基础命令(中级) 3.部署命令 4.集群管理命令 5.故障排查和调试命令 6.高级命令 7.设置命令 8.其它命令 命令行提示 为了使用kubectl命令更加高效,我们可以选择安装一下开源软件来增加操作kubectl命令的快捷方式,同…...
uml制做参考-以代码画UML图
【PlantUML系列】类图(一)_plantuml skin-CSDN博客 UML入门以及Plant UML工具介绍_plantuml-CSDN博客 UML类图详解-CSDN博客 【PlantUML】-类图-CSDN博客 【掌握绘图艺术】用PlantUML绘制完美UML图表,编程开发者的福音 - 知乎 如何优化P…...
深入解析B站androidApp接口:从bilibili.api.ticket.v1.Ticket/GetTicket到SendMsg的技术分析
前言 最近一段时间,我对B站的App接口进行了深入分析,特别是关注了认证机制和私信功能的实现。通过逆向工程和网络抓包,发现了B站移动端API的底层工作原理,包括设备标识生成机制、认证流程和消息传输协议。本文将分享这些研究成果…...
[AI ][Dify] 构建一个自动化新闻编辑助手:Dify 工作流实战指南
在内容创作行业中,自动化辅助工具已成为提升编辑效率的重要利器。本文将通过 Dify 平台,演示如何构建一个**“新闻编辑助手”**,实现从网页抓取、文本翻译、标题生成,到新闻配图的全流程自动化。 🎯 目标概览 这个工作流旨在实现如下功能: 从指定网页抓取新闻内容; 使…...
Unity中国战略调整简讯:Unity6下架 团结引擎接棒
Unity中国战略调整简讯:Unity6下架 团结引擎接棒 免费版 2025年4月9日 —— Unity中国宣布自即日起,中国大陆及港澳地区停止提供Unity 6及后续版本下载与服务,相关功能由国产引擎“团结引擎”承接。国际版2022 LTS及更早版本仍由Unity中国维护…...
司美格鲁肽用SNAC市场报告:2024年全球市场销售额达到了0.14亿美元
引言:了解司美格鲁肽与SNAC的重要性 在当前的医药领域,司美格鲁肽(Semaglutide)作为一种创新性的治疗2型糖尿病和肥胖症的药物,受到了广泛关注。而SNAC(N-(8-(2-羟苯基)…...
自动驾驶第一性原理
所谓的第一性原理: 就是指从最基本的物理规律,数据逻辑及工程约束条件出发,剥离所有的非本质的假设,直接推导出自动驾驶最核心的要素。 自动驾驶核心框架分解: 1、根本目标: 安全高效的将人/物从A地运送…...
《UE5_C++多人TPS完整教程》学习笔记36 ——《P37 拾取组件(Pickup Widget)》
本文为B站系列教学视频 《UE5_C多人TPS完整教程》 —— 《P37 拾取组件(Pickup Widget)》 的学习笔记,该系列教学视频为计算机工程师、程序员、游戏开发者、作家(Engineer, Programmer, Game Developer, Author) Steph…...
Uniswap V2/V3/V4 流动性与价格计算详解
Uniswap V2/V3/V4 流动性与价格计算详解 一、核心概念对比 Uniswap V2 流动性模型: 恒定乘积公式 (x * y = k)价格决定: 完全由池子中的代币数量决定 (price = y/x)流动性衡量: 总储备量代表流动性,直接通过 getReserves() 获取流动性分布: 均匀分布在所有价格点交易费用: 固…...
yum安装MySQL数据库
yum安装方式 优点:操作简单易用。不用单独下载,服务器可以联网且yum源没有问题即可(可以选择国内的163/阿里源) 安装步骤: 1.关闭防火墙和selinux: systemctl stop firewalld ##关闭防火墙 systemctl disable firewalld …...
大联盟(特别版)双端互动平台完整套件分享:含多模块源码+本地部署环境
这是一套结构清晰、功能完整的互动平台组件,适合有开发经验的技术人员进行模块参考、结构研究或本地部署实验使用。 该平台覆盖前端展示、后端服务、移动端资源以及完整数据库,采用模块化架构,整体部署流程简单清晰,适合自研团队参…...
【Code】《代码整洁之道》笔记-Chapter15-JUnit内幕
第15章 JUnit内幕 JUnit是最有名的Java框架之一。就像别的框架一样,它概念简单,定义精确,实现优雅。但它的代码是怎样的呢?本章将研判来自JUnit框架的一个代码例子。 15.1 JUnit框架 JUnit有很多位作者,但它始于K…...
【Java八股】
JVM JVM中有哪些引用 在Java中,引用(Reference)是指向对象的一个变量。Java中的引用不仅仅有常规的直接引用,还有不同类型的引用,用于控制垃圾回收(GC)的行为和优化性能。JVM中有四种引用类型…...
深入探究AI编程能力:ChatGPT及其大规模模型的实现原理
📢 友情提示: 本文由银河易创AI(https://ai.eaigx.com)平台gpt-4-turbo模型辅助创作完成,旨在提供灵感参考与技术分享,文中关键数据、代码与结论建议通过官方渠道验证。 随着人工智能的快速发展,…...
高德地图 JS-SDK 实现教程
高德地图 JS-SDK 实现教程:定位、地图选点、地址解析等 适用地点选择、地址显示、表单填写等场景,全面支持移动端、手机浏览器和 PC端环境 一、创建应用&Key 前端(JS-SDK、地图组件) 登陆 高德开放平台创建应用,…...
【信息系统项目管理师】高分论文:论信息系统项目的整合管理(银行数据仓库项目)
更多内容请见: 备考信息系统项目管理师-专栏介绍和目录 文章目录 正文一、制定项目章程二、制定项目管理计划三、指导和管理项目的实施四、管理项目知识五、监控项目工作六、实施整体变更控制七、结束项目或阶段正文 2023年6月,我以项目经理的身份,参加了 xx银行xx省分行数…...
dev中使用auto的方法
在dev-c中使用新特性是一样的道理,在他启动编译器来编译代码的时候我们让他加上这个参数就行了,设置方法是:在Tools里面找到Compiler Options打开它,然后把那个Add the following commands when calling compiler:选上勾,在里面加…...
C 语言中经典的数据结构
在 C 语言中,经典的数据结构通常包括以下几种,每种都有其特定的应用场景和实现方式: 1. 数组(Array) 定义:连续内存空间存储相同类型的数据。 特点:随机访问快(O(1))&am…...
小白学习java第12天(下):网络编程
上面我们了解TCP就是三次握手!!! 下面我们就详细介绍一下UDP,就是进行发包(TCP协议类似于就是打电话,你必须进行连接才能进行传输,但是UDP类似于发消息,连不连接我都是可以的&#…...
论文精度:双分支图Transformer网络:视频驱动的3D人体网格重建新突破
论文地址:https://arxiv.org/pdf/2412.01179 目录 一、背景与问题定义 1.1 3D人体网格重建的意义 1.2 现有方法的困境 二、核心创新:DGTR网络架构 2.1 整体框架设计 2.2 全局运动感知分支(GMA) 2.3 局部细节优化分支(LDR) 2.3.1 局部信息聚合 2.3.2 调制图卷积…...
华三IRF堆叠技术
IRF(Intelligent Resilient Framework,智能弹性架构)是华三通信(H3C)自主研发的网络设备虚拟化技术,通过将多台物理设备整合为单一逻辑设备,实现统一管理、高可靠性和灵活扩展。以下是其核心要点…...
第一阶段补充知识
目录 书写脚本使用的相关知识? 备份和冗灾的区别?什么叫DD备份,什么叫DD冗灾? 关于Linux系统优化以及Linux的安全加固? 系统优化 硬件系统优化: 内核参数优化: 网络性能优化: 进程管…...
STM32 HAL库 L298N电机驱动模块实现
一、引言 在机器人、自动化设备等众多应用场景中,电机驱动是一个关键的部分。L298N 是一款常用的电机驱动模块,它可以驱动两个直流电机或一个步进电机。STM32F407 是一款高性能的 ARM Cortex-M4 内核微控制器,结合 HAL 库可以方便地实现对 L…...
Redis的Key的过期策略
我们都知道Redis的键值对是可以设置过期时间的,那么就会涉及到一个问题,Redis到底是如何做到响应快的同时有能快速地释放掉过期的键值对的呢?不卖关子了,直接说答案,那就是Redis两个策略:定期删除和惰性删除…...
ubuntu桌面版使用root账号进行登录
这里写自定义目录标题 第一步:给root账户设置密码,并切换至root账户第二步:注释gdm-autologin文件内的相关内容第三步:注释gdm-password文件内的相关内容第四步:重启系统即可使用root账户登录 第一步:给roo…...
贪心算法(18)(java)距离相等的条形码
在一个仓库里,有一排条形码,其中第 i 个条形码为 barcodes[i]。 请你重新排列这些条形码,使其中任意两个相邻的条形码不能相等。 你可以返回任何满足该要求的答案,此题保证存在答案。 示例 1: 输入:barco…...
CentOS服务器能ping通却无法yum install:指定镜像源解决
文章目录 前言一、问题记录二、解决过程1.修改DNS无效2.指定镜像源 总结 前言 今天有一个项目现场要在一个远程centos服务器上部署产品服务,发现能ping通百度,但是无法yum install 安装基础软件包,开始以为DNS服务器的问题,结果配…...
WebSocket与MQTT
在物联网(IoT)领域,WebSocket和MQTT确实都可以实现实时通信,但它们的核心设计目标、适用场景和角色存在显著差异。以下是两者的对比分析: 1. 协议设计初衷 WebSocket 目标:提供浏览器与服务器…...
【论文解读】MSVM-UNet: Multi-Scale Vision Mamba UNet for Medical Image Segmentation
MSVM-UNet: Multi-Scale Vision Mamba UNet for Medical Image Segmentation 论文链接: https://arxiv.org/abs/2408.13735 Code: https://github.com/gndlwch2w/msvm-unet 来源: 2024 IEEE International Conference on Bioinformatics an…...
Vue表单组件el-form校验规则rules,条件判断rules表单验证显示必填或非必填
在使用 Element UI(一个基于 Vue 的前端框架)的表单验证功能时,你可能想要实现一个规则,使得某些字段在特定条件下成为必填项,或者在满足某些条件时不允许为空。这通常通过自定义校验规则来实现。 <template>&l…...
手动关闭ArcGIS与ArcGIS Online连接的方法
【关闭软件启动时ArcGIS与ArcGIS Online连接方法】 打开C盘找到文件夹“C:\Program Files (x86)\Common Files\ArcGIS\bin”,如下图,删除“ArcGISConnection.exe”与“ArcGISConnectionTest.exe”文件,软件下次启动的时候就不会建立与ArcGIS …...
(二十五)安卓开发一个完整的登录页面-支持密码登录和手机验证码登录
下面将详细讲解如何在 Android 中开发一个完整的登录页面,支持密码登录和手机验证码登录。以下是实现过程的详细步骤,从布局设计到逻辑实现,再到用户体验优化,逐步展开。 1. 设计登录页面布局 首先,我们需要设计一个用…...