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

深入探讨DICOM医学影像中的MPPS服务及其具体实现

深入探讨DICOM医学影像中的MPPS服务及其具体实现

1. 引言

在医疗影像的管理和传输过程中,DICOM(数字影像和通信医学)标准发挥着至关重要的作用。除了DICOM影像的存储和传输(如影像存储SCP和影像传输SCP),DICOM还定义了其他一系列服务以支持医疗影像的完整管理。其中,**MPPS(Modality Performed Procedure Step)**服务是医疗影像工作流中的一个重要环节,它允许影像设备(如CT、MRI等)向PACS(Picture Archiving and Communication System)或者其他管理系统报告影像操作的执行状态。

MPPS主要用于向影像存储系统报告影像采集或程序执行的状态,确保医疗流程的协同和及时反馈。本文将深入探讨DICOM MPPS服务的概念、功能、工作流程及其在C#中的具体实现。

在这里插入图片描述

2. MPPS服务概述

2.1 MPPS服务功能

MPPS服务通过向影像存储系统(如PACS)报告影像采集或相关程序执行的状态,从而提供实时反馈。它主要有以下功能:

  1. 报告影像程序的执行状态

    • 影像采集设备(例如CT扫描仪)执行影像采集后,可以通过MPPS报告程序的执行状态。例如,报告扫描是否完成,是否成功,是否存在错误等。
  2. 更新影像程序的进度

    • 在影像采集过程中,MPPS可以定期向PACS报告当前的执行进度(如扫描完成的百分比)。
  3. 同步影像采集与影像存储

    • 当影像采集完成后,MPPS报告会触发后续的存储过程(例如影像数据的存储)。

2.2 MPPS的工作原理

MPPS服务基于DICOM协议,通过以下几个步骤与影像系统进行交互:

  1. 设备发送MPPS消息

    • 影像采集设备在进行影像操作时,生成一个MPPS消息,其中包括影像程序的执行状态和相关信息。
  2. 系统接收MPPS消息

    • PACS或影像管理系统作为MPPS的接收者,通过DICOM协议接收这些消息,并根据其中的状态信息更新系统中的数据。
  3. 影像存储触发

    • MPPS消息的发送通常与影像数据存储过程紧密结合,当扫描操作完成时,设备会发送MPPS消息,通知影像数据已经准备好存储。

2.3 MPPS消息的结构

MPPS服务使用DICOM对象来表示影像操作的状态,通常包括以下几个重要字段:

  • SOP Class UID:标识MPPS的服务类别。
  • SOP Instance UID:标识具体的MPPS实例。
  • Study Instance UID:与影像操作相关的Study实例UID。
  • Procedure Step Status:影像操作的状态,如“完成(COMPLETED)”、“处理中(IN PROGRESS)”、“失败(FAILED)”等。
  • Scheduled Procedure Step ID:与影像操作对应的预定步骤ID。

2.4 MPPS的应用场景

  • 影像设备(Modality)报告程序状态:如在扫描过程中,CT设备会通过MPPS告知PACS扫描的进度和状态。
  • 进度更新与反馈:影像设备在采集过程中逐步报告进度,实时更新工作状态。
  • 工作流协调:MPPS消息可以与其他DICOM服务(如存储SCP、影像打印SCP等)配合使用,协同完成影像采集、存储、传输等工作。

3. MPPS服务的实现:基于C#的示例

接下来,我们将介绍如何在C#中实现一个简单的MPPS服务。我们使用fo-dicom库,它是一个开源的C# DICOM库,支持DICOM协议的各种操作,包括MPPS消息的发送和接收。

3.1 环境准备

  1. 安装.NET SDK:确保安装了最新版本的.NET SDK。

  2. 安装fo-dicom:fo-dicom库是一个常用的DICOM处理库,我们将在项目中使用它来实现MPPS服务。

    在命令行中执行以下命令来安装fo-dicom:

    dotnet add package fo-dicom
    

3.2 创建MPPS服务

在本示例中,我们将实现一个MPPS服务,它能够接收影像设备发来的MPPS消息并处理。我们将使用ASP.NET Core创建一个简单的Web API服务,模拟接收MPPS消息并返回处理结果。

1. 创建ASP.NET Core Web API项目

在Visual Studio中创建一个新的ASP.NET Core Web API项目,选择**.NET 6.0**或更高版本。

2. 安装fo-dicom库

打开NuGet包管理器并安装fo-dicom库:

