当前位置: 首页 > news >正文

(免费分享)基于 SpringBoot 的高校宿舍管理系统带论文

项目描述

系统代码质量高,功能强大,带论文。

系统的功能主要有:

(1)基本信息管理

基本信息分为学生信息和宿舍信息两部分,其功能是负责维护这些信息,对

它们进行增删查改等操作。

(2)宿舍分配管理

根据给定的宿舍信息与学生信息,按照一定的规则自动地给还未分配宿舍的

学生分配宿舍,学生可在该宿舍内自选床位,最终的宿舍分配信息可以以文件形

式(如 Excel 表格)导出。

(3)宿舍日常管理

主要包括卫生管理、报修管理、留言管理等。

卫生管理:记录并维护卫生检查信息。

报修管理:添加、查看、修改报修单信息。

留言管理:包括发布公告、失物招领、普通留言以及对这些信息的维护。

(4)离返校管理

对节假日学生的去向、寒暑假学生的留校以及返校登记信息进行统计及管

理,并以图表形式呈现统计信息。

(5)综合查询管理

包括查找学生信息、各楼栋/专业的学生宿舍分配情况、卫生检查情况、学

生离返校及留校信息、指定类型的留言、查看宿舍成员等。 

运行环境

idea/eclipse+mysql5.7+jdk1.8+maven3

项目技术

springboot + layui

