N-135基于springboot,vue高校图书馆管理系统

开发工具:IDEA

服务器:Tomcat9.0, jdk1.8

项目构建:maven

数据库:mysql5.7

系统分前后台,项目采用前后端分离

前端技术:vue+elementUI

服务端技术:springboot+mybatis+redis

本项目分为学生和管理员两种角色

一、学生有登录、注册、管理个人信息、浏览座位信息、预约选座、浏览图书信息、借阅图书、浏览借阅信息、管理预约信息等等功能。

二、管理员有管理所有用户新息、管理所有座位信息、管理所有时刻信息、管理所有信誉积分信息、管理所有图书信息、管理所有预约选座、借阅信息等等功能。

文档截图:

 

N-135基于springboot,vue高校图书馆管理系统

学生截图:

 

管理员截图: 

 

package com.yjq.programmer.service.impl;import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.yjq.programmer.bean.CodeMsg;
import com.yjq.programmer.constant.CreditDescription;
import com.yjq.programmer.dao.*;
import com.yjq.programmer.domain.*;
import com.yjq.programmer.dto.*;
import com.yjq.programmer.enums.CreditStateEnum;
import com.yjq.programmer.enums.RoleEnum;
import com.yjq.programmer.enums.SeatItemStateEnum;
import com.yjq.programmer.service.ISeatService;
import com.yjq.programmer.utils.CommonUtil;
import com.yjq.programmer.utils.CopyUtil;
import com.yjq.programmer.utils.UuidUtil;
import com.yjq.programmer.utils.ValidateEntityUtil;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;@Service
@Transactional
public class SeatServiceImpl implements ISeatService {@Resourceprivate SeatMapper seatMapper;@Resourceprivate ScheduleMapper scheduleMapper;@Resourceprivate SeatItemMapper seatItemMapper;@Resourceprivate UserMapper userMapper;@Resourceprivate CreditItemMapper creditItemMapper;/*** 分页获取座位数据* @param pageDTO* @return*/@Overridepublic ResponseDTO<PageDTO<SeatDTO>> getSeatListByPage(PageDTO<SeatDTO> pageDTO) {SeatExample seatExample = new SeatExample();// 判断是否进行关键字搜索SeatDTO searchSeatDTO = pageDTO.getSearchEntity();SeatExample.Criteria criteria = seatExample.createCriteria();if(!CommonUtil.isEmpty(searchSeatDTO.getScheduleId())) {criteria.andScheduleIdEqualTo(searchSeatDTO.getScheduleId());}if(searchSeatDTO.getOpenTime() != null) {criteria.andOpenTimeEqualTo(searchSeatDTO.getOpenTime());}// 不知道当前页多少,默认为第一页if(pageDTO.getPage() == null){pageDTO.setPage(1);}if(pageDTO.getSize() == null) {pageDTO.setSize(5);}PageHelper.startPage(pageDTO.getPage(), pageDTO.getSize());// 分页查出座位数据List<Seat> seatList = seatMapper.selectByExample(seatExample);PageInfo<Seat> pageInfo = new PageInfo<>(seatList);// 获取数据的总数pageDTO.setTotal(pageInfo.getTotal());// 讲domain类型数据  转成 DTO类型数据List<SeatDTO> seatDTOList = CopyUtil.copyList(seatList, SeatDTO.class);// 封装所属时刻数据for(SeatDTO seatDTO : seatDTOList) {Schedule schedule = scheduleMapper.selectByPrimaryKey(seatDTO.getScheduleId());seatDTO.setScheduleDTO(CopyUtil.copy(schedule, ScheduleDTO.class));}pageDTO.setList(seatDTOList);return ResponseDTO.success(pageDTO);}/*** 保存座位数据(添加、修改)* @param seatDTO* @return*/@Overridepublic ResponseDTO<Boolean> saveSeat(SeatDTO seatDTO) {// 进行统一表单验证CodeMsg validate = ValidateEntityUtil.validate(seatDTO);if(!validate.getCode().equals(CodeMsg.SUCCESS.getCode())){return ResponseDTO.errorByMsg(validate);}Seat seat = CopyUtil.copy(seatDTO, Seat.class);if(CommonUtil.isEmpty(seat.getId())){// id为空 说明是添加数据// 判断开发时间和所属时刻是否已经有数据了if(isSeatExist(seat, "")){return ResponseDTO.errorByMsg(CodeMsg.SEAT_ALREADY_EXIST);}// 生成8位idseat.setId(UuidUtil.getShortUuid());// 设置总座位数seat.setTotalNum(seat.getRow() * seat.getCol());// 添加数据到数据库if(seatMapper.insertSelective(seat) == 0){return ResponseDTO.errorByMsg(CodeMsg.SEAT_ADD_ERROR);}}else{// id不为空 说明是修改数据// 判断开发时间和所属时刻是否已经有数据了if(isSeatExist(seat, seat.getId())){return ResponseDTO.errorByMsg(CodeMsg.SEAT_ALREADY_EXIST);}// 删除不在行数列数范围内选座详情数据SeatItemExample seatItemExample = new SeatItemExample();seatItemExample.createCriteria().andSeatIdEqualTo(seat.getId()).andColGreaterThan(seat.getCol()).andRowGreaterThan(seat.getRow());seatItemMapper.deleteByExample(seatItemExample);// 设置总座位数seat.setTotalNum(seat.getRow() * seat.getCol());// 设置已选座位数seatItemExample = new SeatItemExample();seatItemExample.createCriteria().andSeatIdEqualTo(seat.getId()).andColLessThanOrEqualTo(seat.getCol()).andRowLessThanOrEqualTo(seat.getRow());seat.setPickNum(seatItemMapper.countByExample(seatItemExample));// 修改数据库中数据if(seatMapper.updateByPrimaryKeySelective(seat) == 0){return ResponseDTO.errorByMsg(CodeMsg.SEAT_EDIT_ERROR);}}return ResponseDTO.successByMsg(true, "保存成功!");}/*** 删除座位数据* @param seatDTO* @return*/@Overridepublic ResponseDTO<Boolean> removeSeat(SeatDTO seatDTO) {if(CommonUtil.isEmpty(seatDTO.getId())) {return ResponseDTO.errorByMsg(CodeMsg.DATA_ERROR);}// 删除座位数据if(seatMapper.deleteByPrimaryKey(seatDTO.getId()) == 0) {return ResponseDTO.errorByMsg(CodeMsg.SEAT_DELETE_ERROR);}return ResponseDTO.successByMsg(true, "删除成功!");}/*** 根据时间获取座位信息* @param seatDTO* @return*/@Overridepublic ResponseDTO<SeatDTO> getSeatByTimeAndSchedule(SeatDTO seatDTO) {SeatExample seatExample = new SeatExample();seatExample.createCriteria().andOpenTimeEqualTo(seatDTO.getOpenTime()).andScheduleIdEqualTo(seatDTO.getScheduleId());List<Seat> seatList = seatMapper.selectByExample(seatExample);if(seatList != null && seatList.size() > 0) {return ResponseDTO.success(CopyUtil.copy(seatList.get(0), SeatDTO.class));} else {return ResponseDTO.success(null);}}/*** 根据座位id获取座位详情信息* @param seatDTO* @return*/@Overridepublic ResponseDTO<List<SeatItemDTO>> getItemBySeatId(SeatDTO seatDTO) {if(CommonUtil.isEmpty(seatDTO.getId())) {return ResponseDTO.errorByMsg(CodeMsg.DATA_ERROR);}SeatItemExample seatItemExample = new SeatItemExample();seatItemExample.createCriteria().andSeatIdEqualTo(seatDTO.getId()).andStateNotEqualTo(SeatItemStateEnum.CANCEL.getCode());List<SeatItem> seatItemList = seatItemMapper.selectByExample(seatItemExample);return ResponseDTO.success(CopyUtil.copyList(seatItemList, SeatItemDTO.class));}/*** 预约座位操作处理* @param seatItemDTO* @return*/@Overridepublic ResponseDTO<Boolean> pickSeat(SeatItemDTO seatItemDTO) {// 进行统一表单验证CodeMsg validate = ValidateEntityUtil.validate(seatItemDTO);if(!validate.getCode().equals(CodeMsg.SUCCESS.getCode())){return ResponseDTO.errorByMsg(validate);}Seat seat = seatMapper.selectByPrimaryKey(seatItemDTO.getSeatId());if(seat.getPickNum() >= seat.getTotalNum()) {return ResponseDTO.errorByMsg(CodeMsg.SEAT_ALREADY_FULL);}// 判断信誉积分是否小于80User user = userMapper.selectByPrimaryKey(seatItemDTO.getUserId());if(user == null) {return ResponseDTO.errorByMsg(CodeMsg.USER_NOT_EXIST);}if (user.getCreditRate() < 80) {return ResponseDTO.errorByMsg(CodeMsg.CREDIT_PICK_ERROR);}List<Integer> stateList = new ArrayList<>();stateList.add(SeatItemStateEnum.USING.getCode());stateList.add(SeatItemStateEnum.APPOINTMENT.getCode());SeatItemExample seatItemExample = new SeatItemExample();seatItemExample.createCriteria().andUserIdEqualTo(user.getId()).andSeatIdEqualTo(seat.getId()).andStateIn(stateList);if(seatItemMapper.selectByExample(seatItemExample).size() > 0) {return ResponseDTO.errorByMsg(CodeMsg.SEAT_ITEM_BOOK_EXIST);}// 更新座位的选座数  乐观锁  版本号控制避免重复选座SeatExample seatExample = new SeatExample();seatExample.createCriteria().andIdEqualTo(seat.getId()).andVersionEqualTo(seat.getVersion());seat.setPickNum(seat.getPickNum() + 1);seat.setVersion(seat.getVersion() + 1);if(seatMapper.updateByExampleSelective(seat, seatExample) == 0) {return ResponseDTO.errorByMsg(CodeMsg.SEAT_ALREADY_PICK);}Schedule schedule = scheduleMapper.selectByPrimaryKey(seat.getScheduleId());// 写入选座详情数据SeatItem seatItem = CopyUtil.copy(seatItemDTO, SeatItem.class);seatItem.setId(UuidUtil.getShortUuid());seatItem.setCreateTime(new Date());seatItem.setState(SeatItemStateEnum.APPOINTMENT.getCode());seatItem.setOpenTime(seat.getOpenTime());seatItem.setRangeTime(schedule.getName() + "(" + schedule.getRangeTime() + ")");if(seatItemMapper.insertSelective(seatItem) == 0) {throw new RuntimeException(CodeMsg.SEAT_PICK_ERROR.getMsg());}return ResponseDTO.successByMsg(true, "预约成功!");}/*** 获取座位详情数据* @param pageDTO* @return*/@Overridepublic ResponseDTO<PageDTO<SeatItemDTO>> getSeatItemList(PageDTO<SeatItemDTO> pageDTO) {SeatItemDTO searchSeatItemDTO = pageDTO.getSearchEntity();SeatItemExample seatItemExample = new SeatItemExample();SeatItemExample.Criteria criteria = seatItemExample.createCriteria();User user = userMapper.selectByPrimaryKey(searchSeatItemDTO.getUserId());if(user == null) {return ResponseDTO.errorByMsg(CodeMsg.USER_NOT_EXIST);}if(RoleEnum.STUDENT.getCode().equals(user.getRoleId())) {// 如果是学生角色,只能查看自己的预约信息criteria.andUserIdEqualTo(user.getId());}if(searchSeatItemDTO.getOpenTime() != null) {criteria.andOpenTimeEqualTo(searchSeatItemDTO.getOpenTime());}// 不知道当前页多少,默认为第一页if(pageDTO.getPage() == null){pageDTO.setPage(1);}if(pageDTO.getSize() == null) {pageDTO.setSize(5);}seatItemExample.setOrderByClause("create_time desc");PageHelper.startPage(pageDTO.getPage(), pageDTO.getSize());// 分页查出座位详情数据List<SeatItem> seatItemList = seatItemMapper.selectByExample(seatItemExample);PageInfo<SeatItem> pageInfo = new PageInfo<>(seatItemList);// 获取数据的总数pageDTO.setTotal(pageInfo.getTotal());// 讲domain类型数据  转成 DTO类型数据List<SeatItemDTO> seatItemDTOList = CopyUtil.copyList(seatItemList, SeatItemDTO.class);for(SeatItemDTO seatItemDTO : seatItemDTOList) {Seat seat = seatMapper.selectByPrimaryKey(seatItemDTO.getSeatId());SeatDTO seatDTO = CopyUtil.copy(seat, SeatDTO.class);seatItemDTO.setSeatDTO(seatDTO);Schedule schedule = scheduleMapper.selectByPrimaryKey(seat.getScheduleId());seatDTO.setScheduleDTO(CopyUtil.copy(schedule, ScheduleDTO.class));}pageDTO.setList(seatItemDTOList);return ResponseDTO.success(pageDTO);}/*** 修改座位详情状态* @param seatItemDTO* @return*/@Overridepublic ResponseDTO<Boolean> updateSeatItemState(SeatItemDTO seatItemDTO) {if(CommonUtil.isEmpty(seatItemDTO.getId()) || seatItemDTO.getState() == null) {return ResponseDTO.errorByMsg(CodeMsg.DATA_ERROR);}SeatItem seatItem = seatItemMapper.selectByPrimaryKey(seatItemDTO.getId());Seat seat = seatMapper.selectByPrimaryKey(seatItem.getSeatId());if(SeatItemStateEnum.CANCEL.getCode().equals(seatItemDTO.getState()) && !seatItemDTO.getState().equals(seatItem.getState())) {// 如果是改成已取消状态  已选座位数回退SeatExample seatExample = new SeatExample();seatExample.createCriteria().andIdEqualTo(seat.getId()).andVersionEqualTo(seat.getVersion());seat.setPickNum(seat.getPickNum() - 1);seat.setVersion(seat.getVersion() + 1);if(seatMapper.updateByExampleSelective(seat, seatExample) == 0) {return ResponseDTO.errorByMsg(CodeMsg.SYSTEM_BUSY);}} else if(SeatItemStateEnum.BREAK.getCode().equals(seatItemDTO.getState()) && !seatItemDTO.getState().equals(seatItem.getState())) {// 如果是已违约状态 扣除信誉积分5分 写入信誉明细User user = userMapper.selectByPrimaryKey(seatItem.getUserId());if(user == null) {return ResponseDTO.errorByMsg(CodeMsg.USER_NOT_EXIST);}if(user.getCreditRate() > 0) {user.setCreditRate(user.getCreditRate() - 5);userMapper.updateByPrimaryKeySelective(user);CreditItem creditItem = new CreditItem();creditItem.setId(UuidUtil.getShortUuid());creditItem.setCreateTime(new Date());creditItem.setRate(-5);creditItem.setState(CreditStateEnum.OVER.getCode());creditItem.setNowRate(user.getCreditRate());creditItem.setUserId(user.getId());creditItem.setDescription(CreditDescription.CREDIT_RATE_SUB_BY_SEAT);if(creditItemMapper.insertSelective(creditItem) == 0) {throw new RuntimeException(CodeMsg.CREDIT_ADD_ERROR.getMsg());}}} else if (SeatItemStateEnum.USING.getCode().equals(seatItemDTO.getState()) && !seatItemDTO.getState().equals(seatItem.getState())) {// 如果是使用中状态 增加信誉积分5分 写入信誉明细User user = userMapper.selectByPrimaryKey(seatItem.getUserId());if(user == null) {return ResponseDTO.errorByMsg(CodeMsg.USER_NOT_EXIST);}if(user.getCreditRate() < 100) {user.setCreditRate(user.getCreditRate() + 5);userMapper.updateByPrimaryKeySelective(user);CreditItem creditItem = new CreditItem();creditItem.setId(UuidUtil.getShortUuid());creditItem.setCreateTime(new Date());creditItem.setRate(5);creditItem.setState(CreditStateEnum.OVER.getCode());creditItem.setNowRate(user.getCreditRate());creditItem.setUserId(user.getId());creditItem.setDescription(CreditDescription.CREDIT_RATE_ADD_BY_SEAT);if(creditItemMapper.insertSelective(creditItem) == 0) {throw new RuntimeException(CodeMsg.CREDIT_ADD_ERROR.getMsg());}}}seatItem.setState(seatItemDTO.getState());if(seatItemMapper.updateByPrimaryKeySelective(seatItem) == 0) {throw new RuntimeException(CodeMsg.SEAT_STATE_EDIT_ERROR.getMsg());}return ResponseDTO.success(true);}/*** 删除座位详情数据* @param seatItemDTO* @return*/@Overridepublic ResponseDTO<Boolean> removeSeatItem(SeatItemDTO seatItemDTO) {if(CommonUtil.isEmpty(seatItemDTO.getId())) {return ResponseDTO.errorByMsg(CodeMsg.DATA_ERROR);}SeatItem seatItem = seatItemMapper.selectByPrimaryKey(seatItemDTO.getId());Seat seat = seatMapper.selectByPrimaryKey(seatItem.getSeatId());// 已选座位数回退SeatExample seatExample = new SeatExample();seatExample.createCriteria().andIdEqualTo(seat.getId()).andVersionEqualTo(seat.getVersion());seat.setPickNum(seat.getPickNum() - 1);seat.setVersion(seat.getVersion() + 1);if(seatMapper.updateByExampleSelective(seat, seatExample) == 0) {return ResponseDTO.errorByMsg(CodeMsg.SYSTEM_BUSY);}// 删除数据if(seatItemMapper.deleteByPrimaryKey(seatItem.getId()) == 0) {return ResponseDTO.errorByMsg(CodeMsg.SEAT_ITEM_REMOVE_ERROR);}return ResponseDTO.successByMsg(true, "删除成功!");}/*** 获取今日预约座位数* @return*/@Overridepublic ResponseDTO<Integer> getSeatItemTotalByDay() {SeatItemExample seatItemExample = new SeatItemExample();Date startDate = CommonUtil.getFormatterStr(CommonUtil.getFormatterDate(new Date(), "yyyy-MM-dd") + " 00:00:00", "yyyy-MM-dd HH:mm:ss");Date endDate = CommonUtil.getFormatterStr(CommonUtil.getFormatterDate(new Date(), "yyyy-MM-dd") + " 23:59:59", "yyyy-MM-dd HH:mm:ss");seatItemExample.createCriteria().andCreateTimeBetween(startDate, endDate).andStateNotEqualTo(SeatItemStateEnum.CANCEL.getCode());int total = seatItemMapper.countByExample(seatItemExample);return ResponseDTO.success(total);}/*** 判断开发时间和所属时刻是否已经有数据了* @param seat* @param id* @return*/public Boolean isSeatExist(Seat seat, String id) {SeatExample seatExample = new SeatExample();seatExample.createCriteria().andOpenTimeEqualTo(seat.getOpenTime()).andScheduleIdEqualTo(seat.getScheduleId());List<Seat> selectedSeatList = seatMapper.selectByExample(seatExample);if(selectedSeatList != null && selectedSeatList.size() > 0) {if(selectedSeatList.size() > 1){return true; //出现重名}if(!selectedSeatList.get(0).getId().equals(id)) {return true; //出现重名}}return false;//没有重名}
}

 

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

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

相关文章

抖音直播招聘报白的介绍和案例

抖音直播招聘报白是指企业人力资源公司在抖音进行直播招聘时&#xff0c;需要向抖音平台提供审核申请。通过报白&#xff0c;企业或人力资源公司可以更好的获取招聘渠道和更多曝光的机会&#xff0c;同时可以提升品牌形象和知名度。报白的对象针对需要企业自招的企业和人力资源…

熬夜会秃头——beta冲刺Day7

这个作业属于哪个课程2301-计算机学院-软件工程社区-CSDN社区云这个作业要求在哪里团队作业—beta冲刺事后诸葛亮-CSDN社区这个作业的目标记录beta冲刺Day7团队名称熬夜会秃头团队置顶集合随笔链接熬夜会秃头——Beta冲刺置顶随笔-CSDN社区 一、团队成员会议总结 1、成员工作…

Pandas教程06:DataFrame.merge数据的合并处理

DataFrame.merge() 是 pandas 库中用于合并两个DataFrame数据的方法。该方法主要用于根据一个或多个键&#xff08;键可以是列名或索引&#xff09;将两个 DataFrame 连接在一起&#xff0c;这个过程类似于 SQL 中的 JOIN 操作。 #我的Python教程 #微信公众号&#xff1a;wdPy…

@RequestMapping处理请求异常

使用RequestMapping不指定请求方式&#xff0c;多种请求方式都支持。 Get格式FORM_URLENCODED Content-Typeapplication/x-www-form-urlencoded URL形式传参&#xff0c;请求体里面的内容是&#xff1a;usernamejohnexample.com&passwordsecretpassword&grant_type…

C语言之位段(详解)

C语言之位段 文章目录 C语言之位段1. 位段的介绍2. 位段的内存分配3. 位段跨平台问题4. 位段的应用5. 位段使用注意 1. 位段的介绍 位段&#xff08;bit-field&#xff09;是C语言中的一种特殊数据类型&#xff0c;它允许将一个字节分成几个部分&#xff0c;并为每个部分指定特…

深入解析JVM内存结构:Metaspace、堆与垃圾收集器

&#x1f680; 作者主页&#xff1a; 有来技术 &#x1f525; 开源项目&#xff1a; youlai-mall &#x1f343; vue3-element-admin &#x1f343; youlai-boot &#x1f33a; 仓库主页&#xff1a; Gitee &#x1f4ab; Github &#x1f4ab; GitCode &#x1f496; 欢迎点赞…

SHAP(五):使用 XGBoost 进行人口普查收入分类

SHAP&#xff08;五&#xff09;&#xff1a;使用 XGBoost 进行人口普查收入分类 本笔记本演示了如何使用 XGBoost 预测个人年收入超过 5 万美元的概率。 它使用标准 UCI 成人收入数据集。 要下载此笔记本的副本&#xff0c;请访问 github。 XGBoost 等梯度增强机方法对于具有…

最小生成树算法

文章目录 最小生成树概述 P r i m Prim Prim 算法 - 稠密图 - O ( n 2 ) O(n^2) O(n2)思路概述时间复杂度分析AcWing 858. Prim算法求最小生成树CODE K r u s k a l Kruskal Kruskal 算法 - 稀疏图 - O ( m l o g m ) O(mlogm) O(mlogm)思路解析时间复杂度分析AcWing 859. Kr…

管理类联考-性质

性质 ——性质—— 一、是什么 &#xff08;1&#xff09;本质&#xff1a;判断一定范围内的对象是否具备某个性质的命题就是性质命题&#xff08;直言命题&#xff09;。直言命题是断定事物/对象是否具有某种性质的命题。直言命题在结构上由主项、谓项、联项和量项组成。 &am…

制作一个RISC-V的操作系统一-计算机系统漫游

文章目录 计算机的硬件组成两种架构程序的存储与执行程序语言的设计和进化一个mini计算机 编程语言的进化存储设备的层次结构操作系统 计算机的硬件组成 所有硬件由总线连接起来 两种架构 总线个数不同&#xff0c;Memory储存内容不同 程序的存储与执行 首先编译和链接某…

【STM32】STM32学习笔记-课程简介(1)

00. 目录 文章目录 00. 目录01. 课程简介02. 硬件设备03. 软件工具04. 硬件套件4.1 面包板和跳线/飞线4.2 杜邦线和STM32最小系统板4.3 STLINK和OLED显示屏4.4 LED和按键4.5 电位器和蜂鸣器4.6 传感器和旋转编码器4.7 USB转串口和MPU60504.8 Flash闪存和电机模块4.9 SG90舵机 0…

Wireshark使用详解

wireshark简介 wireshark是捕获机器上的某一块网卡的网络包&#xff0c;当你的机器上有多块网卡的时候&#xff0c;你需要选择一个网卡。   wireshark能获取HTTP&#xff0c;也能获取HTTPS&#xff0c;但是不能解密HTTPS&#xff0c;所以wireshark看不懂HTTPS中的内容&#…

【送书活动三期】解决docker服务假死问题

工作中使用docker-compose部署容器&#xff0c;有时候会出现使用docker-compose stop或docker-compose down命令想停掉容器&#xff0c;但是依然无法停止或者一直卡顿在停止中的阶段&#xff0c;这种问题很让人头疼啊&#xff01; 目录 问题描述问题排查问题解决终极杀招-最粗暴…

解决了布局问题1和布局问题2,接下来,你的Main函数如果写成下面这样,直接运行,什么也不会显示?

> if __name____main__:app QApplication(sys.argv)MainWindow QMainWindow()ui Ui_MainWindow()ui.setupUi(MainWindow)MainWindow.show()app.exec()什么也不会显示 如果你不想修改main中的内容&#xff0c;必须在class Ui_MainWindow(QWidget) 类中添加一个初始化方法…

【开源存储】glusterfs分布式文件系统部署实践

文章目录 一、前言1、介绍说明2、术语说明3、冗余模式3.1、复制卷&#xff08;Replication&#xff09;3.2、纠删卷&#xff08;Erasure Code&#xff09; 二、部署说明1、软件安装2、集群部署2.1、前置准备2.2、部署过程a、添加节点b、配置存储c、创建glusterfs卷d、客户端挂载…

ffmpeg 任意文件读取漏洞/SSRF漏洞 (CVE-2016-1897/CVE-2016-1898)

漏洞描述 影响范围 FFmpeg 2.8.x < 2.8.5FFmpeg 2.7.x < 2.7.5FFmpeg 2.6.x < 2.6.7FFmpeg 2.5.x < 2.5.10 漏洞环境及利用 搭建docker环境 访问8080端口看到上传界面 由于vulhub并没有讲述该漏洞如何复现&#xff0c;我们需要进入环境查看源码 <?php if(!…

C语言——I /深入理解指针(二)

一、数组名的理解 int arr[10] {1,2,3,4,5,6,7,8,9,10}; int *p &arr[0];这⾥我们使⽤ &arr[0] 的⽅式拿到了数组第⼀个元素的地址&#xff0c;但是其实数组名本来就是地址&#xff0c;⽽且 是数组⾸元素的地址&#xff0c;我们来做个测试。 #include <stdio.…

高端大气简历模板(精选8篇)

想要让简历在众多求职者中脱颖而出&#xff0c;吸引HR的眼球吗&#xff0c;可以看看这8篇精选的高端大气简历模板&#xff01;本文为大家提供了多种行业、职位的简历案例&#xff0c;助大家打造一份令人惊艳的简历&#xff0c;轻松斩获心仪职位&#xff01; 高端大气简历模板下…

spring boot定时器实现定时同步数据

文章目录 目录 文章目录 前言 一、依赖和目录结构 二、使用步骤 2.1 两个数据源的不同引用配置 2.2 对应的mapper 2.3 定时任务处理 总结 前言 一、依赖和目录结构 <dependencies><dependency><groupId>org.springframework.boot</groupId><artifa…

【ArcGIS Pro微课1000例】0040:ArcGIS Pro创建北极点、南极点

文章目录 一、创建北极点图层二、创建北极点三、不同投影系下北极点的位置一、创建北极点图层 选择一个数据库,在上面右键→新建→要素类。 输入名称:北极点。 空间参考:WGS 1984 点击创建。 二、创建北极点 在编辑选项卡下,点击【创建】。 在创建要素窗口中,点击北极点…