新增题目接口开发

文章目录

    • 1.基本设计
    • 2.生成CRUD代码
        • 1.生成五张表的代码
          • 1.subject_info
          • 2.subject_brief
          • 3.subject_judge
          • 4.subject_multiple
          • 5.subject_radio
        • 2.将所有的dao放到mapper文件夹
        • 3.将所有实体类使用lombok简化
        • 4.删除所有mapper的@Param("pageable") Pageable pageable
        • 5.删除所有service的分页查询接口
    • 3.具体实现
        • 1.sun-club-application-controller
          • 1.dto
            • 1.SubjectInfoDTO.java
            • 2.SubjectAnswerDTO.java
          • 2.convert
            • 1.SubjectAnswerDTOConverter.java
            • 2.SubjectInfoDTOConverter.java
        • 2.sun-club-domain
          • 1.entity
            • 1.SubjectAnswerBO.java
            • 2.SubjectInfoBO.java
          • 2.convert
            • 1.SubjectInfoConverter.java
          • 3.service
            • 1.SubjectInfoDomainService.java
        • 3.sun-club-common
          • 1.enums
            • 1.SubjectInfoTypeEnum.java 题目类型枚举
        • 4.sun-club-domain
          • 1.subject包构建一个题目类型工厂
            • 1.SubjectTypeHandler.java
            • 2.BriefTypeHandler.java
            • 3.JudgeTypeHandler.java
            • 4.MultipleTypeHandler.java
            • 5.RadioTypeHandler.java
            • 6.SubjectTypeHandlerFactory.java
          • 2.service包来注入工厂,调用插入方法
            • 1.SubjectInfoDomainService.java
            • 2.SubjectInfoDomainServiceImpl.java
          • 3.单选题的插入
            • 1.RadioTypeHandler.java
        • 5.sun-club-infra
          • 1.SubjectMappingDao.xml的批量插入如果逻辑删除字段为空就设置成0
          • 2.SubjectRadioDao.xml 如果逻辑删除字段为空就设置成0
        • 6.sun-club-application-controller
          • SubjectController.java
        • 7.接口测试

1.基本设计

image-20240527135224721

2.生成CRUD代码

1.生成五张表的代码
1.subject_info

image-20240526172642220

2.subject_brief

image-20240526172735698

3.subject_judge

4.subject_multiple

image-20240526173001618

5.subject_radio

image-20240526173107512

2.将所有的dao放到mapper文件夹

image-20240527131816152

3.将所有实体类使用lombok简化
4.删除所有mapper的@Param(“pageable”) Pageable pageable
5.删除所有service的分页查询接口

3.具体实现

