计算机毕业设计选题推荐-戏曲文化苑微信小程序/安卓APP-项目实战

作者主页:IT研究室✨
个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。
☑文末获取源码☑
精彩专栏推荐⬇⬇⬇
Java项目
Python项目
安卓项目
微信小程序项目

文章目录

  • 一、前言
  • 二、开发环境
  • 三、系统界面展示
  • 四、代码参考
  • 五、论文参考
  • 六、系统视频
  • 结语

一、前言

戏曲文化是中国传统文化的重要组成部分,具有悠久的历史和深厚的文化底蕴。然而,随着现代化的进程和人们生活方式的改变,传统戏曲文化的传承和发展面临着严峻的挑战。为了更好地保护和传承戏曲文化,开发一款便捷、实用的戏曲文化苑微信小程序/安卓APP具有重要的现实意义。

目前,一些戏曲文化相关的应用程序已经存在,但是这些应用程序存在一些问题。首先,部分应用程序的功能不够完善,无法满足用户的需求;其次,部分应用程序的用户体验不佳,操作流程繁琐等问题影响了用户的使用体验;再次,部分应用程序的信息更新不及时,无法及时反映戏曲文化动态。这些问题都严重影响了戏曲文化相关应用程序的效果和质量。

本课题的研究目的是设计并实现一款基于微信小程序/安卓APP的戏曲文化苑平台,以提高平台的效率和质量。具体来说,该工具可以实现以下功能:

  1. 提供便捷的戏曲文化信息展示和管理功能,方便用户进行信息查询和选择;
  2. 提供戏曲文化知识普及和学习功能,增进戏曲文化的传承和发展;
    通过以上功能的实现,可以解决现有解决方案存在的问题,提高戏曲文化相关应用程序的效果和质量。

本课题的研究具有重要的现实意义和应用价值。首先,它可以增进戏曲文化的传承和发展,提高人们对戏曲文化的认识和理解;其次,它可以提升用户的使用体验,方便用户了解和参与戏曲文化活动;再次,它可以推动数字化经济的发展,增进数字经济与传统产业的相融。因此,本课题的研究对于戏曲文化、用户和社会都具有重要的意义。

二、开发环境

  • 开发语言:Java
  • 数据库:MySQL
  • 后端:SpringBoot
  • 前端:微信小程序+uniapp+Vue

三、系统界面展示

  • 戏曲文化苑微信小程序/安卓APP界面展示:
    戏曲文化苑微信小程序/安卓APP-戏曲详情
    戏曲文化苑微信小程序/安卓APP-戏曲科普详情
    戏曲文化苑微信小程序/安卓APP-个人中心
    戏曲文化苑微信小程序/安卓APP-戏曲信息管理
    戏曲文化苑微信小程序/安卓APP-戏曲科普管理
    戏曲文化苑微信小程序/安卓APP-戏曲类型管理

四、代码参考

  • 戏曲文化苑微信小程序/安卓APP项目实战代码参考:
@RestController
@RequestMapping("/comment")
public class CommentController {@Autowiredprivate UserService userService;@Autowiredprivate CommentService commentService;@RequestMapping(path = "/getCommentByPage", method = RequestMethod.GET)public String getCommentByStatus(String pageNum, String pageSize){Integer first = StringUtil.changeString(pageNum);Integer second = StringUtil.changeString(pageSize);Map<String, Object> map = commentService.getCommentByPage(first, second);if ((long)map.get("total") == 0){return JSON.toJSONString(new Result().setCode(402).setMessage("暂无信息"));}else {return JSON.toJSONString(new Result().setCode(200).setData(map));}}@RequestMapping(path = "/getCommentByName", method = RequestMethod.GET)public String getCommentByName(String commentName){Map<String, Object> map = commentService.getCommentByName(commentName);if ((long)map.get("total") == 0){return JSON.toJSONString(new Result().setCode(402).setMessage("暂无信息"));}else {return JSON.toJSONString(new Result().setCode(200).setData(map));}}//    @RequestMapping(path = "/getCommentByTuijian", method = RequestMethod.GET)
//    public String getCommentByTuijian(){
//        List<Userfile> userfileList = userfileService.list(new QueryWrapper<Userfile>().eq("istuijian","是"));
//        if (userfileList.size() == 0){
//            return JSON.toJSONString(new Result().setCode(402).setMessage("暂无信息"));
//        }else {
//            return JSON.toJSONString(new Result().setCode(200).setData(userfileList));
//        }
//    }@RequestMapping(path = "/getCommentById", method = RequestMethod.GET)public String getCommentById(Integer CommentId){Comment comment = commentService.getById(CommentId);if(comment == null){return JSON.toJSONString(new Result().setCode(402).setMessage("暂无信息"));}else{return JSON.toJSONString(new Result().setCode(200).setData(comment));}}@RequestMapping(path = "/getAllComment", method = RequestMethod.GET)public String getAllComment(){List<Comment> commentList = commentService.list();if(commentList.size() == 0){return JSON.toJSONString(new Result().setCode(402).setMessage("暂无信息"));}else{for (Comment comment:commentList){comment.setUser(userService.getById(comment.getUserId()));}return JSON.toJSONString(new Result().setCode(200).setData(commentList));}}@RequestMapping(path = "/getAllCommentByName", method = RequestMethod.GET)public String getAllCommentByName(String name){List<Comment> commentList = commentService.list(new QueryWrapper<Comment>().like("name", name));if(commentList.size() == 0){return JSON.toJSONString(new Result().setCode(402).setMessage("暂无信息"));}else{return JSON.toJSONString(new Result().setCode(200).setData(commentList));}}@RequestMapping(path = "/getCommentByUserfile", method = RequestMethod.GET)public String getCommentByUserfile(Integer userfileId){List<Comment> commentList = commentService.list(new QueryWrapper<Comment>().like("userfile_id", userfileId));if(commentList.size() == 0){return JSON.toJSONString(new Result().setCode(402).setMessage("暂无信息"));}else{return JSON.toJSONString(new Result().setCode(200).setData(commentList));}}//    @RequestMapping(path = "/getAllUserfileLike2", method = RequestMethod.GET)
//    public String getAllUserfileLike2(String name){
//        List<Userfile> userfileList = commentService.list(new QueryWrapper<Userfile>()
//                .eq("istuijian","是")
//                .like("name", name));
//        if(userfileList.size() == 0){
//            return JSON.toJSONString(new Result().setCode(402).setMessage("暂无信息"));
//        }else{
//            return JSON.toJSONString(new Result().setCode(200).setData(userfileList));
//        }
//
//    }@RequestMapping(value = "/updateComment", method = RequestMethod.POST)public String updateComment(@RequestParam(value = "form") String form,@RequestParam(value = "headpic",required=false) MultipartFile file1,@RequestParam(value = "file",required=false) MultipartFile file2){Comment comment = JSON.parseObject(form, Comment.class);if(file1 != null){String path = commentService.getById(comment.getCommentId()).getContent();String filename = "";if (path == null){}else {filename = path.substring(path.lastIndexOf('/')+1);FileUploadUtils.deleteFiles(new File(getUploadPath()+filename));}String url = "";String newName = FileUploadUtils.uploadImage(file1, getUploadPath());if(newName !=null ){url = "/headpic/"+  newName;}comment.setContent(url);}
//        if(file2 != null){
//            String path = commentService.getById(comment.getUserfileId()).getFile();
//            String filename = "";
//            if (path == null){
//
//            }else {
//                filename = path.substring(path.lastIndexOf('/')+1);
//                FileUploadUtils.deleteFiles(new File(getUploadPath()+filename));
//            }
//            String url = "";
//            String newName = FileUploadUtils.uploadImage(file2, getUploadPath());
//            if(newName !=null ){
//                url = "/headpic/"+  newName;
//            }
//            comment.setFile(url);
//        }boolean f = commentService.updateById(comment);if(f) {return JSON.toJSONString(new Result().setCode(200).setMessage("修改成功"));}elsereturn JSON.toJSONString(new Result().setCode(402).setMessage("修改失败"));}@RequestMapping(value = "/addFile", method = RequestMethod.POST)public String updateHeadpic(@RequestParam(value = "file",required=false) MultipartFile file1){String url = "";if(file1 != null){//存储file对象到指定路径String newName = FileUploadUtils.uploadImage(file1, getUploadPath());if(newName !=null ){//生成urlurl = "/headpic/"+  newName;}}return JSON.toJSONString(new Result().setCode(200).setData(url));}@RequestMapping(value = "/addComment", method = RequestMethod.POST)public String addComment(@RequestBody Comment comment){System.out.println("comment 内容为 " + comment);comment.setCreateTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));boolean f = commentService.save(comment);if(f) {return JSON.toJSONString(new Result().setCode(200).setMessage("添加成功"));}elsereturn JSON.toJSONString(new Result().setCode(402).setMessage("添加失败"));}@RequestMapping(path = "/delCommentById", method = RequestMethod.GET)public String delCommentById(Integer commentId){boolean f = commentService.removeById(commentId);if(f){return JSON.toJSONString(new Result().setCode(200).setMessage("删除成功"));}else{return JSON.toJSONString(new Result().setCode(402).setMessage("删除失败"));}}//    @RequestMapping(value = "/delCommentById", method = RequestMethod.GET)
//    public String delUserfile(Integer commentId) {
//        String path = commentService.getById(commentId);
//        String filename = "";
//        String path2 = commentService.getById(commentId).getFile();
//        String filename2 = "";
//        boolean f = commentService.removeById(commentId);
//        if (f) {
//            if (path == null) {
//
//            } else {
//                filename = path.substring(path.lastIndexOf('/') + 1);
//                FileUploadUtils.deleteFiles(new File(getUploadPath() + filename));
//            }
//            if (path2 == null) {
//
//            } else {
//                filename2 = path.substring(path.lastIndexOf('/') + 1);
//                FileUploadUtils.deleteFiles(new File(getUploadPath() + filename2));
//            }
//            return JSON.toJSONString(new Result().setCode(200).setMessage("删除成功"));
//        } else {
//            return JSON.toJSONString(new Result().setCode(402).setData("删除失败"));
//        }
//    }//    @RequestMapping(value = "/addUserfile2", method = RequestMethod.POST)
//    public String addUserfile2(@RequestParam(value = "userfileForm") String form,
//                               @RequestParam(value = "headpic",required=false) MultipartFile file1,
//                               @RequestParam(value = "file",required=false) MultipartFile file2){
//        Userfile userfile = JSON.parseObject(form, Userfile.class);
//        if(file1 != null){
//            String url = "";
//            String newName = FileUploadUtils.uploadImage(file1, getUploadPath());
//            if(newName !=null ){
//                url = "/headpic/"+  newName;
//            }
//            userfile.setImg(url);
//        }
//        if(file2!= null){
//            String url = "";
//            String newName = FileUploadUtils.uploadImage(file2, getUploadPath());
//            if(newName !=null ){
//                url = "/headpic/"+  newName;
//            }
//            userfile.setFile(url);
//        }
//        boolean f = commentService.save(userfile);
//        if(f) {
//            return JSON.toJSONString(new Result().setCode(200).setMessage("添加成功"));
//        }
//        else
//            return JSON.toJSONString(new Result().setCode(402).setMessage("添加失败"));
//    }public String getUploadPath(){ApplicationHome h = new ApplicationHome(getClass());File jarF = h.getSource();String dirPath = jarF.getParentFile().toString()+"\\headpic\\";return  dirPath;}
}
@RestController
@RequestMapping("/user")
public class UserController {@Autowiredprivate UserService userService;@RequestMapping(value = "/login", method = RequestMethod.POST)public String login(@RequestBody User user){User userLogin = userService.getOne(new QueryWrapper<User>().eq("username",user.getUsername()).eq("password",user.getPassword()).eq("role","用户"));if (userLogin == null){return JSON.toJSONString(new Result().setCode(402).setMessage("登录失败"));}else {return JSON.toJSONString(new Result().setCode(200).setData(userLogin).setMessage("登录成功"));}}@RequestMapping(value = "/login2", method = RequestMethod.POST)public String login2(@RequestBody User user){User userLogin = userService.getOne(new QueryWrapper<User>().eq("username",user.getUsername()).eq("password",user.getPassword()).eq("role","管理员"));if (userLogin == null){return JSON.toJSONString(new Result().setCode(402).setMessage("登录失败"));}else {return JSON.toJSONString(new Result().setCode(200).setData(userLogin).setMessage("登录成功"));}}@RequestMapping(path = "/getAllUser", method = RequestMethod.GET)public String getAllUser(){List<User> userList = userService.list();if (userList.size() == 0){return JSON.toJSONString(new Result().setCode(402).setMessage("暂无信息"));}else {return JSON.toJSONString(new Result().setCode(200).setData(userList));}}@RequestMapping(path = "/getUserByPage", method = RequestMethod.GET)public String getUserByStatus(String pageNum, String pageSize){Integer first = StringUtil.changeString(pageNum);Integer second = StringUtil.changeString(pageSize);Map<String, Object> map = userService.getUserByPage(first, second);if ((long)map.get("total") == 0){return JSON.toJSONString(new Result().setCode(402).setMessage("暂无信息"));}else {return JSON.toJSONString(new Result().setCode(200).setData(map));}}@RequestMapping(path = "/getUserById", method = RequestMethod.GET)public String getUserById(Integer userId){User user = userService.getById(userId);if(user == null){return JSON.toJSONString(new Result().setCode(402).setMessage("暂无信息"));}else{return JSON.toJSONString(new Result().setCode(200).setData(user));}}@RequestMapping(path = "/getUserByName", method = RequestMethod.GET)public String getUserByName(String userName){Map<String, Object> user = userService.getUserByName(userName);if((long)user.get("total") == 0){return JSON.toJSONString(new Result().setCode(402).setMessage("暂无信息"));}else{return JSON.toJSONString(new Result().setCode(200).setData(user));}}@RequestMapping(path = "/wxupdateUser", method = RequestMethod.POST)public String wxupdateWechatuser(@RequestBody User user){boolean f = userService.updateById(user);if(f){return JSON.toJSONString(new Result().setCode(200).setMessage("修改成功").setData(user));}else{return JSON.toJSONString(new Result().setCode(402).setMessage("修改失败"));}}@RequestMapping(value = "/updateUser", method = RequestMethod.POST)public String updateUser(@RequestParam(value = "form") String form,@RequestParam(value = "headpic",required=false) MultipartFile file1){User user = JSON.parseObject(form, User.class);if(file1 != null){String path = userService.getById(user.getUserId()).getHeadpic();String filename = "";if (path == null){}else {filename = path.substring(path.lastIndexOf('/')+1);FileUploadUtils.deleteFiles(new File(getUploadPath()+filename));}String url = "";String newName = FileUploadUtils.uploadImage(file1, getUploadPath());if(newName !=null ){url = "/headpic/"+  newName;}user.setHeadpic(url);}boolean f = userService.updateById(user);if(f) {return JSON.toJSONString(new Result().setCode(200).setMessage("修改成功"));}elsereturn JSON.toJSONString(new Result().setCode(402).setMessage("修改失败"));}@RequestMapping(path = "/updateUser2", method = RequestMethod.POST)public String updateUser2(@RequestBody User user){boolean f = userService.updateById(user);if(f){return JSON.toJSONString(new Result().setCode(200).setMessage("修改成功").setData(userService.getById(user.getUserId())));}else{return JSON.toJSONString(new Result().setCode(402).setMessage("修改失败"));}}@RequestMapping(value = "/updateHeadpic", method = RequestMethod.POST)public String updateHeadpic(@RequestParam(value = "userId") Integer userId,@RequestParam(value = "file",required=false) MultipartFile file1){//如果用户上传了新头像,我们需要做两个操作1.删除之前用户的头像;2.存储用户的新头像并生成新的urlUser user = userService.getById(userId);if(file1 != null){String path = userService.getById(user.getUserId()).getHeadpic();String filename = "";if (path == null){}else {filename = path.substring(path.lastIndexOf('/')+1);FileUploadUtils.deleteFiles(new File(getUploadPath()+filename));}String url = "";//存储file对象到指定路径String newName = FileUploadUtils.uploadImage(file1, getUploadPath());if(newName !=null ){//生成urlurl = "/headpic/"+  newName;}user.setHeadpic(url);}//业务部分:对数据库tab实体类进行修改boolean f = userService.updateById(user);User user1 = userService.getById(userId);if(f) {return JSON.toJSONString(new Result().setCode(200).setMessage("修改成功").setData(user1));}elsereturn JSON.toJSONString(new Result().setCode(402).setMessage("修改失败"));}@RequestMapping(value = "/addUser", method = RequestMethod.POST)public String addUser(@RequestParam(value = "userForm") String form,@RequestParam(value = "headpic",required=false) MultipartFile file1){User user = JSON.parseObject(form, User.class);if(file1 != null){String url = "";String newName = FileUploadUtils.uploadImage(file1, getUploadPath());if(newName !=null ){url = "/headpic/"+  newName;}user.setHeadpic(url);}boolean f = userService.save(user);if(f) {return JSON.toJSONString(new Result().setCode(200).setMessage("添加成功"));}elsereturn JSON.toJSONString(new Result().setCode(402).setMessage("添加失败"));}@RequestMapping(value = "/addUser2", method = RequestMethod.POST)public String addUser2(@RequestBody User user){boolean f = userService.save(user);if(f) {return JSON.toJSONString(new Result().setCode(200).setMessage("添加成功"));}elsereturn JSON.toJSONString(new Result().setCode(402).setMessage("添加失败"));}@RequestMapping(value = "/delUserById", method = RequestMethod.GET)public String delUser(Integer userId) {String path = userService.getById(userId).getHeadpic();String filename = "";boolean f = userService.removeById(userId);if (f) {if (path == null) {} else {filename = path.substring(path.lastIndexOf('/') + 1);FileUploadUtils.deleteFiles(new File(getUploadPath() + filename));}return JSON.toJSONString(new Result().setCode(200).setMessage("删除成功"));} else {return JSON.toJSONString(new Result().setCode(402).setData("删除失败"));}}public String getUploadPath(){ApplicationHome h = new ApplicationHome(getClass());File jarF = h.getSource();String dirPath = jarF.getParentFile().toString()+"\\headpic\\";return  dirPath;}}

五、论文参考