免费领取下载链接-关注底部gongzhonghao:033
免费领取下载链接-关注底部gongzhonghao:033
免费领取下载链接-关注底部gongzhonghao:033package com.usc.lzh.doms.service.impl;import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.usc.lzh.doms.entity.*;
import com.usc.lzh.doms.mapper.DorMMapper;
import com.usc.lzh.doms.service.DorMService;
import com.usc.lzh.doms.utils.MyStringUtil;
import com.usc.lzh.doms.vo.*;
import org.apache.commons.lang3.StringUtils;
import org.apache.ibatis.session.ExecutorType;
import org.apache.ibatis.session.SqlSession;
import org.apache.xmlbeans.impl.xb.xsdschema.All;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import javax.annotation.Resource;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;@Service
public class DorMServiceImpl implements DorMService {@Resourceprivate DorMMapper dormMapper;@Autowiredprivate SqlSessionTemplate sqlSessionTemplate;/*** 查找报修信息** @param riVo 分页查询的参数,负责的楼栋编号* @return*/@Overridepublic List<RepairInfo> findRepairInfoListByPage(RepairInfoVo riVo) {List<RepairInfo> list = dormMapper.findRepairInfoListByPage(riVo);return dealString(list);}// 解析brcode填充brarea/brbid/brrid和格式化日期字符串private List<RepairInfo> dealString(List<RepairInfo> list) {for (int i = 0; i < list.size(); i++) {String brcode = list.get(i).getBrcode().trim();String subtime = list.get(i).getSubtime();// 截取空格前的字符串,使日期格式为yy-MM-ddString date = MyStringUtil.timeTodate(subtime);list.get(i).setSubtime(date);String[] brArr = brcode.split("#");list.get(i).setBrarea(MyStringUtil.getBrarea(brArr[0]));list.get(i).setBrbid(brArr[1]);list.get(i).setBrrid(brArr[2]);}return list;}/*** 导出报修信息** @param brcode     宿舍楼编号* @param statusCode 报修状态* @return*/public List<RepairInfo> exportRepairInfo(String brcode, String statusCode) {String status = transStatusCode(statusCode);List<RepairInfo> list = dormMapper.exportRepairInfo(brcode, status);return dealString(list);}// 转换statusCode为数据库中的statusprivate String transStatusCode(String status) {if (status != null && !status.equals("")) {Integer statusCode = Integer.parseInt(status.trim());switch (statusCode) {case 1:status = "已处理";break;case 2:status = "未处理";break;case 3:status = "正在处理";break;}} else {status = "";}return status;}/*** 批量更改报修状态** @param params ids和status*/@Overridepublic boolean batchEditRepairStatus(String params) {try {// 将前端json数据解析出来JSONArray jsonArray = JSONArray.parseArray(params);JSONObject jsonObject = jsonArray.getJSONObject(0);String statusCode = (String) jsonObject.get("status");String status = transStatusCode(statusCode);// ids为要更新状态的报修单编号String ids = jsonObject.get("ids").toString();// 去掉两边的[]ids = ids.substring(1, ids.length() - 1);// 转为String字符串String[] idsArray = ids.split(",");// 字符数组转为int数组int[] array = Arrays.stream(idsArray).mapToInt(Integer::parseInt).toArray();// int数组转为List,装箱List<Integer> list = Arrays.stream(array).boxed().collect(Collectors.toList());dormMapper.batchEditRepairStatus(list, status);return true;} catch (Exception e) {return false;}}/*** 查询卫生检查信息** @param ciVo* @return*/@Overridepublic List<CleanInfo> findCleanInfoListByPage(CleanInfoVo ciVo) {List<CleanInfo> list = dormMapper.findCleanInfoListByPage(ciVo);for (int i = 0; i < list.size(); i++) {String brcode = list.get(i).getBrcode().trim();String time = list.get(i).getTime();// 截取空格前的字符串,使日期格式为yy-MM-ddString date = MyStringUtil.timeTodate(time);list.get(i).setTime(date);String[] brArr = brcode.split("#");list.get(i).setBrarea(MyStringUtil.getBrarea(brArr[0]));list.get(i).setBrbid(brArr[1]);list.get(i).setBrrid(brArr[2]);}return list;}/*** 更改卫生检查信息** @param ci* @return*/@Overridepublic int updateCleanInfo(CleanInfo ci) {try {// 如果宿舍号改了
//            String brcode = ci.getBrcode();
//            if (StringUtils.isNotBlank(brcode)){
//                String brrid = brcode.split("#")[2];
//                ci.setBrbid(brrid);
//            }int result = dormMapper.updateCleanInfo(ci);return result;} catch (Exception e) {e.printStackTrace();return -1;}}/*** 删除卫生检查记录** @param id* @return*/@Overridepublic int deleteCleanInfo(String id) {try {int actualId = Integer.parseInt(id);int result = dormMapper.deleteCleanInfo(actualId);return result;} catch (Exception e) {e.printStackTrace();return -1;}}/*** 批量添加卫生检查记录** @param params  卫生检查信息的json数据* @param checker 检查人* @return*/@Overridepublic boolean batchInsertCleanInfo(String params, String checker) {String classPath = "com.usc.lzh.doms.mapper.DorMMapper.batchInsertCleanInfo";// 获取mysql的session并且关闭自动提交SqlSession sqlSession = sqlSessionTemplate.getSqlSessionFactory().openSession(ExecutorType.BATCH, false);try {List<CleanInfo> list = dealCleanInfoAddParams(params, checker);// 插入sqlSession.insert(classPath, list);// 提交sqlSession.commit();// 防止内存崩溃sqlSession.clearCache();} catch (Exception e) {e.printStackTrace();// 回滚sqlSession.rollback();return false;} finally {// 关闭sqlSession.close();}return true;}private List<CleanInfo> dealCleanInfoAddParams(String params, String checker) throws Exception {List<CleanInfo> list = new ArrayList<>();if (StringUtils.isNotBlank(params)) {// json数据转为JSONArray对象JSONArray jsonArray = JSONArray.parseArray(params);// 遍历json数组,将json对象转为CleanInfo对象并且存到list中for (int i = 0; i < jsonArray.size(); i++) {CleanInfo ci = new CleanInfo();JSONObject obj = jsonArray.getJSONObject(i);String brarea = obj.get("brarea").toString().trim();String brbid = obj.get("brbid").toString().trim();String brrid = obj.get("brrid").toString().trim();String brcode = MyStringUtil.getBrcode(brarea, brbid, brrid);ci.setBrarea(brarea);ci.setBrbid(brbid);ci.setBrrid(brrid);ci.setBrcode(brcode);ci.setTime(obj.get("time").toString().trim());String grade = obj.get("grade").toString().trim();if (StringUtils.isNotBlank(grade)) {ci.setGrade(Integer.parseInt(grade));}ci.setContent(obj.get("content").toString().trim());ci.setChecker(checker);list.add(ci);}}return list;}/*** 查找宿舍信息** @param biVo* @return*/@Overridepublic List<RepairInfo> findBuildRoomInfoListByPage(BuildRoomInfoVo biVo) {List<RepairInfo> list = dormMapper.findBuildRoomInfoListByPage(biVo);return list;}/*** 修改宿舍信息** @param bi* @return*/@Overridepublic int updateBuildRoomInfo(BuildRoomInfo bi) {try {int result = dormMapper.updateBuildRoomInfo(bi);return result;} catch (Exception e) {e.printStackTrace();return -1;}}/*** 删除宿舍信息** @param brcode 宿舍编号* @return*/@Overridepublic int deleteBuildRoomInfo(String brcode) {try {int result = dormMapper.deleteBuildRoomInfo(brcode);return result;} catch (Exception e) {e.printStackTrace();return -1;}}/*** 添加宿舍信息** @param list* @return*/@Overridepublic boolean addBuildRoomInfo(List<BuildRoomInfo> list) {String classPath = "com.usc.lzh.doms.mapper.DorMMapper.addBuildRoomInfo";// 获取mysql的session并且关闭自动提交SqlSession sqlSession = sqlSessionTemplate.getSqlSessionFactory().openSession(ExecutorType.BATCH, false);try {// 插入sqlSession.insert(classPath, list);// 提交sqlSession.commit();// 防止内存崩溃sqlSession.clearCache();} catch (Exception e) {e.printStackTrace();// 回滚sqlSession.rollback();return false;} finally {// 关闭sqlSession.close();}return true;}/*** 查看自己发布的公告/失物招领信息** @param mbVo* @return*/@Overridepublic List<MessageBoard> findMessageListByPage(MessageBoardVo mbVo) {System.out.println(mbVo.getType());List<MessageBoard> list = dormMapper.findMessageListByPage(mbVo);for (int i = 0; i < list.size(); i++) {// 截取日期String time = list.get(i).getTime();String date = MyStringUtil.timeTodate(time);list.get(i).setTime(date);// 解析typeInteger type = list.get(i).getType();list.get(i).setTypeValue(MyStringUtil.mbTypeToValue(type));// 解析brcodeString brcode = list.get(i).getBrcode();System.out.println(brcode);if (StringUtils.isNotBlank(brcode)) {String[] split = brcode.split("#");switch (split.length) {case 1:list.get(i).setBrarea(MyStringUtil.getBrarea(split[0]));break;case 2:case 3:list.get(i).setBrarea(MyStringUtil.getBrarea(split[0]));list.get(i).setBrbid(split[1]);break;}}}return list;}/*** 添加公告信息** @param mb* @return*/@Overridepublic int addMessage(MessageBoard mb) {try {// time是当前时间Date date = new Date();SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");mb.setTime(sdf.format(date));// 拼接brcodeString brcode = MyStringUtil.getBrcode(mb.getBrarea(), mb.getBrbid(), "");mb.setBrcode(brcode);System.out.println(mb);int result = dormMapper.addMessage(mb);return result;} catch (Exception e) {e.printStackTrace();return -1;}}/*** 修改公告信息** @param mb* @return*/@Overridepublic int updateMessage(MessageBoard mb) {try {int result = dormMapper.updateMessage(mb);return result;} catch (Exception e) {e.printStackTrace();return -1;}}/*** 批量删除公告/失物招领信息** @param list id数组* @return*/@Overridepublic boolean deleteMessage(List<Integer> list) {try {dormMapper.deleteMessage(list);return true;} catch (Exception e) {e.printStackTrace();return false;}}/*** 查找留校信息列表** @param stVo* @return*/@Overridepublic List<StayInfo> findStayInfoListByPage(StayInfoVo stVo) {stVo.setApprovetype(1);List<StayInfo> list = dormMapper.findStayInfoListByPage(stVo);return list;}/*** 导出学生留校信息** @param brarea* @param brbid* @return*/@Overridepublic List<StayInfo> exportStayInfo(String brarea, String brbid) {StayInfoVo stVo = new StayInfoVo();stVo.setBrbid(brbid);stVo.setBrarea(brarea);stVo.setApprovetype(1);List<StayInfo> list = dormMapper.findStayInfoListByPage(stVo);return list;}/*** 获取留校学生的统计数据** @param brarea* @param brbid* @return*/@Overridepublic JSONObject getStayInfoEchartsData(String brarea, String brbid) {// 最后返回的数据JSONObject data = new JSONObject();// 宿舍区JSONArray bsArray = new JSONArray();// 宿舍区及人数JSONArray countArray = new JSONArray();List<String> brareas = new ArrayList<>();if (StringUtils.isNotBlank(brarea)) {brareas.add(brarea);} else {brareas = dormMapper.getStayInfoBrareas();}for (String item : brareas) {bsArray.add(item);Integer count = dormMapper.getStayInfoOnBrareaCount(item, brbid, 1);JSONObject obj = new JSONObject();obj.put("name", item);obj.put("value", count);countArray.add(obj);}data.put("data", bsArray);data.put("series", countArray);return data;}/*** 查找宿舍分配信息** @param aiVo 按专业、班级、宿舍区、楼栋进行查找* @return*/@Overridepublic List<AllocationInfo> findAllocationInfoListByPage(AllocationInfoVo aiVo) {List<AllocationInfo> list = dormMapper.findAllocationInfoListByPage(aiVo);return list;}/*** 导出宿舍分配信息** @param brarea* @param brbid* @return*/public List<AllocationInfo> exportAllocationInfo(String brarea, String brbid) {List<AllocationInfo> list = dormMapper.exportAllocationInfo(brarea, brbid);return list;}/*** 查找空余寝室** @param biVo* @return*/public List<BuildRoomInfo> findFreeRoomListByPage(BuildRoomInfoVo biVo) {return dormMapper.findFreeRoomListByPage(biVo);}/*** 查找未分配寝室的学生** @param siVo* @return*/public List<StudentInfo> findNotAllocateStudentListByPage(StudentInfoVo siVo) {return dormMapper.findNotAllocateStudentListByPage(siVo);}private List<StudentInfo> MsiList = null;//男生private List<StudentInfo> FsiList = null;//女生private List<BuildRoomInfo> MbiList = null;//男生寝室private List<BuildRoomInfo> FbiList = null;//女生寝室private List<AllocationInfo> aiList = new ArrayList<>();private List<BuildRoomInfo> updateList = new ArrayList<>();/*** 判断床位够不够** @return*/public boolean judgeIsEnough() {initList();//初始化列表int mbed = 0;//男寝床位int fbed = 0;//女寝床位for (int i = 0; i < MbiList.size(); i++) {mbed += MbiList.get(i).getFree();}for (int i = 0; i < FbiList.size(); i++) {fbed += FbiList.get(i).getFree();}int mstucount = MsiList.size();//男生人数int fstucount = FsiList.size();//女生人数System.out.println(mbed + "--" + mstucount);System.out.println(fbed + "--" + fstucount);if (mbed >= mstucount && fbed >= fstucount) {return true;}return false;}/*** 初始化列表*/private void initList() {StudentInfoVo msi = new StudentInfoVo();msi.setStusex("男");StudentInfoVo fsi = new StudentInfoVo();fsi.setStusex("女");MsiList = dormMapper.findNotAllocateStudentListByPage(msi);FsiList = dormMapper.findNotAllocateStudentListByPage(fsi);BuildRoomInfoVo mbi = new BuildRoomInfoVo();mbi.setSex("男");BuildRoomInfoVo fbi = new BuildRoomInfoVo();fbi.setSex("女");MbiList = dormMapper.findFreeRoomListByPage(mbi);FbiList = dormMapper.findFreeRoomListByPage(fbi);}/*** 分配宿舍(全部分配)** @return*/@Overridepublic boolean doAssignAll() {try {clearList();initList();AllocateRoomToStudent(MbiList, MsiList);//分配女寝AllocateRoomToStudent(FbiList, FsiList);//分配男寝if (aiList.size() != 0) {boolean result = batchInsertAllocationInfo(aiList);// 批量插入宿舍分配信息// 插入失败,抛异常if (!result) {throw new Exception();}dormMapper.batchUpdateBuildRoomInfo(updateList);updateList.clear();}return true;} catch (Exception e) {e.printStackTrace();return false;}}/*** 分配宿舍给学生** @param biList 宿舍列表* @param siList 学生列表*/public void AllocateRoomToStudent(List<BuildRoomInfo> biList, List<StudentInfo> siList) {int index = 0;//第几个学生int biLen = biList.size();int siLen = siList.size();//遍历宿舍,若宿舍或学生已分配完,退出循环for (int i = 0; i < biLen && index < siLen; i++) {BuildRoomInfo room = biList.get(i);//取一间宿舍int free = room.getFree();//获取它的容量String brcode = room.getBrcode();int j = 1;for (; j <= free && index < siLen; j++) {StudentInfo si = siList.get(index);index++;String stuid = si.getStuid();AllocationInfo ai = new AllocationInfo();ai.setBrcode(brcode);ai.setStuid(stuid);aiList.add(ai);System.out.println(ai);}//为更新空宿舍表做准备updateList.add(new BuildRoomInfo(brcode, free - j + 1));}}/*** 显示分配结果** @param aiVo* @return*/@Overridepublic List<AllocationInfo> viewAllocateResult(AllocationInfoVo aiVo) {
//        int page = aiVo.getPage();
//        int row = aiVo.getLimit();
//        int start = (page - 1) * row;if (aiList == null || aiList.size() == 0) {return null;}return dormMapper.viewAllocateResult(aiList);
//        return dormMapper.viewAllocateResult(aiList, start, row);}/*** 批量插入宿舍分配信息** @param list* @return*/public boolean batchInsertAllocationInfo(List<AllocationInfo> list) {String classPath = "com.usc.lzh.doms.mapper.DorMMapper.batchInsertAllocationInfo";// 获取mysql的session并且关闭自动提交SqlSession sqlSession = sqlSessionTemplate.getSqlSessionFactory().openSession(ExecutorType.BATCH, false);try {// 插入sqlSession.insert(classPath, list);// 提交sqlSession.commit();// 防止内存崩溃sqlSession.clearCache();} catch (Exception e) {e.printStackTrace();// 回滚sqlSession.rollback();return false;} finally {// 关闭sqlSession.close();}return true;}/*** 清空列表*/private void clearList() {if (updateList != null) {updateList.clear();}if (MbiList != null) {MbiList.clear();}if (FbiList != null) {FbiList.clear();}if (MsiList != null) {MsiList.clear();}if (FsiList != null) {FsiList.clear();}if (aiList != null) {aiList.clear();}}
}

