分类接口开发

文章目录

    • 1.查询所有一级分类
        • 1.sun-club-application-controller 控制层
          • 1.SubjectCategoryController.java 定义基础的queryPrimaryCategory,调用领域层
        • 2.sun-club-domain 领域层
          • 1.SubjectCategoryDomainService.java
          • 2.SubjectCategoryConverter.java
          • 3.SubjectCategoryDomainServiceImpl.java
        • 3.sun-club-infra 基础设施层
          • 1.service
            • 1.SubjectCategoryService.java
            • 2.SubjectCategoryServiceImpl.java
          • 2.mapper
            • 1.SubjectCategoryDao.java
            • 2.SubjectCategoryDao.xml
        • 4.回到sun-club-application-controller
          • 1.SubjectCategoryDTOConverter.java
          • 2.SubjectCategoryController.java
          • 3.测试
          • 4.问题分析
        • 5.使用动态SQL优化查询
          • 1.sun-club-infra
            • 1.SubjectCategoryDao.xml
            • 2.SubjectCategoryDao.java
            • 3.SubjectCategoryService.java
            • 4.SubjectCategoryServiceImpl.java
          • 2.sun-club-domain
            • 1.SubjectCategoryDomainServiceImpl.java
            • 2.测试
    • 2.根据分类id查二级分类
        • 1.sun-club-application-controller
          • 1.SubjectCategoryController.java
        • 2.修改所有queryPrimaryCategory为queryCategory
        • 3.修改动态sql,使其可以只查询出未逻辑删除的记录
    • 3.分类模块接口开发
        • 1.接口设计
        • 2.sun-club-application-controller
          • 1.SubjectCategoryController.java
        • 3.sun-club-domain
          • 1.SubjectCategoryDomainService.java
          • 2.SubjectCategoryDomainServiceImpl.java
        • 4.sun-club-infra
          • 1.SubjectCategoryService.java
          • 2.SubjectCategoryServiceImpl.java
          • 3.SubjectCategoryDao.java
          • 4.SubjectCategoryDao.xml
          • 5.启动测试
    • 4.删除分类接口开发
        • 1.基本设计
        • 2.sun-club-application-controller
          • 1.SubjectCategoryController.java
        • 3.sun-club-common
          • 1.IsDeleteFlagEnum.java
        • 4.sun-club-domain
          • 1.SubjectCategoryDomainService.java
          • 2.SubjectCategoryDomainServiceImpl.java
          • 3.测试
    • 5.分类接口总览
        • 1.使用commons-lang3进行开发
          • 1.sun-club-common引入依赖
          • 2.SubjectCategoryController.java使用isBlank进行校验
        • 2.SubjectCategoryDomainServiceImpl.java 插入时设置逻辑删除
        • 3.查询一级分类
          • 1.SubjectCategoryDao.xml,添加逻辑删除字段
          • 2.sun-club-common添加分类的枚举CategoryTypeEnum.java
          • 3.SubjectCategoryDomainServiceImpl.java查询未删除字段
          • 4.SubjectCategoryController.java修改查询一级分类逻辑,使其传入category_type
          • 5.修改接口
          • 6.重启测试
        • 4.查询二级分类
          • 1.修改接口

1.查询所有一级分类

1.sun-club-application-controller 控制层
1.SubjectCategoryController.java 定义基础的queryPrimaryCategory,调用领域层
    @PostMapping("/queryPrimaryCategory")public Result<List<SubjectCategoryDTO>> queryPrimaryCategory() {List<SubjectCategoryBO> subjectCategoryBOList = subjectCategoryDomainService.queryPrimaryCategory();}
2.sun-club-domain 领域层
1.SubjectCategoryDomainService.java
    /*** 查询一级分类* @return*/List<SubjectCategoryBO> queryPrimaryCategory();
2.SubjectCategoryConverter.java
    // 将List<SubjectCategory>转换为List<SubjectCategoryBO>List<SubjectCategoryBO> convertSubjectCategoryToBo(List<SubjectCategory> subjectCategoryList);
