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

基于JavaWeb的汽车维修保养智能预约系统

 作者简介:Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、多年校企合作经验,被多个学校常年聘为校外企业导师,指导学生毕业设计并参与学生毕业答辩指导,有较为丰富的相关经验。期待与各位高校教师、企业讲师以及同行交流合作

主要内容:Java项目、Python项目、前端项目、PHP、ASP.NET、人工智能与大数据、单片机开发、物联网设计与开发设计、简历模板、学习资料、面试题库、技术互助、就业指导等

业务范围:免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论文降重、长期答辩答疑辅导、腾讯会议一对一专业讲解辅导答辩、模拟答辩演练、和理解代码逻辑思路等

收藏点赞不迷路  关注作者有好处

文末获取源码 

项目编号:BS-XX-357

一,环境介绍

语言环境:Java:  jdk1.8

数据库:Mysql: mysql5.7

应用服务器:Tomcat:  tomcat8.5.31

开发工具:IDEA或eclipse

开发技术:SSM+VUE

二,项目简介

随着中国社会经济的快速发展,庞大的人口基数带动汽车保有量迅猛增加,目前我国仍然是全球最大的单一汽车市场。中国汽车产业的迅猛发展,体现出人们生活水平不断提高,中国汽车后市场的形成也是在汽车产业不断发展中诞生的。随着互联网的发展,信息化的产业已经应用于人们生活的方方面面,把庞大体系汽车后市场业务与互联网进行融合,推动汽车后市场的信息化。在目前的汽车维修与保养过程中,在线预约服务软件还未被大众广泛使用。客户到店的方式一般为开车到店排队等待服务或者通过电话进行时间预约。现行服务模式不仅服务效率较低,浪费了客户的时间,用户无法确定具体的商品和服务项目。用户自主选择余地较低,主要以被动选择为主。门店维修的传统服务模式已不能适应市场需求,便捷高效的汽车维修保养预约对于提升人民的生活质量,加速社会发展起到了积极的作用。作为汽车维修厂,如何高效的对维修长进行管理是企业管理者需要着重考虑的问题。而汽车维修保养智能预约系统就是一个能够帮助汽车维修长进行业务管理、客户信息管理的软件系统。因此,本文将设计和开发基干移动互联网的在线预约服务软件,为用户提供在线预约的服务,推动目前汽车后市场的发展。

汽车维修保养智能预约系统的开发具有重要的意义,搭建了客户与自营连锁养车店之间的桥梁,通过线上预约和实体店线下开展实际业务的模式,使客户对所需的服务的选择更加便捷和清晰,让客户拥有多样化的选择,增强客户全流程的消费质量,将车主用户的维修保养流程完全数字化、可视化。

三,系统展示

四,核心代码展示


