基于Java+SpringBoot+Vue宠物领养系统的设计与实现 前后端分离【Java毕业设计·文档报告·代码讲解·安装调试】

news2024/11/15 19:32:17

🍊作者:计算机编程-吉哥
🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。
🍊心愿:点赞 👍 收藏 ⭐评论 📝
🍅 文末获取源码联系

👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~
Java毕业设计项目~热门选题推荐《1000套》

技术选型

springboot、mybatisplus、vue、elementui、html、css、js、mysql、jdk1.8

数据库表结构

14张 

开发工具

idea、navicat

⭐功能

【角色】

管理员、用户

【前台功能模块】

  • 登录注册
  • 首页
  • 宠物领养
  • 宠物认领
  • 感谢信
  • 教学视频
  • 公告
  • 个人中心
  • 后台管理

【后台功能模块】

  • 登录
  • 首页
  • 个人中心
  • 管理员管理
  • 用户管理
  • 宠物领养管理
  • 宠物认领管理
  • 教学视频管理
  • 感谢信管理
  • 基础数据管理
  • 公告管理
  • 轮播图管理

🏆项目演示截图

1、宠物领养管理

 2、宠物领养审核管理

 3、宠物认领管理

 4、宠物认领审核管理

 5、教学视频管理

 6、宠物领养

 7、宠物认领

 8、教学视频

 9、感谢信管理

 

数据库文件设计  


CREATE TABLE `chongwulingyang` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `chongwulingyang_name` varchar(200) DEFAULT NULL COMMENT '标题  Search111',
  `chongwulingyang_types` int(11) DEFAULT NULL COMMENT '类型 Search111',
  `chongwulingyang_photo` varchar(200) DEFAULT NULL COMMENT '宠物图片',
  `jieshu_types` int(11) DEFAULT NULL COMMENT '是否被认领',
  `chongwulingyang_content` text COMMENT '宠物详情',
  `create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间  show1 show2 photoShow',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COMMENT='宠物领养';


CREATE TABLE `chongwulingyangshenhe` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `chongwulingyang_id` int(11) DEFAULT NULL COMMENT '宠物领养',
  `yonghu_id` int(11) DEFAULT NULL COMMENT '领养用户',
  `chongwurenlingshenhe_text` text COMMENT '认领凭据',
  `chongwulingyangshenhe_yesno_types` int(11) DEFAULT NULL COMMENT '申请状态',
  `create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间 show3 photoShow',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8 COMMENT='宠物领养审核';


DROP TABLE IF EXISTS `chongwurenling`;

CREATE TABLE `chongwurenling` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `chongwurenling_name` varchar(200) DEFAULT NULL COMMENT '标题  Search111',
  `chongwulingyang_types` int(11) DEFAULT NULL COMMENT '类型 Search111',
  `chongwurenling_photo` varchar(200) DEFAULT NULL COMMENT '宠物图片',
  `yonghu_id` int(11) DEFAULT NULL COMMENT '发布用户',
  `jieshu_types` int(11) DEFAULT NULL COMMENT '是否找到主人',
  `chongwurenling_content` text COMMENT '宠物详情',
  `create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间  show1 show2 photoShow',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='宠物认领';


CREATE TABLE `chongwurenlingshenhe` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `chongwurenling_id` int(11) DEFAULT NULL COMMENT '宠物认领',
  `yonghu_id` int(11) DEFAULT NULL COMMENT '认领用户',
  `chongwurenlingshenhe_text` text COMMENT '认领凭据',
  `chongwurenlingshenhe_yesno_types` int(11) DEFAULT NULL COMMENT '申请状态',
  `create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间 show3 photoShow',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COMMENT='宠物认领审核';



CREATE TABLE `config` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `name` varchar(100) NOT NULL COMMENT '配置参数名称',
  `value` varchar(100) DEFAULT NULL COMMENT '配置参数值',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8 COMMENT='配置文件';