3.SubjectCategoryDomainServiceImpl.java
    @Overridepublic List<SubjectCategoryBO> queryPrimaryCategory() {// 查询一级分类List<SubjectCategory> subjectCategoryList = subjectCategoryService.queryPrimaryCategory();// 将List<SubjectCategory>转换为List<SubjectCategoryBO>List<SubjectCategoryBO> subjectCategoryBOList = SubjectCategoryConverter.INSTANCE.convertSubjectCategoryToBo(subjectCategoryList);// 打印日志if (log.isInfoEnabled()) {log.info("SubjectCategoryDomainServiceImpl queryPrimaryCategory, subjectCategoryBOList:{}", JSON.toJSONString(subjectCategoryBOList));}return subjectCategoryBOList;}
3.sun-club-infra 基础设施层
1.service
1.SubjectCategoryService.java
    /*** 查询一级分类* @return*/List<SubjectCategory> queryPrimaryCategory();
2.SubjectCategoryServiceImpl.java
    /*** 查询一级分类* @return*/@Overridepublic List<SubjectCategory> queryPrimaryCategory() {return this.subjectCategoryDao.queryPrimaryCategory();}
2.mapper
1.SubjectCategoryDao.java
    /*** 查询一级分类* @return*/List<SubjectCategory> queryPrimaryCategory();
2.SubjectCategoryDao.xml
    <!--查询所有一级分类--><select id="queryPrimaryCategory" resultMap="SubjectCategoryMap">selectid, category_name, category_type, image_url, parent_id, created_by, created_time, update_by, update_timefrom subject_categorywhere parent_id = 0and is_deleted = 0</select>
4.回到sun-club-application-controller
1.SubjectCategoryDTOConverter.java
    // 将List<SubjectCategoryBO>转换为List<SubjectCategoryDTO>List<SubjectCategoryDTO> convertSubjectCategoryToDto(List<SubjectCategoryBO> subjectCategoryBOList);
2.SubjectCategoryController.java
    @PostMapping("/queryPrimaryCategory")public Result<List<SubjectCategoryDTO>> queryPrimaryCategory() {List<SubjectCategoryBO> subjectCategoryBOList = subjectCategoryDomainService.queryPrimaryCategory();// 转换BO为DTOList<SubjectCategoryDTO> subjectCategoryDTOList = SubjectCategoryDTOConverter.INSTANCE.convertSubjectCategoryToDto(subjectCategoryBOList);return Result.ok(subjectCategoryDTOList);}
3.测试

image-20240524201928312

4.问题分析
  • 这样写的查询语句就太死了,所以需要使用动态SQL来优化
5.使用动态SQL优化查询
1.sun-club-infra
1.SubjectCategoryDao.xml
    <!--查询所有一级分类--><select id="queryPrimaryCategory" resultMap="SubjectCategoryMap">selectid, category_name, category_type, image_url, parent_id, created_by, created_time, update_by, update_timefrom subject_category<where><if test="id != null">and id = #{id}</if><if test="categoryName != null and categoryName != ''">and category_name = #{categoryName}</if><if test="categoryType != null">and category_type = #{categoryType}</if><if test="imageUrl != null and imageUrl != ''">and image_url = #{imageUrl}</if><if test="parentId != null">and parent_id = #{parentId}</if><if test="createdBy != null and createdBy != ''">and created_by = #{createdBy}</if><if test="createdTime != null">and created_time = #{createdTime}</if><if test="updateBy != null and updateBy != ''">and update_by = #{updateBy}</if><if test="updateTime != null">and update_time = #{updateTime}</if><if test="isDeleted != null">and is_deleted = #{isDeleted}</if></where></select>
2.SubjectCategoryDao.java
    /*** 查询一级分类* @return*/List<SubjectCategory> queryPrimaryCategory(@Param("subjectCategory") SubjectCategory subjectCategory);
3.SubjectCategoryService.java
    /*** 查询一级分类* @return*/List<SubjectCategory> queryPrimaryCategory(SubjectCategory subjectCategory);
4.SubjectCategoryServiceImpl.java
    /*** 查询一级分类* @return*/@Overridepublic List<SubjectCategory> queryPrimaryCategory(SubjectCategory subjectCategory) {return this.subjectCategoryDao.queryPrimaryCategory(subjectCategory);}
2.sun-club-domain
1.SubjectCategoryDomainServiceImpl.java

image-20240524204420230

2.测试

image-20240524205350528

2.根据分类id查二级分类

1.sun-club-application-controller
1.SubjectCategoryController.java
    /*** 根据id查询二级分类* @param subjectCategoryDTO* @return*/@PostMapping("/queryCategoryByPrimary")public Result<List<SubjectCategoryDTO>> queryCategoryByPrimary(@RequestBody SubjectCategoryDTO subjectCategoryDTO) {try {// 打日志if (log.isInfoEnabled()) {log.info("SubjectCategoryController queryCategoryByPrimary SubjectCategoryDTO, subjectCategoryDTO:{}", JSON.toJSONString(subjectCategoryDTO));}// 参数校验Preconditions.checkNotNull(subjectCategoryDTO.getParentId(), "分类id不能为空");// 转换DTO为BOSubjectCategoryBO subjectCategoryBO = SubjectCategoryDTOConverter.INSTANCE.convertDTOToSubjectCategory(subjectCategoryDTO);// 查询二级分类List<SubjectCategoryBO> subjectCategoryBOList = subjectCategoryDomainService.queryCategory(subjectCategoryBO);// 转换BO为DTOList<SubjectCategoryDTO> subjectCategoryDTOList = SubjectCategoryDTOConverter.INSTANCE.convertSubjectCategoryToDto(subjectCategoryBOList);return Result.ok(subjectCategoryDTOList);} catch (Exception e) {// 记录日志log.error("SubjectCategoryController queryPrimaryCategory error:{}", e.getMessage(), e);return Result.fail("查询一级分类失败");}}
2.修改所有queryPrimaryCategory为queryCategory
3.修改动态sql,使其可以只查询出未逻辑删除的记录

image-20240524215701911

3.分类模块接口开发

1.接口设计

image-20240525142412928

2.sun-club-application-controller
1.SubjectCategoryController.java
    /*** 更新分类* @param subjectCategoryDTO* @return*/@PostMapping("/update")public Result<Boolean> update(@RequestBody SubjectCategoryDTO subjectCategoryDTO) {try {if (log.isInfoEnabled()) {log.info("SubjectCategoryController update SubjectCategoryDTO, subjectCategoryDTO:{}", JSON.toJSONString(subjectCategoryDTO));}// 参数校验Preconditions.checkNotNull(subjectCategoryDTO.getId(), "分类id不能为空");// 转换DTO为BOSubjectCategoryBO subjectCategoryBO = SubjectCategoryDTOConverter.INSTANCE.convertDTOToSubjectCategory(subjectCategoryDTO);Boolean result =  subjectCategoryDomainService.update(subjectCategoryBO);return Result.ok(result);} catch (Exception e) {log.error("SubjectCategoryController update error:{}", e.getMessage(), e);return Result.fail("更新分类失败");}}
3.sun-club-domain
1.SubjectCategoryDomainService.java
    /*** 更新分类* @param subjectCategoryBO* @return*/Boolean update(SubjectCategoryBO subjectCategoryBO);
2.SubjectCategoryDomainServiceImpl.java
    @Overridepublic Boolean update(SubjectCategoryBO subjectCategoryBO) {if (log.isInfoEnabled()) {log.info("SubjectCategoryDomainServiceImpl update SubjectCategoryBO, SubjectCategoryBO:{}", JSON.toJSONString(subjectCategoryBO));}SubjectCategory subjectCategory = SubjectCategoryConverter.INSTANCE.convertBoToSubjectCategory(subjectCategoryBO);int update = subjectCategoryService.update(subjectCategory);return update > 0;}
4.sun-club-infra
1.SubjectCategoryService.java
    /*** 修改数据** @param subjectCategory 实例对象* @return 实例对象*/int update(SubjectCategory subjectCategory);
2.SubjectCategoryServiceImpl.java
    /*** 修改数据** @param subjectCategory 实例对象* @return 实例对象*/@Overridepublic int update(SubjectCategory subjectCategory) {return this.subjectCategoryDao.update(subjectCategory);}
3.SubjectCategoryDao.java
    /*** 修改数据** @param subjectCategory 实例对象* @return 影响行数*/int update(SubjectCategory subjectCategory);
4.SubjectCategoryDao.xml
    <!--通过主键修改数据--><update id="update">update subject_category<set><if test="categoryName != null and categoryName != ''">category_name = #{categoryName},</if><if test="categoryType != null">category_type = #{categoryType},</if><if test="imageUrl != null and imageUrl != ''">image_url = #{imageUrl},</if><if test="parentId != null">parent_id = #{parentId},</if><if test="createdBy != null and createdBy != ''">created_by = #{createdBy},</if><if test="createdTime != null">created_time = #{createdTime},</if><if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if><if test="updateTime != null">update_time = #{updateTime},</if><if test="isDeleted != null">is_deleted = #{isDeleted},</if></set>where id = #{id}</update>
5.启动测试

image-20240525144903818

image-20240525144923069

4.删除分类接口开发

1.基本设计

image-20240525145418093

2.sun-club-application-controller
1.SubjectCategoryController.java
    /*** 删除分类* @param subjectCategoryDTO* @return*/@PostMapping("/delete")public Result<Boolean> delete(@RequestBody SubjectCategoryDTO subjectCategoryDTO) {try {if (log.isInfoEnabled()) {log.info("SubjectCategoryController delete SubjectCategoryDTO, subjectCategoryDTO:{}", JSON.toJSONString(subjectCategoryDTO));}// 参数校验Preconditions.checkNotNull(subjectCategoryDTO.getId(), "分类id不能为空");// 转换DTO为BOSubjectCategoryBO subjectCategoryBO = SubjectCategoryDTOConverter.INSTANCE.convertDTOToSubjectCategory(subjectCategoryDTO);Boolean result =  subjectCategoryDomainService.delete(subjectCategoryBO);return Result.ok(result);} catch (Exception e) {log.error("SubjectCategoryController delete error:{}", e.getMessage(), e);return Result.fail("删除分类失败");}}
3.sun-club-common
1.IsDeleteFlagEnum.java
package com.sunxiansheng.subject.common.enums;import lombok.Getter;/*** Description: 删除标识枚举* @Author sun* @Create 2024/5/24 9:53* @Version 1.0*/
@Getter
public enum IsDeleteFlagEnum {DELETED(1, "已删除"),UN_DELETED(0, "未删除");public int code;public String desc;IsDeleteFlagEnum(int code, String desc) {this.code = code;this.desc = desc;}/*** 根据code获取枚举* @param code* @return*/public static IsDeleteFlagEnum getByCode(int code) {for (IsDeleteFlagEnum value : values()) {if (value.code == code) {return value;}}return null;}
}
4.sun-club-domain
1.SubjectCategoryDomainService.java
    /*** 删除分类* @param subjectCategoryBO* @return*/Boolean delete(SubjectCategoryBO subjectCategoryBO);
2.SubjectCategoryDomainServiceImpl.java
    @Overridepublic Boolean delete(SubjectCategoryBO subjectCategoryBO) {if (log.isInfoEnabled()) {log.info("SubjectCategoryDomainServiceImpl delete SubjectCategoryBO, SubjectCategoryBO:{}", JSON.toJSONString(subjectCategoryBO));}SubjectCategory subjectCategory = SubjectCategoryConverter.INSTANCE.convertBoToSubjectCategory(subjectCategoryBO);// 逻辑删除subjectCategory.setIsDeleted(1);int update = subjectCategoryService.update(subjectCategory);return update > 0;}
3.测试

image-20240525151126364

image-20240525151141999

5.分类接口总览

1.使用commons-lang3进行开发
1.sun-club-common引入依赖
        <!-- commons-lang3 --><dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.11</version></dependency>
2.SubjectCategoryController.java使用isBlank进行校验

image-20240525152110926

2.SubjectCategoryDomainServiceImpl.java 插入时设置逻辑删除

image-20240525152420094

3.查询一级分类
1.SubjectCategoryDao.xml,添加逻辑删除字段

image-20240525153011571

2.sun-club-common添加分类的枚举CategoryTypeEnum.java
package com.sunxiansheng.subject.common.enums;import lombok.Getter;/*** Description: 删除标识枚举* @Author sun* @Create 2024/5/24 9:53* @Version 1.0*/
@Getter
public enum CategoryTypeEnum {PRIMARY(1, "岗位大类"),SECOND(2, "二级分类");public int code;public String desc;CategoryTypeEnum(int code, String desc) {this.code = code;this.desc = desc;}/*** 根据code获取枚举* @param code* @return*/public static CategoryTypeEnum getByCode(int code) {for (CategoryTypeEnum value : values()) {if (value.code == code) {return value;}}return null;}
}
3.SubjectCategoryDomainServiceImpl.java查询未删除字段

image-20240525154724130

4.SubjectCategoryController.java修改查询一级分类逻辑,使其传入category_type

image-20240525155259973

5.修改接口

image-20240525155336817

6.重启测试

image-20240525155444272

4.查询二级分类
1.修改接口

image-20240525155854718

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/32910.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python 算法交易实验72 QTV200第一步: 获取原始数据并存入队列

说明 最近的数据流往前进了一步&#xff0c;我觉得基本可以开始同步的推进QTV200了。上次规划了整体的数据流&#xff0c;现在开始第一步。 内容 1 结构位置 这是上次的总体图&#xff1a; 以下是这次要实现的一小部分&#xff1a; 从结构上&#xff0c;这个是整体数据流的…

力扣-接雨水

文章目录 概要题解解释代码比较左右高度处理右侧为什么双指针法有效 概要 原题链接&#xff1a;接雨水 题解 思路&#xff1a;双指针 核心思想&#xff1a;对于任意位置 i&#xff0c;能够存储的雨水量取决于位置 i 左侧和右侧的最大高度中的较小值减去 height[i]。即 min(le…

使用MySQL WorkBbench 连接远程服务器上的mysql教程(包含踩过的坑)

最近在学习MySQL&#xff0c;想要装一个可视化程序&#xff0c;但是希望把脏活累活留给服务器&#xff0c;于是自己电脑上安装了一个MySQL Workbench作为Client。下面记录一下配置的过程。 服务器端MySQL配置 安装MySQL这里就不赘述啦&#xff0c;可以参考 https://segmentfa…

路经总和-二叉树题

112. 路径总和 - 力扣&#xff08;LeetCode&#xff09; 1、用队列 两个队列&#xff0c;先进先出 node队列存节点&#xff1b; sum队列存每条路径走到这个节点的val的总和&#xff1b; 节点和总和对应着同时存入队列&#xff0c;同时出队列&#xff1b; class Solution …

springboot+vue+mybatis旅游管理+PPT+论文+讲解+售后

随着人民生活水平的提高,旅游业已经越来越大众化,而旅游业的核心是信息,不论是对旅游管理部门、对旅游企业,或是对旅游者而言,有效的获取旅游信息,都显得特别重要.旅游管理系统将使旅游相关信息管理工作规范化、信息化、程序化,提供旅游景点、旅游线路,旅游新闻等服务本文以jsp…

压力测试Monkey命令参数和报告分析

目录 常用参数 -p <测试的包名列表> -v 显示日志详细程度 -s 伪随机数生成器的种子值 --throttle < 毫秒> --ignore-crashes 忽略崩溃 --ignore-timeouts 忽略超时 --monitor-native-crashes 监视本地崩溃代码 --ignore-security-exceptions 忽略安全异常 …

如何使用ig507金融数据库的股票接口,股票API来获取MACD指标

一、MACD指标简介 MACD&#xff08;Moving Average Convergence Divergence&#xff0c;移动平均收敛/发散&#xff09;是一种趋势跟踪动量指标&#xff0c;用于分析股票或其他金融产品的价格趋势。MACD由两部分组成&#xff1a;差离值&#xff08;DIF&#xff09;和信号线&am…

借助ChatGPT降低学术论文重复率,使用技巧全攻略,实用有效,快速上手

大家好&#xff0c;感谢关注。我是七哥&#xff0c;一个在高校里不务正业&#xff0c;折腾学术科研AI实操的学术人。可以&#xff08;yida985&#xff09;交流学术写作或ChatGPT等AI领域相关问题&#xff0c;多多交流&#xff0c;相互成就&#xff0c;共同进步。 经常有学术同…

Python编程技巧:如何正确使用with语句(Python中with用法详解)

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 文章内容 📒📝 基本语法📝 处理文件📝 处理网络连接📝 管理线程锁📝 管理数据库连接📝 管理临时目录和文件📝 使用上下文装饰器📝 自定义上下文管理器🎯 示例1🎯 示例2📝 使用多个上下文管理器📝 上下…

Visual Studio开发环境搭建

原文&#xff1a;https://blog.c12th.cn/archives/25.html Visual Studio开发环境搭建 测试&#xff1a;笔记本原装操作系统&#xff1a;Windows 10 家庭中文版 资源分享链接&#xff1a;提取码&#xff1a;qbt2 注意事项&#xff1a;注意查看本地硬盘是否够用&#xff0c;建议…

UE5开发游戏Tutorial

文章目录 PlayerStart 初始化设置默认 LevelBP_Character 初始化BP_Character 添加动画BP_Character 攻击BP_Enemy 初始化 以及 AI 运动Camera Collision 相机碰撞BP_Character 生命以及伤害Wave Spawner 波生成UI 初始化以及 Damage Screen指定位置随机生成添加声音环境 Envir…

茴香豆的使用

RAG RAG 模型的核心在于两大部分&#xff1a;检索器&#xff08;Retriever&#xff09;和生成器&#xff08;Generator&#xff09;。检索器的作用是从一个庞大的数据集中&#xff0c;根据输入的问题或者提示&#xff0c;快速有效地检索出最相关的信息或文档。这一步骤通常利用…

【算法专题--链表】两两交换链表中的节点 -- 高频面试题(图文详解,小白一看就懂!!!)

目录 一、前言 二、题目描述 三、解题方法 ⭐双指针 -- 采用哨兵位头节点 &#x1f95d; 什么是哨兵位头节点&#xff1f; &#x1f34d; 解题思路 &#x1f34d; 案例图解 四、总结与提炼 五、共勉 一、前言 两两交换链表中的节点 这道题&#xff0c;可以说…

【LLM之KG】CoK论文阅读笔记

研究背景 大规模语言模型&#xff08;LLMs&#xff09;在许多自然语言处理&#xff08;NLP&#xff09;任务中取得了显著进展&#xff0c;特别是在零样本/少样本学习&#xff08;In-Context Learning, ICL&#xff09;方面。ICL不需要更新模型参数&#xff0c;只需利用几个标注…

网站监控定时计划任务

网站监控是一种保护网站安全和稳定性的重要手段&#xff0c;而定时计划任务则是网站监控的一种常见方法。通过设置定时计划任务&#xff0c;可以定期对网站进行监测和检测&#xff0c;及时发现并解决潜在的问题&#xff0c;从而保障网站的正常运行。 首先&#xff0c;网站监控定…

卧槽,6。套死你猴子,Tomcat访问html页面显示源码?

卧槽&#xff0c;6。Tomcat访问html页面显示源码&#xff1f; 元凶text/explain //踩坑&#xff01;&#xff01;&#xff01;不能用 servletResponse.setContentType("text/explain&#xff0c;否则访问html会看到源码&#xff0c;而不是渲染页面; charsetUTF-8"…

通过ESP32读取I2C温湿度传感器项目:协议与代码实例

简介 在本项目中&#xff0c;我们将使用ESP32开发板读取I2C温湿度传感器的数据。我们将详细介绍I2C协议&#xff0c;并提供图文并茂的代码实例&#xff0c;帮助你快速上手。 项目流程 选择硬件&#xff1a;ESP32开发板、I2C温湿度传感器&#xff08;如DHT12、HTU21D、SHT30等&a…

硬盘数据恢复软件,推荐5种适合你的方法来恢复硬盘数据

硬盘数据恢复软件&#xff0c;作为解决数据丢失问题的关键工具&#xff0c;帮助用户在重要文件丢失时迅速找回数据。本教程介绍5种恢复实用硬盘数据方法&#xff0c;适应不同类型和严重程度的数据损坏情况。 文章摘要&#xff1a; 一. 硬盘数据恢复软件 二. 数据恢复原理 三. …

LED显示屏的换帧频率与刷新频率:技术细节与市场发展

在当今数字化时代&#xff0c;LED显示屏已成为信息传递和广告宣传的重要工具。然而&#xff0c;对于普通消费者来说&#xff0c;LED显示屏背后的技术细节可能仍然是一个谜。今天&#xff0c;我们将深入探讨LED显示屏中的两个关键概念&#xff1a;换帧频率和刷新频率&#xff0c…

分布式锁实现方案

分布式锁 1 什么是分布式锁 ​ 就是在分布式环境下&#xff0c;保证某个公共资源只能在同一时间被多进程应用的某个进程的某一个线程访问时使用锁。 2 几个使用场景分析 一段代码同一时间只能被同一个不同进程的一个线程执行 库存超卖 (库存被减到 负数)&#xff0c;上面案…