基于SSM的学生竞赛模拟系统

news2024/11/28 14:40:41

基于SSM的学生竞赛模拟系统

✌全网粉丝20W+,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌

🍅文末获取项目下载方式🍅


一、项目背景介绍:

随着教育的发展,校园竞赛在高校和中学中已经成为一项重要的活动。校园竞赛旨在鼓励学生参与各种学科、文化和艺术方面的比赛,以提高他们的技能和自信心。

然而,在校园竞赛中组织和管理比赛是一项繁琐而复杂的任务,尤其是当参赛者数量众多时。为了解决这个问题,校园竞赛模拟系统应运而生。这个系统可以帮助校园竞赛的组织者和参与者更好地管理比赛,提高比赛的效率和公平性。

校园竞赛模拟系统是一个基于互联网的软件平台,可以为各种校园竞赛提供一整套的解决方案。这个系统可以实现在线报名、成绩排名、评审和裁判管理、通知发布等多种功能,同时还提供数据分析和可视化报表,让组织者和参与者可以更好地了解比赛的进展情况。

该系统不仅可以节省组织者的时间和精力,还可以提高比赛的公平性和可信度,为参与者提供更好的竞争平台。这个系统可以应用于各种校园竞赛,包括学科竞赛、艺术竞赛、体育竞赛等等。它将校园竞赛管理推向了一个新的高度,成为了学校管理中的一项重要工具。

二、项目技术简介:

  1. JAVA:Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。
  2. Vue:Vue (发音为 /vjuː/,类似 view) 是一款用于构建用户界面的JavaScript框架。它基于标准HTML、CSS和JavaScript构建,并提供了一套声明式的、组件化的编程模型,帮助开发者高效地开发用户界面。
    Vue是一个独立的社区驱动的项目,它是由尤雨溪在2014年作为其个人项目创建, 是一个成熟的、经历了无数实战考验的框架,它是目前生产环境中使用最广泛的JavaScript框架之一,可以轻松处理大多数web应用的场景,并且几乎不需要手动优化,并且Vue完全有能力处理大规模的应用。
  3. SpringBoot:Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。
  4. Mybatis-Plus:MyBatis-Plus(简称 MP)是一个 MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为 简化开发、提高效率而生。
  5. Spring-Mvc:Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的Spring MVC框架或集成其他MVC开发框。
  6. shiro:Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理。使用Shiro的易于理解的API,您可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序。
  7. layui:layui(谐音:类 UI) 是一套开源的 Web UI 解决方案,采用自身经典的模块化规范,并遵循原生 HTML/CSS/JS 的开发方式,常适合网页界面的快速开发。layui 区别于那些基于MVVM 底层的前端框架,它更多是面向后端开发者,无需涉足前端各种工具,只需面对浏览器本身,让一切所需要的元素与交互。

三、系统功能模块介绍:

功能模块图

四、数据库设计:

1:‘配置文件’(config)

字段名类型默认值列注释
idbigintNULL主键
namevarcharNULL配置参数名称
valuevarcharNULL配置参数值

2:‘公告信息评论表’(discussgonggaoxinxi)

字段名类型默认值列注释
idbigintNULL主键
addtimetimestampNULL创建时间
refidbigintNULL关联表id
useridbigintNULL用户id
nicknamevarcharNULL用户名
contentlongtextNULL评论内容
replylongtextNULL回复内容

3:‘试卷表’(exampaper)

字段名类型默认值列注释
idbigintNULL主键
addtimetimestampNULL创建时间
namevarcharNULL试卷名称
timeintNULL考试时长(分钟)
statusintNULL试卷状态

4:‘试题表’(examquestion)

字段名类型默认值列注释
idbigintNULL主键
addtimetimestampNULL创建时间
paperidbigintNULL所属试卷id(外键)
papernamevarcharNULL试卷名称
questionnamevarcharNULL试题名称
optionslongtextNULL选项,json字符串
scorebigintNULL分值
answervarcharNULL正确答案
analysislongtextNULL答案解析
typebigintNULL试题类型,0:单选题 1:多选题 2:判断题 3:填空题(暂不考虑多项填空)
sequencebigintNULL试题排序,值越大排越前面

5:‘考试记录表’(examrecord)