CREATE TABLE `dictionary` (
  `id` int(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `dic_code` varchar(200) DEFAULT NULL COMMENT '字段',
  `dic_name` varchar(200) DEFAULT NULL COMMENT '字段名',
  `code_index` int(11) DEFAULT NULL COMMENT '编码',
  `index_name` varchar(200) DEFAULT NULL COMMENT '编码名字  Search111 ',
  `super_id` int(11) DEFAULT NULL COMMENT '父字段id',
  `beizhu` varchar(200) DEFAULT NULL COMMENT '备注',
  `create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=86 DEFAULT CHARSET=utf8 COMMENT='字典表';


CREATE TABLE `ganxiexin` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `ganxiexin_name` varchar(200) DEFAULT NULL COMMENT '标题  Search111 ',
  `yonghu_id` int(11) DEFAULT NULL COMMENT '发布用户',
  `ganxiexin_content` text COMMENT '内容',
  `create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间 show2 nameShow',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COMMENT='感谢信';


CREATE TABLE `jiaoxueshipin_collection` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `jiaoxueshipin_id` int(11) DEFAULT NULL COMMENT '视频',
  `yonghu_id` int(11) DEFAULT NULL COMMENT '用户',
  `jiaoxueshipin_collection_types` int(11) DEFAULT NULL COMMENT '类型',
  `insert_time` timestamp NULL DEFAULT NULL COMMENT '收藏时间',
  `create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间 show3 photoShow',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=127 DEFAULT CHARSET=utf8 COMMENT='视频收藏';


CREATE TABLE `jiaoxueshipin_liuyan` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `jiaoxueshipin_id` int(11) DEFAULT NULL COMMENT '视频',
  `yonghu_id` int(11) DEFAULT NULL COMMENT '用户',
  `jiaoxueshipin_liuyan_text` text COMMENT '留言内容',
  `reply_text` text COMMENT '回复内容',
  `insert_time` timestamp NULL DEFAULT NULL COMMENT '留言时间',
  `update_time` timestamp NULL DEFAULT NULL COMMENT '回复时间',
  `create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COMMENT='视频留言';



CREATE TABLE `news` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `news_name` varchar(200) DEFAULT NULL COMMENT '公告名称  Search111 ',
  `news_types` int(11) DEFAULT NULL COMMENT '公告类型  Search111 ',
  `news_photo` varchar(200) DEFAULT NULL COMMENT '公告图片',
  `insert_time` timestamp NULL DEFAULT NULL COMMENT '公告时间',
  `news_content` text COMMENT '公告详情',
  `create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间 show2 show1 nameShow',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COMMENT='公告';


CREATE TABLE `token` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `userid` bigint(20) NOT NULL COMMENT '用户id',
  `username` varchar(100) NOT NULL COMMENT '用户名',
  `tablename` varchar(100) DEFAULT NULL COMMENT '表名',
  `role` varchar(100) DEFAULT NULL COMMENT '角色',
  `token` varchar(200) NOT NULL COMMENT '密码',
  `addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '新增时间',
  `expiratedtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '过期时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COMMENT='token表';


CREATE TABLE `users` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `username` varchar(100) NOT NULL COMMENT '用户名',
  `password` varchar(100) NOT NULL COMMENT '密码',
  `role` varchar(100) DEFAULT '管理员' COMMENT '角色',
  `addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '新增时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='用户表';



CREATE TABLE `yonghu` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `username` varchar(200) DEFAULT NULL COMMENT '账户',
  `password` varchar(200) DEFAULT NULL COMMENT '密码',
  `yonghu_name` varchar(200) DEFAULT NULL COMMENT '用户姓名  Search111',
  `sex_types` int(11) DEFAULT NULL COMMENT '性别 Search111',
  `yonghu_id_number` varchar(200) DEFAULT NULL COMMENT '身份证号',
  `yonghu_phone` varchar(200) DEFAULT NULL COMMENT '手机号',
  `yonghu_address` varchar(200) DEFAULT NULL COMMENT '个人地址',
  `yonghu_photo` varchar(200) DEFAULT NULL COMMENT '照片',
  `create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间 ',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COMMENT='用户';

核心代码   

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 计算机编程-吉哥
*/
@RestController
@Controller
@RequestMapping("/chongwulingyang")
public class ChongwulingyangController {
    private static final Logger logger = LoggerFactory.getLogger(ChongwulingyangController.class);

    @Autowired
    private ChongwulingyangService chongwulingyangService;


    @Autowired
    private TokenService tokenService;
    @Autowired
    private DictionaryService dictionaryService;

    //级联表service

    @Autowired
    private YonghuService yonghuService;


    /**
    * 后端列表
    */
    @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(StringUtil.isEmpty(role))
            return R.error(511,"权限为空");
        else if("用户".equals(role))
            params.put("yonghuId",request.getSession().getAttribute("userId"));
        if(params.get("orderBy")==null || params.get("orderBy")==""){
            params.put("orderBy","id");
        }
        PageUtils page = chongwulingyangService.queryPage(params);

        //字典表数据转换
        List<ChongwulingyangView> list =(List<ChongwulingyangView>)page.getList();
        for(ChongwulingyangView 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);
        ChongwulingyangEntity chongwulingyang = chongwulingyangService.selectById(id);
        if(chongwulingyang !=null){
            //entity转view
            ChongwulingyangView view = new ChongwulingyangView();
            BeanUtils.copyProperties( chongwulingyang , view );//把实体数据重构到view中

            //修改对应字典表字段
            dictionaryService.dictionaryConvert(view, request);
            return R.ok().put("data", view);
        }else {
            return R.error(511,"查不到数据");
        }

    }

    /**
    * 后端保存
    */
    @RequestMapping("/save")
    public R save(@RequestBody ChongwulingyangEntity chongwulingyang, HttpServletRequest request){
        logger.debug("save方法:,,Controller:{},,chongwulingyang:{}",this.getClass().getName(),chongwulingyang.toString());

        String role = String.valueOf(request.getSession().getAttribute("role"));
        if(StringUtil.isEmpty(role))
            return R.error(511,"权限为空");

        Wrapper<ChongwulingyangEntity> queryWrapper = new EntityWrapper<ChongwulingyangEntity>()
            .eq("chongwulingyang_name", chongwulingyang.getChongwulingyangName())
            .eq("chongwulingyang_types", chongwulingyang.getChongwulingyangTypes())
            .eq("jieshu_types", chongwulingyang.getJieshuTypes())
            ;

        logger.info("sql语句:"+queryWrapper.getSqlSegment());
        ChongwulingyangEntity chongwulingyangEntity = chongwulingyangService.selectOne(queryWrapper);
        if(chongwulingyangEntity==null){
            chongwulingyang.setCreateTime(new Date());
            chongwulingyangService.insert(chongwulingyang);
            return R.ok();
        }else {
            return R.error(511,"表中有相同数据");
        }
    }

    /**
    * 后端修改
    */
    @RequestMapping("/update")
    public R update(@RequestBody ChongwulingyangEntity chongwulingyang, HttpServletRequest request){
        logger.debug("update方法:,,Controller:{},,chongwulingyang:{}",this.getClass().getName(),chongwulingyang.toString());

        String role = String.valueOf(request.getSession().getAttribute("role"));
        if(StringUtil.isEmpty(role))
            return R.error(511,"权限为空");
        //根据字段查询是否有相同数据
        Wrapper<ChongwulingyangEntity> queryWrapper = new EntityWrapper<ChongwulingyangEntity>()
            .notIn("id",chongwulingyang.getId())
            .andNew()
            .eq("chongwulingyang_name", chongwulingyang.getChongwulingyangName())
            .eq("chongwulingyang_types", chongwulingyang.getChongwulingyangTypes())
            .eq("jieshu_types", chongwulingyang.getJieshuTypes())
            ;

        logger.info("sql语句:"+queryWrapper.getSqlSegment());
        ChongwulingyangEntity chongwulingyangEntity = chongwulingyangService.selectOne(queryWrapper);
        if("".equals(chongwulingyang.getChongwulingyangPhoto()) || "null".equals(chongwulingyang.getChongwulingyangPhoto())){
                chongwulingyang.setChongwulingyangPhoto(null);
        }
        if(chongwulingyangEntity==null){
            //  String role = String.valueOf(request.getSession().getAttribute("role"));
            //  if("".equals(role)){
            //      chongwulingyang.set
            //  }
            chongwulingyangService.updateById(chongwulingyang);//根据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());
        chongwulingyangService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }

    /**
     * 批量上传
     */
    @RequestMapping("/batchInsert")
    public R save( String fileName){
        logger.debug("batchInsert方法:,,Controller:{},,fileName:{}",this.getClass().getName(),fileName);
        try {
            List<ChongwulingyangEntity> chongwulingyangList = 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("static/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){
                            //循环
                            ChongwulingyangEntity chongwulingyangEntity = new ChongwulingyangEntity();
//                            chongwulingyangEntity.setChongwulingyangName(data.get(0));                    //标题 要改的
//                            chongwulingyangEntity.setChongwulingyangTypes(Integer.valueOf(data.get(0)));   //类型 要改的
//                            chongwulingyangEntity.setChongwulingyangPhoto("");//照片
//                            chongwulingyangEntity.setJieshuTypes(Integer.valueOf(data.get(0)));   //是否被认领 要改的
//                            chongwulingyangEntity.setChongwulingyangContent("");//照片
//                            chongwulingyangEntity.setCreateTime(date);//时间
                            chongwulingyangList.add(chongwulingyangEntity);


                            //把要查询是否重复的字段放入map中
                        }

                        //查询是否重复
                        chongwulingyangService.insertBatch(chongwulingyangList);
                        return R.ok();
                    }
                }
            }
        }catch (Exception e){
            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 = chongwulingyangService.queryPage(params);

        //字典表数据转换
        List<ChongwulingyangView> list =(List<ChongwulingyangView>)page.getList();
        for(ChongwulingyangView 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);
        ChongwulingyangEntity chongwulingyang = chongwulingyangService.selectById(id);
            if(chongwulingyang !=null){


                //entity转view
                ChongwulingyangView view = new ChongwulingyangView();
                BeanUtils.copyProperties( chongwulingyang , view );//把实体数据重构到view中

                //修改对应字典表字段
                dictionaryService.dictionaryConvert(view, request);
                return R.ok().put("data", view);
            }else {
                return R.error(511,"查不到数据");
            }
    }


    /**
    * 前端保存
    */
    @RequestMapping("/add")
    public R add(@RequestBody ChongwulingyangEntity chongwulingyang, HttpServletRequest request){
        logger.debug("add方法:,,Controller:{},,chongwulingyang:{}",this.getClass().getName(),chongwulingyang.toString());
        Wrapper<ChongwulingyangEntity> queryWrapper = new EntityWrapper<ChongwulingyangEntity>()
            .eq("chongwulingyang_name", chongwulingyang.getChongwulingyangName())
            .eq("chongwulingyang_types", chongwulingyang.getChongwulingyangTypes())
            .eq("jieshu_types", chongwulingyang.getJieshuTypes())
            ;
        logger.info("sql语句:"+queryWrapper.getSqlSegment());
        ChongwulingyangEntity chongwulingyangEntity = chongwulingyangService.selectOne(queryWrapper);
        if(chongwulingyangEntity==null){
            chongwulingyang.setCreateTime(new Date());
        chongwulingyangService.insert(chongwulingyang);
            return R.ok();
        }else {
            return R.error(511,"表中有相同数据");
        }
    }


}

参考文档

 

更多项目推荐:计算机毕业设计项目

如果大家有任何疑虑,请在下方咨询或评论

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

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

相关文章

JVM源码剖析之线程的创建过程

说在前面&#xff1a; 对于Java线程的创建这个话题&#xff0c;似乎已经被"八股文"带偏&#xff5e; 大部分Java程序员从"八股文"得知创建Java线程有N种方式&#xff0c;比如new Thread、new Runnable、Callable、线程池等等&#xff5e; 而笔者写下这篇文…

Qemu系统模拟:1 简介

目录 1 后端/加速器2 特性简介3 运行 1 后端/加速器 系统模拟主要用于在host设备上运行guest OSQEMU支持多种hypervisors,同时也支持JIT模拟方案&#xff08;TCG&#xff09; 例如从上表我们可以看出&#xff0c;运行在x86硬件上的Linux系统支持KVM,Xen,TCG 2 特性简介 提供…

大数据集群(Hadoop生态)安装部署

目录 1. 简介 2. 前置要求 3. Hadoop集群角色 4. 角色和节点分配 5. 调整虚拟机内存 6. Zookeeper集群部署 7. Hadoop集群部署 7.1 下载Hadoop安装包、解压、配置软链接 7.2 修改配置文件&#xff1a;hadoop-env.sh 7.3 修改配置文件&#xff1a;core-site…

自动化机器人的开发框架

自动化领域有多个开源的框架和工具&#xff0c;用于自动化各种任务和流程。以下是一些常见的自动化开源框架和工具&#xff0c;以及它们的特点&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 1.Robot…

【Java】Java中BigDecimal解决精度丢失问题

文章目录 1.我们先看一个例子2.BigDecimal中的一些方法3.值得注意的是如果要想无精度丢失的情况下计算结果&#xff0c;那么需要把double,float类型的参数转化为String类型的。并且使用BigDecimal(String)这个构造方法进行构造。 去获取结果。不然还是没有效果。4.在一般开发过…

python curl2pyreqs 生成接口脚本

下载 curl2pyreqs 库 pip install curl2pyreqs -i https://pypi.tuna.tsinghua.edu.cn/simple 打开调试模式&#xff0c;在Network这里获取 接口的cURL 打开cmd窗口&#xff0c;输入curl2pyreqs&#xff0c;会自动生成接口代码 curl2pyreqs 执行接口脚本&#xff0c;返回响应…

Docker基础操作容器

启动容器有两种方式&#xff0c;一种是基于镜像新建一个容器并启动&#xff0c;另外一个是将在终止状态&#xff08;exited&#xff09;的容器重新启动。 因为 Docker 的容器实在太轻量级了&#xff0c;很多时候用户都是随时删除和新创建容器。 新建并启动 所需要的命令主要…

火爆全网的头戴式耳机,Y2K辣妹时髦单品——Umelody轻律 U1头戴式耳机!

近些年&#xff0c;“复古”这阵风在时尚圈是越刮越猛。Y2K穿搭风更是火爆&#xff0c;最近火爆的Umelody轻律 U1头戴式耳机&#xff0c;可以说是通过单品来就能掌握其中的精髓&#xff0c;在众多博主和达人的穿搭中轮番上阵&#xff0c;无论是挂脖还是佩戴都特别好看&#xff…

STM32单片机入门学习(五)-按钮控制LED

按钮和LED接线 LED负极接B12,正极接VCC 按钮一端接B13,一端接GND&#xff0c;按下为低电平&#xff0c;松开为高电平 如图&#xff1a; 主程序代码&#xff1a;main.c #include "stm32f10x.h" #include "Delay.h" //delay函数所在头文件 #include …

基于Springboot实现影视影院订票选座管理系统【项目源码+论文说明】

基于Springboot实现影视影院订票选座管理系统演示 摘要 本论文主要论述了如何使用JAVA语言开发一个影城管理系统 &#xff0c;本系统将严格按照软件开发流程进行各个阶段的工作&#xff0c;采用B/S架构&#xff0c;面向对象编程思想进行项目开发。在引言中&#xff0c;作者将论…

域信息收集

DMZ&#xff0c;是英文“demilitarized zone”的缩写&#xff0c;中文名称为“隔离区”&#xff0c;也称“非军事化区”。它是为了解决安装防火墙后外部网络的访问用户不能访问内部网络服务器的问题&#xff0c;而设立的一个非安全系统与安全系统之间的缓冲区。该缓冲区位于企业…

Git Pull failure 【add/commit】

操作页面 操作步骤 1. 打开项目所在 在.git目录下右击打开Git Bssh Here 2. git add . 3. git commit -m "提交" 4. 成功提交到本地, 这下就可以拉取代码了

选择适合您的项目管理软件:哪个更好?

对于项目管理而言&#xff0c;一个优秀的项目管理工具可以达到事半功倍的效果。Zoho Projects 是一款功能强大&#xff0c;适用于各行业的标准化项目管理工具&#xff0c;具备适用度高的特点&#xff0c;丰富的功能模块可以匹配各行各业的项目管理。 一&#xff0c;任务管理 通…

JUC第十八讲:JUC集合-BlockingQueue 详解

JUC集合-BlockingQueue 详解 JUC里的 BlockingQueue 接口表示一个线程安全放入和提取实例的队列。本文是JUC第十八讲&#xff0c;将给你演示如何使用这个 BlockingQueue&#xff0c;不会讨论如何在 Java 中实现一个你自己的 BlockingQueue。 文章目录 JUC集合-BlockingQueue 详…

Linux是什么,有哪些特点?Linux和UNIX的关系及区别(详解版)

与大家熟知的 Windows 操作系统软件一样&#xff0c;Linux 也是一个操作系统软件&#xff0c;其 logo 是一只企鹅&#xff08;如图 1 所示&#xff09;。与 Windows 不同之处在于&#xff0c;Linux 是一套开放源代码程序的、可以自由传播的类 Unix 操作系统软件。 图 1 Linux 操…

Atcoder Regular Contest 166

只打了半场。 A. Replace C or Swap AB 首先如果存在某个 \(i\)&#xff0c;使得 \(Y_i\) 是 C 且 \(X_i\) 不是&#xff0c;那么显然是不合法的&#xff0c;可以直接判掉。 那么除去上述情况 \(Y\) 中为字符 C 的位置 \(X\) 也只能是 C。它们把字符串分成了若干段&#xff0c;…

LVGL_基础控件timer

LVGL_基础控件timer 1、创建基础控件定时器 /* 下面创建三个timer&#xff0c;最后创建的timer会被放在timer list的最前面&#xff0c; lvgl的任务处理器会从timer list从头到尾按顺序遍历检查&#xff0c;执行满足执行条件的timer。 因此&#xff0c;如果三个定时器的周期设…

帮微软语音助手纠正“阿弥陀佛”“e”字错误发音的技巧

一、前言 微软AI文字转语音助手&#xff0c;现已被大家普便应用。最近在传统文化佛学名词的发音转换应用中&#xff0c;发现了一个致命的错误。那就是“阿弥陀佛”中的“阿”字的“a”发音&#xff0c;被误读为“e”。说起这个重大的错误&#xff0c;佛门大德南怀瑾老师也一再…

排序算法——选择排序

一、介绍&#xff1a; 选择排序就是按照一定的顺序从选取第一个元素索引开始&#xff0c;将其储存在一个变量值中&#xff0c;根据排序规则比较后边每一个元素与这个元素的大小&#xff0c;根据排序规则需要&#xff0c;变量值的索引值进行替换&#xff0c;一轮遍历之后&#x…

【RabbitMQ】docker rabbitmq集群 docker搭建rabbitmq集群

docker rabbitmq集群 docker搭建rabbitmq集群 RabbitMQ提供了两种常用的集群模式 1.普通集群模式 2.镜像集群模式 普通集群模式只能同步主节点上的交换机和队列信息&#xff0c;但对于队列中的消息不做同步&#xff0c;主节点宕机也不能进行切换&#xff08;故障转移&#xff…