【计算机毕业设计】基于SpringBoot的电影在线预定与管理系统的设计与实现

news2024/11/24 12:09:30

博主主页:一季春秋
博主简介:专注Java技术领域和毕业设计项目实战、Java、微信小程序、安卓等技术开发,远程调试部署、代码讲解、文档指导、ppt制作等技术指导。
主要内容:毕业设计(Java项目、小程序等)、简历模板、学习资料、面试题库、技术咨询。

🍅文末获取联系🍅

精彩专栏推荐订阅👇🏻👇🏻 不然下次找不到哟

SpringBoot+Vue项目持续更新中

http://t.csdn.cn/1mgm8

目录

一、项目介绍 

二、项目主要技术 

三、系统总体功能设计

四、系统实现

4.1 前台功能实现

4.2 后台模块实现 

五、实现代码


一、项目介绍 

本系统是通过Java语言来进行设计和实现的。项目主要用到的技术是SpringBoot框架,Vue框架,数据库使用的是SQL,系统采用的开发工具是IntelliJ IDEA。

本电影在线预定与管理系统主要包括个首页、人中心、管理员管理、用户管理、电影管理、论坛管理、公告信息管理、基础数据管理、轮播图信息等多个模块。它帮助电影在线预定与管理实现了信息化、网络化,通过测试,实现了系统设计目标,相比传统的管理模式,本系统合理的利用了电影在线预定与管理数据资源,有效的减少了电影在线预定与管理的经济投入,大大提高了电影在线预定与管理的效率。

二、项目主要技术 

开发语言:Java

使用框架:spring boot

前端技术:Vue 、css、element-ui、js

开发工具:IDEA/MyEclipse/Eclipse、Visual Studio Code

数据库:MySQL 5.7/8.0

数据库管理工具:phpstudy/Navicat

JDK版本:jdk1.8

Maven: apache-maven 3.8.1-bin

三、系统总体功能设计

通过软件的需求分析已经获得了系统的基本功能需求,根据需求,将电影在线预定与管理系统功能模块主要分为管理员模块。管理员添加首页、个人中心、管理员管理、用户管理、电影管理、论坛管理、公告信息管理、基础数据管理、轮播图信息等等操作。如图是系统的功能结构图。

四、系统实现

4.1 前台功能实现

 前台首页

电影页面

电影详情

电影订单

4.2 后台模块实现 

管理员输入用户名和密码,下拉选择框,选择用户权限,然后点击立即登录,系统与保存在数据库的数据进行匹配,如果用户名与密码与数据库存放数据匹配,系统跳转到用户页面,否则提示错误重新跳转到登录页面。

管理员子系统模块主要包括对首页、人中心、管理员管理、用户管理、电影管理、论坛管理、公告信息管理、基础数据管理、轮播图信息等模块。

个人中心是可以进行添加系统管理员操作。添加管理员时,需要分别设置管理员的用户名,用户名不能为空,设置密码,在下拉选择框中选择权限。该模块还具备查询所有管理员列表,可以编辑修改列表中管理员的资料,包括用户名、密码和权限。

用户管理是可以进行添加用户信息操作。在文本框输入所要添加的用户管理,然后提交即可,输入错误可以点击重置按钮对文本框重置。

查询所有电影管理列表,查询电影信息,可以对列表中电影信息进行修改、删除等操作。

论坛管理是可以进行添加论坛信息操作。添加论坛信息时,需要设置论坛信息,然后提交即可,输入错误可以点击重置按钮对文本框重置。

查询所有公告信息管理列表,查询公告信息,并对公告信息进行修改,可以对列表中公告信息进行删除。

基础数据管理是可以列表中进行添加基础数据信息操作。添加基础数据信息时,需要设置基础数据信息基本信息,然后提交即可,输入错误可以点击重置按钮对文本框重置。

轮播图信息是可以列表中进行添加轮播图信息操作。添加轮播图信息时,需要设置轮播图基本信息,然后提交即可,输入错误可以点击重置按钮对文本框重置。

五、实现代码

电影订单

/**
 * 电影订单
 * 后端接口
 * @author
 * @email
*/
@RestController
@Controller
@RequestMapping("/dianyingOrder")
public class DianyingOrderController {
    private static final Logger logger = LoggerFactory.getLogger(DianyingOrderController.class);