  • 计算机毕业设计选题推荐-戏曲文化苑微信小程序/安卓APP论文参考:
    计算机毕业设计选题推荐-戏曲文化苑微信小程序/安卓APP论文参考

六、系统视频

戏曲文化苑微信小程序/安卓APP项目视频:

计算机毕业设计选题推荐-戏曲文化苑微信小程序/安卓APP

结语

计算机毕业设计选题推荐-戏曲文化苑微信小程序/安卓APP-项目实战
大家可以帮忙点赞、收藏、关注、评论啦~
源码获取:私信我

精彩专栏推荐⬇⬇⬇
Java项目
Python项目
安卓项目
微信小程序项目

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

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

相关文章

Springboot 使用JavaMailSender发送邮件 + Excel附件

目录 1.生成Excel表格 1.依赖设置 2.代码&#xff1a; 2.邮件发送 1.邮件发送功能实现-带附件 2.踩过的坑 1.附件名中文乱码问题 3.参考文章&#xff1a; 需求描述&#xff1a;项目审批完毕后&#xff0c;需要发送邮件通知相关人员&#xff0c;并且要附带数据库表生成的…

Linux C/C++ 实现网络流量分析(性能工具)

网络流量分析的原理基于对数据包的捕获、解析和统计分析&#xff0c;通过对网络流量的细致观察和分析&#xff0c;帮助管理员了解和优化网络的性能、提高网络安全性&#xff0c;并快速排查和解决网络故障和问题。 Linux中的网络流量常见类型 在Linux中&#xff0c;网络流量可以…

校园物业报修小程序开发笔记一

背景 校园规模和复杂性&#xff1a; 大型学校和校园通常拥有众多的建筑物、设施和设备&#xff0c;需要有效的维护和报修系统&#xff0c;以满足学生、教职员工和校园管理人员的需求。 学生和员工需求&#xff1a; 学生和员工在校园内可能遇到各种维修问题&#xff0c;如故障的…

ESP8266,手机与电脑之间的TCP通讯

电脑端运行通讯猫调试助手,作为服务端: 电脑端 电脑的IP地址是: 192.168.2.232 手机与电脑之间的TCP通讯 手机端运行网络调试精灵,作为客户端: 手机端 如果从手机端点击"发送"按钮,则也会将"ghhh东方红广场"几个字发送到电脑上(服务端). ESP8266作为客户…

elasticsearch一些重要的配置参数

先看一下官网给我们提供的全部的参数配置项 官网地址 官方文档链接&#xff1a;注意版本是8.1Configuring Elasticsearch | Elasticsearch Guide [8.1] | Elastic​编辑https://www.elastic.co/guide/en/elasticsearch/reference/current/settings.html 重要&#xff08;基本…

【2023Mathorcup大数据】B题 电商零售商家需求预测及库存优化问题 python代码解析

【2023Mathorcup大数据】B题 电商零售商家需求预测及库存优化问题 python代码解析 1 题目 2023 年MathorCup 高校数学建模挑战赛——大数据竞赛赛道B&#xff1a;电商零售商家需求预测及库存优化问题电商平台存在着上千个商家&#xff0c;他们会将商品货物放在电商配套的仓库…

通道洗牌的思想神了

大家好啊&#xff0c;我是董董灿。 昨天写了一篇关于分组卷积的文章&#xff1a;分组卷积的思想神了&#xff0c;然后有同学希望多了解下通道洗牌。 我个人感觉&#xff0c;通道洗牌这个算法&#xff0c;或者说这个思想&#xff0c;可以称之为小而精&#xff0c;并且是实际解…

rust 创建多线程web server

创建一个 http server&#xff0c;处理 http 请求。 创建一个单线程的 web 服务 web server 中主要的两个协议是 http 和 tcp。tcp 是底层协议&#xff0c;http 是构建在 tcp 之上的。 通过std::net库创建一个 tcp 连接的监听对象&#xff0c;监听地址为127.0.0.1:8080. us…

NEFU数字图像处理(三)图像分割

一、图像分割的基本概念 1.1专有名词 前景和背景 在图像分割中&#xff0c;我们通常需要将图像分为前景和背景两个部分。前景是指图像中我们感兴趣、要分割出来的部分&#xff0c;背景是指和前景不相关的部分。例如&#xff0c;对于一张人物照片&#xff0c;人物就是前景&…

python把ChestX-Det-Dataset的json样本转为COCO数据集的json格式

ChestX-Det-Dataset数据集网址&#xff1a;https://github.com/Deepwise-AILab/ChestX-Det-Dataset/tree/main 数据集JSON内容&#xff1a; [{"file_name": "36199.png","syms": [],"boxes": [],"polygons": []},{"f…

Hadoop学习总结(搭建Hadoop集群(伪分布式模式))

如果前面有搭建过Hadoop集群完全分布式模式&#xff0c;现在搭建Hadoop伪分布式模式可以选择直接克隆完全分布式模式中的主节点(hadoop001)。以下是在搭建过完全分布式模式下的Hadoop集群的情况进行 伪分布式模式下的Hadoop功能与完全分布式模式下的Hadoop功能相同。 一、克隆…

DAY38 动态规划 + 509. 斐波那契数 + 70. 爬楼梯 + 746. 使用最小花费爬楼梯

动态规划理论 动态规划&#xff0c;Dynamic Programming&#xff0c; DP&#xff0c; 如果某一问题有很多重叠子问题&#xff0c;使用动态规划是最有效的。 所以动态规划中每一个状态一定是由上一个状态推导出来的&#xff0c;这一点就区分于贪心&#xff0c;贪心没有状态推导…

buuctf_练[GYCTF2020]FlaskApp

[GYCTF2020]FlaskApp 文章目录 [GYCTF2020]FlaskApp常用绕过方法掌握知识解题思路解题一 -- 计算pin码解题二 -- 拼接绕过 执行命令 关键paylaod 常用绕过方法 ssti详解与例题以及绕过payload大全_ssti绕过空格_HoAd’s blog的博客-CSDN博客 CTF 对SSTI的一些总结 - FreeBuf网…

Spark UI中Shuffle dataSize 和shuffle bytes written 指标区别

背景 本文基于Spark 3.1.1 目前在做一些知识回顾的时候&#xff0c;发现了一些很有意思的事情&#xff0c;就是Spark UI中ShuffleExchangeExec 的dataSize和shuffle bytes written指标是不一样的&#xff0c; 那么在AQE阶段的时候&#xff0c;是以哪个指标来作为每个Task分区大…

了解单域名证书和通配符证书的区别,选择合适的SSL证书解决方案

随着互联网的不断发展&#xff0c;网站安全性问题一直备受关注&#xff0c;在保护网站数据安全的过程中&#xff0c;SSL证书一直发挥着至关重要的作用。而在选择SSL证书时&#xff0c;单域名证书和通配符证书是两种常见的选择。本文将详细介绍单域名证书和通配符证书的区别&…

Cocos Creator 中使用装饰器进行自动绑定

推荐一个偷懒的方式&#xff0c;使用装饰器自动绑定节点到脚本的属性 背景 用 Cocos Creator 写脚本组件的时候&#xff0c;有时需要场景中一个节点作为这个脚本的属性值。 按照官方文档推荐的方法&#xff0c;需要以下两步 添加一个 property 属性&#xff0c;在场景中拖入这个…

案例分析大汇总

案例分析心得 2018-2022年的案例分析考试内容汇总&#xff08;近五年&#xff09; 架构设计题型 软件系统建模 数据库 Web 系统设计 2018年 胖/瘦客户端 C/S 架构非功能性需求 数据流图DFDE-R图Essential Use Cases(抽象用例)&#xff0c;Real Use Cases(基础用例)信息工…

双目视觉计算三维坐标

一、原理 双目视觉的基本原理&#xff0c;以及公式推导&#xff0c;我参考的b站上的视频&#xff0c;链接如下&#xff1a; 2-线性相机模型-Linear Camera Model-Camera Calibration_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1Q34y1n7ot/?p2&spm_id_from333.…

Android底层摸索改BUG(二):Android系统移除预置APP

首先我先提供以下博主博文&#xff0c;对相关知识点可以提供理解、解决、思考的 Android 系统如何预装第三方应用以及常见问题汇集android Android.mk属性说明及预置系统app操作说明系Android 中去除系统原生apk的方法 取消预置APK方法一&#xff1a; 其实就是上面的链接3&a…

03、SpringCloud -- 动态倒计时 及 当前用户的获取(用户未登录提示其登录)

目录 动态倒计时需求思路代码效果优化获取当前登录用户思路代码前端后端controllerservice接口impl实现效果问题修改动态倒计时 需求 根据不同时间展示不同状态,动态显示时间,如原型图: 思