相关文章:

(免费分享)基于 SpringBoot 的高校宿舍管理系统带论文

项目描述 系统代码质量高&#xff0c;功能强大&#xff0c;带论文。 系统的功能主要有&#xff1a; &#xff08;1&#xff09;基本信息管理 基本信息分为学生信息和宿舍信息两部分&#xff0c;其功能是负责维护这些信息&#xff0c;对 它们进行增删查改等操作。 &#x…...

运筹系列78:cbc使用介绍

1. 上手 1.1 快速使用 首先是简单的调用测试&#xff0c;在mac上首先安装clp的库&#xff1a;brew install coin-or-tools/coinor/cbc&#xff0c;然后新建项目进行调用&#xff0c;各项配置如下&#xff0c;注意要添加的library和directory比较多&#xff1a; 1.2 命令行方…...

RocketMQ底层源码解析——事务消息的实现

1. 简介 RocketMQ自身实现了事务消息&#xff0c;可以通过这个机制来实现一些对数据一致性有强需求的场景&#xff0c;保证上下游数据的一致性。 以电商交易场景为例&#xff0c;用户支付订单这一核心操作的同时会涉及到下游物流发货、积分变更、购物车状态清空等多个子系统…...

学习802.11之MAC帧格式(一篇就够!)

802.11规范的关键在于MAC&#xff08;媒介访问控制层&#xff09;&#xff0c;MAC位于各式物理层之上&#xff0c;控制数据传输。负责核心成帧操作以及与有线骨干网络之间的交互。 802.11 MAC采用载波监听多路访问&#xff08;CSMA&#xff09;机制来控制对传输媒介的访问&…...