    private static final String TABLE_NAME = "dianyingOrder";

    @Autowired
    private DianyingOrderService dianyingOrderService;


    @Autowired
    private TokenService tokenService;

    @Autowired
    private DianyingService dianyingService;//电影
    @Autowired
    private DianyingCommentbackService dianyingCommentbackService;//电影评价
    @Autowired
    private DictionaryService dictionaryService;//字典
    @Autowired
    private ForumService forumService;//论坛
    @Autowired
    private GonggaoService gonggaoService;//公告信息
    @Autowired
    private YonghuService yonghuService;//用户
    @Autowired
    private UsersService usersService;//管理员


    /**
    * 后端列表
    */
    @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"));
        CommonUtil.checkMap(params);
        PageUtils page = dianyingOrderService.queryPage(params);

        //字典表数据转换
        List<DianyingOrderView> list =(List<DianyingOrderView>)page.getList();
        for(DianyingOrderView 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);
        DianyingOrderEntity dianyingOrder = dianyingOrderService.selectById(id);
        if(dianyingOrder !=null){
            //entity转view
            DianyingOrderView view = new DianyingOrderView();
            BeanUtils.copyProperties( dianyingOrder , view );//把实体数据重构到view中
            //级联表 电影
            //级联表
            DianyingEntity dianying = dianyingService.selectById(dianyingOrder.getDianyingId());
            if(dianying != null){
            BeanUtils.copyProperties( dianying , view ,new String[]{ "id", "createTime", "insertTime", "updateTime", "yonghuId"});//把级联的数据添加到view中,并排除id和创建时间字段,当前表的级联注册表
            view.setDianyingId(dianying.getId());
            }
            //级联表 用户
            //级联表
            YonghuEntity yonghu = yonghuService.selectById(dianyingOrder.getYonghuId());
            if(yonghu != null){
            BeanUtils.copyProperties( yonghu , view ,new String[]{ "id", "createTime", "insertTime", "updateTime", "yonghuId"});//把级联的数据添加到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 DianyingOrderEntity dianyingOrder, HttpServletRequest request){
        logger.debug("save方法:,,Controller:{},,dianyingOrder:{}",this.getClass().getName(),dianyingOrder.toString());

        String role = String.valueOf(request.getSession().getAttribute("role"));
        if(false)
            return R.error(511,"永远不会进入");
        else if("用户".equals(role))
            dianyingOrder.setYonghuId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));

        dianyingOrder.setCreateTime(new Date());
        dianyingOrder.setInsertTime(new Date());
        dianyingOrderService.insert(dianyingOrder);

