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

mapstruct.Mapper|Mapping详解

------------------------------------------------------------------------------------------

org.mapstruct.Mapper 和 org.mapstruct.Mapping 是 MapStruct 框架中的核心注解,用于实现 Java 对象之间的自动映射。MapStruct 是一个代码生成器,通过注解配置生成类型安全、高性能的对象映射代码,避免手动编写繁琐的 setter/getter 转换逻辑。

1. @Mapper 注解

  • 作用:标记接口为 MapStruct 映射器,MapStruct 会在编译时为该接口生成实现类,实现对象之间的转换逻辑。
  • 常用属性:
    • componentModel:指定映射器的组件模型,如 spring(生成 Spring Bean)、cdijsr330 等,便于依赖注入。
    • uses:指定其他映射器类,用于处理复杂类型转换。
    • unmappedTargetPolicy:指定未映射目标属性的处理策略(如报错、警告)。

 

示例:

 

java
 
运行
 
 
 
 
// 声明一个 Spring 管理的映射器
@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE)
public interface UserMapper {// 映射方法(由 MapStruct 自动实现)UserDTO toDTO(User user);User toEntity(UserDTO dto);
}
 

2. @Mapping 注解

  • 作用:配置源对象与目标对象之间的属性映射关系,解决属性名不一致、类型转换等问题。
  • 常用属性:
    • source:源对象的属性名(如 userName)。
    • target:目标对象的属性名(如 name)。
    • dateFormat:日期类型转换的格式(如 yyyy-MM-dd)。
    • expression:通过表达式自定义转换逻辑(如 java: java.util.UUID.randomUUID().toString())。
    • ignore:是否忽略该属性映射(true 表示不映射)。

 

示例:

 

java
 
运行
 
 
 
 
@Mapper(componentModel = "spring")
public interface OrderMapper {// 基础映射(属性名一致时可省略 @Mapping)@Mapping(source = "orderNo", target = "orderNumber") // 名称不一致时映射@Mapping(source = "createTime", target = "createDate", dateFormat = "yyyy-MM-dd") // 日期格式化@Mapping(target = "id", ignore = true) // 忽略目标属性OrderDTO toDTO(Order order);// 多源对象映射@Mapping(source = "user.name", target = "userName")@Mapping(source = "order.total", target = "amount")OrderDetailDTO toDetailDTO(User user, Order order);
}
 

核心优势

  1. 类型安全:编译时检查属性映射是否正确,避免运行时错误。
  2. 高性能:生成的代码是普通的 setter/getter 调用,比反射(如 BeanUtils)更快。
  3. 可维护性:映射规则集中在接口注解中,无需手动编写转换工具类。

 

使用时需在项目中引入 MapStruct 依赖(以 Maven 为例):

 

xml
 
 
<dependency><groupId>org.mapstruct</groupId><artifactId>mapstruct</artifactId><version>1.5.5.Final</version>
</dependency>
<dependency><groupId>org.mapstruct</groupId><artifactId>mapstruct-processor</artifactId><version>1.5.5.Final</version><scope>provided</scope>
</dependency>
 

 

通过这两个注解,可快速实现 DODTOVO 等对象之间的转换,大幅简化开发工作。

------------------------------------------------------------------------------------------

org.mapstruct.Mapping属性详解
org.mapstruct.Mapping 是 MapStruct 框架中用于精细控制属性映射规则的核心注解,主要解决源对象与目标对象之间属性名不一致、类型不匹配、格式转换等问题。以下是其常用属性的详细说明及示例:

1. 基础映射属性

source

  • 作用:指定源对象的属性名(即被映射的字段)。
  • 适用场景:源与目标属性名不同时,明确源字段。
  • 示例:
    java
     
    运行
     
     
     
     
    // 源对象有属性 userName,目标对象有属性 name
    @Mapping(source = "userName", target = "name")
    UserDTO toDTO(User user);
    
     
  • 注意:
    • 支持嵌套属性(如 source = "user.addr.city")。
    • 若源属性为集合,可通过索引访问(如 source = "hobbies[0]")。