使用阿里云IoT Studio建立物模型可视化界面

使用阿里云IoT Studio建立物模型可视化界面 上一篇文章介绍了如何使用ESP-01S上报数据到物模型&#xff1a;https://blog.csdn.net/weixin_46251230/article/details/128996719 这次使用阿里云IoT Studio建立物模型的Web页面 阿里云IoT Studio&#xff1a; https://studio.i…...

HBase 复习 ---- chapter07

HBase 复习 ---- chapter07部署 HBase&#xff08;运维&#xff09; 1&#xff1a;部署 HBase 实际是部署了三个技术&#xff08;hadoop zookeeper hbase&#xff09; hadoop hdfs mapreduce common hdfs namenode datanode secondaryNamenode yarn ResourceManager&a…...

跟我一起写Makefile--个人总结

此篇笔记是根据陈皓大佬《跟我一起写Makefile》学习所得 文章目录换行符clean变量make的自动推导另类风格的Makefile清空目标文件的规则cleanMakefile总述显示规则隐晦规则变量的定义注释引用其它的Makefile环境变量MAKEFILESmake的工作方式书写规则规则举例规则的语法在规则中…...

设计模式之为什么要学好设计模式

目录1 回顾软件设计原则2 设计模式总览3 经典框架都在用设计模式解决问题1 回顾软件设计原则 不用设计模式并非不可以&#xff0c;但是用好设计模式能帮助我们更好地解决实际问题&#xff0c;设计模式最重要的是解耦。设计模式天天都在用&#xff0c;但自己却无感知。我们把设…...