        return R.ok();
    }

    /**
    * 后端修改
    */
    @RequestMapping("/update")
    public R update(@RequestBody DianyingOrderEntity dianyingOrder, HttpServletRequest request) throws NoSuchFieldException, ClassNotFoundException, IllegalAccessException, InstantiationException {
        logger.debug("update方法:,,Controller:{},,dianyingOrder:{}",this.getClass().getName(),dianyingOrder.toString());
        DianyingOrderEntity oldDianyingOrderEntity = dianyingOrderService.selectById(dianyingOrder.getId());//查询原先数据

        String role = String.valueOf(request.getSession().getAttribute("role"));
//        if(false)
//            return R.error(511,"永远不会进入");
//        else if("用户".equals(role))
//            dianyingOrder.setYonghuId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));

            dianyingOrderService.updateById(dianyingOrder);//根据id更新
            return R.ok();
    }



    /**
    * 删除
    */
    @RequestMapping("/delete")
    public R delete(@RequestBody Integer[] ids, HttpServletRequest request){
        logger.debug("delete:,,Controller:{},,ids:{}",this.getClass().getName(),ids.toString());
        List<DianyingOrderEntity> oldDianyingOrderList =dianyingOrderService.selectBatchIds(Arrays.asList(ids));//要删除的数据
        dianyingOrderService.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");
        //.eq("time", new SimpleDateFormat("yyyy-MM-dd").format(new Date()))
        try {
            List<DianyingOrderEntity> dianyingOrderList = 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){
                            //循环
                            DianyingOrderEntity dianyingOrderEntity = new DianyingOrderEntity();
//                            dianyingOrderEntity.setDianyingOrderUuidNumber(data.get(0));                    //订单号 要改的
//                            dianyingOrderEntity.setDianyingId(Integer.valueOf(data.get(0)));   //电影 要改的
//                            dianyingOrderEntity.setYonghuId(Integer.valueOf(data.get(0)));   //用户 要改的
//                            dianyingOrderEntity.setDianyingOrderTruePrice(data.get(0));                    //实付价格 要改的
//                            dianyingOrderEntity.setDianyingOrderTypes(Integer.valueOf(data.get(0)));   //订单类型 要改的
//                            dianyingOrderEntity.setBuySectionNumber(Integer.valueOf(data.get(0)));   //车厢 要改的
//                            dianyingOrderEntity.setBuyZuoweiNumber(data.get(0));                    //购买的座位 要改的
//                            dianyingOrderEntity.setBuyZuoweiTime(sdf.parse(data.get(0)));          //订购日期 要改的
//                            dianyingOrderEntity.setInsertTime(date);//时间
//                            dianyingOrderEntity.setCreateTime(date);//时间
                            dianyingOrderList.add(dianyingOrderEntity);


                            //把要查询是否重复的字段放入map中
                                //订单号
                                if(seachFields.containsKey("dianyingOrderUuidNumber")){
                                    List<String> dianyingOrderUuidNumber = seachFields.get("dianyingOrderUuidNumber");
                                    dianyingOrderUuidNumber.add(data.get(0));//要改的
                                }else{
                                    List<String> dianyingOrderUuidNumber = new ArrayList<>();
                                    dianyingOrderUuidNumber.add(data.get(0));//要改的
                                    seachFields.put("dianyingOrderUuidNumber",dianyingOrderUuidNumber);
                                }
                        }

                        //查询是否重复
                         //订单号
                        List<DianyingOrderEntity> dianyingOrderEntities_dianyingOrderUuidNumber = dianyingOrderService.selectList(new EntityWrapper<DianyingOrderEntity>().in("dianying_order_uuid_number", seachFields.get("dianyingOrderUuidNumber")));
                        if(dianyingOrderEntities_dianyingOrderUuidNumber.size() >0 ){
                            ArrayList<String> repeatFields = new ArrayList<>();
                            for(DianyingOrderEntity s:dianyingOrderEntities_dianyingOrderUuidNumber){
                                repeatFields.add(s.getDianyingOrderUuidNumber());
                            }
                            return R.error(511,"数据库的该表中的 [订单号] 字段已经存在 存在数据为:"+repeatFields.toString());
                        }
                        dianyingOrderService.insertBatch(dianyingOrderList);
                        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));

        CommonUtil.checkMap(params);
        PageUtils page = dianyingOrderService.queryPage(params);

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


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

                //级联表
                    DianyingEntity dianying = dianyingService.selectById(dianyingOrder.getDianyingId());
                if(dianying != null){
                    BeanUtils.copyProperties( dianying , view ,new String[]{ "id", "createDate"});//把级联的数据添加到view中,并排除id和创建时间字段
                    view.setDianyingId(dianying.getId());
                }
                //级联表
                    YonghuEntity yonghu = yonghuService.selectById(dianyingOrder.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 DianyingOrderEntity dianyingOrder, HttpServletRequest request){
        logger.debug("add方法:,,Controller:{},,dianyingOrder:{}",this.getClass().getName(),dianyingOrder.toString());
            DianyingEntity dianyingEntity = dianyingService.selectById(dianyingOrder.getDianyingId());
            if(dianyingEntity == null){
                return R.error(511,"查不到该电影");
            }
            // Double dianyingNewMoney = dianyingEntity.getDianyingNewMoney();

            if(false){
            }
            else if(dianyingEntity.getDianyingNewMoney() == null){
                return R.error(511,"票价不能为空");
            }
            List<String> buyZuoweiNumberList = new ArrayList<>(Arrays.asList(dianyingOrder.getBuyZuoweiNumber().split(",")));//这次购买的座位
            List<String> beforeBuyZuoweiNumberList = new ArrayList<>();//之前已经购买的座位

                    //某天日期的某个分段
            List<DianyingOrderEntity> dianyingOrderEntityList =
                        dianyingOrderService.selectList(new EntityWrapper<DianyingOrderEntity>()
                        .eq("dianying_id", dianyingOrder.getDianyingId())
                        .eq("buy_zuowei_time", dianyingOrder.getBuyZuoweiTime())
                        .eq("buy_section_number", dianyingOrder.getBuySectionNumber())
                        .notIn("dianying_order_types",102)//已退款的订单

                        );
            for(DianyingOrderEntity d:dianyingOrderEntityList){
                beforeBuyZuoweiNumberList.addAll(Arrays.asList(d.getBuyZuoweiNumber().split(",")));
            }
            buyZuoweiNumberList.retainAll(beforeBuyZuoweiNumberList);//判断当前购买list包含已经被购买的list中是否有重复的  有的话 就保留
            if(buyZuoweiNumberList != null && buyZuoweiNumberList.size()>0 ){
                return R.error(511,buyZuoweiNumberList.toString()+" 的座位已经被使用");
            }

            //计算所获得积分
            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() - dianyingEntity.getDianyingNewMoney()*(dianyingOrder.getBuyZuoweiNumber().split(",").length);//余额
            if(balance<0)
                return R.error(511,"余额不够支付");
            dianyingOrder.setDianyingOrderTypes(101); //设置订单状态为已购买
            dianyingOrder.setDianyingOrderTruePrice(dianyingEntity.getDianyingNewMoney()*(dianyingOrder.getBuyZuoweiNumber().split(",").length)); //设置实付价格
            dianyingOrder.setYonghuId(userId); //设置订单支付人id
            dianyingOrder.setDianyingOrderUuidNumber(String.valueOf(new Date().getTime()));
            dianyingOrder.setInsertTime(new Date());
            dianyingOrder.setCreateTime(new Date());
                dianyingOrderService.insert(dianyingOrder);//新增订单
            //更新第一注册表
            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"));

            DianyingOrderEntity dianyingOrder = dianyingOrderService.selectById(id);//当前表service
            Integer buyNumber = dianyingOrder.getBuyZuoweiNumber().split(",").length;
            Integer dianyingId = dianyingOrder.getDianyingId();
            if(dianyingId == null)
                return R.error(511,"查不到该电影");
            DianyingEntity dianyingEntity = dianyingService.selectById(dianyingId);
            if(dianyingEntity == null)
                return R.error(511,"查不到该电影");
            Double dianyingNewMoney = dianyingEntity.getDianyingNewMoney();
            if(dianyingNewMoney == 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,"用户金额不能为空");
            Double zhekou = 1.0;

                //计算金额
                Double money = dianyingEntity.getDianyingNewMoney() * buyNumber  * zhekou;
                //计算所获得积分
                Double buyJifen = 0.0;
                yonghuEntity.setNewMoney(yonghuEntity.getNewMoney() + money); //设置金额




            dianyingOrder.setDianyingOrderTypes(102);//设置订单状态为已退款
            dianyingOrderService.updateAllColumnById(dianyingOrder);//根据id更新
            yonghuService.updateById(yonghuEntity);//更新用户信息
            dianyingService.updateById(dianyingEntity);//更新订单中电影的信息

            return R.ok();
    }

    /**
    * 评价
    */
    @RequestMapping("/commentback")
    public R commentback(Integer id, String commentbackText, Integer dianyingCommentbackPingfenNumber, HttpServletRequest request){
        logger.debug("commentback方法:,,Controller:{},,id:{}",this.getClass().getName(),id);
            DianyingOrderEntity dianyingOrder = dianyingOrderService.selectById(id);
        if(dianyingOrder == null)
            return R.error(511,"查不到该订单");
        Integer dianyingId = dianyingOrder.getDianyingId();
        if(dianyingId == null)
            return R.error(511,"查不到该电影");

        DianyingCommentbackEntity dianyingCommentbackEntity = new DianyingCommentbackEntity();
            dianyingCommentbackEntity.setId(id);
            dianyingCommentbackEntity.setDianyingId(dianyingId);
            dianyingCommentbackEntity.setYonghuId((Integer) request.getSession().getAttribute("userId"));
            dianyingCommentbackEntity.setDianyingCommentbackPingfenNumber(dianyingCommentbackPingfenNumber);
            dianyingCommentbackEntity.setDianyingCommentbackText(commentbackText);
            dianyingCommentbackEntity.setInsertTime(new Date());
            dianyingCommentbackEntity.setReplyText(null);
            dianyingCommentbackEntity.setUpdateTime(null);
            dianyingCommentbackEntity.setCreateTime(new Date());
            dianyingCommentbackService.insert(dianyingCommentbackEntity);

            dianyingOrder.setDianyingOrderTypes(105);//设置订单状态为已评价
            dianyingOrderService.updateById(dianyingOrder);//根据id更新
            return R.ok();
    }

    /**
     * 检票
     */
    @RequestMapping("/deliver")
    public R deliver(Integer id  , HttpServletRequest request){
        logger.debug("refund:,,Controller:{},,ids:{}",this.getClass().getName(),id.toString());
        DianyingOrderEntity  dianyingOrderEntity = dianyingOrderService.selectById(id);
        dianyingOrderEntity.setDianyingOrderTypes(103);//设置订单状态为已检票
        dianyingOrderService.updateById( dianyingOrderEntity);

        return R.ok();
    }


}

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

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