target

  • 作用:指定目标对象的属性名(即接收映射的字段)。
  • 必须搭配:通常与 source 一起使用,定义映射关系。
  • 示例:
    java
     
    运行
     
     
     
     
    // 源字段 id 映射到目标字段 userId
    @Mapping(source = "id", target = "userId")
    OrderDTO toDTO(Order order);
    
     

ignore

  • 作用:指定是否忽略目标属性(不进行映射)。
  • 默认值:false(不忽略)。
  • 适用场景:目标属性无需从源对象获取(如自增 ID、默认值字段)。
  • 示例:
    java
     
    运行
     
     
     
     
    // 忽略目标对象的 createTime 字段(由目标系统自动生成)
    @Mapping(target = "createTime", ignore = true)
    UserDTO toDTO(User user);
    
     

2. 类型转换属性

dateFormat

  • 作用:指定日期 / 时间类型的转换格式(适用于 DateLocalDateString 之间的转换)。
  • 适用场景:源为 Date 类型,目标为 String 类型(或反之)。
  • 示例:
    java
     
    运行
     
     
     
     
    // 源字段 createTime(LocalDateTime)转换为目标字段 createTimeStr(String),格式为 yyyy-MM-dd HH:mm:ss
    @Mapping(source = "createTime", target = "createTimeStr", dateFormat = "yyyy-MM-dd HH:mm:ss")
    OrderDTO toDTO(Order order);
    
     

numberFormat

  • 作用:指定数字类型的格式化规则(如保留小数、百分比等)。
  • 适用场景:Number 与 String 类型转换,需格式化显示。
  • 示例:
    java
     
    运行
     
     
     
     
    // 源字段 price(BigDecimal)转换为目标字段 priceStr(String),保留2位小数
    @Mapping(source = "price", target = "priceStr", numberFormat = "#0.00")
    ProductDTO toDTO(Product product);
    
     

qualifiedByName

  • 作用:指定自定义转换方法(通过方法名引用),处理复杂类型转换。
  • 使用步骤:
    1. 在映射器接口中定义自定义转换方法,并添加 @Named 注解标记。
    2. 在 @Mapping 中通过 qualifiedByName 引用方法名。
  • 示例:
    java
     
    运行
     
     
     
     
    import org.mapstruct.Named;@Mapper(componentModel = "spring")
    public interface UserMapper {// 引用自定义转换方法 "statusConverter"@Mapping(source = "status", target = "statusDesc", qualifiedByName = "statusConverter")UserDTO toDTO(User user);// 自定义转换方法:将数字状态码转为文字描述@Named("statusConverter")default String convertStatus(Integer status) {if (status == 1) return "正常";if (status == 0) return "禁用";return "未知";}
    }
    
     

expression

  • 作用:通过 Java 表达式自定义映射逻辑(直接生成代码)。
  • 语法:expression = "java(表达式)",表达式需返回目标属性类型。
  • 适用场景:简单逻辑的动态计算(如生成 UUID、拼接字符串)。
  • 示例:
    java
     
    运行
     
     
     
     
    // 目标字段 orderSn 由表达式生成(UUID + 时间戳)
    @Mapping(target = "orderSn", expression = "java(java.util.UUID.randomUUID().toString() + System.currentTimeMillis())")
    OrderDTO toDTO(Order order);
    
     
  • 注意:表达式中需使用完整类名(如 java.util.UUID 而非 UUID)。

3. 集合与映射属性

collectionMappingStrategy

  • 作用:指定集合类型(如 ListSet)的映射策略。
  • 可选值:
    • ACCESSOR_ONLY(默认):通过 getter/setter 操作集合。
    • SETTER_PREFERRED:优先使用 setter 方法。
    • ADDER_PREFERRED:优先使用 add 方法(如 addItem())。
    • TARGET_IMMUTABLE:目标集合不可变时,创建新集合。
  • 示例:
    java
     
    运行
     
     
     
     
    // 对 tags 字段使用 ADDER_PREFERRED 策略(调用 addTag() 而非 setTags())
    @Mapping(source = "tags", target = "tags", collectionMappingStrategy = CollectionMappingStrategy.ADDER_PREFERRED)
    PostDTO toDTO(Post post);
    
     