字段名类型默认值列注释
idbigintNULL主键
addtimetimestampNULL创建时间
useridbigintNULL用户id
usernamevarcharNULL用户名
paperidbigintNULL试卷id(外键)
papernamevarcharNULL试卷名称
questionidbigintNULL试题id(外键)
questionnamevarcharNULL试题名称
optionslongtextNULL选项,json字符串
scorebigintNULL分值
answervarcharNULL正确答案
analysislongtextNULL答案解析
myscorebigintNULL试题得分
myanswervarcharNULL考生答案

6:‘论坛交流’(forum)

字段名类型默认值列注释
idbigintNULL主键
addtimetimestampNULL创建时间
titlevarcharNULL帖子标题
contentlongtextNULL帖子内容
parentidbigintNULL父节点id
useridbigintNULL用户id
usernamevarcharNULL用户名
isdonevarcharNULL状态

7:‘公告信息’(gonggaoxinxi)

字段名类型默认值列注释
idbigintNULL主键
addtimetimestampNULL创建时间
gonggaomingchengvarcharNULL公告名称
gonggaoleixingvarcharNULL公告类型
fengmianvarcharNULL封面
gonggaoneironglongtextNULL公告内容
faburenvarcharNULL发布人
fabushijiandateNULL发布时间

8:‘校园资讯’(news)

字段名类型默认值列注释
idbigintNULL主键
addtimetimestampNULL创建时间
titlevarcharNULL标题
introductionlongtextNULL简介
picturevarcharNULL图片
contentlongtextNULL内容

9:‘收藏表’(storeup)

字段名类型默认值列注释
idbigintNULL主键
addtimetimestampNULL创建时间
useridbigintNULL用户id
refidbigintNULL收藏id
tablenamevarcharNULL表名
namevarcharNULL收藏名称
picturevarcharNULL收藏图片
typevarcharNULL类型(1:收藏,21:赞,22:踩)
inteltypevarcharNULL推荐类型

10:‘token表’(token)

字段名类型默认值列注释
idbigintNULL主键
useridbigintNULL用户id
usernamevarcharNULL用户名
tablenamevarcharNULL表名
rolevarcharNULL角色
tokenvarcharNULL密码
addtimetimestampNULL新增时间
expiratedtimetimestampNULL过期时间

11:‘用户表’(users)

字段名类型默认值列注释
idbigintNULL主键
usernamevarcharNULL用户名
passwordvarcharNULL密码
rolevarcharNULL角色
addtimetimestampNULL新增时间

12:‘用户’(yonghu)

字段名类型默认值列注释
idbigintNULL主键
addtimetimestampNULL创建时间
yonghuzhanghaovarcharNULL用户账号
yonghuxingmingvarcharNULL用户姓名
mimavarcharNULL密码
shoujihaomavarcharNULL手机号码
touxiangvarcharNULL头像
xingbievarcharNULL性别
youxiangvarcharNULL邮箱
dizhivarcharNULL地址

五、功能模块:

  1. 首页:首页可以查看校园的咨询信息和一些公告展示,并且在首页可以跳转到其他所有的界面

    首页

  2. 公告信息:公告信息模块可以查看管理员在后台管理系统中发布的公告信息

    公告信息

  3. 论坛交流:在论坛交流模块学生可以和其他使用论坛的用户进行交流

    论坛交流

  4. 试卷模块:在试卷模块中学生可以参与管理员发布的考试信息,并且与其他用户进行竞赛

    试卷模块

  5. 校园咨询模块:用户可以在校园咨询信息查看学校最近的一些咨询信息,咨询信息是由管理员来进行管理发布的

    校园咨询模块

  6. 个人中心:用户可以在个人中心中对自己的个人信息进行管理

    个人中心

  7. 用户管理模块:后台管理系统中的用户管理模块可以对用进行管理

    用户管理模块

  8. 论坛管理:论坛管理模块可以对论坛的交流信息进行管理

    论坛管理

  9. 后台管理系统中有首页、个人中心、用户管理、公告信息管理、试卷管理、论坛交流、系统管理、考试信息管理:整个系统的各个地方的数据以及使用都可以在后台的管理系统中进行管理,管理员可以全方位的管理竞赛系统的使用

    后台管理系统中有首页、个人中心、用户管理、公告信息管理、试卷管理、论坛交流、系统管理、考试信息管理