相关文章

uni-app 苹果手机底部安全区域的适配问题

方案一(最快速) 解决办法&#xff1a;利用 IOS 新增的 env() 和 constant() 特性来解决&#xff0c;不需要自己动态计算高度&#xff0c;只需将如下 CSS 代码添加到样式中即可。无法解决如果底部区域是输入框&#xff0c;苹果手机的输入法会把输入框遮挡的问题 <!-- 底部栏…

驱动相关命令,指令,API,结构体,路径

【linux内核模块编程】 内核模块 编译&#xff1a;make modlues 安装模块&#xff1a;insmod ***.ko 查看已安装模块&#xff1a;lsmod 卸载模块&#xff1a;rmmod *** 查看模块相关信息&#xff1a;modinfo ***.ko【printk打印 & 输出级别 & dmesg命令】 打印函数&a…

C语言字符和字符串函数(2)

大家好&#xff0c;我今天继续来给大家分享C语言中的字符和字符串函数。 目录 ** 1.字符分类函数 2.memcpy 3.memmove 4.memcmp** 1.字符分类函数 islower判断字母小写函数 int main() {char ch w;if (islower(ch)){printf("小写\n");}else{printf("非小写\…

【附源码】用Python写了一个下载网站所有内容的软件

目录 环境介绍:代码实战获取数据获取视频采集弹幕采集评论GUI部分 前言 嗨喽~大家好呀&#xff0c;这里是小曼呐 ❤ ~! 天我们分享一个用Python写下载视频弹幕评论的代码。 顺便把这些写成GUI&#xff0c;把这些功能放到一起让朋友用起来更方便~ 环境介绍: python 3.8pycha…