mapKeyDateFormat / mapValueDateFormat

  • 作用:当映射 Map 类型时,指定 key 或 value 为日期类型的格式化规则。
  • 示例:
    java
     
    运行
     
     
     
     
    // Map<Date, String> 映射为 Map<String, String>,key 格式化为 yyyy-MM-dd
    @Mapping(target = "dateMap", mapKeyDateFormat = "yyyy-MM-dd")
    ReportDTO toDTO(Report report);
    
     

4. 其他常用属性

defaultValue

  • 作用:当源属性为 null 时,指定目标属性的默认值。
  • 示例:
    java
     
    运行
     
     
     
     
    // 若 source 中 age 为 null,目标 age 设为 0
    @Mapping(source = "age", target = "age", defaultValue = "0")
    UserDTO toDTO(User user);
    
     

defaultExpression

  • 作用:当源属性为 null 时,通过表达式生成目标属性的默认值(比 defaultValue 更灵活)。
  • 示例:
    java
     
    运行
     
     
     
     
    // 若 createTime 为 null,默认值为当前时间
    @Mapping(source = "createTime", target = "createTime", defaultExpression = "java(java.time.LocalDateTime.now())")
    UserDTO toDTO(User user);
    
     

unmappedSourcePolicy / unmappedTargetPolicy

  • 作用:指定源 / 目标属性未被映射时的处理策略(覆盖 @Mapper 中的全局配置)。
  • 可选值:
    • IGNORE:忽略(默认)。
    • WARN:编译时警告。
    • ERROR:编译时报错(强制检查,推荐生产环境)。
  • 示例:
    java
     
    运行
     
     
     
     
    // 若目标字段有未映射的属性,编译时报错
    @Mapping(target = "extra", unmappedTargetPolicy = ReportingPolicy.ERROR)
    UserDTO toDTO(User user);
    
     

总结:常用属性优先级

当多个属性同时使用时,生效优先级为:
expression > qualifiedByName > dateFormat/numberFormat > 默认转换

通过灵活组合这些属性,MapStruct 可应对绝大多数对象映射场景,既保证类型安全,又避免手动编写转换代码的繁琐。

 

------------------------------------------------------------------------------------------

------------------------------------------------------------------------------------------

------------------------------------------------------------------------------------------

相关文章:

mapstruct.Mapper|Mapping详解

------------------------------------------------------------------------------------------ org.mapstruct.Mapper 和 org.mapstruct.Mapping 是 MapStruct 框架中的核心注解,用于实现 Java 对象之间的自动映射。MapStruct 是一个代码生成器,通过注解配置生成类型安全、…...

抽象代数-学习笔记

主要积累一些遇到的例子、题目。不定时更新。 运算有结合律的运算:普通/复数/矩阵/模意义下加法、乘法,映射复合,与或异或/集合相关, min/max。 仅仅满足部分群公理:\(\mathbb{N}^*, \mathbb{N}\)。\(\{0,1,2\}\) 上可构造有单位元、有逆元但无结合律的运算。 域的性质仅仅…...

如何在保证质量的前提下,快速完成一份 PPT?

这是一个非常经典且普遍的问题,尤其对于产品经理、咨询顾问等角色来说,PPT既是生产力工具,也是时间吞噬黑洞。你能意识到这个问题并寻求解决方案,已经领先了很多人。 在保证质量的前提下快速完成PPT,绝非单纯追求“手速”,而是一套系统工程,涉及工作流程、工具链、方法论…...

Source Code Summarization in the Era of Large Language Models 论文笔记

介绍 (1) 发表:ICSE25 (2) 背景 之前的研究表明,与传统的代码摘要模型相比,LLM 生成的摘要在表达方式上与参考摘要有很大不同,并且倾向于描述更多的细节。因此,传统的评估方法是否适合评估 LLM 生成摘要的质量仍然未知 (3) 贡献 受到 NLP 工作的启发,本文对使用 LLM 本身…...

线性回归-入门案例

