物流项目第四期(运费模板列表实现)
前三期:
物流项目第一期(登录业务)-CSDN博客
物流项目第二期(用户端登录与双token三验证)-CSDN博客
物流项目第三期(统一网关、工厂模式运用)-CSDN博客
模板列表
在后台系统中,需要对运费模板进行维护管理,所以首先需要查询列表:
Entity与Mapper
/*** 运费模板表*/
@Data
@EqualsAndHashCode(callSuper = false)
@AllArgsConstructor
@NoArgsConstructor
@TableName("sl_carriage")
public class CarriageEntity extends BaseEntity {private static final long serialVersionUID = -5358753714676282742L;/*** 模板类型:1-同城寄,2-省内寄,3-经济区互寄,4-跨省*/private Integer templateType;/*** 运送类型:1-普快,2-特快*/private Integer transportType;/*** 关联城市:1-全国,2-京津冀,3-江浙沪,4-川渝,5-黑吉辽*/private String associatedCity;/*** 首重价格*/private Double firstWeight;/*** 续重价格*/private Double continuousWeight;/*** 轻抛系数*/private Integer lightThrowingCoefficient;}
/*** 运费管理表 mapper接口*/
@Mapper
public interface CarriageMapper extends BaseMapper<CarriageEntity> {
}
Service
/*** 运费管理表 服务类*/
public interface CarriageService extends IService<CarriageEntity> {/*** 获取全部运费模板** @return 运费模板对象列表*/List<CarriageDTO> findAll();
}
@Slf4j
@Service
public class CarriageServiceImpl extends ServiceImpl<CarriageMapper, CarriageEntity> implements CarriageService {@Overridepublic List<CarriageDTO> findAll() {// 构造查询条件LambdaQueryWrapper<CarriageEntity> queryWrapper = Wrappers.<CarriageEntity>lambdaQuery()//按创建时间倒序.orderByDesc(CarriageEntity::getCreated);// 查询数据库List<CarriageEntity> list = super.list(queryWrapper);//转化对象,返回集合数据return CollStreamUtil.toList(list, carriageEntity -> {CarriageDTO carriageDTO = BeanUtil.toBean(carriageEntity, CarriageDTO.class);//关联城市数据按照逗号分割成集合carriageDTO.setAssociatedCityList(StrUtil.split(carriageEntity.getAssociatedCity(), ','));return carriageDTO;});}
}
Controller
@Slf4j
@Validated
@RestController
@Api(tags = "运费管理")
@RequestMapping("/carriages")
public class CarriageController {@Resourceprivate CarriageService carriageService;@GetMapping@ApiOperation(value = "运费模板列表")public List<CarriageDTO> findAll() {return this.carriageService.findAll();}}
代码优化
在查询模板列表时,返回数据时需要将Entity转化成DTO,像这样的转化是可以封装工具类来完成的,下面我们来封装com.sl.ms.carriage.utils.CarriageUtils
工具类。
/*** 运费模板工具类** 该工具类用于在 CarriageDTO(数据传输对象)与 CarriageEntity(实体对象)之间进行相互转换。* 主要处理运费模板中“关联城市”字段的格式转换:* - DTO 中使用 List<String> 存储多个城市名;* - Entity 中则以逗号分隔的字符串形式存储到数据库。*/
public class CarriageUtils {/*** 私有构造方法,防止外部实例化此类。** 因为这是一个纯工具类,不希望被 new 出来使用,所以将其构造方法私有化。*/private CarriageUtils() {// 不允许通过 new CarriageUtils() 创建对象}/*** 将 CarriageDTO 转换为 CarriageEntity。** @param carriageDTO 数据传输对象,包含运费模板相关信息* @return 返回对应的 CarriageEntity 实体对象,可用于保存到数据库*/public static CarriageEntity toEntity(CarriageDTO carriageDTO) {// 使用 Hutool 的 BeanUtil.toBean 方法将 DTO 对象属性复制到 Entity 对象中CarriageEntity carriage = BeanUtil.toBean(carriageDTO, CarriageEntity.class);// 将 DTO 中的 associatedCityList(城市列表,如 ["北京", "上海"])// 用 CollUtil.join 方法拼接成一个逗号分隔的字符串(如 "北京,上海")String associatedCity = CollUtil.join(carriageDTO.getAssociatedCityList(), ",");// 设置到 Entity 的 associatedCity 字段,以便存入数据库carriage.setAssociatedCity(associatedCity);// 返回转换后的 Entity 对象return carriage;}/*** 将 CarriageEntity 转换为 CarriageDTO。** @param carriage 数据库实体对象* @return 返回对应的 CarriageDTO 数据传输对象,用于返回给前端或业务层*/public static CarriageDTO toDTO(CarriageEntity carriage) {// 使用 Hutool 的 BeanUtil.toBean 方法将 Entity 对象属性复制到 DTO 对象中CarriageDTO carriageDTO = BeanUtil.toBean(carriage, CarriageDTO.class);// 从 Entity 的 associatedCity 字段(如 "北京,上海")中,// 使用 StrUtil.split 方法按逗号分割成 List<String>(如 ["北京", "上海"])List<String> associatedCityList = StrUtil.split(carriage.getAssociatedCity(), ',');// 设置到 DTO 的 associatedCityList 字段,便于后续使用或展示carriageDTO.setAssociatedCityList(associatedCityList);// 返回转换后的 DTO 对象return carriageDTO;}
}
@Slf4j
@Service
public class CarriageServiceImpl extends ServiceImpl<CarriageMapper, CarriageEntity> implements CarriageService {@Overridepublic List<CarriageDTO> findAll() {// 构造查询条件LambdaQueryWrapper<CarriageEntity> queryWrapper = Wrappers.<CarriageEntity>lambdaQuery()//按创建时间倒序.orderByDesc(CarriageEntity::getCreated);// 查询数据库List<CarriageEntity> list = super.list(queryWrapper);//转化对象,返回集合数据return CollStreamUtil.toList(list, CarriageUtils::toDTO);}
}
新增或更新运费模板
整体流程
Service
/*** 新增/修改运费模板** @param carriageDto 新增/修改运费对象* 必填字段:templateType、transportType* 更新时传入id字段*/CarriageDTO saveOrUpdate(CarriageDTO carriageDto);
@Overridepublic CarriageDTO saveOrUpdate(CarriageDTO carriageDto) {//1. 设置查询条件,查询运费模板列表LambdaQueryWrapper<CarriageEntity> queryWrapper = Wrappers.<CarriageEntity>lambdaQuery().eq(CarriageEntity::getTemplateType, carriageDto.getTemplateType()).eq(CarriageEntity::getTransportType, CarriageConstant.REGULAR_FAST);List<CarriageEntity> list = super.list(queryWrapper);//2. 判断是否为经济区互寄,如果不是,需要进一步的判断是否重复,如果是,需要判断关联城市是否重复if (ObjectUtil.notEqual(carriageDto.getTemplateType(), CarriageConstant.ECONOMIC_ZONE)) {if (CollUtil.isNotEmpty(list) && ObjectUtil.isEmpty(carriageDto.getId())) {//模板已经存在,数据重复throw new SLException(CarriageExceptionEnum.NOT_ECONOMIC_ZONE_REPEAT);}//更新时判断是否已经存在该类型的模板long count = StreamUtil.of(list).filter(carriageEntity -> ObjectUtil.notEqual(carriageEntity.getId(), carriageDto.getId())).count();if(count > 0){throw new SLException(CarriageExceptionEnum.NOT_ECONOMIC_ZONE_REPEAT);}//新增或更新return this.saveOrUpdateCarriage(carriageDto);}//3. 经济区互寄,校验关联城市是否有重复if (CollUtil.isEmpty(list)) {//直接新增或更新return this.saveOrUpdateCarriage(carriageDto);}//判断重复的思路:先将查询出的运费模板中的关联城市收集起来,传入的关联城市是否在此集合中//查询其他模板中所有的经济区列表List<String> associatedCityList = StreamUtil.of(list)//排除掉自己,检查与其他模板是否存在冲突.filter(carriageEntity -> ObjectUtil.notEqual(carriageEntity.getId(), carriageDto.getId()))//获取关联城市.map(CarriageEntity::getAssociatedCity)//将关联城市按照逗号分割.map(associatedCity -> StrUtil.split(associatedCity, ','))//将上面得到的集合展开,得到字符串.flatMap(StreamUtil::of)//收集到集合中.collect(Collectors.toList());//取交集,如果存在交集说明重复Collection<String> intersection = CollUtil.intersection(associatedCityList, carriageDto.getAssociatedCityList());if(CollUtil.isNotEmpty(intersection)){throw new SLException(CarriageExceptionEnum.ECONOMIC_ZONE_CITY_REPEAT);}//不重复return this.saveOrUpdateCarriage(carriageDto);}private CarriageDTO saveOrUpdateCarriage(CarriageDTO carriageDto) {CarriageEntity carriageEntity = CarriageUtils.toEntity(carriageDto);boolean result = super.saveOrUpdate(carriageEntity);if (result) {return CarriageUtils.toDTO(carriageEntity);}throw new SLException(CarriageExceptionEnum.SAVE_OR_UPDATE_ERROR);}
定义异常枚举:
/*** 异常枚举*/
public enum CarriageExceptionEnum implements BaseExceptionEnum {NOT_ECONOMIC_ZONE_REPEAT(1001, "非经济区的模板重复,只能有一个模板"),ECONOMIC_ZONE_CITY_REPEAT(1002, "经济区互寄关联城市重复"),NOT_FOUND(1003, "寄/收地址所属区域暂无计价规则,无法下单"),METHOD_CALL_ERROR(1004, "方法调用错误,经济区互寄不通过该方法查询模板"),SAVE_OR_UPDATE_ERROR(1005, "新增或更新运费模板失败");private Integer code;private Integer status;private String value;CarriageExceptionEnum(Integer code, String value) {this.code = code;this.value = value;this.status = 500;}CarriageExceptionEnum(Integer code, Integer status, String value) {this.code = code;this.value = value;this.status = status;}@Overridepublic Integer getCode() {return this.code;}@Overridepublic String getValue() {return this.value;}@Overridepublic Integer getStatus() {return this.status;}public static CarriageExceptionEnum codeOf(Integer code) {return EnumUtil.getBy(CarriageExceptionEnum::getCode, code);}
}
controller
@PostMapping@ApiOperation(value = "新增/修改运费模板")public CarriageDTO saveOrUpdate(@RequestBody CarriageDTO carriageDto) {return this.carriageService.saveOrUpdate(carriageDto);}
相关文章:
物流项目第四期(运费模板列表实现)
前三期: 物流项目第一期(登录业务)-CSDN博客 物流项目第二期(用户端登录与双token三验证)-CSDN博客 物流项目第三期(统一网关、工厂模式运用)-CSDN博客 模板列表 在后台系统中,…...
数据中心Overlay解决方案
文档围绕数据中心 Overlay 解决方案展开,指出数据中心向大集中、虚拟化、云业务演进,传统架构存在网络规划复杂、弹性不足、业务扩展受限等问题。Overlay 网络在物理网络上构建虚拟网络,实现名址分离、网络与物理解耦,支持业务灵活部署。方案采用VXLAN 技术(如 SDN 控制模…...
中级网络工程师知识点8
1.无线控制器:实现无线网络统一管理,无缝漫游 2.无线认证系统:实现用户使用用户名和密码认证登录,外来访客通过扫描二维码或者手机短信验证登录无线网络 3.POE交换机:实现无线AP的接入和供电 4.高密吸顶式AP&#x…...
【Linux笔记】——简单实习一个日志项目
🔥个人主页🔥:孤寂大仙V 🌈收录专栏🌈:Linux 🌹往期回顾🌹: 【Linux笔记】——线程同步信号量与环形队列生产者消费者模型的实现(PV操作) 🔖流水不争…...
BRIGHTONE : 520-On-Chain WOHOO Carnival
BRIGHTONE is launching the “520-On-Chain WooHoo Carnival,” and the very first blast of $WOOHOO goes live right on schedule—ushering in a new on-chain celebration of joy! At exactly 21:09 on May 20, the “520-On-Chain WooHoo Carnival” officially kicks…...
在Java项目中集成Deepseek大语言模型实践指南
1. 引言 随着人工智能技术的发展,大语言模型在各领域应用日益广泛。本文将详细介绍如何在Java项目中集成Deepseek大模型,实现智能文本生成、对话等功能。 2. 前期准备 准备Java Spring Boot项目环境确保Maven已配置注册Deepseek账号并获取API密钥 获取a…...
医疗影像中,DICOM点云、三角面片实体混合渲染(VR)
此文章,涉及到专业性比较强,所以,大部分的内容,基本上都是示例代码的形式出现。以下的技术路径,完全经过实践验证,并且效果很好,可以放心使用。 1 概述 在医学影像中,对DICOM的渲染…...
程序运行报错分析文档
zryhuawei:~/src/modules/Connect$ ./newbuild/OpConnectAidTool \WARNING: MYSQL_OPT_RECONNECT is deprecated and will be removed in a future version. replace into process_tracking (step_id,date,status,context_data,start_time,end_time,error_log) values(?,?,?…...
C++数据结构——红黑树
文章目录 一、背景二、关键操作1. 旋转2. 变色3. 查找4. 插入5. 删除 三、面试考点 一、背景 红黑树(Red-Black Tree)是一种自平衡的二叉搜索树(BST),通过颜色标记和旋转操作保证树的高度平衡,从而确保插入…...
【Java实战】线程池 并发 并行 生命周期(详细解释)
线程池: 一种复用线程的技术 不使用线程池的问题: 用户每提出一个需求,都要创建一个新的线程。 创建线程池的方法: JDK 5.0起提供了一个代表线程池的接口:ExecutorService。 方式一: 使用ExecutorServic…...
Qwen3多方位评测
一、Qwen3核心优势 结论,针对这些场景:上下文理解、任务编排、工具调用、数据要素抽取等环节,Qwen3-32B已接近DeepSeek-R1。 二、关键测试环节 1、上下文改写 Qwen3-32B对绝对时间语境理解优于Qwen2.5-72B。 其余改写方面,三…...
银行反欺诈理论、方法与实践总结(下):解决方案
一、金融反欺诈防控体系 反欺诈防控体系是金融机构应对欺诈风险的重要工具,它通常包括事前识别、事中决策和事后处置三个关键阶段。 事前识别阶段:此阶段涉及欺诈情报的收集和账户安全的保护,通过名单和画像的构建来识别潜在风险。例如&…...
自回归图像编辑 EditAR: Unified Conditional Generation with Autoregressive Models
Paperhttps://arxiv.org/pdf/2501.04699 Code (coming soon) 目录 方法 实验 EditAR是一个统一的自回归框架,用于各种条件图像生成任务——图像编辑、深度到图像、边缘到图像、分割到图像。 next-token预测的功效尚未被证明用于图像编辑。 EditAR主要构建在Ll…...
Java中的集合详解
下面是文章详细介绍了 Java 集合框架的基本思路、主要接口与实现、各类集合之间的区别与各自的适用场景,以及一些常见的使用技巧和最佳实践,供你参考。 Java中的集合详解 在 Java 开发中,集合(Collection)作为存储和操…...
前端mjs和js文件区别,mjs和cjs区别---.es.js和.mjs的区别
https://www.cnblogs.com/jocongmin/p/18432236 同一份配置如下,一般打包出来的结果时是一样的,只不过扩展名不一样 export default defineConfig({build: {rollupOptions: {output: [// 同一份配置,仅扩展名不同{ format: es, entryFileNames: [name].mjs },{ fo…...
【深度学习】Transformer 的应用
目录 一、自然语言处理领域 1、自然语言处理领域的应用 2、BART模型 3、BERTSum模型与自动文本摘要 4、SG-Net与机器阅读理解 5、SG-Net的应用 6、总结 二、计算机视觉领域 1、图像分类 (1)背景与挑战 (2)Transformer的…...
C#学习10——泛型
一、什么是泛型? 官方理解:允许开发者在定义类、接口、方法或委托时使用类型参数 个人理解: 类型模具(类似Object变色龙) 二、泛型有什么用? 通过参数化类型实现代码复用,提升类型安全性并…...
Spring Validation校验
使用 JSR 303 (Bean Validation) 校验接口参数 JSR 303,也称为Bean Validation规范,提供了一种在Java应用程序中执行验证的标准化方式。它允许你通过注解直接在领域或者DTO(数据传输对象)类上定义校验规则。 1. 添加依赖 首先需…...
精益数据分析(72/126):MVP的核心法则——消除阻碍与聚焦关键指标
精益数据分析(72/126):MVP的核心法则——消除阻碍与聚焦关键指标 在创业领域,许多失败案例源于对产品开发的认知偏差——过度追求功能完善或盲目跟风增长,却忽略了用户核心需求的最直接满足。今天,我们结合…...
从头实现react native expo本地生成APK
根据github上老外的经验制作了一个react native expo项目起始模版,准备放到资源下载里(已经免积分放置好),这个起始模版带有个人非常喜欢的tailwindcss,由于raact native使用sheetstyle这种风格的样式,不太喜欢.当然,我们使用react native paper组件库时,就要对组件库里的组件使…...
打卡第二十三天
仔细回顾一下之前21天的内容,没跟上进度的同学补一下进度。 作业: 自行学习参考如何使用kaggle平台,写下使用注意点,并对下述比赛提交代码。 使用Kaggle平台的注意点 Kaggle是一个数据科学竞赛平台,提供了丰富的数据…...
关于汇编语言与接口技术——单片机串行口的学习心得
学习目标: 1.了解AT89S51单片机片内串行口的基本工作原理 2.掌握与串行口有关的特殊功能寄存器以及四种工作方式 一、串行口内部结构 单片机串行口有两个独立的接收、发送缓冲器SBUF,属于特殊功能寄存器,可以同时发送、接收数据;…...
汇川PLC通过Profinet转ModbusTCP网关读取西门子PLC数据案例
Modbus TCP主站即Modbus TCP客户端,Modbus TCP主站最多支持同时与31个Modbus TCP从站 。(Modbus TCP服务器)进行通信。 第一步设置PLC IP地址; 默认PLC IP地址为192.168.1.88。根据需要判断是否需要修改。 第二步添加Modbus TCP…...
2025-05-20 模型下载--文本向量化--Faiss检索
模型下载 使用Python脚本进行下载 from huggingface_hub import snapshot_download # import os# os.environ["HF_ENDPOINT"] "https://hf-mirror.com" # 自定义下载目录(Windows 路径建议用 raw string 或 pathlib) download_di…...
idea本地debug断点小技巧
idea本地debug断点小技巧 简单的设置断点条件 断点后,右键这个断点,可以在 condition 中填写能得出布尔的表达式 a 1 你如果写如下,表示先给他赋值,然后断住 a 2; true 断点后设置某个变量的值 在 debug 区域可以设置变量…...
Mybatis面向接口编程
添加与Mapper接口的映射 <!--UserMapper.xml--> <?xml version"1.0" encoding"UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> …...
谈谈对《加密算法》的理解
文章目录 一、什么是加密算法?二、常见的加密算法有哪些?2.1 对称加密2.2 非对称加密2.3 哈希算法 三、加密算法代码展示3.1 MD5加密3.2 秘钥加密3.3 AES加密解密 四、加密算法的使用场景 一、什么是加密算法? 加密算法是一种通过数学方法将…...
代码随想录算法训练营第60期第四十二天打卡
大家好,今天还是继续我们的动态规划里面的背包问题,前面我们主要接触的是0-1背包和完全背包,其实这两个背包问题主要就是看看每一件物品我们是否有多件,如果每一件物品我们只能取一次的话那这样我们就是0-1背包,如果每…...
Java并发进阶系列:深度讨论官方关于jdk1.8ConcurrentHashMap的computeIfAbsent源代码修复逻辑
在文章中《深度解析官方关于jdk1.8的resizeStamp的bug处理过程》,我们讨论关于CHM的核心设计——resizeStam需要修复的处理过程,本文再次基于openJDK的bugs讨论组提出的CHM源代码另外一个会造成死循环的bug,默认读者已经掌握CHM的核心源代码实…...
npm vs npx 终极指南:从原理到实战的深度对比 全面解析包管理器与包执行器的核心差异,助你精准选择工具
npm vs npx 终极指南:从原理到实战的深度对比 全面解析包管理器与包执行器的核心差异,助你精准选择工具 一、核心定位差异 #mermaid-svg-xM2GZt0lejj6hYk6 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}…...
RK3588 IREE+Vulkan ResNet50推理测试
RK3588 IREE+Vulkan ResNet50推理测试 背景一.性能数据【暂不考虑该框架】二.操作步骤2.1 搭建NFS服务,解决IREE编译时,空间不足的问题2.2 编译、安装`IREE`2.2.1 挂载NFS2.2.2 安装依赖2.2.3 编译`IREE`2.2.4 获取驱动及设备信息2.2.5 下载推理图片2.2.6 生成`onnx`模型转换脚…...
Blaster - Multiplayer P77-P89: 武器瞄准机制
P78_ Blaster HUD And Player Controller P78_1 创建PC和HUD P78_2 Tick Component > SetHUDCrosshairs() P79_ Drawing the Crosshairs DrawHUD() Call Every Tick. #include "HUD/BlasterHUD.h"void ABlasterHUD::DrawHUD() {Super::DrawHUD();FVector2D View…...
【每天一个MCP】【记录向】:准备工作,创建github项目
记录一下: 新建一个仓库 各种填写项目信息 点击创建 👆不错,开张了~ 尝试一下这个桌面版的github 登录 果然方便 太高级了。~...
元宇宙中的虚拟经济:机遇与挑战
随着元宇宙概念的兴起,虚拟经济逐渐成为全球科技和经济领域关注的焦点。元宇宙不仅是一个虚拟的社交和娱乐空间,更是一个充满经济活动的全新生态系统。从虚拟货币到数字资产,从虚拟商品交易到去中心化金融(DeFi)&#…...
多环境回测模拟不同市场条件下的策略表现
Backtrader库的核心组件包括数据源、策略、执行引擎和结果分析器。通过组合这些组件,可以构建一个完整的交易系统。 在进行回测之前,需要准备历史市场数据。Backtrader支持多种数据格式,如CSV文件、Pandas数据框等。 加载数据 可以使用Backtrader提供的bt.feeds.YahooFina…...
nRF Connect SDK开发之(1)环境搭建
目录 一、安装 nRF Connect SDK 开发环境 1)git 2)python 3) J-Link 编辑 4)nrfutil 1.将nrfutil应用程序所在目录添加到系统路径PATH 2.在命令行中输入nrfutil检测是否可以正常运行 3.运行命令以列出可用命令:nrfutil search 4.安装 device 、toolchain-man…...
武汉火影数字|数字展厅展馆制作:沉浸式体验,全方位互动
在科技飞速发展的当下,数字技术正以前所未有的速度渗透到各个领域,展厅展馆行业也不例外。数字展厅展馆作为传统展厅展馆的创新升级,正逐渐成为展示领域的新宠,为观众带来前所未有的沉浸式体验。 与传统展厅相比,数字展…...
MinIO集群故障,其中一块driver-4异常
现象 driver-4 Offline,驱动状态为未知。 处理过程 建议每个驱动下面新建个文件,便于根据目录里面的drive-x文件区分驱动 rootpve:/mnt/drive-4# df -h Filesystem Size Used Avail Use% Mounted on /dev/sdb 3.7T 695G 3.0T 19% …...
整型数相加的溢出
当正溢出时,返回TMax,负溢出时,返回TMin。这种运算常用在执行数字信号处理的程序中。 程序代码 int saturating_add(int x,int y);void main() {static int x,y;static int i1,sum;x(i<<15)-1;y(i<<15)-1;sumsaturating_add(x,…...
科目一知识点快速回顾与总结
科目一知识点笔记 扣12分的情况 高速上倒掉逆12;普通路上倒掉1逆3 使用伪造,变造的驾驶证(行驶证)一次记12 饮酒驾驶12 代替实际机动车驾驶人接受交通违法行为处罚和记分牟取经济利益的,一次记12 驾驶校车&#x…...
大模型高效微调技术全面解析:从PEFT原理到实战应用
目录 1. 大语言模型与微调概述 1.1 大语言模型(LLM)简介 1.2 微调的必要性与挑战 2. 参数高效微调(PEFT)技术原理 2.1 PEFT概述 2.2 主要PEFT方法 2.2.1 适配器(Adapters) 2.2.2 LoRA(低秩自适应) 2.2.3 QLoRA(量化LoRA) 2.2.4 IA3(通过抑制和放大内部激活注入适配器)…...
51单片机编程学习笔记——无源蜂鸣器演奏《祝你生日快乐》
大纲 蜂鸣器分类有源蜂鸣器无源蜂鸣器 电路图发声演奏《祝你生日快乐》模拟88键钢琴发声音符时值(Note Value)演奏完整代码 蜂鸣器是一种常用的电子发声器件,有源蜂鸣器和无源蜂鸣器在工作原理和特性上有明显区别。 蜂鸣器分类 有源蜂鸣器 …...
大语言模型的评估指标
介绍 语言模型的 BLEU、ROUGE 和 困惑度(Perplexity) 三种常用的语言模型评估指标,帮助你快速理解它们的含义、计算方法及优缺点。 概览 这些指标都是为了解决:「我们自动生成的句子到底有多好?」这个问题࿱…...
绿色免安装 批量重命名软件 标签管理,文件整理提升效率
各位文件整理小能手们,今天给大家介绍一款超牛的工具——拖把更名器!它是专门搞批量文件重命名的实用家伙,能对文件名、扩展名还有音乐文件标签进行高效管理。 咱先说说它的核心功能。首先是基础重命名操作,它能添加、删除、替换…...
python-leetcode 68.有效的括号
题目: 给定一个只包括“(”),{,},[,] 的字符串 s ,判断字符串是否有效。 有效字符串需满足:左括号必须用相同类型的右括号闭合;左括号必须以正确的顺序闭合,…...
ES(Elasticsearch) 基本概念(一)
Elasticsearch作为当前最流行的开源搜索和分析引擎,广泛应用于日志分析、全文搜索、业务智能等领域。Elasticsearch是一个基于 Apache Lucene 构建的分布式搜索和分析引擎、可扩展数据存储和矢量数据库。它针对生产级工作负载的速度和相关性进行了优化。使用 Elasti…...
软考软件评测师—— 操作系统综合知识
目录 嵌入式操作系统 三态模型 操作系统概念 其他操作系统 绝对路径与相对路径 段页式管理 嵌入式操作系统 嵌入式操作系统(EOS)具有以下特点: 可裁剪性:支持开发性和可伸缩性的体系结构,能够根据需求进行功能…...
简单的re(零基础AI做题)
签到题一般简单,上来就是IDA(不管了,IDA!!!) 找主函数,这个题类似的做过好几个了 int __fastcall main(int argc, const char **argv, const char **envp) {__int64 v3; // rdx__i…...
一文掌握 LoRA 常见变体
上文主要是对于 LoRA 的原理和一些常见问题进行了讲解,该篇主要是讲解一些常见的 LoRA 变体。本笔记供个人学习总结使用。 QLoRA QLoRA 是在 LoRA 的基础上进行的改进,旨在进一步减少微调大语言模型时的内存占用,同时保持或仅轻微牺牲性能。主…...
QT高DPI支持
核心函数: qputenv("QT_SCREEN_SCALE_FACTORS", envVar); 如: qputenv("QT_SCREEN_SCALE_FACTORS", "1.2"); 这是我个人目前用的效果最好的,可惜数值不能小于1,小于1的时候,会出问题。 需要程序…...