Request method ‘GET‘ not supported,不支持GET形式访问

org.springframework.web.HttpRequestMethodNotSupportedException: Request method ‘GET’ not supported 原因&#xff1a;异常提示的很明确&#xff0c;请求不支持GET方式访问&#xff0c;出现这种问题一般都是由于限制请求接口为POST&#xff0c;然后使用GET形式访问造成的…

Postman应用——Variable变量使用(Global、Environment和Collection)

文章目录 变量的使用同名变量优先级Postman内置变量 Global、Environment和Collection变量设置&#xff0c;点击查看。 变量的使用 语法&#xff1a; {{变量名}}使用{{}}包裹变量名&#xff0c;引用设置好的变量。 注意&#xff1a;Environment变量引用前需要先选择已有的环…

mysqld_exporter监控MySQL服务

一、MySQL授权 1、登录MySQL服务器对监控使用的账号授权 CREATE USER exporterlocalhost IDENTIFIED BY 123456 WITH MAX_USER_CONNECTIONS 3; GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO exporterlocalhost; flush privileges;2、上传mysqld_exporter安装包&#…

【2023研究生数学建模】E题完整解答过程

2023年中国研究生数学建模E题解答过程 目前已经完成E题全部代码和文档&#xff0c;包含代码&#xff0c;结果&#xff0c;技术文档&#xff0c;以及详细的解题思路&#xff0c;分享一部分给大家&#xff0c;需要完整版的直接私信我哦~

攻防世界做题