使用公开的房价数据集进行预测,数据包含8个特征1个目标值 特征最多使用2次幂代码示例 import numpy as np import pandas as pd from sklearn.datasets import fetch_california_housing from sklearn.linear_model import LinearRegression from sklearn.metrics import mean…...

XXL-JOB(3)

XXL-JOB(3)开发Bean模式(基于方法)Bean模式任务,支持基于方法的开发方式,每个任务对应一个方法。基于方法开发的任务,底层会生成JobHandler代理,和基于类的方式一样,任务也会以JobHandler的形式存在于执行器任务容器中。优点:每个任务只需要开发一个方法,并添加”@Xxl…...

ClickHouse 表引擎深度解析:ReplacingMergeTree、PARTITION、PRIMARY KEY、ORDER BY 详解 - 若

ClickHouse 表引擎深度解析:ReplacingMergeTree、PARTITION、PRIMARY KEY、ORDER BY 详解 前言 ClickHouse 作为高性能的列式数据库,其表引擎设计是其核心优势之一。ReplacingMergeTree 是处理重复数据的利器,而 PARTITION、PRIMARY KEY、ORDER BY 等配置直接影响查询性能和…...

UOS统信服务器操作系统V20(1070)安装mysql8.4.5(建议安装glibc2.28版本)

环境:OS:UOS Server 20 统信服务器操作系统V20(1070)mysql:8.4.5 glib.2.17 操作系统下载https://www.chinauos.com/resource/download-server查看系统glibc版本[root@localhost yum.repos.d]# ldd --versionldd (GNU libc) 2.28Copyright (C) 2018 Free Software Foundation, …...

web5(phps源码泄露)

访问index.phps,会自动下载index.php文件 点击查看即可得到flag...

web3(自带网络工具包查看数据)

查看源码什么也没有扫目录也什么都没有只能说信息收集能力还欠佳, 我们可以先尝试使用浏览器自带的网络工具查看一下数据包。...

web17(备份的sql文件泄露)

用常见的数据库工具打开即可...

web11(通过Dns检查查询Flag)

:::info 223.5.5.5测试的解析结果是否具有代表性?(来自阿里云官网)具备一定的代表性,在国内客户端使用223.5.5.5有一定的用户群体,但是该测试结果并不能代表全部用户;如果223.5.5.5测试已经生效,但是您本地仍然不能访问,那么可以侧面反映至少使用223.5.5.5的Local DNS用户…...

ctfshow_web11