package com.controller;import java.io.File;
import java.math.BigDecimal;
import java.net.URL;
import java.text.SimpleDateFormat;
import com.alibaba.fastjson.JSONObject;
import java.util.*;
import org.springframework.beans.BeanUtils;
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.context.ContextLoader;
import javax.servlet.ServletContext;
import com.service.TokenService;
import com.utils.*;
import java.lang.reflect.InvocationTargetException;import com.service.DictionaryService;
import org.apache.commons.lang3.StringUtils;
import com.annotation.IgnoreAuth;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.entity.*;
import com.entity.view.*;
import com.service.*;
import com.utils.PageUtils;
import com.utils.R;
import com.alibaba.fastjson.*;/*** 项目预约订单* 后端接口* @author* @email
*/
@RestController
@Controller
@RequestMapping("/xiangmuOrder")
public class XiangmuOrderController {private static final Logger logger = LoggerFactory.getLogger(XiangmuOrderController.class);@Autowiredprivate XiangmuOrderService xiangmuOrderService;@Autowiredprivate TokenService tokenService;@Autowiredprivate DictionaryService dictionaryService;//级联表service@Autowiredprivate XiangmuService xiangmuService;@Autowiredprivate YonghuService yonghuService;
@Autowired
private XiangmuCommentbackService xiangmuCommentbackService;/*** 后端列表*/@RequestMapping("/page")public R page(@RequestParam Map<String, Object> params, HttpServletRequest request){logger.debug("page方法:,,Controller:{},,params:{}",this.getClass().getName(),JSONObject.toJSONString(params));String role = String.valueOf(request.getSession().getAttribute("role"));if(false)return R.error(511,"永不会进入");else if("用户".equals(role))params.put("yonghuId",request.getSession().getAttribute("userId"));else if("员工".equals(role))params.put("yuangongId",request.getSession().getAttribute("userId"));if(params.get("orderBy")==null || params.get("orderBy")==""){params.put("orderBy","id");}PageUtils page = xiangmuOrderService.queryPage(params);//字典表数据转换List<XiangmuOrderView> list =(List<XiangmuOrderView>)page.getList();for(XiangmuOrderView c:list){//修改对应字典表字段dictionaryService.dictionaryConvert(c, request);}return R.ok().put("data", page);}/*** 后端详情*/@RequestMapping("/info/{id}")public R info(@PathVariable("id") Long id, HttpServletRequest request){logger.debug("info方法:,,Controller:{},,id:{}",this.getClass().getName(),id);XiangmuOrderEntity xiangmuOrder = xiangmuOrderService.selectById(id);if(xiangmuOrder !=null){//entity转viewXiangmuOrderView view = new XiangmuOrderView();BeanUtils.copyProperties( xiangmuOrder , view );//把实体数据重构到view中//级联表XiangmuEntity xiangmu = xiangmuService.selectById(xiangmuOrder.getXiangmuId());if(xiangmu != null){BeanUtils.copyProperties( xiangmu , view ,new String[]{ "id", "createTime", "insertTime", "updateTime"});//把级联的数据添加到view中,并排除id和创建时间字段view.setXiangmuId(xiangmu.getId());}//级联表YonghuEntity yonghu = yonghuService.selectById(xiangmuOrder.getYonghuId());if(yonghu != null){BeanUtils.copyProperties( yonghu , view ,new String[]{ "id", "createTime", "insertTime", "updateTime"});//把级联的数据添加到view中,并排除id和创建时间字段view.setYonghuId(yonghu.getId());}//修改对应字典表字段dictionaryService.dictionaryConvert(view, request);return R.ok().put("data", view);}else {return R.error(511,"查不到数据");}}/*** 后端保存*/@RequestMapping("/save")public R save(@RequestBody XiangmuOrderEntity xiangmuOrder, HttpServletRequest request){logger.debug("save方法:,,Controller:{},,xiangmuOrder:{}",this.getClass().getName(),xiangmuOrder.toString());String role = String.valueOf(request.getSession().getAttribute("role"));if(false)return R.error(511,"永远不会进入");else if("用户".equals(role))xiangmuOrder.setYonghuId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));xiangmuOrder.setInsertTime(new Date());xiangmuOrder.setCreateTime(new Date());xiangmuOrderService.insert(xiangmuOrder);return R.ok();}/*** 后端修改*/@RequestMapping("/update")public R update(@RequestBody XiangmuOrderEntity xiangmuOrder, HttpServletRequest request){logger.debug("update方法:,,Controller:{},,xiangmuOrder:{}",this.getClass().getName(),xiangmuOrder.toString());String role = String.valueOf(request.getSession().getAttribute("role"));
//        if(false)
//            return R.error(511,"永远不会进入");
//        else if("用户".equals(role))
//            xiangmuOrder.setYonghuId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));//根据字段查询是否有相同数据Wrapper<XiangmuOrderEntity> queryWrapper = new EntityWrapper<XiangmuOrderEntity>().eq("id",0);logger.info("sql语句:"+queryWrapper.getSqlSegment());XiangmuOrderEntity xiangmuOrderEntity = xiangmuOrderService.selectOne(queryWrapper);if(xiangmuOrderEntity==null){xiangmuOrderService.updateById(xiangmuOrder);//根据id更新return R.ok();}else {return R.error(511,"表中有相同数据");}}/*** 删除*/@RequestMapping("/delete")public R delete(@RequestBody Integer[] ids){logger.debug("delete:,,Controller:{},,ids:{}",this.getClass().getName(),ids.toString());xiangmuOrderService.deleteBatchIds(Arrays.asList(ids));return R.ok();}/*** 批量上传*/@RequestMapping("/batchInsert")public R save( String fileName, HttpServletRequest request){logger.debug("batchInsert方法:,,Controller:{},,fileName:{}",this.getClass().getName(),fileName);Integer yonghuId = Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId")));SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");try {List<XiangmuOrderEntity> xiangmuOrderList = new ArrayList<>();//上传的东西Map<String, List<String>> seachFields= new HashMap<>();//要查询的字段Date date = new Date();int lastIndexOf = fileName.lastIndexOf(".");if(lastIndexOf == -1){return R.error(511,"该文件没有后缀");}else{String suffix = fileName.substring(lastIndexOf);if(!".xls".equals(suffix)){return R.error(511,"只支持后缀为xls的excel文件");}else{URL resource = this.getClass().getClassLoader().getResource("../../upload/" + fileName);//获取文件路径File file = new File(resource.getFile());if(!file.exists()){return R.error(511,"找不到上传文件,请联系管理员");}else{List<List<String>> dataList = PoiUtil.poiImport(file.getPath());//读取xls文件dataList.remove(0);//删除第一行,因为第一行是提示for(List<String> data:dataList){//循环XiangmuOrderEntity xiangmuOrderEntity = new XiangmuOrderEntity();
//                            xiangmuOrderEntity.setXiangmuOrderUuidNumber(data.get(0));                    //订单号 要改的
//                            xiangmuOrderEntity.setXiangmuId(Integer.valueOf(data.get(0)));   //项目 要改的
//                            xiangmuOrderEntity.setYonghuId(Integer.valueOf(data.get(0)));   //用户 要改的
//                            xiangmuOrderEntity.setCheliangName(data.get(0));                    //车辆名称 要改的
//                            xiangmuOrderEntity.setCheliangTypes(Integer.valueOf(data.get(0)));   //车辆类型 要改的
//                            xiangmuOrderEntity.setChepaihao(data.get(0));                    //车牌号 要改的
//                            xiangmuOrderEntity.setYuyueTime(sdf.parse(data.get(0)));          //预约时间 要改的
//                            xiangmuOrderEntity.setXiangmuOrderTruePrice(data.get(0));                    //实付价格 要改的
//                            xiangmuOrderEntity.setXiangmuOrderTypes(Integer.valueOf(data.get(0)));   //订单类型 要改的
//                            xiangmuOrderEntity.setXiangmuOrderPaymentTypes(Integer.valueOf(data.get(0)));   //支付类型 要改的
//                            xiangmuOrderEntity.setInsertTime(date);//时间
//                            xiangmuOrderEntity.setCreateTime(date);//时间xiangmuOrderList.add(xiangmuOrderEntity);//把要查询是否重复的字段放入map中//订单号if(seachFields.containsKey("xiangmuOrderUuidNumber")){List<String> xiangmuOrderUuidNumber = seachFields.get("xiangmuOrderUuidNumber");xiangmuOrderUuidNumber.add(data.get(0));//要改的}else{List<String> xiangmuOrderUuidNumber = new ArrayList<>();xiangmuOrderUuidNumber.add(data.get(0));//要改的seachFields.put("xiangmuOrderUuidNumber",xiangmuOrderUuidNumber);}}//查询是否重复//订单号List<XiangmuOrderEntity> xiangmuOrderEntities_xiangmuOrderUuidNumber = xiangmuOrderService.selectList(new EntityWrapper<XiangmuOrderEntity>().in("xiangmu_order_uuid_number", seachFields.get("xiangmuOrderUuidNumber")));if(xiangmuOrderEntities_xiangmuOrderUuidNumber.size() >0 ){ArrayList<String> repeatFields = new ArrayList<>();for(XiangmuOrderEntity s:xiangmuOrderEntities_xiangmuOrderUuidNumber){repeatFields.add(s.getXiangmuOrderUuidNumber());}return R.error(511,"数据库的该表中的 [订单号] 字段已经存在 存在数据为:"+repeatFields.toString());}xiangmuOrderService.insertBatch(xiangmuOrderList);return R.ok();}}}}catch (Exception e){e.printStackTrace();return R.error(511,"批量插入数据异常,请联系管理员");}}/*** 前端列表*/@IgnoreAuth@RequestMapping("/list")public R list(@RequestParam Map<String, Object> params, HttpServletRequest request){logger.debug("list方法:,,Controller:{},,params:{}",this.getClass().getName(),JSONObject.toJSONString(params));// 没有指定排序字段就默认id倒序if(StringUtil.isEmpty(String.valueOf(params.get("orderBy")))){params.put("orderBy","id");}PageUtils page = xiangmuOrderService.queryPage(params);//字典表数据转换List<XiangmuOrderView> list =(List<XiangmuOrderView>)page.getList();for(XiangmuOrderView c:list)dictionaryService.dictionaryConvert(c, request); //修改对应字典表字段return R.ok().put("data", page);}/*** 前端详情*/@RequestMapping("/detail/{id}")public R detail(@PathVariable("id") Long id, HttpServletRequest request){logger.debug("detail方法:,,Controller:{},,id:{}",this.getClass().getName(),id);XiangmuOrderEntity xiangmuOrder = xiangmuOrderService.selectById(id);if(xiangmuOrder !=null){//entity转viewXiangmuOrderView view = new XiangmuOrderView();BeanUtils.copyProperties( xiangmuOrder , view );//把实体数据重构到view中//级联表XiangmuEntity xiangmu = xiangmuService.selectById(xiangmuOrder.getXiangmuId());if(xiangmu != null){BeanUtils.copyProperties( xiangmu , view ,new String[]{ "id", "createDate"});//把级联的数据添加到view中,并排除id和创建时间字段view.setXiangmuId(xiangmu.getId());}//级联表YonghuEntity yonghu = yonghuService.selectById(xiangmuOrder.getYonghuId());if(yonghu != null){BeanUtils.copyProperties( yonghu , view ,new String[]{ "id", "createDate"});//把级联的数据添加到view中,并排除id和创建时间字段view.setYonghuId(yonghu.getId());}//修改对应字典表字段dictionaryService.dictionaryConvert(view, request);return R.ok().put("data", view);}else {return R.error(511,"查不到数据");}}/*** 前端保存*/@RequestMapping("/add")public R add(@RequestBody XiangmuOrderEntity xiangmuOrder, HttpServletRequest request){logger.debug("add方法:,,Controller:{},,xiangmuOrder:{}",this.getClass().getName(),xiangmuOrder.toString());XiangmuEntity xiangmuEntity = xiangmuService.selectById(xiangmuOrder.getXiangmuId());if(xiangmuEntity == null){return R.error(511,"查不到该项目");}// Double xiangmuNewMoney = xiangmuEntity.getXiangmuNewMoney();if(false){}else if(xiangmuEntity.getXiangmuNewMoney() == null){return R.error(511,"项目价格不能为空");}//计算所获得积分Double buyJifen =0.0;Integer userId = (Integer) request.getSession().getAttribute("userId");YonghuEntity yonghuEntity = yonghuService.selectById(userId);if(yonghuEntity == null)return R.error(511,"用户不能为空");if(yonghuEntity.getNewMoney() == null)return R.error(511,"用户金额不能为空");double balance = yonghuEntity.getNewMoney() - xiangmuEntity.getXiangmuNewMoney();//余额if(balance<0)return R.error(511,"余额不够支付");xiangmuOrder.setXiangmuOrderTypes(1); //设置订单状态为已支付xiangmuOrder.setXiangmuOrderTruePrice(xiangmuEntity.getXiangmuNewMoney()); //设置实付价格xiangmuOrder.setXiangmuOrderUuidNumber(String.valueOf(new Date().getTime()));xiangmuOrder.setXiangmuOrderPaymentTypes(1);xiangmuOrder.setInsertTime(new Date());xiangmuOrder.setCreateTime(new Date());xiangmuOrderService.insert(xiangmuOrder);//新增订单yonghuEntity.setNewMoney(balance);//设置金额yonghuService.updateById(yonghuEntity);return R.ok();}/*** 取消预约*/@RequestMapping("/refund")public R refund(Integer id, HttpServletRequest request){logger.debug("refund方法:,,Controller:{},,id:{}",this.getClass().getName(),id);String role = String.valueOf(request.getSession().getAttribute("role"));XiangmuOrderEntity xiangmuOrder = xiangmuOrderService.selectById(id);Integer xiangmuOrderPaymentTypes = xiangmuOrder.getXiangmuOrderPaymentTypes();Integer xiangmuId = xiangmuOrder.getXiangmuId();if(xiangmuId == null)return R.error(511,"查不到该项目");XiangmuEntity xiangmuEntity = xiangmuService.selectById(xiangmuId);if(xiangmuEntity == null)return R.error(511,"查不到该项目");Double xiangmuNewMoney = xiangmuEntity.getXiangmuNewMoney();if(xiangmuNewMoney == null)return R.error(511,"项目价格不能为空");Integer userId = (Integer) request.getSession().getAttribute("userId");YonghuEntity yonghuEntity = yonghuService.selectById(userId);if(yonghuEntity == null)return R.error(511,"用户不能为空");if(yonghuEntity.getNewMoney() == null)return R.error(511,"用户金额不能为空");//判断是什么支付方式 1代表余额 2代表积分if(xiangmuOrderPaymentTypes == 1){//余额支付//计算金额Double money = xiangmuEntity.getXiangmuNewMoney();yonghuEntity.setNewMoney(yonghuEntity.getNewMoney() + money); //设置金额}xiangmuOrder.setXiangmuOrderTypes(2);//设置订单状态为取消预约xiangmuOrderService.updateById(xiangmuOrder);//根据id更新yonghuService.updateById(yonghuEntity);//更新用户信息xiangmuService.updateById(xiangmuEntity);//更新订单中项目的信息return R.ok();}/*** 商家确认*/@RequestMapping("/deliver")public R deliver(Integer id ){logger.debug("refund:,,Controller:{},,ids:{}",this.getClass().getName(),id.toString());XiangmuOrderEntity  xiangmuOrderEntity = new  XiangmuOrderEntity();;xiangmuOrderEntity.setId(id);xiangmuOrderEntity.setXiangmuOrderTypes(3);boolean b =  xiangmuOrderService.updateById( xiangmuOrderEntity);if(!b){return R.error("商家确认出错");}return R.ok();}/*** 使用*/@RequestMapping("/receiving")public R receiving(Integer id){logger.debug("refund:,,Controller:{},,ids:{}",this.getClass().getName(),id.toString());XiangmuOrderEntity  xiangmuOrderEntity = new  XiangmuOrderEntity();xiangmuOrderEntity.setId(id);xiangmuOrderEntity.setXiangmuOrderTypes(4);boolean b =  xiangmuOrderService.updateById( xiangmuOrderEntity);if(!b){return R.error("使用出错");}return R.ok();}/*** 评价*/@RequestMapping("/commentback")public R commentback(Integer id, String commentbackText, Integer xiangmuCommentbackPingfenNumber, HttpServletRequest request){logger.debug("commentback方法:,,Controller:{},,id:{}",this.getClass().getName(),id);XiangmuOrderEntity xiangmuOrder = xiangmuOrderService.selectById(id);if(xiangmuOrder == null)return R.error(511,"查不到该订单");if(xiangmuOrder.getXiangmuOrderTypes() != 4)return R.error(511,"您不能评价");Integer xiangmuId = xiangmuOrder.getXiangmuId();if(xiangmuId == null)return R.error(511,"查不到该项目");XiangmuCommentbackEntity xiangmuCommentbackEntity = new XiangmuCommentbackEntity();xiangmuCommentbackEntity.setId(id);xiangmuCommentbackEntity.setXiangmuId(xiangmuId);xiangmuCommentbackEntity.setYonghuId((Integer) request.getSession().getAttribute("userId"));xiangmuCommentbackEntity.setXiangmuCommentbackText(commentbackText);xiangmuCommentbackEntity.setInsertTime(new Date());xiangmuCommentbackEntity.setReplyText(null);xiangmuCommentbackEntity.setUpdateTime(null);xiangmuCommentbackEntity.setCreateTime(new Date());xiangmuCommentbackService.insert(xiangmuCommentbackEntity);xiangmuOrder.setXiangmuOrderTypes(5);//设置订单状态为已评价xiangmuOrderService.updateById(xiangmuOrder);//根据id更新return R.ok();}}

五,相关作品展示

基于Java开发、Python开发、PHP开发、C#开发等相关语言开发的实战项目

基于Nodejs、Vue等前端技术开发的前端实战项目

基于微信小程序和安卓APP应用开发的相关作品

基于51单片机等嵌入式物联网开发应用

基于各类算法实现的AI智能应用

基于大数据实现的各类数据管理和推荐系统

 

 

相关文章:

基于JavaWeb的汽车维修保养智能预约系统

作者简介&#xff1a;Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、多年校企合作经验&#xff0c;被多个学校常年聘为校外企业导师&#xff0c;指导学生毕业设计并参与学生毕业答辩指导&#xff0c;…...

CAN总线波形中最后一位电平偏高或ACK电平偏高问题分析

参考&#xff1a;https://zhuanlan.zhihu.com/p/689336144 有时候看到CAN总线H和L的差值波形的最后一位电平会变高很多&#xff0c;这是什么原因呢&#xff1f; 实际上这是正常的现象&#xff0c;最后一位是ACK位。问题描述为&#xff1a;CAN总线ACK电平偏高。 下面分析下原因…...

高等数学学习笔记 ☞ 无穷小与无穷大

1. 无穷小 1. 定义&#xff1a;若函数当或时的极限为零&#xff0c;那么称函数是当或时的无穷小。 备注&#xff1a; ①&#xff1a;无穷小描述的是自变量的变化过程中&#xff0c;函数值的变化趋势&#xff0c;绝不能认为无穷小是一个很小很小的数。 ②&#xff1a;说无穷小时…...

Docker Compose编排

什么是 Docker Compose? Docker Compose 是 Docker 官方推出的开源项目&#xff0c;用于快速编排和管理多个 Docker 容器的应用程序。它允许用户通过一个 YAML 格式的配置文件 docker-compose.yml 来定义和运行多个相关联的应用容器&#xff0c;从而实现对容器的统一管理和编…...

Node.js 处理 GeoPackage 数据的开源库:@ngageoint/geopackage介绍

使用 Node.js 处理 GeoPackage 数据的开源库:@ngageoint/geopackage 随着地理信息系统(GIS)和空间数据的广泛应用,OGC 的 GeoPackage 格式因其轻量、跨平台和高性能的特点,成为处理地理空间数据的重要工具。而对于 Node.js 开发者来说,@ngageoint/geopackage 是一个功能…...

21.<基于Spring图书管理系统②(图书列表+删除图书+更改图书)(非强制登录版本完结)>

PS&#xff1a; 开闭原则 定义和背景 开闭原则&#xff08;Open-Closed Principle, OCP&#xff09;&#xff0c;也称为开放封闭原则&#xff0c;是面向对象设计中的一个基本原则。该原则强调软件中的模块、类或函数应该对扩展开放&#xff0c;对修改封闭。这意味着一个软件实体…...

MySQL日志体系的深度解析:功能与差异

优质博文&#xff1a;IT-BLOG-CN 一、binlog binlog记录数据库表结构和表数据变更&#xff0c;比如update/delete/insert/truncate/create&#xff0c;它不会记录select。存储着每条变更的SQL语句和XID事务Id等等。binlog日志文件如下&#xff1a; [root192.168.10.11]# mysq…...

电商项目-数据同步解决方案(四)商品下架同步更新ES索引库数据

商品下架索引库删除数据 一、 需求分析和业务逻辑 商品下架后将商品从索引库中移除。 主要应用技术有&#xff1a; 消息队列-RabbitMQ &#xff0c;分布式搜索引擎-ElasticSearch&#xff0c;Eureka&#xff0c;Canal&#xff0c;Feign远程调用 &#xff08;1&#xff09;在…...

Kafka

目录 一、什么是Kafka 核心组件 特性 使用场景 安装与配置 二、Kafka的使用 安装 ZooKeeper 和 Kafka 安装 ZooKeeper 安装 Kafka 配置 ZooKeeper 和 Kafka 配置 ZooKeeper 配置 Kafka 启动 ZooKeeper 和 Kafka 创建 Topic 编写生产者代码 编写消费者代码 运行…...

SAP SD学习笔记22 - VF04,VF06,VF24 等一括请求处理

上一篇学习了请求传票&#xff08;发票&#xff09;的拷贝管理。 SAP SD学习笔记21 - 请求传票的数据流&#xff08;拷贝管理&#xff09;-CSDN博客 本章继续学习 SAP SD的内容。 目录 1&#xff0c;VF04 - 一括请求处理&#xff08;开票到期清单&#xff09; 2&#xff0c…...

JR-RLAA系20路模拟音频多功能编码器

JR-RLAA系20路模拟音频多功能编码器 产品特色 (1)工业级19英寸标准设备&#xff0c;内置双电源 (2)内嵌Web Server&#xff0c;支持远程Web页面登陆后的统一配置操作 (3)支持20路音频输入 (4)支持Dolby Digital(AC-3) &#xff0c;MPEG-2&#xff0c;AAC-LC/HE-AAC&#x…...

数据结构复习 (二叉查找树,高度平衡树AVL)

1.二叉查找树: 为了更好的实现动态的查找(可以插入/删除),并且不超过logn的时间下达成目的 定义: 二叉查找树&#xff08;亦称二叉搜索树、二叉排序树&#xff09;是一棵二叉树&#xff0c;其各结点关键词互异&#xff0c;且中根序列按其关键词递增排列。 等价描述: 二叉查找…...

深入浅出梯度下降与反向传播

文章目录 1. 前言2. 基本概念2.1 一元函数的导数2.2 偏导数2.3 方向导数2.4 梯度2.5 均方误差 3. 梯度下降3.1 梯度下降的公式3.2 梯度下降的类型&#xff08;优化器&#xff09; 4. 反向传播4.1 反向传播的基本步骤4.2 反向传播的数学推导 5. 实战5.1 手动求导5.2 自动求导5.3…...

PLC(01)

一.职业规划 电路----------------->电工------------------>电气-------------------plc---------------------DCS--------------------> 机器人 二.交流电直流电的概念 1.交流电AC alternating current 大小方向随时间发生周期性变化 2.直流电 Direct current…...

如何通过本地部署的DIFY辅助学习算法(PS可以辅助帮你学习任何想学习的资料)

如何通过本地部署的DIFY辅助学习算法(PS可以辅助帮你学习任何想学习的资料 一 提升知识库的大小容量1.1 调大知识库的基础配置修改.env文件1.2 通过docker compose 重启加载最新配置1.3 重新上传知识库 二 搭建算法知识库的学习助手2.1 text embedding 模型对比2.1.1 如何选择合…...

深入探讨服务器虚拟化:架构、技术与应用

1. 引言 在现代IT基础设施中&#xff0c;服务器虚拟化已成为一种不可或缺的技术。它不仅提高了资源利用率&#xff0c;还增强了系统的灵活性和可管理性。随着企业对高效、灵活和可扩展IT环境的需求不断增加&#xff0c;服务器虚拟化技术的应用愈发广泛。本文将深入探讨服务器虚…...

C++笔记之尾后迭代器

C笔记之尾后迭代器 code review! 参考笔记 1.C笔记之尾后迭代器 2.C笔记之迭代器失效问题处理 在C中&#xff0c;尾后迭代器&#xff08;通常称为 past-the-end iterator&#xff09;是指指向容器中最后一个元素之后的位置的迭代器。它并不指向任何有效的元素&#xff0c;而是…...

2024年总结【第五年了】

2024年总结 北国绕院扫雪&#xff0c;南方围炉烹茶&#xff0c;且饮一杯无? 执笔温暖不曾起舞日子里的点点滴滴&#xff0c;誊写一段回忆&#xff0c;还以光阴一段副本。 那么你要听一支新故事吗&#xff1f;第五年总结的片碎。 衣单天寒&#xff0c;走趟流星孤骑&#xf…...

EasyExcel(环境搭建以及常用写入操作)

文章目录 EasyExcel环境搭建1.创建模块 easyexcel-demo2.引入依赖3.启动类创建 EasyExcel写1.最简单的写入1.模板2.方法3.结果 Write01.xlsx 2.指定字段不写入Excel1.模板2.方法3.结果 Write02.xlsx 3.指定字段写入excel1.模板2.方法3.结果 Write03.xlsx 4.按照index顺序写入ex…...

JVM类加载器

什么是类加载器 类加载器&#xff08;ClassLoader&#xff09;是Java虚拟机提供给应用程序去实现获取类和接口字节码数据的技术。 类加载器只参与加载过程中的字节码获取并加载到内存这一部分 类加载器的分类 类加载器分为两类&#xff0c;一类是Java代码中实现的&#xff0…...

druid连接池参数配置

最近发现生产环境经常有数据库连接超时的问题&#xff0c;排查发现是druid连接池参数设置不合理导致 总结问题如下&#xff1a; 为了防止僵尸连接&#xff0c;k8s ipvs做了连接超时限制&#xff0c;如果TCP连接闲置超过900s(15分钟)&#xff0c;客户端再尝试通过这个连接去发起…...

【机器学习】Kaggle实战信用卡反欺诈预测(场景解析、数据预处理、特征工程、模型训练、模型评估与优化)

构建信用卡反欺诈预测模型 建模思路 本项目需解决的问题 本项目通过利用信用卡的历史交易数据&#xff0c;进行机器学习&#xff0c;构建信用卡反欺诈预测模型&#xff0c;提前发现客户信用卡被盗刷的事件。 项目背景 数据集包含由欧洲持卡人于2013年9月使用信用卡进行交的…...

Linux(Ubuntu)下ESP-IDF下载与安装完整流程(2)

接前一篇文章:Linux(Ubuntu)下ESP-IDF下载与安装完整流程(1) 本文主要看参考官网说明,如下: 快速入门 - ESP32-S3 - — ESP-IDF 编程指南 latest 文档 Linux 和 macOS 平台工具链的标准设置 - ESP32-S3 - — ESP-IDF 编程指南 latest 文档 一、安装准备 1. Linux用...

SpringBoot3 快速启动框架

文章目录 1 SpringBoot3 介绍 1.1 SpringBoot3 简介1.2 快速入门1.3 入门总结 2 SpringBoot3 配置文件 2.1 统一配置管理概述2.2 属性配置文件使用2.3 YAML配置文件使用2.4 批量配置文件注入2.5 多环境配置和使用 3 SpringBoot 整合 springMVC 3.1 实现过程3.2 web相关配置3.3…...

Enum枚举类,静态常量类,静态类的区别

Enum枚举类&#xff0c;静态常量类&#xff0c;静态类的区别 Enum枚举类静态常量类静态类Enum枚举类&#xff0c;静态常量类&#xff0c;静态类的区别 Enum枚举类 Enum枚举类的结构组成和用法使用可以查阅 Enum枚举类与静态变量和静态数组的区别 静态常量类 public class St…...

解锁专利世界的钥匙 ——famiwei 网

在知识经济的时代,专利作为创新成果的重要体现,无论是对于企业、科研人员乃至整个社会的发展都具有举足轻重的意义。而在众多的专利网站中,famiwei 网为用户提供了一个全面、精准且高效的专利信息交流与服务的舞台。 一、卓越功能,开启专利探索之门 famiwei 网拥有一套强大的专…...

金融租赁系统的创新与发展推动行业效率提升

金融租赁系统的技术升级与创新 在当今快速发展的金融市场中&#xff0c;金融租赁系统的技术升级与创新充满了无限可能。想象一下&#xff0c;传统的租赁方式就像一位沉闷的老师&#xff0c;而新兴技术就如同一位活泼的学生&#xff0c;不断追求新鲜事物。通过自动化、人工智能…...

SQL-Server链接服务器访问Oracle数据

SQL Server 链接服务器访问 Oracle 离线安装 .NET Framework 3.5 方法一&#xff1a;使用 NetFx3.cab 文件 下载 NetFx3.cab 文件&#xff0c;并将其放置在 Windows 10 系统盘的 C:Windows 文件夹中。 以管理员身份运行命令提示符&#xff0c;输入以下命令并回车&#xff1a; …...

Sonic:开源Go语言开发的高性能博客平台

Sonic&#xff1a;一个用Go语言开发的高性能博客平台 简介 Sonic&#xff0c;一个以其速度如声速般快速而命名的博客平台&#xff0c;是一个用Go语言开发的高性能博客系统。正如其名字所暗示的&#xff0c;Sonic旨在提供一个简单而强大的博客解决方案。这个项目受到了Halo项目…...

【react】常见的性能优化 1

目录 常见的 React 性能优化手段 1. 使用 useMemo 和 useCallback 缓存数据和函数 2. 使用 React.memo 缓存组件 3. 组件懒加载 4. 合理使用 key 5. 在组件销毁时清除定时器/事件 6. 使用 Suspense 和 Lazy 拆分组件 7. 使用 Fragment 避免额外标记 8. 避免使用内联函…...

SpringCloud源码-openFeign

LoadBalancer默认只有nacos服务发现器 openFeign与springcloud loadbalancer的结合点...

QLabel添加点击处理

在QLabel中添加点击事件有三种方式&#xff0c;分别是 使用LinkActivated信号连接槽函数&#xff08;有缺限&#xff09;注册事件分发器eventFilter创建类重写鼠标事件 1. 使用LinkActivated信号 QLabel类中有LinkActivated信号&#xff0c;是当标签中的链接被点击的时候触发…...

Markdown表格的使用

Markdown表格的使用 前言语法详解定义表格设定表格列内容的对齐方式 使用场景及实例小结其他文章快来试试吧 Markdown表格的使用&#x1f448;点击这里也可查看 前言 表格通常作为一种布局的形式&#xff0c;用于结构化的数据展示。 Markdown表格包含三个部分&#xff1a;表头…...

时间序列预测算法介绍

时间序列预测是根据时间序列数据的历史变化规律&#xff0c;对未来数据进行预测的方法。在给定的代码中&#xff0c;使用的是自回归&#xff08;AR&#xff09;模型中的AR(4)模型来预测光伏功率。以下将详细解释这种算法&#xff1a; 1. 自回归模型&#xff08;AR模型&#xf…...

加密流量TLS1.2 和TLS1.3的握手区别

加密流量TLS1.2 和TLS1.3的握手区别 TLS1.2 握手均是明文 1&#xff09;Client Hello 2&#xff09;Server Hello 3&#xff09;Certificate TLS1.3 握手中Client Hello是明文&#xff0c;而Server Hello中Extensions以及后面的握手信息不可见 1&#xff09;Client Hello…...

MySQL数据库——主从复制

本文详细介绍 MySQL的主从复制&#xff0c;从原理到配置再到同步过程。 文章目录 简介核心组件主从复制的原理作用主从复制的线程模型主从复制的模式形式复制的方式设计复制机制主从复制的配置步骤优化和改进总结 简介 MySQL 主从复制&#xff08;Replication&#xff09;是一…...

详细说明嵌入式linux中bootcmd与bootargs差异

bootcmd 和 bootargs 是在嵌入式系统开发&#xff0c;特别是基于U-Boot&#xff08;一个广泛应用的开源引导加载程序&#xff09;环境中常见的两个重要参数&#xff0c;它们的区别如下&#xff1a; 功能用途 bootcmd&#xff1a; 定义&#xff1a;bootcmd 是U-Boot中的一个环…...

【UE5】UnrealEngine源码构建2:windows构建unreal engine 5.3.2

参考大神知乎的文章:UE5 小白也能看懂的源码编译指南 据说会耗费400G的空间。 代码本身并不大,可能是依赖特别多,毕竟看起来UE啥都能干,核心还是c++的, 【UE5】UnrealEngine源码构建1:tag为5.3.2源码clone 本着好奇+ 学习的态度,想着也许有机会能更为深入的熟悉UE的机制…...

【YOLO算法改进】ALSS-YOLO:无人机热红外图像|野生动物小目标检测

目录 论文信息 论文创新点 1.自适应轻量通道分割和洗牌&#xff08;ALSS&#xff09;模块 2.轻量坐标注意力&#xff08;LCA&#xff09;模块 3.单通道聚焦模块 4.FineSIOU损失函数 摘要 架构设计 轻量高效网络架构 - ALSS模块 LCA模块 单通道聚焦模块 损失函数优…...

时间序列预测算法---LSTM

文章目录 一、前言1.1、深度学习时间序列一般是几维数据&#xff1f;每个维度的名字是什么&#xff1f;通常代表什么含义&#xff1f;1.2、为什么机器学习/深度学习算法无法处理时间序列数据?1.3、RNN(循环神经网络)处理时间序列数据的思路&#xff1f;1.4、RNN存在哪些问题?…...

【QT】:QT图形化界面概述

Qt背景介绍 1.1 什么是Qt Qt 是⼀个跨平台的C图形⽤⼾界⾯应⽤程序框架。它为应⽤程序开发者提供了建⽴艺术级图形 界⾯所需的所有功能。它是完全⾯向对象的&#xff0c;很容易扩展。Qt为开发者提供了⼀种基于组件的开发模 式&#xff0c;开发者可以通过简单的拖拽和组合来实现…...

[论文笔记]Representation Learning with Contrastive Predictive Coding

引言 今天带来论文 Representation Learning with Contrastive Predictive Coding的笔记。 提出了一种通用的无监督学习方法从高维数据中提取有用表示&#xff0c;称为对比预测编码(Contrastive Predictive Coding,CPC)。使用了一种概率对比损失&#xff0c; 通过使用负采样使…...

Redis相关

Redis相关 什么是redis?redis可以干什么? Redis是一个c语言编写的nosql数据库(不仅仅是sql,泛指非关系型数据库,一般把非关系型数据库称为nosql数据库),数据在内存中以键值对的形式存储,读写速度快,提供数据持久化方式. 常常被广泛应用到做缓存 Redis使用场景 1.缓存 2…...

【优选算法】Binary-Blade:二分查找的算法刃(上)

文章目录 1.概念解析2.二分查找的简单模版3.二分查找的进阶模版4.x的平方根5.搜索插入位置希望读者们多多三连支持小编会继续更新你们的鼓励就是我前进的动力&#xff01; 本篇是优选算法之二分查找算法&#xff0c;该算法是一种高效的在有序数组中查找特定元素的搜索算法 1.概…...

Docker--Docker Network(网络)

Docker Network&#xff08;网络&#xff09;是Docker容器之间和容器与外部网络之间的通信和连接的一种机制。以下是对Docker Network的详细解释&#xff1a; 一、Docker网络的重要性 Docker容器网络是为应用程序所创造的虚拟环境的一部分&#xff0c;它能让应用从宿主机操作…...

转化率是衡量网页设计的一个重要指标,请问如何做?

AARRR是互联网产品运营中一个非常重要的模型&#xff0c;这些模型的每一个步骤都涉及到转化率问题&#xff0c;那么AARRR是是什么呢&#xff1f;转化漏斗是什么吗&#xff1f;转化率为什么重要&#xff1f;设计师在做网页设计的时候&#xff0c;如何提升转化率呢&#xff1f;本…...

运维工具之syncthing工具的安装和使用

一、syncthing工具简介 Syncthing是一款开源的文件同步工具&#xff0c;采用Go语言编写。它支持在多个操作系统上运行&#xff0c;包括Windows、macOS和Linux&#xff0c;以及BSD、Solaris和Android等。以下是对这款软件的详细介绍&#xff0c;主要功能&#xff1a; 实时文件同…...

国产数据库-崖山使用介绍

本文档基于崖山数据库23.3 个人版本&#xff0c;单机&#xff08;主备&#xff09;部署模式的情况下的使用介绍。 数据库实例状态&#xff1a; NOMOUNT&#xff1a;仅读取参数文件&#xff0c;不加载数据库 MOUNT&#xff1a;读取控制文件&#xff0c;加载数据库&#xff…...

primevue的<Menu>组件

1.使用场景 2.代码 1.给你的menu组件起个引用名 2.<Menu>组件需要一个MenuItem[] 3.你要知道MenuItem[ ]的特殊的数据格式&#xff0c;就像TreeNode[ ]一样&#xff0c;数据格式不对是不渲染的。。。。 常用的属性就这几种&#xff0c;js语言和java不一样&#xff0c;J…...

【玩转23种Java设计模式】行为型模式篇:备忘录模式

软件设计模式&#xff08;Design pattern&#xff09;&#xff0c;又称设计模式&#xff0c;是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。 汇总目录链接&…...