xff_referer 进来之后显示ip地址必须为123.123.123.123 抓包看一下 要求ip是123.123.123.123 就可以用xff伪造即X-Forwarded-For: 123.123.123.123 得到显示&#xff1a; 说必须来自google&#xff0c;伪造referer Referer: https://www.google.com 我的要在右边的 inspec…

报错处理:解决Linux上Nginx启动报错:Worker Processes Sleeping

大家好&#xff0c;今天我来分享一个我在运维过程中遇到的问题&#xff0c;关于Linux上Nginx启动时出现的“Worker Processes Sleeping”报错&#xff0c;以及如何解决这个问题的。 首先&#xff0c;让我们来看看这个报错信息。当你在启动Nginx时&#xff0c;如果你看到类似以下…

如何用ArkUI实现一个加入购物车效果?

关键词&#xff1a;ArkUI的动效能力&#xff0c;动效开发&#xff0c;ArkUI动画 我们在购买商品时&#xff0c;往往习惯将商品先加入购物车&#xff0c;然后在购物车里确认后再下订单&#xff0c;这是一个典型的访问者模式。对于这个高频场景&#xff0c;增添一些动效可以增加a…

基于springboot+vue的老年一站式服务平台

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容&#xff1a;毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…

【kafka】可视化工具KAFKA EAGLE安装分享

目录 准备&#xff1a; 开始&#xff1a; 1.解压 2.环境变量配置 3.生效环境变量配置文件 3.修改配置文件 1.修改zookeeper集群信息 2.修改mysql配置信息 4.启动 5.异常排查 6.页面 创作不易&#xff0c;你的动力是我创作的动力&#xff0c;如果有帮助请关注我&…

Java面向对象(1)

static静态变量 public class Student {static String name;private double score;public Student(){};public Student(double score) {this.score score;}public double getScore() {return score;}public void setScore(double score) {this.score score;} }public class t…

Flink状态

8.1 Flink中的状态 8.1.1 概述 状态的分类 1&#xff09;托管状态&#xff08;Managed State&#xff09;和原始状态&#xff08;Raw State&#xff09; Flink的状态有两种&#xff1a;托管状态&#xff08;Managed State&#xff09;和原始状态&#xff08;Raw State&#…

【自学记录】深度学习入门——基于Python的理论与实现(第3章 神经网络)

3.4.3 3层神经网络Python实现 实现的是这个网络 **init_network()**函数会进行权重和偏置的初始化&#xff0c;并将它们保存在字典变量network中。这个字典变量network中保存了每一层所需的参数(权重和偏置)。 **forward()**函数中则封装了将输入信号转换为输出信号的处理过程…

CSS 选择器的几种方法

CSS 选择器的几种方法 业余选手爱记笔记示例代码用否定伪类伪元素用代数式法同胞选择符 ~相邻同胞选择符 业余选手爱记笔记 CSS权威指南&#xff08;第四版&#xff09;是一本好书&#xff0c;看了一遍第二章的选择符有些受益&#xff0c;记录一点读后感和练习。我已将该书电…

ShipMaker船舶协同设计软件介绍

作者简介&#xff1a; 有将近20年的软件开发经验&#xff0c;包括15年CAD&#xff08;7年船舶和8年建筑CAD软件&#xff09;软件开发和5年高性能服务器开发。精通CAD建模平台底层架构和服务器开发技术&#xff0c;包括对象存储管理及拷贝、图形对象渲染、文件保存及升级、事务…

C语言自定义类型详解(2)位断、枚举、联合知识汇总

本篇概要 本篇主要讲述C语言位断、枚举。联合的相关知识&#xff0c;包括哥哥自定义类型的基本声明&#xff0c;使用、优点。计算等相关知识。 文章目录 本篇概要1.位断1.1什么是位断&#xff1f;1.2 位段的内存分配1.3 位段的跨平台问题1.3 位段的应用 2.枚举2.1 枚举类型的声…

堆的基本操作和PriorityQueue接口

目录 堆的插入 堆的删除 PriorityQueue接口 PriorityQueue的注意事项: PriorityQueue常用接口介绍 1. 优先级队列的介绍 2. 扩容 3. 插入/删除/获取优先级最高的元素 Java对象的比较 1.基本类型的比较 2.对象比较的问题 3.对象比较的方法 Top- k问题 堆的插入 堆的插入…