大数据时代的小数据神器 - asqlcell

自从Google发布了经典的MapReduce论文&#xff0c;以及Yahoo开源了Hadoop的实现&#xff0c;大数据这个词就成为了一个行业的热门。在不断提高的机器性能和各种层出不穷的工具框架加持下&#xff0c;数据分析开始从过去的采样抽查变成全量整体&#xff0c;原先被抽样丢弃的隐藏…...

【呕心沥血】整理全栈自动化测试技术(三):如何编写技术方案

前面两篇笔记我介绍了自动化测试前期调研注意事项和前置准备阶段切入点&#xff0c;有同学在后台提问&#xff1a; “做完前期的调研和准备工作&#xff0c;领导要求写一个落地方案并评审&#xff0c;自动化测试的落地方案该怎么写”&#xff1f; 首先这个要求我觉得挺正常&a…...

67. 二进制求和

文章目录题目描述竖式模拟转换为十进制计算题目描述 给你两个二进制字符串 a 和 b &#xff0c;以二进制字符串的形式返回它们的和。 示例 1&#xff1a; 输入:a “11”, b “1” 输出&#xff1a;“100” 示例 2&#xff1a; 输入&#xff1a;a “1010”, b “1011” …...

1555数列极差(队列 优先队列 )

目录 题目描述 解题思路 代码部分 题目描述 在黑板上写了N个正整数作成的一个数列&#xff0c;进行如下操作&#xff1a;每一次擦去其中的两个数a和b&#xff0c;然后在数列中加入一个数a*b1&#xff0c;如此下去直至黑板上剩下一个数&#xff0c;在所有按这种操作方式最后得…...