六、代码示例:

首页
@RequestMapping("/remind/{columnName}/{type}")
	public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request, 
						 @PathVariable("type") String type,@RequestParam Map<String, Object> map) {
		map.put("column", columnName);
		map.put("type", type);
		
		if(type.equals("2")) {
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
			Calendar c = Calendar.getInstance();
			Date remindStartDate = null;
			Date remindEndDate = null;
			if(map.get("remindstart")!=null) {
				Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
				c.setTime(new Date()); 
				c.add(Calendar.DAY_OF_MONTH,remindStart);
				remindStartDate = c.getTime();
				map.put("remindstart", sdf.format(remindStartDate));
			}
			if(map.get("remindend")!=null) {
				Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
				c.setTime(new Date());
				c.add(Calendar.DAY_OF_MONTH,remindEnd);
				remindEndDate = c.getTime();
				map.put("remindend", sdf.format(remindEndDate));
			}
		}
		
		Wrapper<DiscussgonggaoxinxiEntity> wrapper = new EntityWrapper<DiscussgonggaoxinxiEntity>();
		if(map.get("remindstart")!=null) {
			wrapper.ge(columnName, map.get("remindstart"));
		}
		if(map.get("remindend")!=null) {
			wrapper.le(columnName, map.get("remindend"));
		}


		int count = discussgonggaoxinxiService.selectCount(wrapper);
		return R.ok().put("count", count);
	}
公告信息
/**
     * 列表
     */
    @RequestMapping("/lists")
    public R list( GonggaoxinxiEntity gonggaoxinxi){
       	EntityWrapper<GonggaoxinxiEntity> ew = new EntityWrapper<GonggaoxinxiEntity>();
      	ew.allEq(MPUtil.allEQMapPre( gonggaoxinxi, "gonggaoxinxi")); 
        return R.ok().put("data", gonggaoxinxiService.selectListView(ew));
    }

	 /**
     * 查询
     */
    @RequestMapping("/query")
    public R query(GonggaoxinxiEntity gonggaoxinxi){
        EntityWrapper< GonggaoxinxiEntity> ew = new EntityWrapper< GonggaoxinxiEntity>();
 		ew.allEq(MPUtil.allEQMapPre( gonggaoxinxi, "gonggaoxinxi")); 
		GonggaoxinxiView gonggaoxinxiView =  gonggaoxinxiService.selectView(ew);
		return R.ok("查询公告信息成功").put("data", gonggaoxinxiView);
    }
论坛交流
	private ForumEntity getChilds(ForumEntity forum) {
    	List<ForumEntity> childs = new ArrayList<ForumEntity>();
    	childs = forumService.selectList(new EntityWrapper<ForumEntity>().eq("parentid", forum.getId()));
    	if(childs == null || childs.size()==0) {
    		return null;
    	}
    	forum.setChilds(childs);
    	for(ForumEntity forumEntity : childs) {
    		getChilds(forumEntity);
    	}
    	return forum;
    }
试卷模块
    @Override
    public PageUtils queryPage(Map<String, Object> params) {
        Page<DiscussgonggaoxinxiEntity> page = this.selectPage(
                new Query<DiscussgonggaoxinxiEntity>(params).getPage(),
                new EntityWrapper<DiscussgonggaoxinxiEntity>()
        );
        return new PageUtils(page);
    }
    
    @Override
	public PageUtils queryPage(Map<String, Object> params, Wrapper<DiscussgonggaoxinxiEntity> wrapper) {
		  Page<DiscussgonggaoxinxiView> page =new Query<DiscussgonggaoxinxiView>(params).getPage();
	        page.setRecords(baseMapper.selectListView(page,wrapper));
	    	PageUtils pageUtil = new PageUtils(page);
	    	return pageUtil;
 	}
校园咨询模块
    @RequestMapping("/query")
    public R query(NewsEntity news){
        EntityWrapper< NewsEntity> ew = new EntityWrapper< NewsEntity>();
 		ew.allEq(MPUtil.allEQMapPre( news, "news")); 
		NewsView newsView =  newsService.selectView(ew);
		return R.ok("查询校园资讯成功").put("data", newsView);
    }