ctf.show_web11简单的代码审计,这段代码定义了一个名为replaceSpecialChar的函数,该函数接受一个字符串$strParam作为参数。函数内部使用了正则表达式$regex来匹配SQL语句中的一些关键字,包括select、from、where、join、sleep、and、空格\s、union和逗号,。preg_replace($r…...

ctfshow_web13

ctf.show_web13今天也算是碰到一个新类型的文件上传类的题目(与文件包含结合了可以说)首先尝试了直接传一句话木马,全都被ban了,算是没招了就扫了下目录,进去看一眼,好像页面没回显什么东西,再试试看upload.php.bak(这里看备份文件算是一种新思路,说不定过滤了什么东西…...

ctfshow_web9

ctf.show_web9尝试爆破无果,应该不是弱口令爆破题,那么我们就扫一下目录进去看看访问该目录后会自动下载一个php文件,打开看看可以看出这是一个sql注入漏洞,通过post传参一个paasword的变量值。经过md5加密后被用来与用户名匹配 md5($pass, true) 返回的是 MD5 哈希的二进制…...

锁屏界面无法通过任意键弹出开机密码

长按ctrl+alt+delete弹出...

应急响应-日志分析 - voasem

web服务器日志在很多时候,我们经常需要分析网站的日志,以此来查看网站运行的各种情况。比如说如果网站被攻击,我们可以通过查看日志来溯源攻击者。 Apache 日志目录:/Apache/logs/logs目录下有两个文件,一个是 access.log ,就是用户的访问日志。还有一个是 error.log,这…...

ctfshow web 10

ctfshow web 10打开题目长这样,点击取消会自动下载indexs.php文件,打开查看源码 <?php$flag="";function replaceSpecialChar($strParam){$regex = "/(select|from|where|join|sleep|and|\s|union|,)/i";return preg_replace($regex,"",$s…...

【ACM出版】第四届公共管理、数字经济与互联网技术国际学术会议(ICPDI 2025)

第四届公共管理、数字经济与互联网技术国际学术会议(ICPDI 2025)定于2025年9月26-28日在中国-北京举行。【高录用快见刊、检索:审稿录用速度快】 【录用信息完整:含ISSN号,DOI,封面目录】 第四届公共管理、数字经济与互联网技术国际学术会议(ICPDI 2025) The 4th Inter…...

SMA的射频连接器

SMA的射频连接器射频相关的器件和应用设备经常会用到各种各样的射频连接器,这里将介绍一部分常用的连接器。上图是不同型号的连接器的使用频率,这里仅供参考,因为随着工艺和科技的发展,各个型号的连接器使用频率范围可能会有所变化。SMA连接器SMA型射频同轴连接器是Bendix公…...

什么是Elasticsearch?它与其他搜索引擎相比有什么优势?

一、Elasticsearch 是什么? Elasticsearch(简称 ES) 是一个基于 Apache Lucene 的开源分布式搜索和分析引擎,用 Java 开发,设计用于云计算中,能够实现实时数据搜索、分析和存储。它具有高扩展性、高可用性和分布式特性,广泛应用于日志分析、全文搜索、实时数据统计等场景…...

pdf.js-2.3.0国内下载地址

https://npmmirror.com/package/pdfjs-dist?version=2.3.200...

opencv学习记录2

腐蚀操作 #设置核 kernel = np.ones((3,3),np.uint8) erosion = cv2.erode(img,kernel,iterations=1)膨胀 dige_dilate = cv2.dilate(src,kernel,iterations=1)开运算,闭运算,梯度运算 膨胀-腐蚀 开运算原理: 图像开运算是图像依次经过腐蚀、膨胀处理后的过程。图像被腐蚀后…...

get请求图片文件转为base64编码

public static String convertImageToBase64(String url) throws IOException {String urls = url.replaceAll("192.168.10.242", "192.192.192.192");// 创建HTTP客户端try (CloseableHttpClient httpClient = HttpClients.createDefault();// 发送GET请求…...

BMS与威纶通人机界面通信问题

BMS和威纶通人机界面通信 接口:485 协议:modbus-rtu 波特率:115200bps 问题:电脑模拟人机界面和BMS连接时,显示正常,使用人机界面实物和BMS连接时,无反应;排除BMS的modbus协议本身问题 排查思路: 1)确认人机界面有没有下发读取指令; 用485工具连接电脑和人机界面,用…...

Blazor全栈是个陷阱

前言 大家好,我是曦远~ 最近有个项目急着上线 大概就是接受一堆客户端连接上报数据,然后在界面上展示数据和简单的控制 这种场景感觉 Blazor 还挺合适的,折腾之心蠢蠢欲动 于是掏出了 Blazor 开搞 现在 .NET9 的 Blazor 已经进化了,像 Next.js 那样可以把 server 和 client…...

大型语言模型安全实践:Copilot安全防护经验总结

本文通过实际测试案例深入分析Microsoft Copilot在企业环境中的安全风险,揭示LLM集成带来的数据泄露隐患,并提供基于零信任和RBAC的防护方案,帮助企业构建安全的人工智能应用环境。禁锢Copilot:LLM安全实践的经验教训 任何使用Microsoft产品的人可能都知道,Copilot现已自动…...

一些编程语言的发展史

计算机语言的发展史 C语言的命名由来 C语言,作为一种广泛使用的编程语言,其命名背后有着一段历史。C语言的前身是B语言,而B语言又是基于BCPL语言发展而来。BCPL(Basic Combined Programming Language)是由剑桥大学的Martin Richards在1967年为了简化CPL语言而创建的。接着…...

mysql生成uuid,3种实用方法详解

你知道MySQL中有几种生成唯一标识符的方法吗?作为数据库开发者,我们经常需要为数据记录生成全局唯一的ID。与自增ID相比,UUID具有全局唯一性和分布式友好的特性,特别适合微服务架构下的数据库设计。 UUID基础概念 RFC4122标准定义了UUID(通用唯一识别码),它是一个128位的数…...

vmware ubuntu共享文件夹

sudo apt update sudo apt install open-vm-tools open-vm-tools-desktop sudo vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other,uid=1000,gid=1000 开机自动挂载 编辑/etc/fstab文件,添加以下行(需确保共享文件夹名称正确): .host:/ /mnt/hgfs fuse.vmhgfs-fuse allow_othe…...

【10章】n8n+AI工作流:从入门到企业级AI应用实战

【10章】n8n+AI工作流:从入门到企业级AI应用实战 网 盘 地址:……/s/14l-lQhw9M2TuBny5O4Ru8A 提取码:0hm4 在数字时代的浪潮中,自动化已成为提升效率的关键驱动力。当灵活的n8n工作流平台与强大的人工智能相遇,一场生产力革命正悄然发生。这种融合不仅重新定义了工作流…...

CodeGPT AI代码狂潮来袭!个人完全免费使用谷歌Gemini大模型 超越DeepSeek几乎是地表最强

🚀 个人主页 极客小俊 ✍🏻 作者简介:web开发者、设计师、技术分享 🐋 希望大家多多支持, 我们一起学习和进步! 🏅 欢迎评论 ❤️点赞💬评论 📂收藏 📂加关注CodeGPT是什么 CodeGPT是一款基于AI人工智能的编程辅助插件,它就像一个贴心的编程小助手,能帮你更高…...

Android 安卓 困难处理记录 腾讯IM和厂商离线推送难题 点击离线推送无法唤醒APP启动页但某些Service服务和Application被启动

Android 安卓 困难处理记录 腾讯IM和厂商离线推送难题 点击离线推送无法唤醒APP启动页但某些Service服务和Application被启动pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "…...

9.18

1...

Codeforces Round 1051 (Div 2)

cf1051 Div2 ABCD1D2E题解Problem - A. All Lengths Subtraction 思路: 我们希望 n 和 n - 1 相邻,n - 1, n 和 n - 2 相邻 ... 不断往外扩展 所以我们可以维护 l 和 r 表示当前扩展到了哪里 通过判断下一个数是否和 l 或者 r 相邻,判断 YES/NO 核心代码: void solve() {in…...

Python numba jit加速计算

安装pip install numba使用示例import timefrom numba import jit# 原始函数 def python_sum(n):total = 0for i in range(n):total += ireturn total# Numba 加速版本 @jit(nopython=True) def numba_sum(n):total = 0for i in range(n):total += ireturn total# 性能测试 n =…...

人机协作开发新体验:花两天时间与Cursor共同打造一个微信小程序

前言 在过去的几天里,我完成了一个完整的微信小程序项目——双色球机选应用。 这个项目的独特之处在于,所有的代码编写工作都是由 Cursor 完成的,而我主要负责需求分析、功能规划和调试测试。项目概述 应用功能 我开发的是一款双色球机选微信小程序,主要功能包括:开奖信息…...

OEC-Turbo刷群晖Armbian流程记录

记录OEC-Turbo的刷机流程,为以后反复折腾做参考。 设备版本:OEC L2.0,不清楚1.0和2.0的区别 系统:Windows 11 准备工具瑞芯微驱动 瑞芯微烧录工具 Loader文件 固件 镊子 Type-C数据线工具下载链接:https://pan.quark.cn/s/a719af4c2816 安装驱动下载:01-瑞芯微驱动\Drive…...

01_网络分层模型

一、OSI 七层网络模型 所谓七层就是基于 URL 等应用层信息的负载均衡,四层就是基于 IP + 端口的负载均衡,同样的还有基于二层 MAC 地址,三层 IP 地址的负载均衡。 而 OSI(Open System Interconnection,开放式通信互联) 是由 ISO(International Organization for Standardiz…...

SaaS 是什么?一文带你看懂 SaaS 与传统软件的区别

SaaS 发音类似于「萨斯」,是 Software as a Service 的缩写,直译过来就是「软件即服务」。你可以这样理解: 在 SaaS 模式下,软件变得和水电气很相似,你只需要每月缴纳固定的费用即可享受服务。再举个比较具体的例子: 如果是在10年前,我想画设计图,需要使用 Photoshop,…...

FreeCAD-即时入门-全-

FreeCAD 即时入门(全)原文:zh.annas-archive.org/md5/ba46ce5f33da4fa68df84701f1baaf8a 译者:飞龙 协议:CC BY-NC-SA 4.0前言 FreeCAD 是一个面向工程世界的通用建模工具。与为动画师和艺术家设计的其他建模工具(如 Blender 或 Maya)不同,FreeCAD 对参数化和基于特征的…...

UOS统信服务器操作系统V20(1070)安装mysql8.0.41(建议安装glibc2.28版本)

环境:OS:UOS Server 20 统信服务器操作系统V20(1070)mysql:8.0.41 glib.2.17 操作系统下载https://www.chinauos.com/resource/download-server查看系统glibc版本[root@localhost yum.repos.d]# ldd --versionldd (GNU libc) 2.28Copyright (C) 2018 Free Software Foundation,…...

MyEMS:重新定义人与能源的关系 —— 一场藏在数据里的能源管理革命

能源,这个推动现代文明运转却始终隐形的主角,正通过数字技术与我们建立全新的对话方式。MyEMS作为开源能源管理系统,正在悄然引领这场变革——它不仅改变我们管理能源的方式,更在重新定义人与能源之间的关系。 从被动消费者到主动管理者 传统能源使用中,人类扮演着被动消费…...

刀齿磨损智能检测APP

...

TJOI2007--线段

题目传送门代码点击查看代码 #include<bits/stdc++.h> using namespace std; const int N=2e4+10; int n; int l[N],r[N],len[N]; int dp[N][2]; //dp[i][0]表示停留在本行左端点 //那么就要到右端点在再回到左端点 //dp[i][1]表示停留到本行右端点 //就从本行左端点到右…...

ceph集群的部署

需要准备三台虚机,下载好cephadm包 安装命令:ceph bootstarp --mon-ip=192.168.10.3 --allow-fqdn-hostname 像这样把下列命令对应要求填写命令,就可以安装ceph --allow-fqdn-hostname :允许使用主机作为域名访问mgr --initial-dashboard-user :指定dashboard的用户名 --ini…...

充电桩测试:守护绿色出行的安全密码

在新能源汽车蓬勃发展的时代浪潮下,充电桩作为核心配套设施,其质量与安全性至关重要。每一次稳定的充电过程背后,都离不开严谨细致的测试工作。那么,在充电桩测试中究竟需要注意哪些关键点呢? 电气性能是首要考量因素。电压和电流的稳定性犹如人的脉搏跳动般关键,必须精准…...

如何写好一个缺陷报告?让开发无法拒绝修复的10个要素

记住,测试人员与开发人员不是对立关系,而是协作共赢的伙伴。我们共同的目标是交付高质量的产品,为用户创造价值。当你用专业、细致、合作的态度对待每一个缺陷时,开发人员会更加重视你的报告,团队协作也会更加顺畅高效。在软件开发的世界里,测试人员和开发人员之间的关系…...

不重启、不重写、不停机:SLS 软删除如何实现真正的“无感数据急救”?

SLS 全新推出的「软删除」功能,以接近索引查询的性能,解决了数据应急删除与脏数据治理的痛点。2 分钟掌握这一数据管理神器。作者:屈岳(尧道) 引言 日志服务 SLS 作为云原生观测与分析平台,为 Log、Metric、Trace 等数据提供大规模、低成本、实时的平台服务。在常规场景中…...

C#记录类型与集合的深度解析:从默认实现到自定义比较器

本文深入探讨C#记录类型与不可变集合在实际应用中的挑战,包括默认相等性实现的局限性、自定义比较器的需求、引用相等性的应用场景,以及Visual Studio工具支持方面的不足,并提出了具体的语言和工具改进建议。记录与集合 这篇文章在某种程度上是我在使用选举网站中的记录和集…...