代码随想录算法训练营第二十七天 | 93.复原IP地址,78.子集,90.子集II

一、参考资料复原IP地址题目链接/文章讲解&#xff1a;https://programmercarl.com/0093.%E5%A4%8D%E5%8E%9FIP%E5%9C%B0%E5%9D%80.html 视频讲解&#xff1a;https://www.bilibili.com/video/BV1XP4y1U73i/子集题目链接/文章讲解&#xff1a;https://programmercarl.com/0078.…...

jvm类加载器

概念 Bootstarp ClassLoader (引导类加载器) 加载String等核心的类Ext ClassLoader (拓展类加载器)System ClassLoader (系统类加载器) 加载用户自定义的类 关系 BootstrapClassLoader 包含 ExtClassLoaderExtClassLoader 包含 SystemClassLoader彼此是包含关系&#xff0c;不…...

Rust学习入门--【7】Rust 数据类型

类型系统 对于任何一门语言都是重中之重&#xff0c;因为它体现了语言所支持的不同类型的值。 类型系统 也是 IT 初学者最难啃的三座大山之一&#xff0c;而类型系统之所以难以理解&#xff0c;主要是没有合适的现成的参考体系。 我们说类型系统 存在的目的&#xff0c;就是 …...

阅读MySQL必知必会,查缺补漏

