计算机毕业设计 基于SpringBoot的线上教育培训办公系统的设计与实现 Java实战项目 附源码+文档+视频讲解
博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌
🍅文末获取源码联系🍅
👇🏻 精彩专栏推荐订阅👇🏻 不然下次找不到哟
————————————————
计算机毕业设计《1000套》✌
目录
1、项目介绍及开发技术
1.1 项目介绍
1.2 开发技术
2、系统功能设计结构图
3、功能截图
4、数据库表结构设计
5、关键代码
5.1 备课信息Controller模块
5.2 备课信息Service模块
5.3 备课信息ServiceImpl模块
5.4 备课信息Dao模块
6、论文目录结构
7、源码获取
1、项目介绍及开发技术
1.1 项目介绍
传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,在计算机上安装线上教育培训办公系统软件来发挥其高效地信息处理的作用,可以规范信息管理流程,让管理工作可以系统化和程序化,同时,线上教育培训办公系统的有效运用可以帮助管理人员准确快速地处理信息。
线上教育培训办公系统在对开发工具的选择上也很慎重,为了便于开发实现,选择的开发工具为Eclipse,选择的数据库工具为Mysql。以此搭建开发环境实现线上教育培训办公系统的功能。其中管理员管理用户,新闻公告。
线上教育培训办公系统是一款运用软件开发技术设计实现的应用系统,在信息处理上可以达到快速的目的,不管是针对数据添加,数据维护和统计,以及数据查询等处理要求,线上教育培训办公系统都可以轻松应对。
1.2 开发技术
Java开发语言、SpringBoot、MyBatisPlus、MySQL数据库、Maven、IDEA开发工具、JDK1.8+、Vue、HTML、CSS、JS。
2、系统功能设计结构图
3、功能截图
学生信息管理:学生信息的查询管理,可以删除学生信息、修改学生信息、新增学生信息,还进行了对用户名称的模糊查询的条件。
教师信息管理: 查看已发布的教师信息数据,修改教师信息,教师信息作废,即可删除,还进行了对教师信息名称的模糊查询 教师信息信息的类型查询等等一些条件。
公告类型管理:根据公告类型进行条件查询,还可以对公告类型进行新增、修改、查询操作等等.
公告信息管理:根据公告信息进行新增、修改、查询操作等等。
4、数据库表结构设计
CREATE DATABASE /*!32312 IF NOT EXISTS*/`xianshangjiaoyupeuxunbangong` /*!40100 DEFAULT CHARACTER SET utf8 */;USE `xianshangjiaoyupeuxunbangong`;/*Table structure for table `config` */DROP TABLE IF EXISTS `config`;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=4 DEFAULT CHARSET=utf8 COMMENT='配置文件';/*Data for the table `config` */insert into `config`(`id`,`name`,`value`) values (1,'轮播图1','upload/config1.jpg'),(2,'轮播图2','upload/config2.jpg'),(3,'轮播图3','upload/config3.jpg');/*Table structure for table `dianfnag` */DROP TABLE IF EXISTS `dianfnag`;CREATE TABLE `dianfnag` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',`dianfnag_name` varchar(200) DEFAULT NULL COMMENT '标题 Search111',`yonghu_id` int(11) DEFAULT NULL COMMENT '学生',`jiaoshi_id` int(11) DEFAULT NULL COMMENT '教师',`dianfnag_cishu` int(11) DEFAULT NULL COMMENT '本周电访次数',`dianfnag_shijian` int(11) DEFAULT NULL COMMENT '本周电访时间',`dianfnag_text` text COMMENT '备注',`insert_time` timestamp NULL DEFAULT NULL COMMENT '添加时间',`create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间 ',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8 COMMENT='电访信息';/*Data for the table `dianfnag` */insert into `dianfnag`(`id`,`dianfnag_name`,`yonghu_id`,`jiaoshi_id`,`dianfnag_cishu`,`dianfnag_shijian`,`dianfnag_text`,`insert_time`,`create_time`) values (1,'标题1',2,1,235,279,'备注1','2023-02-22 15:25:21','2023-02-22 15:25:21'),(2,'标题2',2,1,279,331,'备注2','2023-02-22 15:25:21','2023-02-22 15:25:21'),(3,'标题3',3,2,219,130,'备注3','2023-02-22 15:25:21','2023-02-22 15:25:21'),(4,'标题4',3,3,48,13,'备注4','2023-02-22 15:25:21','2023-02-22 15:25:21'),(5,'标题5',1,3,6,501,'备注5','2023-02-22 15:25:21','2023-02-22 15:25:21'),(6,'123',3,1,123,123,'123','2023-02-22 16:04:26','2023-02-22 16:04:26');/*Table structure for table `dictionary` */DROP TABLE IF EXISTS `dictionary`;CREATE TABLE `dictionary` (`id` bigint(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=31 DEFAULT CHARSET=utf8 COMMENT='字典';/*Data for the table `dictionary` */insert into `dictionary`(`id`,`dic_code`,`dic_name`,`code_index`,`index_name`,`super_id`,`beizhu`,`create_time`) values (1,'kecheng_types','课程类型',1,'课程类型1',NULL,NULL,'2023-02-22 15:25:10'),(2,'kecheng_types','课程类型',2,'课程类型2',NULL,NULL,'2023-02-22 15:25:10'),(3,'kecheng_types','课程类型',3,'课程类型3',NULL,NULL,'2023-02-22 15:25:10'),(4,'jiaoxueshipin_types','备课类型',1,'备课类型1',NULL,NULL,'2023-02-22 15:25:10'),(5,'jiaoxueshipin_types','备课类型',2,'备课类型2',NULL,NULL,'2023-02-22 15:25:10'),(6,'jiaoxueshipin_types','备课类型',3,'备课类型3',NULL,NULL,'2023-02-22 15:25:10'),(7,'yunyingshijian_types','运营事件类型',1,'运营事件类型1',NULL,NULL,'2023-02-22 15:25:10'),(8,'yunyingshijian_types','运营事件类型',2,'运营事件类型2',NULL,NULL,'2023-02-22 15:25:10'),(9,'yunyingshijian_types','运营事件类型',3,'运营事件类型3',NULL,NULL,'2023-02-22 15:25:10'),(10,'kaihuitongzhi_types','会议类型',1,'会议类型1',NULL,NULL,'2023-02-22 15:25:11'),(11,'kaihuitongzhi_types','会议类型',2,'会议类型2',NULL,NULL,'2023-02-22 15:25:11'),(12,'kaihuitongzhi_types','会议类型',3,'会议类型3',NULL,NULL,'2023-02-22 15:25:11'),(13,'jiaoshiqingjia_types','请假类型',1,'生病',NULL,NULL,'2023-02-22 15:25:11'),(14,'jiaoshiqingjia_types','请假类型',2,'有事',NULL,NULL,'2023-02-22 15:25:11'),(15,'jiaoshiqingjia_types','请假类型',3,'其他',NULL,NULL,'2023-02-22 15:25:11'),(16,'jiaoshiqingjia_yesno_types','申请状态',1,'待审核',NULL,NULL,'2023-02-22 15:25:11'),(17,'jiaoshiqingjia_yesno_types','申请状态',2,'同意',NULL,NULL,'2023-02-22 15:25:11'),(18,'jiaoshiqingjia_yesno_types','申请状态',3,'拒绝',NULL,NULL,'2023-02-22 15:25:11'),(19,'zuoye_types','作业类型',1,'作业类型1',NULL,NULL,'2023-02-22 15:25:11'),(20,'zuoye_types','作业类型',2,'作业类型2',NULL,NULL,'2023-02-22 15:25:11'),(21,'zuoye_types','作业类型',3,'作业类型3',NULL,NULL,'2023-02-22 15:25:11'),(22,'news_types','公告类型',1,'公告类型1',NULL,NULL,'2023-02-22 15:25:11'),(23,'news_types','公告类型',2,'公告类型2',NULL,NULL,'2023-02-22 15:25:11'),(24,'news_types','公告类型',3,'公告类型3',NULL,NULL,'2023-02-22 15:25:11'),(25,'sex_types','性别',1,'男',NULL,NULL,'2023-02-22 15:25:11'),(26,'sex_types','性别',2,'女',NULL,NULL,'2023-02-22 15:25:11'),(27,'banji_types','班级',1,'班级1',NULL,NULL,'2023-02-22 15:25:11'),(28,'banji_types','班级',2,'班级2',NULL,NULL,'2023-02-22 15:25:11'),(29,'forum_state_types','帖子状态',1,'发帖',NULL,NULL,'2023-02-22 15:25:11'),(30,'forum_state_types','帖子状态',2,'回帖',NULL,NULL,'2023-02-22 15:25:11');/*Table structure for table `forum` */DROP TABLE IF EXISTS `forum`;CREATE TABLE `forum` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',`forum_name` varchar(200) DEFAULT NULL COMMENT '帖子标题 Search111 ',`yonghu_id` int(11) DEFAULT NULL COMMENT '学生',`jiaoshi_id` int(11) DEFAULT NULL COMMENT '教师',`users_id` int(11) DEFAULT NULL COMMENT '管理员',`forum_content` text COMMENT '发布内容',`super_ids` int(11) DEFAULT NULL COMMENT '父id',`forum_state_types` int(11) DEFAULT NULL COMMENT '帖子状态',`insert_time` timestamp NULL DEFAULT NULL COMMENT '发帖时间',`update_time` timestamp NULL DEFAULT NULL COMMENT '修改时间',`create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间 show2',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8 COMMENT='交流平台';/*Data for the table `forum` */insert into `forum`(`id`,`forum_name`,`yonghu_id`,`jiaoshi_id`,`users_id`,`forum_content`,`super_ids`,`forum_state_types`,`insert_time`,`update_time`,`create_time`) values (1,'帖子标题1',1,NULL,NULL,'发布内容1',364,1,'2023-02-22 15:25:21','2023-02-22 15:25:21','2023-02-22 15:25:21'),(2,'帖子标题2',3,NULL,NULL,'发布内容2',62,1,'2023-02-22 15:25:21','2023-02-22 15:25:21','2023-02-22 15:25:21'),(3,'帖子标题3',3,NULL,NULL,'发布内容3',500,1,'2023-02-22 15:25:21','2023-02-22 15:25:21','2023-02-22 15:25:21'),(4,'帖子标题4',2,NULL,NULL,'发布内容4',178,1,'2023-02-22 15:25:21','2023-02-22 15:25:21','2023-02-22 15:25:21'),(5,'帖子标题5',3,NULL,NULL,'发布内容5',444,1,'2023-02-22 15:25:21','2023-02-22 15:25:21','2023-02-22 15:25:21'),(8,NULL,1,NULL,NULL,'123333',5,2,'2023-02-22 16:03:52',NULL,'2023-02-22 16:03:52'),(9,NULL,NULL,1,NULL,'333333333',5,2,'2023-02-22 16:05:10',NULL,'2023-02-22 16:05:10'),(10,NULL,NULL,NULL,1,'123312132',5,2,'2023-02-22 16:06:39',NULL,'2023-02-22 16:06:39');/*Table structure for table `jiaoshi` */DROP TABLE IF EXISTS `jiaoshi`;CREATE TABLE `jiaoshi` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',`username` varchar(200) DEFAULT NULL COMMENT '账户',`password` varchar(200) DEFAULT NULL COMMENT '密码',`jiaoshi_name` varchar(200) DEFAULT NULL COMMENT '教师姓名 Search111 ',`sex_types` int(11) DEFAULT NULL COMMENT '性别 Search111',`jiaoshi_photo` varchar(200) DEFAULT NULL COMMENT '教师头像',`jiaoshi_id_number` varchar(200) DEFAULT NULL COMMENT '身份证号',`jiaoshi_phone` varchar(200) DEFAULT NULL COMMENT '联系方式',`jiaoshi_email` varchar(200) DEFAULT NULL COMMENT '电子邮箱',`jiaoshi_delete` int(11) DEFAULT NULL COMMENT '逻辑删除',`create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COMMENT='教师';/*Data for the table `jiaoshi` */insert into `jiaoshi`(`id`,`username`,`password`,`jiaoshi_name`,`sex_types`,`jiaoshi_photo`,`jiaoshi_id_number`,`jiaoshi_phone`,`jiaoshi_email`,`jiaoshi_delete`,`create_time`) values (1,'a1','123456','教师姓名1',2,'upload/jiaoshi1.jpg','410224199010102001','17703786901','1@qq.com',1,'2023-02-22 15:25:21'),(2,'a2','123456','教师姓名2',2,'upload/jiaoshi2.jpg','410224199010102002','17703786902','2@qq.com',1,'2023-02-22 15:25:21'),(3,'a3','123456','教师姓名3',1,'upload/jiaoshi3.jpg','410224199010102003','17703786903','3@qq.com',1,'2023-02-22 15:25:21');/*Table structure for table `jiaoshiqingjia` */DROP TABLE IF EXISTS `jiaoshiqingjia`;CREATE TABLE `jiaoshiqingjia` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',`jiaoshi_id` int(200) DEFAULT NULL COMMENT '教师',`jiaoshiqingjia_name` varchar(200) DEFAULT NULL COMMENT '请假标题 Search111 ',`jiaoshiqingjia_text` text COMMENT '请假缘由',`jiaoshiqingjia_types` int(11) DEFAULT NULL COMMENT '请假类型 Search111',`insert_time` timestamp NULL DEFAULT NULL COMMENT '申请时间',`jiaoshiqingjia_time` timestamp NULL DEFAULT NULL COMMENT '请假时间',`jiaoshiqingjia_number` int(200) DEFAULT NULL COMMENT '请假天数',`jiaoshiqingjia_yesno_types` int(11) DEFAULT NULL COMMENT '申请状态 Search111 ',`jiaoshiqingjia_yesno_text` text COMMENT '处理意见',`jiaoshiqingjia_shenhe_time` timestamp NULL DEFAULT NULL COMMENT '审核时间',`create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8 COMMENT='教师请假';/*Data for the table `jiaoshiqingjia` */insert into `jiaoshiqingjia`(`id`,`jiaoshi_id`,`jiaoshiqingjia_name`,`jiaoshiqingjia_text`,`jiaoshiqingjia_types`,`insert_time`,`jiaoshiqingjia_time`,`jiaoshiqingjia_number`,`jiaoshiqingjia_yesno_types`,`jiaoshiqingjia_yesno_text`,`jiaoshiqingjia_shenhe_time`,`create_time`) values (1,1,'请假标题1','请假缘由1',1,'2023-02-22 15:25:21','2023-02-22 15:25:21',327,1,NULL,NULL,'2023-02-22 15:25:21'),(2,3,'请假标题2','请假缘由2',3,'2023-02-22 15:25:21','2023-02-22 15:25:21',211,1,NULL,NULL,'2023-02-22 15:25:21'),(3,1,'请假标题3','请假缘由3',3,'2023-02-22 15:25:21','2023-02-22 15:25:21',254,1,NULL,NULL,'2023-02-22 15:25:21'),(4,1,'请假标题4','请假缘由4',3,'2023-02-22 15:25:21','2023-02-22 15:25:21',485,1,NULL,NULL,'2023-02-22 15:25:21'),(5,3,'请假标题5','请假缘由5',1,'2023-02-22 15:25:21','2023-02-22 15:25:21',449,3,'123123123','2023-02-22 16:06:12','2023-02-22 15:25:21'),(10,1,'123','123',2,'2023-02-22 16:04:43','2023-02-23 00:00:00',10,2,'123','2023-02-22 16:06:06','2023-02-22 16:04:43');/*Table structure for table `jiaoxueshipin` */DROP TABLE IF EXISTS `jiaoxueshipin`;CREATE TABLE `jiaoxueshipin` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',`jiaoxueshipin_name` varchar(200) DEFAULT NULL COMMENT '备课信息标题 Search111',`jiaoxueshipin_photo` varchar(200) DEFAULT NULL COMMENT '备课信息照片',`jiaoxueshipin_file` varchar(200) DEFAULT NULL COMMENT '备课资料',`jiaoxueshipin_types` int(11) DEFAULT NULL COMMENT '备课类型 Search111',`jiaoshi_id` int(11) DEFAULT NULL COMMENT '教师',`jiaoxueshipin_time` timestamp NULL DEFAULT NULL COMMENT '上课时间',`jiaoxueshipin_content` text COMMENT '备课详情',`insert_time` timestamp NULL DEFAULT NULL COMMENT '添加时间',`jiaoxueshipin_delete` int(11) DEFAULT NULL COMMENT '逻辑删除',`create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间 show1 show2 photoShow',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COMMENT='备课信息';/*Data for the table `jiaoxueshipin` */insert into
/*Table structure for table `kaihuitongzhi` */DROP TABLE IF EXISTS `kaihuitongzhi`;CREATE TABLE `kaihuitongzhi` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',`kaihuitongzhi_name` varchar(200) DEFAULT NULL COMMENT '会议标题 Search111',`kaihuitongzhi_types` int(11) DEFAULT NULL COMMENT '会议类型 Search111',`kaihuitongzhi_content` text COMMENT '会议详情',`kaihuitongzhi_delete` int(11) DEFAULT NULL COMMENT '逻辑删除',`insert_time` timestamp NULL DEFAULT NULL COMMENT '添加时间',`create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间 ',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COMMENT='会议';/*Data for the table `kaihuitongzhi` */insert into
/*Table structure for table `kecheng` */DROP TABLE IF EXISTS `kecheng`;CREATE TABLE `kecheng` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',`kecheng_name` varchar(200) DEFAULT NULL COMMENT '课程标题 Search111',`kecheng_photo` varchar(200) DEFAULT NULL COMMENT '课程照片',`kecheng_types` int(11) DEFAULT NULL COMMENT '课程类型 Search111',`kecheng_shichang` int(11) DEFAULT NULL COMMENT '课程时长',`kecheng_time` timestamp NULL DEFAULT NULL COMMENT '开始时间',`banji_types` int(11) DEFAULT NULL COMMENT '班级 Search111',`jiaoshi_id` int(11) DEFAULT NULL COMMENT '教师',`kecheng_delete` int(11) DEFAULT NULL COMMENT '逻辑删除',`kecheng_content` text COMMENT '课程详情',`create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间 show1 show2 photoShow',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COMMENT='课程信息';/*Data for the table `kecheng` */insert into /*Table structure for table `news` */DROP TABLE IF EXISTS `news`;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 '创建时间 show1 show2 nameShow',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COMMENT='通知公告';/*Data for the table `news` */insert into `news`(`id`,`news_name`,`news_types`,`news_photo`,`insert_time`,`news_content`,`create_time`) values (1,'公告标题1',3,'upload/news1.jpg','2023-02-22 15:25:21','公告详情1','2023-02-22 15:25:21'),(2,'公告标题2',2,'upload/news2.jpg','2023-02-22 15:25:21','公告详情2','2023-02-22 15:25:21'),(3,'公告标题3',3,'upload/news3.jpg','2023-02-22 15:25:21','公告详情3','2023-02-22 15:25:21'),(4,'公告标题4',2,'upload/news4.jpg','2023-02-22 15:25:21','公告详情4','2023-02-22 15:25:21'),(5,'公告标题5',1,'upload/news5.jpg','2023-02-22 15:25:21','公告详情5','2023-02-22 15:25:21');/*Table structure for table `token` */DROP TABLE IF EXISTS `token`;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=4 DEFAULT CHARSET=utf8 COMMENT='token表';/*Data for the table `token` */insert into `token`(`id`,`userid`,`username`,`tablename`,`role`,`token`,`addtime`,`expiratedtime`) values (1,1,'a1','yonghu','学生','5zutfpy0cwt48pi661myivu0x3wd0dv7','2023-02-22 15:39:47','2023-02-22 17:03:29'),(2,1,'a1','jiaoshi','教师','7eq89rw9u03v0sf93nspa2g0gv903hhd','2023-02-22 16:04:10','2023-02-22 17:04:10'),(3,1,'admin','users','管理员','wl9qnbsac7kbjv2dw26xiv45n99ybg67','2023-02-22 16:05:20','2023-02-22 17:07:54');/*Table structure for table `users` */DROP TABLE IF EXISTS `users`;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='管理员';/*Data for the table `users` */insert into `users`(`id`,`username`,`password`,`role`,`addtime`) values (1,'admin','admin','管理员','2022-05-01 00:00:00');/*Table structure for table `yonghu` */DROP TABLE IF EXISTS `yonghu`;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_photo` varchar(200) DEFAULT NULL COMMENT '学生头像',`yonghu_id_number` varchar(200) DEFAULT NULL COMMENT '身份证号',`yonghu_phone` varchar(200) DEFAULT NULL COMMENT '联系方式',`yonghu_email` varchar(200) DEFAULT NULL COMMENT '电子邮箱',`banji_types` int(11) DEFAULT NULL COMMENT '班级 Search111',`yonghu_delete` int(11) DEFAULT NULL COMMENT '逻辑删除',`create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COMMENT='学生';/*Data for the table `yonghu` */insert into `yonghu`(`id`,`username`,`password`,`yonghu_name`,`sex_types`,`yonghu_photo`,`yonghu_id_number`,`yonghu_phone`,`yonghu_email`,`banji_types`,`yonghu_delete`,`create_time`) values (1,'a1','123456','学生姓名1',1,'upload/yonghu1.jpg','410224199010102001','17703786901','1@qq.com',2,1,'2023-02-22 15:25:21'),(2,'a2','123456','学生姓名2',2,'upload/yonghu2.jpg','410224199010102002','17703786902','2@qq.com',2,1,'2023-02-22 15:25:21'),(3,'a3','123456','学生姓名3',1,'upload/yonghu3.jpg','410224199010102003','17703786903','3@qq.com',2,1,'2023-02-22 15:25:21');/*Table structure for table `yunyingshijian` */DROP TABLE IF EXISTS `yunyingshijian`;CREATE TABLE `yunyingshijian` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',`yunyingshijian_name` varchar(200) DEFAULT NULL COMMENT '运营事件标题 Search111',`yunyingshijian_types` int(11) DEFAULT NULL COMMENT '运营事件类型 Search111',`yunyingshijian_content` text COMMENT '运营事件详情',`yunyingshijian_delete` int(11) DEFAULT NULL COMMENT '逻辑删除',`insert_time` timestamp NULL DEFAULT NULL COMMENT '添加时间',`create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间 ',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COMMENT='运营事件';/*Data for the table `yunyingshijian` */insert into `yunyingshijian`(`id`,`yunyingshijian_name`,`yunyingshijian_types`,`yunyingshijian_content`,`yunyingshijian_delete`,`insert_time`,`create_time`) values (1,'运营事件标题1',2,'运营事件详情1',1,'2023-02-22 15:25:21','2023-02-22 15:25:21'),(2,'运营事件标题2',2,'运营事件详情2',1,'2023-02-22 15:25:21','2023-02-22 15:25:21'),(3,'运营事件标题3',3,'运营事件详情3',1,'2023-02-22 15:25:21','2023-02-22 15:25:21'),(4,'运营事件标题4',2,'运营事件详情4',1,'2023-02-22 15:25:21','2023-02-22 15:25:21'),(5,'运营事件标题5',2,'运营事件详情5',1,'2023-02-22 15:25:21','2023-02-22 15:25:21');/*Table structure for table `zuoye` */DROP TABLE IF EXISTS `zuoye`;CREATE TABLE `zuoye` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',`zuoye_name` varchar(200) DEFAULT NULL COMMENT '作业标题 Search111',`zuoye_photo` varchar(200) DEFAULT NULL COMMENT '作业照片',`zuoye_types` int(11) DEFAULT NULL COMMENT '作业类型 Search111',`zuoye_file` varchar(200) DEFAULT NULL COMMENT '作业',`jiaoshi_id` int(11) DEFAULT NULL COMMENT '教师',`zuoye_content` text COMMENT '作业详情',`zuoye_delete` int(11) DEFAULT NULL COMMENT '逻辑删除',`insert_time` timestamp NULL DEFAULT NULL COMMENT '添加时间',`create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间 show1 show2 photoShow',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COMMENT='作业';/*Data for the table `zuoye` */insert into `zuoye`(`id`,`zuoye_name`,`zuoye_photo`,`zuoye_types`,`zuoye_file`,`jiaoshi_id`,`zuoye_content`,`zuoye_delete`,`insert_time`,`create_time`) values (1,'作业标题1','upload/zuoye1.jpg',2,'upload/file.rar',1,'作业详情1',1,'2023-02-22 15:25:21','2023-02-22 15:25:21'),(2,'作业标题2','upload/zuoye2.jpg',1,'upload/file.rar',1,'作业详情2',1,'2023-02-22 15:25:21','2023-02-22 15:25:21'),(3,'作业标题3','upload/zuoye3.jpg',2,'upload/file.rar',3,'作业详情3',1,'2023-02-22 15:25:21','2023-02-22 15:25:21'),(4,'作业标题4','upload/zuoye4.jpg',3,'upload/file.rar',2,'作业详情4',1,'2023-02-22 15:25:21','2023-02-22 15:25:21'),(5,'作业标题5','upload/zuoye5.jpg',2,'upload/file.rar',3,'作业详情5',1,'2023-02-22 15:25:21','2023-02-22 15:25:21');/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
5、关键代码
5.1 备课信息Controller模块
/*** 备课信息* 后端接口* @author 学长编程* @email* WeChat jsjbysj88
*/
@RestController
@Controller
@RequestMapping("/jiaoxueshipin")
public class JiaoxueshipinController {private static final Logger logger = LoggerFactory.getLogger(JiaoxueshipinController.class);private static final String TABLE_NAME = "jiaoxueshipin";@Autowiredprivate JiaoxueshipinService jiaoxueshipinService;@Autowiredprivate TokenService tokenService;@Autowiredprivate DictionaryService dictionaryService;//级联表非注册的service//注册表service@Autowiredprivate YonghuService yonghuService;@Autowiredprivate JiaoshiService jiaoshiService;/*** 后端列表*/@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("jiaoshiId",request.getSession().getAttribute("userId"));params.put("jiaoxueshipinDeleteStart",1);params.put("jiaoxueshipinDeleteEnd",1);CommonUtil.checkMap(params);PageUtils page = jiaoxueshipinService.queryPage(params);//字典表数据转换List<JiaoxueshipinView> list =(List<JiaoxueshipinView>)page.getList();for(JiaoxueshipinView 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);JiaoxueshipinEntity jiaoxueshipin = jiaoxueshipinService.selectById(id);if(jiaoxueshipin !=null){//entity转viewJiaoxueshipinView view = new JiaoxueshipinView();BeanUtils.copyProperties( jiaoxueshipin , view );//把实体数据重构到view中//级联表 教师//级联表JiaoshiEntity jiaoshi = jiaoshiService.selectById(jiaoxueshipin.getJiaoshiId());if(jiaoshi != null){BeanUtils.copyProperties( jiaoshi , view ,new String[]{ "id", "createTime", "insertTime", "updateTime", "jiaoshiId"});//把级联的数据添加到view中,并排除id和创建时间字段,当前表的级联注册表view.setJiaoshiId(jiaoshi.getId());}//修改对应字典表字段dictionaryService.dictionaryConvert(view, request);return R.ok().put("data", view);}else {return R.error(511,"查不到数据");}}/*** 后端保存*/@RequestMapping("/save")public R save(@RequestBody JiaoxueshipinEntity jiaoxueshipin, HttpServletRequest request){logger.debug("save方法:,,Controller:{},,jiaoxueshipin:{}",this.getClass().getName(),jiaoxueshipin.toString());String role = String.valueOf(request.getSession().getAttribute("role"));if(false)return R.error(511,"永远不会进入");else if("教师".equals(role))jiaoxueshipin.setJiaoshiId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));Wrapper<JiaoxueshipinEntity> queryWrapper = new EntityWrapper<JiaoxueshipinEntity>().eq("jiaoxueshipin_name", jiaoxueshipin.getJiaoxueshipinName()).eq("jiaoxueshipin_types", jiaoxueshipin.getJiaoxueshipinTypes()).eq("jiaoshi_id", jiaoxueshipin.getJiaoshiId()).eq("jiaoxueshipin_delete", jiaoxueshipin.getJiaoxueshipinDelete());logger.info("sql语句:"+queryWrapper.getSqlSegment());JiaoxueshipinEntity jiaoxueshipinEntity = jiaoxueshipinService.selectOne(queryWrapper);if(jiaoxueshipinEntity==null){jiaoxueshipin.setInsertTime(new Date());jiaoxueshipin.setJiaoxueshipinDelete(1);jiaoxueshipin.setCreateTime(new Date());jiaoxueshipinService.insert(jiaoxueshipin);return R.ok();}else {return R.error(511,"表中有相同数据");}}/*** 后端修改*/@RequestMapping("/update")public R update(@RequestBody JiaoxueshipinEntity jiaoxueshipin, HttpServletRequest request) throws NoSuchFieldException, ClassNotFoundException, IllegalAccessException, InstantiationException {logger.debug("update方法:,,Controller:{},,jiaoxueshipin:{}",this.getClass().getName(),jiaoxueshipin.toString());JiaoxueshipinEntity oldJiaoxueshipinEntity = jiaoxueshipinService.selectById(jiaoxueshipin.getId());//查询原先数据String role = String.valueOf(request.getSession().getAttribute("role"));
// if(false)
// return R.error(511,"永远不会进入");
// else if("教师".equals(role))
// jiaoxueshipin.setJiaoshiId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));//根据字段查询是否有相同数据Wrapper<JiaoxueshipinEntity> queryWrapper = new EntityWrapper<JiaoxueshipinEntity>().notIn("id",jiaoxueshipin.getId()).andNew().eq("jiaoxueshipin_name", jiaoxueshipin.getJiaoxueshipinName()).eq("jiaoxueshipin_types", jiaoxueshipin.getJiaoxueshipinTypes()).eq("jiaoshi_id", jiaoxueshipin.getJiaoshiId()).eq("jiaoxueshipin_delete", jiaoxueshipin.getJiaoxueshipinDelete());logger.info("sql语句:"+queryWrapper.getSqlSegment());JiaoxueshipinEntity jiaoxueshipinEntity = jiaoxueshipinService.selectOne(queryWrapper);if("".equals(jiaoxueshipin.getJiaoxueshipinPhoto()) || "null".equals(jiaoxueshipin.getJiaoxueshipinPhoto())){jiaoxueshipin.setJiaoxueshipinPhoto(null);}if("".equals(jiaoxueshipin.getJiaoxueshipinFile()) || "null".equals(jiaoxueshipin.getJiaoxueshipinFile())){jiaoxueshipin.setJiaoxueshipinFile(null);}if(jiaoxueshipinEntity==null){jiaoxueshipinService.updateById(jiaoxueshipin);//根据id更新return R.ok();}else {return R.error(511,"表中有相同数据");}}/*** 删除*/@RequestMapping("/delete")public R delete(@RequestBody Integer[] ids, HttpServletRequest request){logger.debug("delete:,,Controller:{},,ids:{}",this.getClass().getName(),ids.toString());List<JiaoxueshipinEntity> oldJiaoxueshipinList =jiaoxueshipinService.selectBatchIds(Arrays.asList(ids));//要删除的数据ArrayList<JiaoxueshipinEntity> list = new ArrayList<>();for(Integer id:ids){JiaoxueshipinEntity jiaoxueshipinEntity = new JiaoxueshipinEntity();jiaoxueshipinEntity.setId(id);jiaoxueshipinEntity.setJiaoxueshipinDelete(2);list.add(jiaoxueshipinEntity);}if(list != null && list.size() >0){jiaoxueshipinService.updateBatchById(list);}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<JiaoxueshipinEntity> jiaoxueshipinList = 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){//循环JiaoxueshipinEntity jiaoxueshipinEntity = new JiaoxueshipinEntity();
// jiaoxueshipinEntity.setJiaoxueshipinName(data.get(0)); //备课信息标题 要改的
// jiaoxueshipinEntity.setJiaoxueshipinPhoto("");//详情和图片
// jiaoxueshipinEntity.setJiaoxueshipinFile(data.get(0)); //备课资料 要改的
// jiaoxueshipinEntity.setJiaoxueshipinTypes(Integer.valueOf(data.get(0))); //备课类型 要改的
// jiaoxueshipinEntity.setJiaoshiId(Integer.valueOf(data.get(0))); //教师 要改的
// jiaoxueshipinEntity.setJiaoxueshipinTime(sdf.parse(data.get(0))); //上课时间 要改的
// jiaoxueshipinEntity.setJiaoxueshipinContent("");//详情和图片
// jiaoxueshipinEntity.setInsertTime(date);//时间
// jiaoxueshipinEntity.setJiaoxueshipinDelete(1);//逻辑删除字段
// jiaoxueshipinEntity.setCreateTime(date);//时间jiaoxueshipinList.add(jiaoxueshipinEntity);//把要查询是否重复的字段放入map中}//查询是否重复jiaoxueshipinService.insertBatch(jiaoxueshipinList);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 = jiaoxueshipinService.queryPage(params);//字典表数据转换List<JiaoxueshipinView> list =(List<JiaoxueshipinView>)page.getList();for(JiaoxueshipinView 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);JiaoxueshipinEntity jiaoxueshipin = jiaoxueshipinService.selectById(id);if(jiaoxueshipin !=null){//entity转viewJiaoxueshipinView view = new JiaoxueshipinView();BeanUtils.copyProperties( jiaoxueshipin , view );//把实体数据重构到view中//级联表JiaoshiEntity jiaoshi = jiaoshiService.selectById(jiaoxueshipin.getJiaoshiId());if(jiaoshi != null){BeanUtils.copyProperties( jiaoshi , view ,new String[]{ "id", "createDate"});//把级联的数据添加到view中,并排除id和创建时间字段view.setJiaoshiId(jiaoshi.getId());}//修改对应字典表字段dictionaryService.dictionaryConvert(view, request);return R.ok().put("data", view);}else {return R.error(511,"查不到数据");}}/*** 前端保存*/@RequestMapping("/add")public R add(@RequestBody JiaoxueshipinEntity jiaoxueshipin, HttpServletRequest request){logger.debug("add方法:,,Controller:{},,jiaoxueshipin:{}",this.getClass().getName(),jiaoxueshipin.toString());Wrapper<JiaoxueshipinEntity> queryWrapper = new EntityWrapper<JiaoxueshipinEntity>().eq("jiaoxueshipin_name", jiaoxueshipin.getJiaoxueshipinName()).eq("jiaoxueshipin_types", jiaoxueshipin.getJiaoxueshipinTypes()).eq("jiaoshi_id", jiaoxueshipin.getJiaoshiId()).eq("jiaoxueshipin_delete", jiaoxueshipin.getJiaoxueshipinDelete());logger.info("sql语句:"+queryWrapper.getSqlSegment());JiaoxueshipinEntity jiaoxueshipinEntity = jiaoxueshipinService.selectOne(queryWrapper);if(jiaoxueshipinEntity==null){jiaoxueshipin.setInsertTime(new Date());jiaoxueshipin.setJiaoxueshipinDelete(1);jiaoxueshipin.setCreateTime(new Date());jiaoxueshipinService.insert(jiaoxueshipin);return R.ok();}else {return R.error(511,"表中有相同数据");}}}
5.2 备课信息Service模块
package com.service;import com.baomidou.mybatisplus.service.IService;
import com.utils.PageUtils;
import com.entity.JiaoxueshipinEntity;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.springframework.lang.Nullable;
import java.util.List;/*** 备课信息 服务类*/
public interface JiaoxueshipinService extends IService<JiaoxueshipinEntity> {/*** @param params 查询参数* @return 带分页的查询出来的数据*/PageUtils queryPage(Map<String, Object> params);}
5.3 备课信息ServiceImpl模块
package com.service.impl;import com.utils.StringUtil;
import com.service.DictionaryService;
import com.utils.ClazzDiff;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.lang.reflect.Field;
import java.util.*;
import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import org.springframework.transaction.annotation.Transactional;
import com.utils.PageUtils;
import com.utils.Query;
import org.springframework.web.context.ContextLoader;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import org.springframework.lang.Nullable;
import org.springframework.util.Assert;
import com.dao.JiaoxueshipinDao;
import com.entity.JiaoxueshipinEntity;
import com.service.JiaoxueshipinService;
import com.entity.view.JiaoxueshipinView;/*** 备课信息 服务实现类*/
@Service("jiaoxueshipinService")
@Transactional
public class JiaoxueshipinServiceImpl extends ServiceImpl<JiaoxueshipinDao, JiaoxueshipinEntity> implements JiaoxueshipinService {@Overridepublic PageUtils queryPage(Map<String,Object> params) {Page<JiaoxueshipinView> page =new Query<JiaoxueshipinView>(params).getPage();page.setRecords(baseMapper.selectListView(page,params));return new PageUtils(page);}}
5.4 备课信息Dao模块
package com.dao;import com.entity.JiaoxueshipinEntity;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import java.util.List;
import java.util.Map;
import com.baomidou.mybatisplus.plugins.pagination.Pagination;import org.apache.ibatis.annotations.Param;
import com.entity.view.JiaoxueshipinView;/*** 备课信息 Dao 接口** @author */
public interface JiaoxueshipinDao extends BaseMapper<JiaoxueshipinEntity> {List<JiaoxueshipinView> selectListView(Pagination page,@Param("params")Map<String,Object> params);}
6、论文目录结构
7、源码获取
感谢大家的阅读,如有不懂的问题可以评论区交流或私聊!
喜欢文章可以点赞、收藏、关注、评论啦
→获取源码请私信←
相关文章:

计算机毕业设计 基于SpringBoot的线上教育培训办公系统的设计与实现 Java实战项目 附源码+文档+视频讲解
博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…...

四、机器学习基础概念介绍
四、机器学习基础概念介绍 1_机器学习基础概念机器学习分类1.1 有监督学习1.2 无监督学习 2_有监督机器学习—常见评估方法数据集的划分2.1 留出法2.2 校验验证法(重点方法)简单交叉验证K折交叉验证(单独流出测试集)(常…...
Excel设置单元格下拉框(poi)
前言 年关在即,还在最后的迭代处理,还分了个其他同事的单,说是导出的Excel模版的2列要修改为下拉选项,过程很曲折,不说,以下其实就是一个笔记而已! 其实之前分享过阿里的EasyExcel设置单…...
api接口是什么意思,api接口该如何防护呢?
API接口:应用程序与服务之间的接口 什么是API接口 API是应用程序接口的缩写,指的是能够让不同的应用程序之间交换数据的一种方式。一个API接口就是应用程序与服务之间的接口,它定义了服务提供的功能和数据,以及应用程序如何访问这…...

PMP资料怎么学?PMP备考经验分享
PMP考试前大家大多都是提前备考个一两个月,但是有些朋友喜欢“不走寻常路”,并不打算去考PMP认证,想要单纯了解PMP,不管要不要考证,即使是仅仅学习了解一下我个人都非常支持,因为专业的基础的确能提高工作效…...
partition by list(msn_id)子句的含义
在数据库查询中,特别是在使用SQL语言时,"PARTITION BY" 子句用于对结果集进行分区,以便可以对每个分区进行单独的聚合操作。这是在执行窗口函数(如 ROW_NUMBER(), RANK(), SUM(), AVG() 等)时特别有用的。 …...

【C++】I/O多路转接详解(二)
在上一篇文章【C】I/O多路转接详解(一) 在出现EPOLL之后,随之而来的是两种事件处理模式的应运而生:Reator 和 Proactor,同步IO模型常用于Reactor模式,异步IO常用于Proactor. 目录 1. 服务器编程框架简介2. IO处理1. R…...

PySpark(三)RDD持久化、共享变量、Spark内核制度,Spark Shuffle
目录 RDD持久化 RDD 的数据是过程数据 RDD 缓存 RDD CheckPoint 共享变量 广播变量 累加器 Spark 内核调度 DAG DAG 的宽窄依赖和阶段划分 内存迭代计算 Spark是怎么做内存计算的? DAG的作用?Stage阶段划分的作用? Spark为什么比MapReduce快? Spar…...
详解MYSQL中的平均值组大小
文章目录 平均值组大小了解平均值组大小MySQL什么时候会使用平均值组大小平均值组大小对于索引选取的影响平均值组大小 了解平均值组大小 总数据量 / 值组 = 平均值组大小 值组是一组具有相同键前缀值的行,及所有相等的键为一个值组。总数据量为全表数据量MySQL什么时候会使…...

【爬虫专区】批量下载PDF (无反爬)
天命:只要没反爬,一切都简单 这次爬取的是绿盟的威胁情报的PDF 先看一下结构,很明显就是一个for循环渲染 burp抓包会发现第二次接口请求 接口请求一次就能获取到了所有的数据 然后一个循环批量下载数据即可,其实没啥难度的 imp…...
PostgreSQL解决序列(自增id)自动增长冲突
背景 一般表的id主键我们都是设置为自增序列。 但是如果我们在插入一些数据的时候手动指定id,那么自增序列不会跟随我们手动设置的id增长。 就会出现下次不设置id的时候自增到我们手动指定的id导致主键冲突bug 举个例子 现在数据有 id123 现在我们手动插入数…...

1.0 Zookeeper 分布式配置服务教程
ZooKeeper 是 Apache 软件基金会的一个软件项目,它为大型分布式计算提供开源的分布式配置服务、同步服务和命名注册。 ZooKeeper 的架构通过冗余服务实现高可用性。 Zookeeper 的设计目标是将那些复杂且容易出错的分布式一致性服务封装起来,构成一个高…...
(Flutter 常用插件整理
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 Flutter 常用插件整理 # Flutter 城市列表,联系人列表,索引&悬停 https://github.com/flutterchina/azlistviewazlistview: ^2.0.0# Dart 汉字转拼音 https://github.com/flutterchina/lpinyinlpinyin…...

vue2.0+使用md-edit编辑器
前言:小刘开发过程中,如果是博客项目一般是会用到富文本。众多富文本中,小刘选择了markdown,并记录分享了下来。 # 使用 npm npm i kangc/v-md-editor -Smain.js基本配置import VueMarkdownEditor from kangc/v-md-editor; import…...

Java设计模式大全:23种常见的设计模式详解(二)
本系列文章简介: 设计模式是在软件开发过程中,经过实践和总结得到的一套解决特定问题的可复用的模板。它是一种在特定情境中经过验证的经验和技巧的集合,可以帮助开发人员设计出高效、可维护、可扩展和可复用的软件系统。设计模式提供了一种在…...

【算法与数据结构】718、1143、1035、392、115、LeetCode最长重复子数组+最长公共子序列+不相交的线+判断子序列+不同的子序列
文章目录 一、718、最长重复子数组二、1143、最长公共子序列三、1035、不相交的线四、392、判断子序列五、115、不同的子序列六、完整代码 所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。 一、718、最长重复子数组 思路分析࿱…...

OCR文本纠错思路
文字错误类别:多字 少字 形近字 当前方案 文本纠错思路 简单: 一、构建自定义词典,提高分词正确率。不在词典中,也不是停用词,分成单字的数据极有可能是错字(少部分可能是新词)。错字与前后的…...
【java批量导出pdf】优化方案
问题情境: 项目中存在web页面点击一键导出,导出所有数据对应的pdf文件,由于有些pdf文件是实时生成的,之前最简答的写法for循环处理速度太慢,超过了nginx配置的最大响应时间了,且对用户交互体验上很不友好&…...

Linux第42步_移植ST公司uboot的第3步_uboot命令测试,搭建nfs服务器和tftp服务器
测试uboot命令,搭建nfs服务器和tftp服务器,是测试uboot非常关键的一步。跳过这一节,后面可能要踩坑。 一、输入“help回车”,查询uboot所支持的命令 二、输入“? bootz回车”,查询“bootz”怎么用 注意:和…...
C++枚举算法(3)
我家的门牌号 题目描述: 我家住在一条短胡同里,这条胡同的门牌号从1开始顺序编号。 若所有的门牌号之和减去我家门牌号的两倍,恰好等于n,求 我家的门牌号及总共有多少家。 数据保证有唯一解。 输入 一个正整数n。n < 100000。…...

调用支付宝接口响应40004 SYSTEM_ERROR问题排查
在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...
应用升级/灾备测试时使用guarantee 闪回点迅速回退
1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间, 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点,不需要开启数据库闪回。…...

如何在看板中有效管理突发紧急任务
在看板中有效管理突发紧急任务需要:设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP(Work-in-Progress)弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中,设立专门的紧急任务通道尤为重要,这能…...
大模型多显卡多服务器并行计算方法与实践指南
一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...

让AI看见世界:MCP协议与服务器的工作原理
让AI看见世界:MCP协议与服务器的工作原理 MCP(Model Context Protocol)是一种创新的通信协议,旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天,MCP正成为连接AI与现实世界的重要桥梁。…...

均衡后的SNRSINR
本文主要摘自参考文献中的前两篇,相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程,其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt 根发送天线, n r n_r nr 根接收天线的 MIMO 系…...

USB Over IP专用硬件的5个特点
USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中,从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备(如专用硬件设备),从而消除了直接物理连接的需要。USB over IP的…...

深度学习习题2
1.如果增加神经网络的宽度,精确度会增加到一个特定阈值后,便开始降低。造成这一现象的可能原因是什么? A、即使增加卷积核的数量,只有少部分的核会被用作预测 B、当卷积核数量增加时,神经网络的预测能力会降低 C、当卷…...

Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)
Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习) 一、Aspose.PDF 简介二、说明(⚠️仅供学习与研究使用)三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...
现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?
现有的 Redis 分布式锁库(如 Redisson)相比于开发者自己基于 Redis 命令(如 SETNX, EXPIRE, DEL)手动实现分布式锁,提供了巨大的便利性和健壮性。主要体现在以下几个方面: 原子性保证 (Atomicity)ÿ…...