1.sun-club-application-controller
1.dto
1.SubjectInfoDTO.java
package com.sunxiansheng.subject.application.dto;import lombok.Data;import java.io.Serializable;
import java.util.List;/*** 题目信息表(SubjectInfo)实体类** @author makejava* @since 2024-05-26 17:26:43*/
@Data
public class SubjectInfoDTO implements Serializable {private static final long serialVersionUID = -99877276843752542L;/*** 题目名称*/private String subjectName;/*** 题目难度*/private Integer subjectDifficult;/*** 题目类型 1单选 2多选 3判断 4简答*/private Integer subjectType;/*** 题目分数*/private Integer subjectScore;/*** 题目解析*/private String subjectParse;/*** 题目答案*/private String subjectAnswer;/*** 分类id*/private List<Integer> categoryIds;/*** 标签id*/private List<Integer> labelIds;/*** 答案选项*/private List<SubjectAnswerDTO> optionList;
}
2.SubjectAnswerDTO.java
package com.sunxiansheng.subject.application.dto;import lombok.Data;import java.io.Serializable;/*** Description: 题目答案dto* @Author sun* @Create 2024/5/27 13:39* @Version 1.0*/
@Data
public class SubjectAnswerDTO implements Serializable {/*** 答案选项标识*/private Integer optionType;/*** 答案*/private String optionContent;/*** 是否正确*/private Integer isCorrect;}
2.convert
1.SubjectAnswerDTOConverter.java
package com.sunxiansheng.subject.application.convert;import com.sunxiansheng.subject.application.dto.SubjectAnswerDTO;
import com.sunxiansheng.subject.domain.entity.SubjectAnswerBO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;import java.util.List;/*** Description: DTO与BO转换* @Author sun* @Create 2024/5/24 9:40* @Version 1.0*/
@Mapper
public interface SubjectAnswerDTOConverter {SubjectAnswerDTOConverter INSTANCE= Mappers.getMapper(SubjectAnswerDTOConverter.class);// 将SubjectAnswerDTO转换为SubjectAnswerBOSubjectAnswerBO convertDTO2BO(SubjectAnswerDTO subjectAnswerDTO);// 将SubjectAnswerBO转换为SubjectAnswerDTOSubjectAnswerDTO convertBO2DTO(SubjectAnswerBO subjectAnswerBO);// 将SubjectAnswerDTO集合转换为SubjectAnswerBO集合List<SubjectAnswerBO> convertDTO2BO(List<SubjectAnswerDTO> subjectAnswerDTOList);// 将SubjectAnswerBO集合转换为SubjectAnswerDTO集合List<SubjectAnswerDTO> convertBO2DTO(List<SubjectAnswerBO> subjectAnswerBOList);
}
2.SubjectInfoDTOConverter.java
package com.sunxiansheng.subject.application.convert;import com.sunxiansheng.subject.application.dto.SubjectInfoDTO;
import com.sunxiansheng.subject.domain.entity.SubjectInfoBO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;import java.util.List;/*** Description: DTO与BO转换* @Author sun* @Create 2024/5/24 9:40* @Version 1.0*/
@Mapper
public interface SubjectInfoDTOConverter {SubjectInfoDTOConverter INSTANCE= Mappers.getMapper(SubjectInfoDTOConverter.class);// 将SubjectInfoDTO转换为SubjectInfoBOSubjectInfoBO convertDTO2BO(SubjectInfoDTO subjectInfoDTO);// 将SubjectInfoBO转换为SubjectInfoDTOSubjectInfoDTO convertBO2DTO(SubjectInfoBO subjectInfoBO);// 将SubjectInfoDTO集合转换为SubjectInfoBO集合List<SubjectInfoBO> convertDTO2BO(List<SubjectInfoDTO> subjectInfoDTOList);// 将SubjectInfoBO集合转换为SubjectInfoDTO集合List<SubjectInfoDTO> convertBO2DTO(List<SubjectInfoBO> subjectInfoBOList);
}
2.sun-club-domain
1.entity
1.SubjectAnswerBO.java
package com.sunxiansheng.subject.domain.entity;import lombok.Data;import java.io.Serializable;/*** Description: 题目答案dto* @Author sun* @Create 2024/5/27 13:39* @Version 1.0*/
@Data
public class SubjectAnswerBO implements Serializable {/*** 答案选项标识*/private Integer optionType;/*** 答案*/private String optionContent;/*** 是否正确*/private Integer isCorrect;}
2.SubjectInfoBO.java
package com.sunxiansheng.subject.domain.entity;import lombok.Data;import java.io.Serializable;
import java.util.List;/*** 题目信息表(SubjectInfo)实体类** @author makejava* @since 2024-05-26 17:26:43*/
@Data
public class SubjectInfoBO implements Serializable {private static final long serialVersionUID = -99877276843752542L;/*** 题目名称*/private String subjectName;/*** 题目难度*/private Integer subjectDifficult;/*** 题目类型 1单选 2多选 3判断 4简答*/private Integer subjectType;/*** 题目分数*/private Integer subjectScore;/*** 题目解析*/private String subjectParse;/*** 题目答案*/private String subjectAnswer;/*** 分类id*/private List<Integer> categoryIds;/*** 标签id*/private List<Integer> labelIds;/*** 答案选项*/private List<SubjectAnswerBO> optionList;
}
2.convert
1.SubjectInfoConverter.java
package com.sunxiansheng.subject.domain.convert;import com.sunxiansheng.subject.domain.entity.SubjectInfoBO;
import com.sunxiansheng.subject.infra.basic.entity.SubjectInfo;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;import java.util.List;/*** Description: 题目标签转换器* @Author sun* @Create 2024/5/24 9:18* @Version 1.0*/
@Mapper // mapstruct的注解
public interface SubjectInfoConverter {SubjectInfoConverter INSTANCE = Mappers.getMapper(SubjectInfoConverter.class);// 将BO转换为entitySubjectInfo convertBoToSubjectInfo(SubjectInfoBO subjectInfoBO);// 将entity转换为BOSubjectInfoBO convertSubjectInfoToBo(SubjectInfo subjectInfo);// 将List<entity>转换为List<BO>List<SubjectInfoBO> convertSubjectInfoToBo(List<SubjectInfo> subjectInfoList);// 将List<BO>转换为List<entity>List<SubjectInfo> convertBoToSubjectInfo(List<SubjectInfoBO> subjectInfoBOList);
}
3.service
1.SubjectInfoDomainService.java
package com.sunxiansheng.subject.domain.service;import com.sunxiansheng.subject.domain.entity.SubjectInfoBO;/*** Description:* @Author sun* @Create 2024/5/24 9:03* @Version 1.0*/
public interface SubjectInfoDomainService {/*** 新增题目* @param subjectInfoBO*/Boolean add(SubjectInfoBO subjectInfoBO);}
3.sun-club-common
1.enums
1.SubjectInfoTypeEnum.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 SubjectInfoTypeEnum {RADIO(1,"单选"),MULTIPLE(2,"多选"),JUDGE(3,"判断"),BRIEF(4,"简答");public int code;public String desc;SubjectInfoTypeEnum(int code, String desc) {this.code = code;this.desc = desc;}/*** 根据code获取枚举* @param code* @return*/public static SubjectInfoTypeEnum getByCode(int code) {for (SubjectInfoTypeEnum value : values()) {if (value.code == code) {return value;}}return null;}
}
4.sun-club-domain
1.subject包构建一个题目类型工厂
1.SubjectTypeHandler.java
package com.sunxiansheng.subject.domain.handler.subject;import com.sunxiansheng.subject.common.enums.SubjectInfoTypeEnum;
import com.sunxiansheng.subject.domain.entity.SubjectInfoBO;/*** Description:* @Author sun* @Create 2024/5/27 21:12* @Version 1.0*/
public interface SubjectTypeHandler {/*** 枚举身份的识别* @return*/SubjectInfoTypeEnum getHandlerType();/*** 实际题目的插入* @param subjectInfoBO*/void add(SubjectInfoBO subjectInfoBO);
}
2.BriefTypeHandler.java
package com.sunxiansheng.subject.domain.handler.subject;import com.sunxiansheng.subject.common.enums.SubjectInfoTypeEnum;
import com.sunxiansheng.subject.domain.entity.SubjectInfoBO;
import org.springframework.stereotype.Component;/*** Description:* @Author sun* @Create 2024/5/27 21:16* @Version 1.0*/
@Component
public class BriefTypeHandler implements SubjectTypeHandler{@Overridepublic SubjectInfoTypeEnum getHandlerType() {return SubjectInfoTypeEnum.BRIEF;}@Overridepublic void add(SubjectInfoBO subjectInfoBO) {}
}
3.JudgeTypeHandler.java
package com.sunxiansheng.subject.domain.handler.subject;import com.sunxiansheng.subject.common.enums.SubjectInfoTypeEnum;
import com.sunxiansheng.subject.domain.entity.SubjectInfoBO;
import org.springframework.stereotype.Component;/*** Description:* @Author sun* @Create 2024/5/27 21:16* @Version 1.0*/
@Component
public class JudgeTypeHandler implements SubjectTypeHandler{@Overridepublic SubjectInfoTypeEnum getHandlerType() {return SubjectInfoTypeEnum.JUDGE;}@Overridepublic void add(SubjectInfoBO subjectInfoBO) {}
}
4.MultipleTypeHandler.java
package com.sunxiansheng.subject.domain.handler.subject;import com.sunxiansheng.subject.common.enums.SubjectInfoTypeEnum;
import com.sunxiansheng.subject.domain.entity.SubjectInfoBO;
import org.springframework.stereotype.Component;/*** Description:* @Author sun* @Create 2024/5/27 21:16* @Version 1.0*/
@Component
public class MultipleTypeHandler implements SubjectTypeHandler{@Overridepublic SubjectInfoTypeEnum getHandlerType() {return SubjectInfoTypeEnum.MULTIPLE;}@Overridepublic void add(SubjectInfoBO subjectInfoBO) {}
}
5.RadioTypeHandler.java
package com.sunxiansheng.subject.domain.handler.subject;import com.sunxiansheng.subject.common.enums.SubjectInfoTypeEnum;
import com.sunxiansheng.subject.domain.entity.SubjectInfoBO;
import org.springframework.stereotype.Component;/*** Description:* @Author sun* @Create 2024/5/27 21:16* @Version 1.0*/
@Component
public class RadioTypeHandler implements SubjectTypeHandler{@Overridepublic SubjectInfoTypeEnum getHandlerType() {return SubjectInfoTypeEnum.RADIO;}@Overridepublic void add(SubjectInfoBO subjectInfoBO) {// 单选题目的插入}
}
6.SubjectTypeHandlerFactory.java
package com.sunxiansheng.subject.domain.handler.subject;import com.sunxiansheng.subject.common.enums.SubjectInfoTypeEnum;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.stereotype.Component;import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
import java.util.Map;/*** Description: 题目类型工厂* @Author sun* @Create 2024/5/27 21:25* @Version 1.0*/
@Component
public class SubjectTypeHandlerFactory implements InitializingBean {// 将所有的题目类型对象注入到List中@Resourceprivate List<SubjectTypeHandler> subjectTypeHandlerList;// 这个map是存储题目类型枚举和具体的题目类型对象的,方便取出private Map<SubjectInfoTypeEnum, SubjectTypeHandler> handlerMap = new HashMap<>();/*** 简单工厂核心方法:根据输入的类型,返回对应类型的对象* @param subjectType* @return*/public SubjectTypeHandler getHandler(int subjectType) {// 首先根据这个枚举码来获取对应的枚举对象SubjectInfoTypeEnum subjectInfoTypeEnum = SubjectInfoTypeEnum.getByCode(subjectType);// 然后通过map,根据不同类型的枚举码,返回对应类型的题目类型对象return handlerMap.get(subjectInfoTypeEnum);}/*** 这个方法bean装载完毕之后就会执行,可以进行初始化操作* @throws Exception*/@Overridepublic void afterPropertiesSet() throws Exception {// 初始化存储题目类型的mapsubjectTypeHandlerList.forEach(subjectTypeHandler -> {handlerMap.put(subjectTypeHandler.getHandlerType(), subjectTypeHandler);});}
}
2.service包来注入工厂,调用插入方法
1.SubjectInfoDomainService.java
package com.sunxiansheng.subject.domain.service;import com.sunxiansheng.subject.domain.entity.SubjectInfoBO;/*** Description:* @Author sun* @Create 2024/5/24 9:03* @Version 1.0*/
public interface SubjectInfoDomainService {/*** 新增题目* @param subjectInfoBO*/void add(SubjectInfoBO subjectInfoBO);}
2.SubjectInfoDomainServiceImpl.java
package com.sunxiansheng.subject.domain.service.impl;import com.google.common.collect.Lists;
import com.sunxiansheng.subject.domain.convert.SubjectInfoConverter;
import com.sunxiansheng.subject.domain.entity.SubjectInfoBO;
import com.sunxiansheng.subject.domain.handler.subject.SubjectTypeHandler;
import com.sunxiansheng.subject.domain.handler.subject.SubjectTypeHandlerFactory;
import com.sunxiansheng.subject.domain.service.SubjectInfoDomainService;
import com.sunxiansheng.subject.infra.basic.entity.SubjectInfo;
import com.sunxiansheng.subject.infra.basic.entity.SubjectMapping;
import com.sunxiansheng.subject.infra.basic.service.SubjectInfoService;
import com.sunxiansheng.subject.infra.basic.service.SubjectMappingService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;/*** Description:* @Author sun* @Create 2024/5/24 9:03* @Version 1.0*/
@Service
@Slf4j
public class SubjectInfoDomainServiceImpl implements SubjectInfoDomainService {@Resourceprivate SubjectInfoService subjectInfoService;@Resourceprivate SubjectMappingService subjectMappingService;@Resourceprivate SubjectTypeHandlerFactory subjectTypeHandlerFactory;@Overridepublic void add(SubjectInfoBO subjectInfoBO) {// 打印日志if (log.isInfoEnabled()) {log.info("SubjectInfoDomainServiceImpl add SubjectInfoBO, SubjectInfoBO:{}", subjectInfoBO);}// 将BO转换为entitySubjectInfo subjectInfo = SubjectInfoConverter.INSTANCE.convertBoToSubjectInfo(subjectInfoBO);// 向SubjectInfo表中插入数据subjectInfoService.insert(subjectInfo);// 从工厂中获取对应的题目对象,并执行对应的插入逻辑SubjectTypeHandler handler = subjectTypeHandlerFactory.getHandler(subjectInfo.getSubjectType());handler.add(subjectInfoBO);// 处理映射表// 首先获取分类idList<Long> categoryIds = subjectInfoBO.getCategoryIds();// 然后获取标签idList<Long> labelIds = subjectInfoBO.getLabelIds();// 这个映射表是多对多的关系,假如有两个分类id和两个标签id则会有四条映射记录// 构建一个list,用于存储映射表的实体类List<SubjectMapping> subjectMappings = new ArrayList<>();labelIds.forEach(laberId -> {categoryIds.forEach(categoryId -> {SubjectMapping subjectMapping = new SubjectMapping();subjectMapping.setSubjectId(subjectInfoBO.getId());subjectMapping.setLabelId(laberId);subjectMapping.setCategoryId(categoryId);subjectMappings.add(subjectMapping);});});// 批量插入映射表subjectMappingService.insertBatch(subjectMappings);}
}
3.单选题的插入
1.RadioTypeHandler.java
package com.sunxiansheng.subject.domain.handler.subject;import com.sunxiansheng.subject.common.enums.SubjectInfoTypeEnum;
import com.sunxiansheng.subject.domain.entity.SubjectInfoBO;
import com.sunxiansheng.subject.infra.basic.entity.SubjectRadio;
import com.sunxiansheng.subject.infra.basic.service.SubjectRadioService;
import org.springframework.stereotype.Component;import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;/*** Description:* @Author sun* @Create 2024/5/27 21:16* @Version 1.0*/
@Component
public class RadioTypeHandler implements SubjectTypeHandler {@Resourceprivate SubjectRadioService subjectRadioService;@Overridepublic SubjectInfoTypeEnum getHandlerType() {return SubjectInfoTypeEnum.RADIO;}@Overridepublic void add(SubjectInfoBO subjectInfoBO) {// 一个单选题目是有多个选项,所以需要一个listList<SubjectRadio> subjectRadioList = new ArrayList<>();// 将bo中的选项列表转换为list<SubjectRadio>subjectInfoBO.getOptionList().forEach(subjectAnswerBO -> {SubjectRadio subjectRadio = new SubjectRadio();// 设置基本信息subjectRadio.setOptionType(subjectAnswerBO.getOptionType());subjectRadio.setOptionContent(subjectAnswerBO.getOptionContent());subjectRadio.setIsCorrect(subjectAnswerBO.getIsCorrect());// 设置题目idsubjectRadio.setSubjectId(subjectInfoBO.getId());subjectRadioList.add(subjectRadio);});// 批量插入subjectRadioService.batchInsert(subjectRadioList);}
}
5.sun-club-infra
1.SubjectMappingDao.xml的批量插入如果逻辑删除字段为空就设置成0
2.SubjectRadioDao.xml 如果逻辑删除字段为空就设置成0

image-20240528142721846

6.sun-club-application-controller
SubjectController.java
package com.sunxiansheng.subject.application.controller;import com.alibaba.fastjson.JSON;
import com.google.common.base.Preconditions;
import com.sunxiansheng.subject.application.convert.SubjectAnswerDTOConverter;
import com.sunxiansheng.subject.application.convert.SubjectInfoDTOConverter;
import com.sunxiansheng.subject.application.dto.SubjectInfoDTO;
import com.sunxiansheng.subject.common.eneity.Result;
import com.sunxiansheng.subject.domain.convert.SubjectInfoConverter;
import com.sunxiansheng.subject.domain.entity.SubjectAnswerBO;
import com.sunxiansheng.subject.domain.entity.SubjectInfoBO;
import com.sunxiansheng.subject.domain.service.SubjectInfoDomainService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;import javax.annotation.Resource;
import java.util.List;/*** Description: 刷题微服务控制器* @Author sun* @Create 2024/5/23 16:42* @Version 1.0*/
@RestController
@Slf4j
public class SubjectController {@Resourceprivate SubjectInfoDomainService subjectInfoDomainService;private final SubjectAnswerDTOConverter subjectAnswerDTOConverter;public SubjectController(SubjectAnswerDTOConverter subjectAnswerDTOConverter) {this.subjectAnswerDTOConverter = subjectAnswerDTOConverter;}/*** 新增题目* @param subjectInfoDTO* @return*/@PostMapping("/add")public Result<Boolean> add(@RequestBody SubjectInfoDTO subjectInfoDTO) {try {// 打印日志if (log.isInfoEnabled()) {log.info("SubjectController add SubjectInfoDTO, subjectInfoDTO:{}", JSON.toJSONString(subjectInfoDTO));}// 参数校验Preconditions.checkArgument(!StringUtils.isBlank(subjectInfoDTO.getSubjectName()), "题目名称不能为空");Preconditions.checkNotNull(subjectInfoDTO.getSubjectDifficult(), "题目难度不能为空");Preconditions.checkNotNull(subjectInfoDTO.getSubjectType(), "题目类型不能为空");Preconditions.checkNotNull(subjectInfoDTO.getSubjectScore(), "题目分数不能为空");Preconditions.checkArgument(!CollectionUtils.isEmpty(subjectInfoDTO.getCategoryIds()), "题目所属分类不能为空");Preconditions.checkArgument(!CollectionUtils.isEmpty(subjectInfoDTO.getLabelIds()), "题目所属标签不能为空");// 转换DTO为BOSubjectInfoBO subjectInfoBO = SubjectInfoDTOConverter.INSTANCE.convertDTO2BO(subjectInfoDTO);List<SubjectAnswerBO> subjectAnswerBOS = subjectAnswerDTOConverter.convertDTO2BO(subjectInfoDTO.getOptionList());subjectInfoBO.setOptionList(subjectAnswerBOS);// 新增题目subjectInfoDomainService.add(subjectInfoBO);return Result.ok(true);} catch (Exception e) {log.error("SubjectController add error, subjectInfoDTO:{}", JSON.toJSONString(subjectInfoDTO), e);return Result.fail("新增题目失败");}}
}
7.接口测试

image-20240528153343996

image-20240528153350317

image-20240528153406939

image-20240528153419034

image-20240528153429556

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

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

相关文章

【大数据】—谁是世界上最富的人?

引言 在2024年&#xff0c;全球财富的分布再次成为公众和经济学家关注的焦点。随着经济的波动和新兴市场的崛起&#xff0c;亿万富翁的名单也在不断变化。本文将深入探讨这一现象&#xff0c;通过最新的数据可视化分析&#xff0c;揭示世界上最富有的人在2024年的财富状况和趋…

解锁品牌推广小妙招:如何高效塑造品牌影响力

在信息化大时代&#xff0c;企业如何做好品牌传播是一个复杂而重要的课题。随着信息爆炸和新媒体的兴起&#xff0c;传统的广告投放已经无法完全满足品牌的宣传需求&#xff0c;媒体公关传播越来越为企业所重视。今天投媒网就来与您分享在信息化大时代&#xff0c;企业如何做好…

在Mandelbrot 集中“缩放”特定区域

1、问题背景 在创建一个快速生成 Mandelbrot 集图像的 Python 程序时&#xff0c;程序开发者遇到一个问题&#xff1a;他想要渲染该集合的一个特定区域&#xff0c;但他不知道如何修改代码中的数学部分来实现 “缩放”。 2、解决方案 第一种解决方案 问题根源是代码中的一行…

SVN学习(007 svn安装Tortoise工具)

尚硅谷SVN高级教程(svn操作详解) 总时长 4:53:00 共72P 此文章包含第58p-第p72的内容 介绍 安装 选择自己想要装软件的文件夹 进入工作目录&#xff0c;发现无svn的图标&#xff0c;重启电脑即可 就能看到svn的图标 settings功能 进行图标的查看 修改subversion配置文件 …

安卓直装植物大战僵尸杂交版V2.1版完美运行

在移动游戏的世界里&#xff0c;植物大战僵尸无疑是一款深受玩家喜爱的经典游戏。如今&#xff0c;随着技术的发展和玩家需求的变化&#xff0c;植物大战僵尸杂交版V2.1版应运而生&#xff0c;为安卓用户带来了全新的游戏体验。 这一全新版本在原有游戏的基础上进行了多项创新…

SAP系统中的应付账款(与MM集成,关账操作)

1. 与物料管理的集成 Plant: 工厂是后勤中的位于中心位置的组织对象&#xff0c;一个“工厂”可以是公司内的一个作业区&#xff0c;或一个分支机构。一个“工厂”可以是一个中央交付仓库&#xff0c;可以是一个区域的销售营业部&#xff0c;一个制造工厂&#xff0c;一个集团…

合适的智能猫砂盆到底怎么挑?开放式封闭式一次说清!

想当初我也是在网上看了各种测评&#xff0c;纠结了好久才下定决心入手了智能猫砂盆。封闭式和开放式都用过&#xff0c;各有各的利与弊&#xff0c;不过最后的我还是选择了开放式的智能猫砂盆&#xff0c;因为开放式的设计结构会更加方便我观察小猫&#xff0c;哪个铲屎官不喜…

采购OLED透明屏指南

一、引言 OLED透明屏作为一种前沿的显示技术&#xff0c;以其独特的透明度和出色的显示效果&#xff0c;受到了众多行业的青睐。在采购OLED透明屏时&#xff0c;需要综合考虑多个因素&#xff0c;以确保选择到符合需求的高质量产品。以下是一份详细的采购OLED透明屏指南&#x…

《云南化工》是什么级别的期刊?是正规期刊吗?能评职称吗?

问题解答 问&#xff1a;《云南化工》是不是核心期刊&#xff1f; 答&#xff1a;不是&#xff0c;是知网收录的第一批认定学术期刊。 问&#xff1a;《云南化工》级别&#xff1f; 答&#xff1a;省级。主办单位&#xff1a;云天化集团有限责任公司 主管单位&#xff1a;…

让我们聊聊网络安全中会涉及到的IP地址(IP协议)、MAC地址、路由、DNS协议(域名系统)、NAT技术(协议)、以太网帧、ARP协议

网络安全中会涉及到的IP地址&#xff08;IP协议&#xff09;、MAC地址、路由、DNS协议&#xff08;域名系统&#xff09;、NAT技术&#xff08;协议&#xff09;、以太网帧、ARP协议 一.IP地址&#xff08;IP协议&#xff09;1.IP地址&#xff08;IP协议&#xff09;的作用2.IP…

Go 实现SFTP连接服务

我们将SFTP连接和处理逻辑&#xff0c;以及登录账户信息封装&#xff0c;这样可以在不同的地方重用代码&#xff0c;并且可以轻松地更改登录凭据。下面我将演示如何使用Go语言中的结构体来封装这些信息&#xff0c;并实现一个简单的SFTP服务器&#xff1a; package mainimport…

大厂薪资福利篇第五弹:小红书

欢迎来到绝命Coding&#xff01; 今天继续更新大家最关心的 大厂薪资福利系列&#xff01; 为什么计算机学子对大厂趋之若鹜呢&#xff1f;最直接的原因就是高薪资的吸引力。 • 但是薪资可不是简单的数字哦&#xff0c;里面还是有很多“学问”的。 • 很多同学对大厂薪资只有一…

《黑神话悟空》电脑配置要求

《黑神话&#xff1a;悟空》这款国内优秀的3A游戏大作&#xff0c;拥有顶级的特效与故事剧情&#xff0c;自公布以来便备受玩家期待&#xff0c;其精美的画面与流畅的战斗体验&#xff0c;对玩家的电脑配置提出一定要求。那么这款优秀的游戏需要什么样的电脑配置&#xff0c;才…

老板舍不得买库存管理软件❓一招解决

在当今快节奏的商业环境中&#xff0c;仓库管理是企业运作中不可或缺的一环。对于许多中小型企业而言&#xff0c;简易且高效的库存管理系统尤为重要。搭贝简易库存管理系统针对仓库的出入库进行有效管理&#xff0c;帮助企业实现库存的透明化和流程的自动化。 客户的痛点 1. …

基于SSM构建的校园失眠与压力管理系统的设计与实现【附源码】

毕业设计(论文) 题目&#xff1a;基于SSM构建的校园失眠与压力管理系统的设计与实现 二级学院&#xff1a; 专业(方向)&#xff1a; 班 级&#xff1a; 学 生&#xff1a; 指导教师&a…

SNEC天合储能秀:全球首发多元场景一站式工商业储能融合解决方案

6月13日-15日&#xff0c;SNEC2024光伏与智慧能源展在上海隆重举行&#xff0c;来自全球95个国家和地区3000家国内外展商齐聚展会&#xff0c;5000行业专家共话产业发展。致力于成为全球光储智慧能源解决方案的领导者&#xff0c;天合光能&#xff08;展位号&#xff1a;7.2H-E…

GitLab 不小心提交了master/develop版本如何回退

1. 找寻最近的版本&#xff0c;使用git reset --hard 回退到具体的提交版本号 2. git push origin master --force 这个会遇到gitlab默认拦截&#xff0c;处理版本 版本仓库页面&#xff0c;选择Setting——Repository&#xff0c;找到Protected branches 3. 再回到master分支…

Linux系统SPI子系统框架驱动调用实现详解

大家好,今天主要和大家分享一下,如何使用Linux系统中SPI子系统框架,也是分为主机驱动和设备驱动,裸机部分控制的是SPI控制器驱动,可以直接操控。 第一:Linux系统SPI主机驱动 SPI主机驱动就是SOC的SPI控制器驱动。Linux内核使用spi_master表示主机SPI驱动spi_master 是个结…

二级web基础操作题练习

---------要求--------- 利用HTML和CSS实现如图所示页面&#xff1a; ---------代码示例--------- 分析&#xff1a;该页面包含一个标题、一个副标题、“姓名信息”的表格&#xff0c;并且有一段文字提示用户仔细填写&#xff0c;使用内联CSS来控制HTML页面的视觉外观&…

算法题--华为od机试考试(最大坐标值、寻找最富裕的小家庭、两个字符串间的最短路径问题)

目录 最大坐标值 题目描述 输入描述 输出描述 示例1 输入 输出 说明 解析 答案 寻找最富裕的小家庭 题目描述 输入描述 输出描述 示例1 输入 输出 说明 解析 答案 两个字符串间的最短路径问题 题目描述 ​编辑 输入描述 输出描述 示例1 输入 输出 …