MySQL自带数据库 information_schema&#xff1a;是MySQL自带的数据库&#xff0c;主要保持MySQL数据库服务器的系统信息&#xff0c;比如数据库的名称&#xff0c;数据库表的名称&#xff0c;字段名称&#xff0c;存储权限等。 performance_schema&#xff1a;是MySQL系统自…...

MySQL数据库10——多表连接查询

数据如果在多个表里面&#xff0c;需要进行连接查询。 一般在pandas里面merge合并会用到一个索引&#xff0c;按这个索引的规则进行合并叫做有规则的等值连接。若不按规则连接&#xff0c;遍历两两组合的所有可能性&#xff0c;叫做笛卡尔积。 笛卡尔积连接 通常人们都会设置…...

华为OD机试 - 括号检查(Python)| 真题含思路

括号检查 题目 现有一字符串 仅由 (,),{,},[,] 六种括号组成,若字符串满足以下条件之一,则为无效字符串 任意类型的左右括号数量不相等 存在未按正确顺序(先左后右)闭合的括号, 输出括号的最大嵌套深度 若字符串无效则输出 0 0 <= 字符串长度 <= 100000 输入 一个只…...

安全渗透测试中的一款免费开源的超级关键词URL采集工具

安全渗透测试中的一款免费开源的超级关键词URL采集工具。 #################### 免责声明&#xff1a;工具本身并无好坏&#xff0c;希望大家以遵守《网络安全法》相关法律为前提来使用该工具&#xff0c;支持研究学习&#xff0c;切勿用于非法犯罪活动&#xff0c;对于恶意使…...

数据资产管理实践白皮书(6.0版)解读

目录 第一章数据资产管理概述 ( 一 ) 数据资产管理和数据要素的关系...

c/c++开发,无可避免的函数指针使用案例

一、函数指针简介 函数指针是指指向函数而非指向对象的指针。像其他指针一样&#xff0c;函数指针也指向某个特定的类型。函数类型由其返回类型以及形参表确定&#xff0c;而与函数名无关。例如&#xff1a; char* (*pf1)(char * p1,char *p2); 这是一个函数指针&#xff0c;其…...

QT(12)-QThreadPool

1 简介 QThreadPool是Qt框架中的一个类&#xff0c;提供了一组工作线程池。该线程池自动管理一组工作线程&#xff0c;在线程可用时分配任务。使用线程池的主要优点是&#xff0c;它可以减少创建和销毁线程的开销&#xff0c;因为可以重复使用线程。 线程池设计用于场景中&am…...

【Java|golang】1138. 字母板上的路径

我们从一块字母板上的位置 (0, 0) 出发&#xff0c;该坐标对应的字符为 board[0][0]。 在本题里&#xff0c;字母板为board [“abcde”, “fghij”, “klmno”, “pqrst”, “uvwxy”, “z”]&#xff0c;如下所示。 我们可以按下面的指令规则行动&#xff1a; 如果方格存…...

Flink 1.14从简单到源码第三讲

文章目录 1.flink多流操作Api1.1split 分流操作1.2.侧输出流1.3.connect 连接操作1.4.union 操作1.5 coGroup 协同分组1.6 join1.7 broadcast 广播2.process3.并行度和Api3.1 任务提交简单流程3.2 task与算子链4. Flink 时间相关(窗口计算)4.1时间语义(窗口计算)4.2 新版api指定…...

淘宝API接口系列,获取购买到的商品订单列表,卖出的商品订单列表,订单详情,订单物流,买家信息,收货地址列表,买家token

custom自定义API操作buyer_order_list获取购买到的商品订单列表buyer_order_detail获取购买到的商品订单详情buyer_order_express获取购买到的商品订单物流buyer_address_list收货地址列表buyer_address_add添加收货地址buyer_info买家信息buyer_token买家tokenseller_order_li…...