个人中心
	/**
	 * 登录
	 */
	@IgnoreAuth
	@RequestMapping(value = "/login")
	public R login(String username, String password, String captcha, HttpServletRequest request) {
		YonghuEntity user = yonghuService.selectOne(new EntityWrapper<YonghuEntity>().eq("yonghuzhanghao", username));
		if(user==null || !user.getMima().equals(password)) {
			return R.error("账号或密码不正确");
		}
		String token = tokenService.generateToken(user.getId(), username,"yonghu",  "用户" );
		return R.ok().put("token", token);
	}
	
	/**
     * 注册
     */
	@IgnoreAuth
    @RequestMapping("/register")
    public R register(@RequestBody YonghuEntity yonghu){
    	//ValidatorUtils.validateEntity(yonghu);
    	YonghuEntity user = yonghuService.selectOne(new EntityWrapper<YonghuEntity>().eq("yonghuzhanghao", yonghu.getYonghuzhanghao()));
		if(user!=null) {
			return R.error("注册用户已存在");
		}
		Long uId = new Date().getTime();
		yonghu.setId(uId);
        yonghuService.insert(yonghu);
        return R.ok();
    }
用户管理模块
    /**
     * 信息
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") String id){
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }
    
    /**
     * 获取用户的session用户信息
     */
    @RequestMapping("/session")
    public R getCurrUser(HttpServletRequest request){
    	Long id = (Long)request.getSession().getAttribute("userId");
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }
论坛管理
	/**
     * 论坛详情
     */
	@IgnoreAuth
    @RequestMapping("/list/{id}")
    public R list(@PathVariable("id") String id){
        ForumEntity forum = forumService.selectById(id);
        getChilds(forum);
        return R.ok().put("data", forum);
    }
    
	private ForumEntity getChilds(ForumEntity forum) {
    	List<ForumEntity> childs = new ArrayList<ForumEntity>();
    	childs = forumService.selectList(new EntityWrapper<ForumEntity>().eq("parentid", forum.getId()));
    	if(childs == null || childs.size()==0) {
    		return null;
    	}
    	forum.setChilds(childs);
    	for(ForumEntity forumEntity : childs) {
    		getChilds(forumEntity);
    	}
    	return forum;
    }

后台管理系统中有首页、个人中心、用户管理、公告信息管理、试卷管理、论坛交流、系统管理、考试信息管理
	/**
	 * 获取table表中的column列表(联动接口)
	 * @param table
	 * @param column
	 * @return
	 */
	@IgnoreAuth
	@RequestMapping("/option/{tableName}/{columnName}")
	public R getOption(@PathVariable("tableName") String tableName, @PathVariable("columnName") String columnName,String level,String parent) {
		Map<String, Object> params = new HashMap<String, Object>();
		params.put("table", tableName);
		params.put("column", columnName);
		if(StringUtils.isNotBlank(level)) {
			params.put("level", level);
		}
		if(StringUtils.isNotBlank(parent)) {
			params.put("parent", parent);
		}
		List<String> data = commonService.getOption(params);
		return R.ok().put("data", data);
	}

七、项目总结:

本项目是基于Java技术实现的校园竞赛模拟系统,采用了Spring Boot框架作为后端技术,前端采用Vue作为主要的开发工具。这个项目的目的是为了提供一个可靠的、高效的竞赛管理平台,以便校园竞赛能够更好地展开。

我们的项目团队认为,在项目开发过程中最关键的是要建立清晰的需求文档和良好的团队沟通,这样可以确保项目按时按质量完成。

在这个项目中,我们遇到了许多挑战。例如,我们必须解决数据库设计问题、实现可靠的数据验证、处理并发操作和优化系统性能等等。我们通过团队合作和克服困难的精神克服了这些挑战,并成功地完成了这个项目。

在项目的最终结果中,我们提供了一个功能齐全、易于使用的系统,能够帮助校园竞赛组织者更好地管理比赛。我们还提供了数据分析和可视化报表功能,让组织者和参与者可以更好地了解比赛的进展情况。

总之,我们的项目团队在这个项目中付出了很多努力,并成功地开发了一个高质量、高效的校园竞赛模拟系统。我们相信这个系统将对学生、老师和校园竞赛组织者产生积极的影响。

八、源码获取:

大家点赞、收藏、关注、评论啦 、查看👇🏻👇🏻👇🏻获取联系方式👇🏻👇🏻👇🏻