dotnet add package fo-dicom
3. 编写MPPS服务的Controller

在项目的Controllers文件夹中,创建一个名为MppsController.cs的控制器,用于接收和处理MPPS消息。

using Microsoft.AspNetCore.Mvc;
using Dicom;
using Dicom.Network;
using System;
using System.Threading.Tasks;namespace DICOMMPPSService.Controllers
{[Route("api/[controller]")][ApiController]public class MppsController : ControllerBase{// 处理MPPS请求[HttpPost("mpps")]public async Task<IActionResult> ReceiveMppsMessage([FromBody] DicomMessage mppsMessage){try{// 解析MPPS消息var status = mppsMessage.Dataset.GetString(DicomTag.ProcedureStepStatus);var studyUid = mppsMessage.Dataset.GetString(DicomTag.StudyInstanceUID);var seriesUid = mppsMessage.Dataset.GetString(DicomTag.SeriesInstanceUID);// 在这里可以进一步处理MPPS消息,更新影像状态,记录日志等Console.WriteLine($"Received MPPS message: Status={status}, StudyUID={studyUid}, SeriesUID={seriesUid}");// 返回成功的响应return Ok(new { Message = "MPPS message received successfully" });}catch (Exception ex){// 处理错误并返回失败的响应Console.WriteLine($"Error processing MPPS message: {ex.Message}");return BadRequest(new { Message = "Error processing MPPS message" });}}}
}
4. 配置启动类(Startup.cs)

Startup.cs文件中,配置服务和请求管道,确保API能够正确运行。

public void ConfigureServices(IServiceCollection services)
{services.AddControllers();
}public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{app.UseRouting();app.UseEndpoints(endpoints =>{endpoints.MapControllers();});
}
5. 模拟发送MPPS消息

在实际应用中,MPPS消息通常由影像设备(如CT扫描仪)发送到PACS或其他影像管理系统。我们可以模拟发送MPPS消息,通过fo-dicom库向MPPS服务发送一条简单的消息。

using Dicom;
using Dicom.Network;
using System;
using System.Threading.Tasks;namespace DICOMMPPSClient
{class Program{static async Task Main(string[] args){// 创建一个DICOM MPPS请求消息var mppsMessage = new DicomMessage();mppsMessage.Dataset.Add(DicomTag.StudyInstanceUID, "1.2.3.4.5.6");mppsMessage.Dataset.Add(DicomTag.SeriesInstanceUID, "1.2.3.4.5.6.7");mppsMessage.Dataset.Add(DicomTag.ProcedureStepStatus, "COMPLETED");// 连接到MPPS服务并发送消息var client = new DicomClient();client.NegotiateAsyncOps();await client.AddRequestAsync(new DicomCStoreRequest(mppsMessage));// 连接到本地API服务并模拟发送POST请求using (var httpClient = new System.Net.Http.HttpClient()){var json = new StringContent(mppsMessage.ToString(), System.Text.Encoding.UTF8, "application/json");var response = await httpClient.PostAsync("http://localhost:5000/api/mpps", json);var responseContent = await response.Content.ReadAsStringAsync();Console.WriteLine($"Response from MPPS API: {responseContent}");}}}
}

3.3 测试与验证

接下来,我们将继续测试和验证我们实现的MPPS服务。

1. 启动MPPS服务

首先,启动ASP.NET Core Web API服务(可以使用Visual Studio的调试功能或命令行运行),并确保服务正常运行。如果你使用的是命令行,可以在项目目录下运行以下命令来启动应用:

dotnet run

这样,我们的MPPS服务将在 http://localhost:5000 上监听请求。

2. 模拟发送MPPS消息

使用前面提到的模拟客户端代码(DICOMMPPSClient),运行该客户端程序以模拟影像设备发送MPPS消息。运行以下命令来启动该客户端:

dotnet run

模拟客户端会连接到MPPS服务,并通过POST请求将MPPS消息发送给服务端。MPPS消息的内容包括:

  • Study Instance UID:唯一标识一项医学影像检查的ID。
  • Series Instance UID:唯一标识影像序列的ID。
  • Procedure Step Status:表示该程序步骤的当前状态(如“已完成(COMPLETED)”)。

3. 验证处理结果

在客户端成功发送MPPS消息后,API应该会接收到这个消息,并打印出以下日志:

Received MPPS message: Status=COMPLETED, StudyUID=1.2.3.4.5.6, SeriesUID=1.2.3.4.5.6.7

如果MPPS消息处理成功,API会返回如下的成功响应:

{"Message": "MPPS message received successfully"
}

在模拟客户端中,你应该能够看到:

Response from MPPS API: {"Message":"MPPS message received successfully"}

4. 查看MPPS消息的日志

此外,可以通过查看控制台日志来跟踪接收到的MPPS消息。我们在ReceiveMppsMessage方法中记录了消息的关键信息(如StudyInstanceUIDSeriesInstanceUIDProcedureStepStatus)。这些日志可以帮助开发者在调试时理解MPPS消息的状态。

4. 安全性和性能优化

4.1 安全性

MPPS服务在处理敏感的医学影像数据时,安全性非常重要。以下是一些加强MPPS服务安全性的措施:

  1. HTTPS加密

    • 使用HTTPS协议来加密MPPS消息的传输。通过SSL/TLS加密,确保敏感数据(如患者信息、影像数据等)不会在传输过程中被窃听或篡改。
    • 可以在Startup.cs中强制启用HTTPS,如下所示:
      public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
      {if (env.IsDevelopment()){app.UseDeveloperExceptionPage();}else{app.UseExceptionHandler("/Home/Error");app.UseHsts();  // 启用HTTP严格传输安全}app.UseHttpsRedirection();app.UseRouting();app.UseEndpoints(endpoints =>{endpoints.MapControllers();});
      }
      
  2. 身份验证和授权

    • 对于MPPS消息的接收和处理,可以使用OAuth2.0、JWT(JSON Web Tokens)等认证机制确保只有授权的设备或用户才能发送MPPS消息。
    • 可以在API中引入身份验证(例如使用Bearer Token进行API请求认证):
      public void ConfigureServices(IServiceCollection services)
      {services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme).AddJwtBearer(options =>{options.Authority = "https://your-identity-server.com";options.Audience = "api";});services.AddControllers();
      }
      
  3. 访问控制

    • MPPS服务接收的消息通常涉及患者的个人健康信息,因此需要对不同的用户和设备设定访问控制策略。可以基于角色的访问控制(RBAC)来确保只有具有合适权限的用户能够操作影像数据。
  4. 数据加密

    • 除了传输加密外,存储在服务器上的MPPS消息和相关影像数据也应进行加密。确保即使服务器遭到攻击,数据也不会泄露。

4.2 性能优化

对于高并发情况下的MPPS消息处理,性能优化至关重要。以下是一些优化策略:

  1. 异步处理

    • 在处理MPPS消息时,可以使用异步编程模型(async/await)来避免阻塞线程,提高系统的吞吐量。

    • 例如,使用async Task<IActionResult>来处理每个MPPS请求:

      [HttpPost("mpps")]
      public async Task<IActionResult> ReceiveMppsMessage([FromBody] DicomMessage mppsMessage)
      {try{// 异步处理消息await ProcessMppsMessageAsync(mppsMessage);return Ok(new { Message = "MPPS message received successfully" });}catch (Exception ex){return BadRequest(new { Message = $"Error processing MPPS message: {ex.Message}" });}
      }private async Task ProcessMppsMessageAsync(DicomMessage mppsMessage)
      {// 模拟一些耗时操作await Task.Delay(100);  // 这里可以替换为数据库写入等操作
      }
      
  2. 消息队列

    • 当高并发请求到来时,直接处理可能会导致服务崩溃或响应时间过长。此时,可以使用消息队列(如RabbitMQ、Kafka等)来异步处理MPPS消息。将收到的消息先入队,后台工作者从队列中获取消息并异步处理。

    示例(使用RabbitMQ):

    // 发送MPPS消息到队列
    var factory = new ConnectionFactory() { HostName = "localhost" };
    using (var connection = factory.CreateConnection())
    using (var channel = connection.CreateModel())
    {channel.QueueDeclare(queue: "MPPSQueue", durable: false, exclusive: false, autoDelete: false, arguments: null);string message = "MPPS Message data";var body = Encoding.UTF8.GetBytes(message);channel.BasicPublish(exchange: "", routingKey: "MPPSQueue", basicProperties: null, body: body);
    }
    
  3. 数据缓存

    • 对于频繁使用的数据(例如影像状态、患者信息等),可以采用缓存机制(如内存缓存、分布式缓存)来减少数据库查询的负担,提升响应速度。
  4. 负载均衡

    • 如果MPPS服务需要处理大量并发请求,可以通过负载均衡器(如Nginx、HAProxy等)将请求分配到多个服务实例,以保证系统的高可用性和横向扩展性。
  5. 数据库优化

    • 如果MPPS消息涉及对数据库的读取或写入操作,可以通过数据库优化(如索引、分区、查询优化等)来提高性能,确保在高并发情况下数据库能够处理大量请求。

5. 总结

MPPS服务在医疗影像管理和工作流中扮演着重要的角色,尤其在协调影像采集设备与影像存储系统之间的操作时。通过DICOM协议,影像设备能够向PACS报告影像程序的执行状态,确保影像存储过程的同步和实时反馈。

在本文中,我们通过一个基于C#的实现示例,展示了如何使用ASP.NET Core和fo-dicom库构建MPPS服务。通过实际代码示例,我们展示了如何接收、处理MPPS消息以及如何进行安全性和性能优化。

为了应对实际应用中的高并发和高可靠性需求,我们还探讨了使用异步编程、消息队列、负载均衡等技术来优化MPPS服务的性能。通过这些优化措施,能够确保MPPS服务在高并发场景下稳定运行,同时保障数据的安全性。

希望本文为您提供了有关DICOM MPPS服务的全面理解,并能帮助您在实际开发中更好地实现这一功能。

相关文章:

深入探讨DICOM医学影像中的MPPS服务及其具体实现

深入探讨DICOM医学影像中的MPPS服务及其具体实现 1. 引言 在医疗影像的管理和传输过程中&#xff0c;DICOM&#xff08;数字影像和通信医学&#xff09;标准发挥着至关重要的作用。除了DICOM影像的存储和传输&#xff08;如影像存储SCP和影像传输SCP&#xff09;&#xff0c;…...

【Rust自学】12.3. 重构 Pt.1:改善模块化

12.3.0. 写在正文之前 第12章要做一个实例的项目——一个命令行程序。这个程序是一个grep(Global Regular Expression Print)&#xff0c;是一个全局正则搜索和输出的工具。它的功能是在指定的文件中搜索出指定的文字。 这个项目分为这么几步&#xff1a; 接收命令行参数读取…...

Cosmos:英伟达发布世界基础模型,为机器人及自动驾驶开发加速!

1. 简介 在2025年消费电子展&#xff08;CES&#xff09;上&#xff0c;NVIDIA发布了全新的Cosmos平台&#xff0c;旨在加速物理人工智能&#xff08;AI&#xff09;系统的开发&#xff0c;尤其是自主驾驶车辆和机器人。该平台集成了生成式世界基础模型&#xff08;WFM&#x…...

【Docker】保姆级 docker 容器部署 MySQL 及 Navicat 远程连接

&#x1f970;&#x1f970;&#x1f970;来都来了&#xff0c;不妨点个关注叭&#xff01; &#x1f449;博客主页&#xff1a;欢迎各位大佬!&#x1f448; 文章目录 1. docker 容器部署 MySQL1.1 拉取mysql镜像1.2 启动容器1.3 进入容器1.4 使用 root 用户登录 2. Navicat 连…...

Java IDEA中Gutter Icons图标的含义

前些天发现了一个蛮有意思的人工智能学习网站,8个字形容一下"通俗易懂&#xff0c;风趣幽默"&#xff0c;感觉非常有意思,忍不住分享一下给大家。 &#x1f449;点击跳转到教程 前言&#xff1a; 很多人刚开始用IDEA来学习编程&#xff0c;会发现下面这些图标。 但是…...

Broker收到消息之后如何存储

1.前言 此文章是在儒猿课程中的学习笔记&#xff0c;感兴趣的想看原来的课程可以去咨询儒猿课堂《从0开始带你成为RocketMQ高手》&#xff0c;我本人觉得这个作者还是不错&#xff0c;都是从场景来进行分析&#xff0c;感觉还是挺适合我这种小白的。这块主要都是我自己的学习笔…...

RuoYi框架上传图片或文件到阿里云OSS详细教程

为了提供一个更加详细的教程&#xff0c;我们将深入探讨每个步骤&#xff0c;并添加一些额外的细节和最佳实践建议。以下是关于如何在Ruoyi框架中集成阿里云OSS实现文件上传功能的详尽指南。 详细教程 环境准备 注册阿里云账号&#xff1a;访问阿里云官网并创建一个账户。创…...

【论文笔记】SmileSplat:稀疏视角+pose-free+泛化

还是一篇基于dust3r的稀疏视角重建工作&#xff0c;作者联合优化了相机内外参与GS模型&#xff0c;实验结果表明优于noposplat。 abstract 在本文中&#xff0c;提出了一种新颖的可泛化高斯方法 SmileSplat&#xff0c;可以对无约束&#xff08;未标定相机的&#xff09;稀疏多…...

python实现收到一封邮件时自动触发执行读取邮件内容及后续操作

要实现收到一封邮件时自动触发执行 getEmailData()&#xff0c;可以结合定时任务或实时事件监控机制来实现。以下是两种常用的方法&#xff1a; 方法 1&#xff1a;轮询方式&#xff08;定时检测&#xff09; 使用 schedule 或 time.sleep 循环定期检测收件箱&#xff1a; i…...

【Vim Masterclass 笔记12】S06L26 + L27:Vim 文本的搜索、查找及替换同步练习(含点评课)

文章目录 S06L26 Exercise 07 - Search, Find, and Replace1 训练目标2 操作指令2.1. 打开 search-practice.txt 文件2.2. 同一行内的搜索练习2.3. 当前文件内的搜索练习2.4. 单词搜索练习2.5. 全局替换练习 3 退出 Vim S06L27 同步练习点评课 写在前面 Vim 的文本检索、查找与…...

YOLOv11 OBB 任务介绍与数据集构建要求及训练脚本使用指南

YOLO&#xff08;You Only Look Once&#xff09;是一个高效且广泛应用于目标检测任务的深度学习框架。在目标检测任务中&#xff0c;传统的边界框&#xff08;AABB&#xff09;通过四个参数来定义目标的位置信息&#xff1a;中心坐标、宽度、高度以及目标的旋转角度。然而&…...

Leecode刷题C语言之超过阈值的最小操作数②

执行结果:通过 执行用时和内存消耗如下&#xff1a; // 最小堆的节点结构体 typedef struct {long long* heap;int size;int capacity; } MinHeap;// 初始化最小堆 MinHeap* createMinHeap(int capacity) {MinHeap* minHeap (MinHeap*)malloc(sizeof(MinHeap));minHeap->s…...

【Linux】11.Linux基础开发工具使用(4)

文章目录 3. Linux调试器-gdb使用3.1 背景3.2 下载安装3.3 使用gdb查询3.4 开始使用 3. Linux调试器-gdb使用 3.1 背景 程序的发布方式有两种&#xff0c;debug模式和release模式 Linux gcc/g出来的二进制程序&#xff0c;默认是release模式 要使用gdb调试&#xff0c;必须…...

Cesium中的CustomDataSource 详解

Cesium CustomDataSource 详解 在 Cesium 中&#xff0c;CustomDataSource 是一个强大的类&#xff0c;用于处理自定义的地理数据。它提供了一种方法&#xff0c;可以通过程序方式添加、管理和更新动态的地理实体&#xff0c;而无需依赖外部数据格式&#xff08;如 GeoJSON 或…...

win32汇编环境,窗口程序中组合框的应用举例

;运行效果 ;win32汇编环境,窗口程序中组合框的应用举例 ;比如在窗口程序中生成组合框&#xff0c;增加子项&#xff0c;删除某项&#xff0c;取得指定项内容等 ;直接抄进RadAsm可编译运行。重点部分加备注。 ;以下是ASM文件 ;>>>>>>>>>>>>…...

Wireshark 使用教程:网络分析从入门到精通

一、引言 在网络技术的广阔领域中&#xff0c;网络协议分析是一项至关重要的技能。Wireshark 作为一款开源且功能强大的网络协议分析工具&#xff0c;被广泛应用于网络故障排查、网络安全检测以及网络协议研究等诸多方面。本文将深入且详细地介绍 Wireshark 的使用方法&#x…...

菜品管理(day03)

公共字段自动填充 问题分析 业务表中的公共字段&#xff1a; 而针对于这些字段&#xff0c;我们的赋值方式为&#xff1a; 在新增数据时, 将createTime、updateTime 设置为当前时间, createUser、updateUser设置为当前登录用户ID。 在更新数据时, 将updateTime 设置为当前时间…...

Scira - 一个极简的开源 AI 搜索引擎

支持实时搜索 、学术论文分析 、社交媒体洞察 、YouTube 搜索 、航班追踪 、电影搜索&#xff0c;功能倒是挺多。 但是目前只支持 xAI 的 Grok 还不能换模型&#xff0c;不过用的 Vercel SDK 支持下 DeepSeek 应该很容易 https://index.html.zone/ai/scira...

利用源码安装httpd

方法一&#xff1a; 1&#xff0c;下载源码 [rootopenEuler-1 ~]# wget https://archive.apache.org/dist/httpd/httpd-2.4.46.tar.gz [rootopenEuler-1 ~]# ls anaconda-ks.cfg httpd-2.4.46.tar.gz mysql-8.0.36-linux-glibc2.12-x86_64.tar.xz 2&#xff0c;进行压缩 […...

软件测试 —— Selenium(等待)

软件测试 —— Selenium&#xff08;等待&#xff09; 一个例子强制等待使用示例&#xff1a;为什么不推荐使用强制等待&#xff1f;更好的选择 隐式等待 implicitly_wait&#xff08;&#xff09;隐式等待和强制等待的区别隐式等待&#xff08;Implicit Wait&#xff09;强制等…...

图像模糊度(清晰度)检测 EsFFT 算法详细分析

图像模糊度检测算法 基于频域的算法 傅里叶变换法:先将图像进行傅里叶变换得到频谱图,频谱图中心为低频,向外扩展为高频。通过屏蔽频谱图中心区域实现高通滤波,保留图像边缘等高频信息,再求频谱图的均值即平均高频幅值,该值越小,图像越模糊。但传统FFT方法存在不足,如…...

快速上手 HarmonyOS 应用开发

一、DevEco Studio 安装与配置 1. DevEco Studio 简介 DevEco Studio 是 HarmonyOS 的一站式集成开发环境&#xff08;IDE&#xff09;&#xff0c;提供了丰富的工具和功能&#xff0c;支持 HarmonyOS 应用开发的全流程。 2. DevEco Studio 下载与安装 下载地址&#xff1a…...

金融项目实战 06|Python实现接口自动化——日志、实名认证和开户接口

目录 一、日志封装及应用&#xff08;理解&#xff09; 二、认证开户接口脚本编写 1、代码编写 1️⃣api目录 2️⃣script目录 2、BeautifulSoup库 1️⃣简介及例子 2️⃣提取html数据工具封装 3、认证开户参数化 一、日志封装及应用&#xff08;理解&#xff09; &…...

Lianwei 安全周报|2025.1.13

新的一周又开始了&#xff0c;以下是本周「Lianwei周报」&#xff0c;我们总结推荐了本周的政策/标准/指南最新动态、热点资讯和安全事件&#xff0c;保证大家不错过本周的每一个重点&#xff01; 政策/标准/指南最新动态 01 美国国土安全部发布《公共部门生成式人工智能部署手…...

【C#深度学习之路】如何使用C#实现Yolo8/11 Segment 全尺寸模型的训练和推理

【C#深度学习之路】如何使用C#实现Yolo8/11 Segment 全尺寸模型的训练和推理 项目背景项目实现推理过程训练过程 项目展望写在最后项目下载链接 本文为原创文章&#xff0c;若需要转载&#xff0c;请注明出处。 原文地址&#xff1a;https://blog.csdn.net/qq_30270773/article…...

【Compose multiplatform教程】05 IOS环境编译

了解如何使现有的 Android 应用程序跨平台&#xff0c;以便它在 Android 和 iOS 上都能运行。您将能够在一个位置编写代码并针对 Android 和 iOS 进行测试一次。 本教程使用一个示例 Android 应用程序&#xff0c;其中包含用于输入用户名和密码的单个屏幕。凭证经过验证并保存…...

【声音场景分类--论文阅读】

1.基于小波时频图特征在声音场景分类 基于小波时频图特征在声音场景分类任务中的表现 2.增强增强高效音频分类网络 https://arxiv.org/pdf/2204.11479v5 https://github.com/Alibaba-MIIL/AudioClassfication 音频分类网络如图4所示。在此阶段&#xff0c;主要重点是建立一…...

浅谈云计算02 | 云计算模式的演进

云计算计算模式的演进 一、云计算计算模式的起源追溯1.2 个人计算机与桌面计算 二、云计算计算模式的发展阶段2.1 效用计算的出现2.2 客户机/服务器模式2.3 集群计算2.4 服务计算2.5 分布式计算2.6 网格计算 三、云计算计算模式的成熟与多元化3.1 主流云计算服务模式的确立3.1.…...

【专题】2025年节日营销趋势洞察报告汇总PDF洞察(附原数据表)

原文链接&#xff1a; https://tecdat.cn/?p38813 在当今复杂多变且竞争激烈的消费市场环境下&#xff0c;节日营销已成为企业获取市场份额、提升品牌影响力的关键战略时机。我们深知深入洞察节日营销趋势对于企业决策的重要性。 本报告汇总基于对 2024 年多个关键消费节点及…...

AR 在高校实验室安全教育中的应用

AR应用APP可以内置实验室安全功能介绍&#xff0c;学习并考试&#xff08;为满足教育部关于实验室人员准入条件&#xff09;&#xff0c;AR主模块。其中AR主模块应该包括图形标识码的扫描&#xff0c;生成相应模型&#xff0c;或者火灾、逃生等应急处置的路线及动画演示。考试采…...

PHP智慧小区物业管理小程序

&#x1f31f;智慧小区物业管理小程序&#xff1a;重塑社区生活&#xff0c;开启便捷高效新篇章 &#x1f31f; 智慧小区物业管理小程序是一款基于PHPUniApp精心雕琢的智慧小区物业管理小程序&#xff0c;它犹如一股清新的科技之风&#xff0c;吹进了现代智慧小区的每一个角落…...

使用防抖与节流优化 Vue 中的异步函数调用

使用防抖与节流优化 Vue 中的异步函数调用 在 Vue 项目中&#xff0c;我们经常需要处理用户交互事件&#xff0c;例如点击、输入、切换复选框等。这些事件可能频繁触发&#xff0c;尤其在用户快速操作的情况下&#xff0c;如果每次触发都执行复杂的逻辑&#xff08;如异步网络…...

【大厂面试AI算法题中的知识点】方向涉及:ML/DL/CV/NLP/大数据...本篇介绍自动驾驶检测模型如何针对corner case 优化?

【大厂面试AI算法题中的知识点】方向涉及&#xff1a;ML/DL/CV/NLP/大数据…本篇介绍自动驾驶检测模型如何针对corner case 优化&#xff1f; 【大厂面试AI算法题中的知识点】方向涉及&#xff1a;ML/DL/CV/NLP/大数据…本篇介绍自动驾驶检测模型如何针对corner case 优化&…...

Android CustomTextField

在 Compose 中开发用户界面时&#xff0c;需要处理输入框和键盘的交互&#xff0c;例如在键盘弹出时调整布局位置&#xff0c;避免遮挡重要内容。本篇博客将通过一个完整的示例展示如何实现这一功能。 功能概述 本例实现了一个简单的输入框。当输入框获得焦点或输入文字时&…...

源码编译安装httpd 2.4,提供系统服务管理脚本并测试(两种方法实现)

一、源码编译安装httpd 2.4 # 从官网下载httpd源代码 [rootopenEuler-2 ~]# wget https://downloads.apache.org/httpd/httpd-2.4.62.tar.gz# 解压并进入到该目录中 [rootopenEuler-2 ~]# tar -zxvf httpd-2.4.62.tar.gz [rootopenEuler-2 ~]# cd httpd-2.4.62/# 安装httpd编译…...

ubuntu24.04安装docker显卡工具包nvidia-container-toolkit

问题描述 docker 容器启动时如果需要访问 gpu &#xff0c;需要安装 nvidia-container-toolkit 才行&#xff0c;否则会提示如下错误 sudo docker run --rm -it --gpus all ubuntu:latest docker: Error response from daemon: could not select device driver "" …...

mac intel芯片下载安卓模拟器

一、调研 目前主流两个模拟器&#xff1a; 雷神模拟器 不支持macosmumu模拟器pro版 不支持macos intel芯片 搜索到mumu的Q&A中有 “Intel芯片Mac如何安装MuMu&#xff1f;” q&a&#x1f517;&#xff1a;https://mumu.163.com/mac/faq/install-on-intel-mac.html 提…...

4 原型(Protoytpe)模式

原型模式 1.1 分类 &#xff08;对象&#xff09;创建型 1.2 提出问题 希望复制一个状态完全相同的对象。首先&#xff0c;新建一个相同类的对象。 然后&#xff0c;复制所有成员变量。 但是&#xff0c;有时候不知道具体类型&#xff0c;而且成员变量可能是私有的。&#…...

kafka的listeners和advertised.listeners,配置内外网分流

总结&#xff1a; listeners 指明 kafka 当前节点监听本机的哪个网卡 advertised.listeners 指明客户端通过哪个 ip 可以访问到当前节点 内网和外网并不必须是是我们通常说的公司内部网络和公网&#xff0c;只要是两块网卡都可以&#xff0c;不管是这两块网卡是公网、内网、甚至…...

Mac——Docker desktop安装与使用教程

摘要 本文是一篇关于Mac系统下Docker Desktop安装与使用教程的博文。首先介绍连接WiFi网络&#xff0c;然后详细阐述了如何在Mac上安装Docker&#xff0c;包括下载地址以及不同芯片版本的选择。接着讲解了如何下载基础镜像和指定版本镜像&#xff0c;旨在帮助用户在Mac上高效使…...

Redis十大数据类型详解

Redis&#xff08;一&#xff09; 十大数据类型 redis字符串&#xff08;String&#xff09; string是redis最基本的类型&#xff0c;一个key对应一个value string类型是二进制安全的&#xff0c;意思是redis的string可以包含任何数据。例如说是jpg图片或者序列化对象 一个re…...

.net core 中使用AsyncLocal传递变量

官网 https://github.com/dotnet/runtime/blob/16b6369b7509e58c35431f05681a9f9e5d10afaa/src/libraries/System.Private.CoreLib/src/System/Threading/AsyncLocal.cs#L45 AsyncLocal是一个在.NET中用来在同步任务和异步任务中保持全局变量的工具类。它允许你在不同线程的同…...

C#Halcon视觉流程框架个人封装流程心得

一&#xff0c;实现效果 1&#xff0c;初始界面 2&#xff0c;加载流程 3&#xff0c;点击流程列表“加载2D图像" 4&#xff0c;设置图像预处理参数与画线找线 5&#xff0c;执行流程 6&#xff0c;折叠工具箱 7&#xff0c;折叠操作区域 二&#xff0c;实现流程 1&…...

web第一次作业

系统登录代码&#xff1a; <!DOCTYPE html> <html lang"zh"> <head> <meta charset"UTF-8"> <meta name"viewport" content"widthdevice-width, initial-scale1.0"> <title>第一次作业</title…...

Kylin Linux V10 替换安装源,并在服务器上启用 EPEL 仓库

查看系统版本&#xff1a; cat /etc/os-releaseNAME"Kylin Linux Advanced Server" VERSION"V10 (Lance)" ID"kylin" VERSION_ID"V10" PRETTY_NAME"Kylin Linux Advanced Server V10 (Lance)" ANSI_COLOR"0;31"u…...

备战蓝桥杯:树的存储与遍历(dfs和bfs)

树的概念 树的逻辑结构是树形结构&#xff0c;和我们之前的线性结构又不太一样了&#xff0c;是一种一对多的关系 树的结点分为根节点&#xff0c;叶子结点&#xff08;没有分支的结点&#xff09; 以及分支结点 从上往下看&#xff0c;每个结点都有0个或多个后继 从下往上…...

[Deep Learning] Anaconda+CUDA+CuDNN+Pytorch(GPU)环境配置-2025

文章目录 [Deep Learning] AnacondaCUDACuDNNPytorch(GPU)环境配置-20250. 引子1. 安装Anaconda1.1 安装包下载&#xff1a;1.2 启用安装包安装1.3 配置(系统)环境变量1.4 验证Anaconda是否安装完毕1.5 Anaconda换源 2. 安装CUDACuDNN2.1 判断本机的CUDA版本2.2 下载适合自己CU…...

计算机的错误计算(二百一十二)

摘要 利用两个大模型计算 实验表明&#xff0c;两个大模型均进行了中肯的分析。另外&#xff0c;其中一个大模型给出了 Python代码&#xff0c;运行后&#xff0c;结果中有7位错误数字&#xff1b;而一个大模型进行加减运算时出错。 例1. 计算 下面是与一个大模型的对话…...

Inxpect毫米波安全雷达:精准检测与动态保护,工业自动化可靠选择

Inxpect毫米波安全雷达具备“精准检测、动态区域保护、环境适应性”三大核心功能。在工业自动化和机器人系统里&#xff0c;这些功能发挥着重要作用,有助于提升安全性与效率。Inxpect雷达运用毫米波技术&#xff0c;在诸如存在灰尘、烟雾或碎屑等复杂环境中&#xff0c;也能保持…...

springboot房屋租赁管理系统

Spring Boot房屋租赁管理系统是一种基于Spring Boot框架构建的&#xff0c;旨在解决传统租房市场中房源信息更新不及时、虚假信息泛滥、交易流程繁琐等问题的信息化解决方案。 一、系统背景与目的 随着城市化进程的加快和人口流动性的增强&#xff0c;租房市场需求急剧增长。…...