ucos-ii 的任务调度原理和实现

ucosii 任务调度和原理1、ucos-ii 任务创建与任务调度 1.1、任务的创建 当你调用 OSTaskCreate( ) 进行任务的创建的时候&#xff0c;会初始化任务的堆栈、保存cpu的寄存器、创建任务的控制块&#xff08;OS_TCB&#xff09;等的操作&#xff1b; if (OSTCBPrioTbl[prio] (OS_…...

Solon2 开发之容器,七、切面与函数环绕拦截

想要环绕拦截一个 Bean 的函数。需要三个前置条件&#xff1a; 通过注解做为“切点”&#xff0c;进行拦截&#xff08;不能无缘无故给拦了吧&#xff1f;费性能&#xff09;Bean 的 method 是被代理的在 Bean 被扫描之前&#xff0c;完成环绕拦截的注册 1、定义切点和注册环…...

代码随想录第十天(28)

文章目录28. 找出字符串中第一个匹配项的下标看答案KMPnext数组&#xff08;前缀表&#xff09;最长公共前后缀如何计算前缀表前缀表与next数组时间复杂度分析28. 找出字符串中第一个匹配项的下标 莫得思路……好久没做题&#xff0c;都已经忘得差不多了 看答案 其实就是自己…...

循环队列来了解一下!!

笔者在之前的一篇文章&#xff0c;详细的介绍了&#xff1a;队列之单向链表与双向链表的模拟实现&#xff1a;https://blog.csdn.net/weixin_64308540/article/details/128742090?spm1001.2014.3001.5502 感兴趣的各位老铁&#xff0c;可以参考一下啦&#xff01;下面进入循环…...

Idea打包springboot项目war包,测试通过

pom.xml文件 <!--包名以及版本号&#xff0c;这个是打包时候使用&#xff0c;版本可写可不写&#xff0c;建议写有利于维护系统--> <artifactId>tsgdemo</artifactId> <version>0.0.1-SNAPSHOT</version> <!--打包形式--> <packaging&…...

做请柬的网站/如何推广自己的产品

构建Linux下的Resin Apache jsp 参考&#xff1a;http://blog.chinaunix.net/uid-29140694-id-4018236.html 如果你的网站是建立在apache下现在又想使用jsp,怎么办呢&#xff1f;你可以通过一些支持apache的jsp引擎(如resin,tomcat,jser等)来实现。这里介绍怎么配置apacheres…...

wordpress导出主题/最近一周的重大热点新闻

前台 后台...

在哪里可以免费做个人网站/产品推广建议

今天偶然想做FLEX里鼠标右键弹出菜单,但其实是很麻烦的,因为忘记了FLASH自己是有个鼠标右键菜单的,所以还是不动为秒, 但如果实在要动的话,也可以,转载之: 1.如果你是Desktop Application监听事件的MouseEvent.RIGHT_CLICK事件 比如对某个控件a进行监控右键点击事件 a.addEve…...

本地升级wordpress/关键词你们懂的

HTTP 的 Keep-Alive&#xff0c;是由应用层&#xff08;用户态&#xff09; 实现的&#xff0c;称为 HTTP 长连接&#xff1b; TCP 的 Keepalive&#xff0c;是由 TCP 层&#xff08;内核态&#xff09; 实现的&#xff0c;称为 TCP 保活机制 HTTP 的 Keep-Alive HTTP 是基于…...

奉化网站建设/西安seo顾问公司

现在大多数描述SQL Server 2005新特性的文章都关注于华而不实的特性&#xff0c;如SQL CLR或XML数据类型&#xff0c;而对许多老很好的老的T-SQL语言的改进没有得到应有的关注。我曾经从许多DBA口中听到令他们更兴奋的是看到T-SQL语言的改进,而不是那些新出现和发布的功能。对于…...

学做网站的书籍/百度云资源链接分享群组

时间&#xff1a;2014.04.29 地点&#xff1a;基地二楼 ---------------------------------------------------------------------------------------------- 一、题目 定义字符串的左旋转操作&#xff1a;把字符串前面的若干个字符移动到字符串的尾部。如把字符串abcdef左旋转…...