链接点击直达:下载链接

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

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

相关文章

DPU54国产全速USB1.1HUB控制器芯片替代AU9254

目录DPU54简介结构框图DPU54主要特性性能特点典型应用领域DPU54简介 DPU54是高性能、低功耗4口全速 USB1.1 HUB 控制器芯片&#xff0c;上行端口兼容全速 12MHz 模式&#xff0c;4 个下行端口兼容全速 12MHz、低速 1.5MHz 两种模式。 DPU54采用状态机单事务处理架构&#xff0…

windows 11系统,通过ip地址远程连接连接ubuntu 22.04系统(共同局域网下,另一台主机不需要联网)

windows 11系统&#xff0c;通过ip地址远程连接连接ubuntu 22.04系统&#xff08;不需要联网&#xff09;问题来源问题分析解决方案问题来源 自己搭建了一台ubuntu系统作为深度学习的机器&#xff0c;但是学校的网络问题&#xff0c;一个账号只能同时登录3台设备。通过远程连接…

C#完全掌握控件之-combbox

无论是QT还是VC&#xff0c;这些可视化编程的工具&#xff0c;掌握好控件的用法是第一步&#xff0c;C#的控件也不例外&#xff0c;尤其这些常用的控件。常见控件中较难的往往是这些与数据源打交道的&#xff0c;比如CombBox、ListBox、ListView、TreeView、DataGridView. 文章…

JUC并发编程之HashMap(jdk1.7版本)-底层源码探究

目录 JUC并发编程之HashMap(jdk1.7版本)-底层源码探究 HashMap底层源码 - jdk1.7 基本概念 -采取层层递进&#xff0c;问答式 存储Key-Value的结构 常量和成员变量 构造方法 put方法 inflateTable方法 hash方法 indexFor方法 addEntry方法 resize方法 createEntry…

JVM 运行时数据区(数据区组成表述,程序计数器,java虚拟机栈,本地方法栈)

JVM 运行时数据区JVM 运行时数据区3.1运行时的数据区组成概述3.1.1程度计数器3.1.2java虚拟机栈3.1.3本地方法栈3.1.4java堆3.1.5方法区3.2程序计数器3.3java虚拟机栈3.4本地方法栈JVM 运行时数据区 堆,方法区(元空间) 主要用来存放数据 是线程共享的. 程序计数器,本地方法栈…

Leetcode.1590 使数组和能被 P 整除

题目链接 Leetcode.1590 使数组和能被 P 整除 Rating &#xff1a; 2039 题目描述 给你一个正整数数组 nums&#xff0c;请你移除 最短 子数组&#xff08;可以为 空&#xff09;&#xff0c;使得剩余元素的 和 能被 p整除。 不允许 将整个数组都移除。 请你返回你需要移除的…

Java中IO流中字节流(FileInputStream(read、close)、FileOutputStream(write、close、换行写、续写))

IO流&#xff1a;存储和读取数据的解决方案 纯文本文件&#xff1a;Windows自带的记事本打开能读懂 IO流体系&#xff1a; FileInputStream&#xff1a;操作本地文件的字节输入流&#xff0c;可以把本地文件中的数据读取到程序中来 书写步骤&#xff1a;①创建字节输入流对象 …

cento7安装docker

1.环境说明 root用户&#xff0c;centos7内核版本&#xff1a;3.10.0-1160.88.1.el7.x86_64 可通过一下命令查看当前内核版本 [rootlocalhost ~]# uname -r 3.10.0-1160.88.1.el7.x86_64 这里内核版本为3.10&#xff0c;Linux版本为centos7。 2.使用root命令更新yum包 注意​ …

Redis高频面试题汇总(中)

目录 1.什么是redis事务&#xff1f; 2.如何使用 Redis 事务&#xff1f; 3.Redis 事务为什么不支持原子性 4.Redis 事务支持持久性吗 5.Redis事务基于lua脚本的实现 6.Redis集群的主从复制模型是怎样的&#xff1f; 7.Redis集群中&#xff0c;主从复制的数据同步的步骤 …

有没有好用的设备管理系统推荐?不妨看看这6款

有没有好用的设备管理系统推荐&#xff1f;不妨看看这6款&#xff01; 在现代社会中&#xff0c;软件已经成为了企业信息化、设备管理等方面必不可少的工具。而设备管理系统是将信息化了设备技术信息与现代化管理相结合&#xff0c;是实现研究级管理信息化的先导。 对于设备管…

p79 Python 开发-sqlmapapiTamperPocsuite

数据来源​​​​​​本文仅用于信息安全学习&#xff0c;请遵守相关法律法规&#xff0c;严禁用于非法途径。若观众因此作出任何危害网络安全的行为&#xff0c;后果自负&#xff0c;与本人无关。 # 知识点&#xff1a; Request 爬虫技术&#xff0c;Sqlmap 深入分析&#x…

一文梳理深度学习算法演进

分享一篇深度学习算法演进史的纯干货文章&#xff0c;涉及语音、图像、nlp、强化学习、隐私保护、艺术创作、目标检测、医疗、压缩序列、推荐排序等方向。文章较长&#xff0c;干货满满&#xff0c;建议收藏1. 前言如果说高德纳的著作奠定了第一代计算机算法&#xff0c;那么传…

Vue3.0导出数据为自定义样式Excel

前言当下开发web应用系统的时候&#xff0c;我们往往会遇到需要把网页上面的数据导出到excel这样的需求&#xff0c;真实的企业项目里对应一些导出财务报表、员工信息、交易记录、考勤打卡记录…等等需求&#xff0c;本文将对此做探讨。开始前补充&#xff1a; 网上是有些牛人已…

【IoT】项目管理:如何做好端到端的项目管理?

今天主要来谈谈项目管理这个话题。 首先来看一个我在网络上看到的一个关于项目管理的案例或者是段子。 将项目管理的作用及意义非常直观地展示了出来。 有一个植树搞绿化的企业&#xff0c;在公司内部设置有五个部门&#xff0c;分别是&#xff1a; 运输部门&#xff1b;挖坑部…

nginx 平滑升级

背景介绍 因为一些原因&#xff0c;比如说 Nginx 发现漏洞、应用一些新的模块等等&#xff0c;想对 Nginx 的版本进行更新&#xff0c;最简单的做法就是停止当前的 Nginx 服务&#xff0c;然后开启新的 Nginx 服务。但是这样会导致在一段时间内&#xff0c;用户是无法访问服务…

2023/3/10 Vue核心知识的学习- Vue - v-model双向绑定原理

https://www.jianshu.com/p/2682b5a26869 定义&#xff1a;vue中双向绑定就是指v-model指令&#xff0c;可以绑定一个响应式数据到视图&#xff0c;同时视图中变化能同步改变该值。 通过Object.defineProperty( )对属性设置一个set函数&#xff0c;当数据改变了就会来触发这个…

索引设计的一些小技巧(上)

文章目录 主键索引为频繁查询的字段建立索引避免为"大字段"建立索引选择区分度大的列作为索引尽量为ORDER BY 和 GROUP BY 后面的字段建立索引不要在条件中使用函数不要建立太多的索引频繁增删改的字段不要建立索引索引失效的常见场景主键索引 大家在设计主键的时候…

数据安全—数据完整性校验

1、数据安全保障三要素即 保密性 完整性、可用性机密性&#xff1a;要求数据不被他人轻易获取&#xff0c;需要进行数据加密。完整性&#xff1a;要求数据不被他人随意修改&#xff0c;需要进行签名技术可用性&#xff1a;要求服务不被他人恶意攻击&#xff0c;需要进行数据校验…

别再说前端导出excel麻烦了(xlsx插件用法)

如果是为了解决el-teable的固定列导出问题&#xff0c;直接移动至文章末 本文使用的插件按照指令&#xff08;第一个为一起按照&#xff0c;下面的是独立按照&#xff09; npm install --save xlsx file-saver或 npm install --save xlsx npm install --save file-saver表格…

【Thingsboard+ChirpStack+LoRaWAN 网关+LoRa节点】通讯过程

这里写目录标题 4.通讯流程图:5.thingsboard 集成 chirpstack 上下行通讯5.1上行消息:5.2下行信息:5.3 上行数据分析5.4 下行数据分析6.thingsboard中设备管理实现:lora节点、网关、lora server、以及物联网平台四部分的数据通讯 实验结果: 描述:在thingsboard中修改某个…