Java项目学生管理系统二查询所有

news2024/11/23 5:00:04

学生管理

近年来,Java作为一门广泛应用于后端开发的编程语言,具备了广泛的应用领域和丰富的开发资源。在前几天的博客中,我们探讨了如何搭建前后端环境,为接下来的开发工作打下了坚实的基础。今天,我们将进一步扩展我们的项目,并实现一个令人期待的功能——查询所有学生的信息。

这个功能对于学生管理系统来说至关重要。我们可以通过这个功能一次性查看系统中所有学生的信息,包括他们的姓名、年龄、以及其他重要的个人数据。无论是学生导员、教工还是学生自己,都可以方便地获取到所需的信息。让我们继续深入学习并实现这个功能吧!

2.1 查询所有:后端

2.1.2 分析

  • 查询所有学生
    • 条件查询:班级、姓名(模糊)、年龄(范围)
    • 分页查询
    • 基本信息:编号、姓名、年龄、生日、性别
    • 关联信息:班级、选课数、选课详情

在这里插入图片描述

2.1.2 domain

在这里插入图片描述

1)学生

在这里插入图片描述

package com.czxy.domain;

import lombok.Data;

import javax.persistence.Column;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Transient;
import java.util.Date;
import java.util.List;

/**
 * @author 薛慕昭
 * @description
 */
@Table(name="tb_student")
public class Student {
    @Id
    @Column(name="s_id")
    private Integer sid;            //学生ID

    private String sname;           //姓名
    private Integer age;            //年龄
    private Date birthday;          //生日
    private String gender;          //性别

    @Column(name="c_id")
    private Integer cid;            //所属班级id
    //多对一:多个学生属于一个班级
    @Transient                     //临时,表示数据库没有对应列
    private Classes classes;        //所属班级

    private String cityIds;         //城市:320000,321300,321322

    //多对多:不同学生选修不同的课程
    @Transient                     //临时,表示数据库没有对应列
    private List<Course> courseList;

    @Transient                      //临时,表示数据库没有对应列
    private Integer courseCount;     //选课数
2)班级
package com.czxy.domain;

import javax.persistence.Column;
import javax.persistence.Id;
import javax.persistence.Table;

/**
 * @author 薛慕昭
 * @description
 */
@Table(name = "tb_class")
public class Classes {
    @Id
    private Integer cid;

    private String cname;           //班级名称
    @Column(name = "teacher1_id")
    private int teacher1Id;         //授课老师
    @Column(name = "teacher2_id")
    private int teacher2Id;         //助理老师
    @Column(name = "teacher3_id")
    private int teacher3Id;         //辅导员老师

3)选课
package com.czxy.domain;

import javax.persistence.Column;
import javax.persistence.Id;
import javax.persistence.Table;

/**
 * @author 薛慕昭
 * @description
 */
@Table(name = "tb_course")
public class Course {
    @Id
    @Column(name = "c_id")
    private Integer cid;

    private String cname;

    @Column(name = "`desc`")
    private String desc;

2.1.3 Vo

在这里插入图片描述

package com.czxy.vo;

/**
 * @author 薛慕昭
 * @description
 */
public class StudentVo {
    private Integer classId;        //班级id
    private String studentName;     //学生姓名
    private Integer startAge;       //开始年龄
    private Integer endAge;         //结束年龄

2.1.4 dao

在这里插入图片描述

1)学生
package com.czxy.mapper;

import com.czxy.domain.Student;
import tk.mybatis.mapper.common.Mapper;

/**
 * @author 薛慕昭
 * @description
 */
public interface StudentMapper extends Mapper<Student> {
}

2)班级
package com.czxy.mapper;

import com.czxy.domain.Classes;
import tk.mybatis.mapper.common.Mapper;

/**
 * @author 薛慕昭
 * @description
 */
public interface ClassesMapper extends Mapper<Classes> {
}

3)选课
package com.czxy.mapper;

import com.czxy.domain.Course;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import tk.mybatis.mapper.common.Mapper;

import java.util.List;

/**
 * @author 薛慕昭
 * @description
 */
public interface CourseMapper extends Mapper<Course> {

    /**
     * 查询指定学生的所有课程
     * @param sid
     * @return
     */
    @Select("select c.* from tb_course c, tb_student_course sc where c.c_id = sc.c_id and sc.s_id = #{sid}")
    public List<Course> selectAllBySid(@Param("sid") Integer sid);
}

2.1.5 service

  • 接口

    package com.czxy.service;
    
    import com.czxy.domain.Student;
    import com.czxy.vo.StudentVo;
    import com.github.pagehelper.PageInfo;
    
    /**
     * @author 薛慕昭
     * @description
     */
    public interface StudentService {
        /**
         * 查询(基本、分页、条件)
         * @param studentVo
         * @param pageNum
         * @param pageSize
         * @return
         */
        PageInfo<Student> condition(StudentVo studentVo, Integer pageNum, Integer pageSize);
    }
    
    
  • 实现类

    package com.czxy.service.impl;
    
    import com.czxy.domain.Classes;
    import com.czxy.domain.Course;
    import com.czxy.domain.Student;
    import com.czxy.mapper.ClassesMapper;
    import com.czxy.mapper.CourseMapper;
    import com.czxy.mapper.StudentMapper;
    import com.czxy.service.StudentService;
    import com.czxy.vo.StudentVo;
    import com.github.pagehelper.PageHelper;
    import com.github.pagehelper.PageInfo;
    import org.springframework.stereotype.Service;
    import org.springframework.transaction.annotation.Transactional;
    import tk.mybatis.mapper.entity.Example;
    
    import javax.annotation.Resource;
    import java.util.List;
    
    /**
     * @author 薛慕昭
     * @description
     */
    @Service
    @Transactional
    public class StudentServiceImpl implements StudentService {
    
        @Resource
        private StudentMapper studentMapper;
        @Resource
        private ClassesMapper classesMapper;
        @Resource
        private CourseMapper courseMapper;
    
        @Override
        public PageInfo<Student> condition(StudentVo studentVo, Integer pageNum, Integer pageSize) {
            //1 拼凑条件
            // 1.0 获得条件对象
            Example studentExample = new Example(Student.class);
            Example.Criteria studentCriteria = studentExample.createCriteria();
            // 1.1 班级
            if(studentVo.getClassId() != null) {
                studentCriteria.andEqualTo("cid", studentVo.getClassId());
            }
            // 1.2 姓名 不能为null,不能为“” ,  %张%
            if(studentVo.getStudentName() != null && !"".equals(studentVo.getStudentName())) {
                studentCriteria.andLike("sname", "%"+studentVo.getStudentName()+"%");
            }
            // 1.3 年龄   30~50
            if(studentVo.getStartAge() != null) {
                studentCriteria.andGreaterThanOrEqualTo("age", studentVo.getStartAge());
            }
            if(studentVo.getEndAge() != null) {
                studentCriteria.andLessThanOrEqualTo("age", studentVo.getEndAge());
            }
    
    
            //2 分页
            PageHelper.startPage(pageNum, pageSize);
    
    
            //3.查询
            List<Student> studentList = studentMapper.selectByExample(studentExample);
    
    
            //4 关联
            for(Student student : studentList) {
                // 4.1 班级信息
                Classes classes = classesMapper.selectByPrimaryKey(student.getCid());
                student.setClasses(classes);
    
                // 查询学生选修的可成
                List<Course> courseList = courseMapper.selectAllBySid(student.getSid());
                // 4.2 选课数
                student.setCourseCount(courseList.size());
                // 4.3 选课详情
                student.setCourseList(courseList);
            }
    
            //5 封装
            PageInfo<Student> pageInfo = new PageInfo<>(studentList);
            return pageInfo;
        }
    }
    
    

2.1.6 controller

package com.czxy.controller;

import com.czxy.domain.Student;
import com.czxy.service.StudentService;
import com.czxy.vo.StudentVo;
import com.github.pagehelper.PageInfo;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;

/**
 * @author 薛慕昭
 * @description
 */
@RestController
@RequestMapping("/student")
public class StudentController {

    @Resource
    private StudentService studentService;

    @PostMapping("/condition/{pageSize}/{pageNum}")
    public ResponseEntity<PageInfo<Student>> condition(
        @RequestBody StudentVo studentVo,
        @PathVariable("pageSize") Integer pageSize,
        @PathVariable("pageNum") Integer pageNum) {
        //查询
        PageInfo<Student> pageInfo = 
            				studentService.condition(studentVo, pageNum, pageSize );
        //处理结果
        return ResponseEntity.ok(pageInfo);
    }

}

2.1.7 测试

在这里插入图片描述

2.2 查询所有:前端

2.2.1 需求

在这里插入图片描述

在这里插入图片描述

2.2.2 列表展示

<template>
  <div>
    <!-- 列表start -->
    <el-table
      :data="pageInfo.list"
      stripe
      style="width: 100%">
      <el-table-column
        prop="sid"
        fixed
        label="学生ID"
        width="180">
      </el-table-column>
      <el-table-column
        prop="classes.cname"
        fixed
        label="班级名称"
        width="180">
      </el-table-column>
      <el-table-column
        prop="sname"
        label="学生姓名"
        width="180">
      </el-table-column>
      <el-table-column
        prop="age"
        label="年龄"
        width="180">
      </el-table-column>
      <el-table-column
        prop="birthday"
        label="生日"
        width="180">
      </el-table-column>
      <el-table-column
        prop="gender"
        label="性别"
        width="180">
        <template slot-scope="scope">
          {{scope.row.gender == 1 ? '男': '女'}}
        </template>
      </el-table-column>
      <el-table-column
        prop="courseCount"
        label="选课数"
        width="180">
      </el-table-column>
      <el-table-column
        label="选课详情"
        width="300">
        <template slot-scope="scope">
          <el-tag v-for="(course,index) in scope.row.courseList" :key="index">{{course.cname}}</el-tag>
        </template>
      </el-table-column>
      <el-table-column
        width="180"
        fixed="right"
        label="操作">
        <template slot-scope="scope">
          <el-button size="mini">编辑</el-button>
          <el-button size="mini" type="danger">删除</el-button>
        </template>
      </el-table-column>
    </el-table>
    <!-- 列表end -->
    {{pageInfo}}
  </div>
</template>

<script>
export default {
  data() {
    return {
      studentVo: {      //查询条件
        classId: '',
        studentName: '',
        startAge: '',
        endAge: ''
      },
      pageInfo: {     //分页条件
        pageNum: 1,
        pageSize: 2
      }
    }
  },
  methods: {
    async selectAllStudent() {
      //处理请求路径
      let url = `/student/condition/${this.pageInfo.pageSize}/${this.pageInfo.pageNum}`
      //发送ajax
      let {data} = await this.$http.post(url, this.studentVo)
      //保存结果
      this.pageInfo = data
    }
  },
  mounted() {   //页面加载成功
    this.selectAllStudent()
  },
}
</script>

<style>

</style>

2.2.3 条件表单

  • 页面加载成功后,查询所有的班级

在这里插入图片描述

  • 编写表单:展示班级列表、绑定条件参数、绑定查询按钮

在这里插入图片描述

在这里插入图片描述

<template>
  <div>
    <!-- 查询表单start -->
    <el-form :inline="true" :model="studentVo" size="mini" class="demo-form-inline">
      <el-form-item label="班级">
        <el-select v-model="studentVo.classId" clearable @change="selectAllStudent" placeholder="请选择班级">
          <el-option v-for="(classes,index) in classesList" :key="index" :label="classes.cname" :value="classes.cid">
          </el-option>
        </el-select>
      </el-form-item>

      <el-form-item label="姓名">
        <el-input v-model="studentVo.studentName" @keyup.enter.native="selectAllStudent" clearable placeholder="请输入姓名"></el-input>
      </el-form-item>
      
      <el-form-item label="年龄">
        <el-col :span="11">
          <el-input v-model="studentVo.startAge" clearable placeholder="请输入开始年龄"></el-input>
        </el-col>
        <el-col class="line" :span="2">-</el-col>
        <el-col :span="11">
          <el-input v-model="studentVo.endAge" clearable placeholder="请输入结束年龄"></el-input>
        </el-col>
      </el-form-item>

      <el-form-item>
        <el-button type="primary" @click="selectAllStudent">查询</el-button>
      </el-form-item>
    </el-form>
    <!-- 查询表单end -->
    <!-- 列表start -->
    <el-table
      :data="pageInfo.list"
      stripe
      style="width: 100%">
      <el-table-column
        prop="sid"
        fixed
        label="学生ID"
        width="180">
      </el-table-column>
      <el-table-column
        prop="classes.cname"
        fixed
        label="班级名称"
        width="180">
      </el-table-column>
      <el-table-column
        prop="sname"
        label="学生姓名"
        width="180">
      </el-table-column>
      <el-table-column
        prop="age"
        label="年龄"
        width="180">
      </el-table-column>
      <el-table-column
        prop="birthday"
        label="生日"
        width="180">
      </el-table-column>
      <el-table-column
        prop="gender"
        label="性别"
        width="180">
        <template slot-scope="scope">
          {{scope.row.gender == 1 ? '男': '女'}}
        </template>
      </el-table-column>
      <el-table-column
        prop="courseCount"
        label="选课数"
        width="180">
      </el-table-column>
      <el-table-column
        label="选课详情"
        width="300">
        <template slot-scope="scope">
          <el-tag v-for="(course,index) in scope.row.courseList" :key="index">
            {{course.cname}}
          </el-tag>
        </template>
      </el-table-column>
      <el-table-column
        width="180"
        fixed="right"
        label="操作">
        <template slot-scope="scope">
          <el-button size="mini">编辑</el-button>
          <el-button size="mini" type="danger">删除</el-button>
        </template>
      </el-table-column>
    </el-table>
    <!-- 列表end -->
    {{pageInfo}}
  </div>
</template>

<script>
export default {
  data() {
    return {
      studentVo: {      //查询条件
        classId: '',
        studentName: '',
        startAge: '',
        endAge: ''
      },
      pageInfo: {     //分页条件
        pageNum: 1,
        pageSize: 5
      },
      classesList: [],    //所有班级
    }
  },
  methods: {
    async selectAllStudent() {
      //处理请求路径
      let url = `/student/condition/${this.pageInfo.pageSize}/${this.pageInfo.pageNum}`
      //发送ajax
      let {data} = await this.$http.post(url, this.studentVo)
      //保存结果
      this.pageInfo = data
    },
    async selectAllClasses() {
      let { data } = await this.$http.get('/classes')
      this.classesList = data
    }
  },
  mounted() {   //页面加载成功
    //查询所有学生
    this.selectAllStudent()
    //查询所有班级
    this.selectAllClasses()
  },
}
</script>

<style>
  .line {
    text-align: center;
  }
</style>

2.2.4 分页条

  • 显示分页条

    在这里插入图片描述

  • 编写分页需要触发函数

    在这里插入图片描述

<template>
  <div>
    <!-- 查询表单start -->
    <el-form :inline="true" :model="studentVo" size="mini" class="demo-form-inline">
      <el-form-item label="班级">
        <el-select v-model="studentVo.classId" clearable @change="selectAllStudent" placeholder="请选择班级">
          <el-option v-for="(classes,index) in classesList" :key="index" :label="classes.cname" :value="classes.cid">
          </el-option>
        </el-select>
      </el-form-item>

      <el-form-item label="姓名">
        <el-input v-model="studentVo.studentName" @keyup.enter.native="selectAllStudent" clearable placeholder="请输入姓名"></el-input>
      </el-form-item>
      
      <el-form-item label="年龄">
        <el-col :span="11">
          <el-input v-model="studentVo.startAge" clearable placeholder="请输入开始年龄"></el-input>
        </el-col>
        <el-col class="line" :span="2">-</el-col>
        <el-col :span="11">
          <el-input v-model="studentVo.endAge" clearable placeholder="请输入结束年龄"></el-input>
        </el-col>
      </el-form-item>

      <el-form-item>
        <el-button type="primary" @click="selectAllStudent">查询</el-button>
      </el-form-item>
    </el-form>
    <!-- 查询表单end -->
    <!-- 列表start -->
    <el-table
      :data="pageInfo.list"
      stripe
      style="width: 100%">
      <el-table-column
        prop="sid"
        fixed
        label="学生ID"
        width="180">
      </el-table-column>
      <el-table-column
        prop="classes.cname"
        fixed
        label="班级名称"
        width="180">
      </el-table-column>
      <el-table-column
        prop="sname"
        label="学生姓名"
        width="180">
      </el-table-column>
      <el-table-column
        prop="age"
        label="年龄"
        width="180">
      </el-table-column>
      <el-table-column
        prop="birthday"
        label="生日"
        width="180">
      </el-table-column>
      <el-table-column
        prop="gender"
        label="性别"
        width="180">
        <template slot-scope="scope">
          {{scope.row.gender == 1 ? '男': '女'}}
        </template>
      </el-table-column>
      <el-table-column
        prop="courseCount"
        label="选课数"
        width="180">
      </el-table-column>
      <el-table-column
        label="选课详情"
        width="300">
        <template slot-scope="scope">
          <el-tag v-for="(course,index) in scope.row.courseList" :key="index">
            {{course.cname}}
          </el-tag>
        </template>
      </el-table-column>
      <el-table-column
        width="180"
        fixed="right"
        label="操作">
        <template slot-scope="scope">
          <el-button size="mini">编辑</el-button>
          <el-button size="mini" type="danger">删除</el-button>
        </template>
      </el-table-column>
    </el-table>
    <!-- 列表end -->
    <!-- 分页条start -->
    <el-pagination
      @size-change="handleSizeChange"
      @current-change="handleCurrentChange"
      :current-page="pageInfo.pageNum"
      :page-sizes="[1,2,3,5,10]"
      :page-size="pageInfo.pageSize"
      layout="total, sizes, prev, pager, next, jumper"
      :total="pageInfo.total">
    </el-pagination>
    <!-- 分页条end -->
  </div>
</template>

<script>
export default {
  data() {
    return {
      studentVo: {      //查询条件
        classId: '',
        studentName: '',
        startAge: '',
        endAge: ''
      },
      pageInfo: {     //分页条件
        pageNum: 1,     //当前页(第几页)
        pageSize: 2     //每页个数
      },
      classesList: [],    //所有班级
    }
  },
  methods: {
    async selectAllStudent() {
      //处理请求路径
      let url = `/student/condition/${this.pageInfo.pageSize}/${this.pageInfo.pageNum}`
      //发送ajax
      let {data} = await this.$http.post(url, this.studentVo)
      //保存结果
      this.pageInfo = data
    },
    async selectAllClasses() {
      let { data } = await this.$http.get('/classes')
      this.classesList = data
    },
    handleSizeChange(val) {
      //修改 每页个数
      //console.log(`每页 ${val} 条`);
      this.pageInfo.pageSize = val
      this.pageInfo.pageNum = 1
      //再查询
      this.selectAllStudent()
    },
    handleCurrentChange(val) {
      //修改当前页
      //console.log(`当前页: ${val}`);
      this.pageInfo.pageNum = val
      //再查询
      this.selectAllStudent()
    }
  },
  mounted() {   //页面加载成功
    //查询所有学生
    this.selectAllStudent()
    //查询所有班级
    this.selectAllClasses()
  },
}
</script>

<style>
  .line {
    text-align: center;
  }
</style>

通过本文的学习,我们成功地实现了学生管理项目的查询所有功能。我们通过构建一个学生管理系统,并添加了测试数据,以模拟真实的学生信息。通过调用系统提供的showAllStudents()方法,我们可以轻松地查看并打印所有学生的信息。这个功能为学生管理系统增添了强大的查询能力,使得管理工作更加高效和便捷。

在今天的学习中,我们不仅巩固了Java的基础知识,还深入了解了如何处理和展示大量的数据。随着项目的发展,我们将继续探索更多有趣和实用的功能,并逐步建立一个完整的学生管理系统。希望本文对你有所启发和帮助,如果你有任何疑问或建议,请随时与我们分享。期待下一篇博客,继续探索Java开发的奇妙世界!

SizeChange(val) {
      //修改 每页个数
      //console.log(`每页 ${val} 条`);
      this.pageInfo.pageSize = val
      this.pageInfo.pageNum = 1
      //再查询
      this.selectAllStudent()
    },
    handleCurrentChange(val) {
      //修改当前页
      //console.log(`当前页: ${val}`);
      this.pageInfo.pageNum = val
      //再查询
      this.selectAllStudent()
    }
  },
  mounted() {   //页面加载成功
    //查询所有学生
    this.selectAllStudent()
    //查询所有班级
    this.selectAllClasses()
  },
}
</script>

<style>
  .line {
    text-align: center;
  }
</style>

通过本文的学习,我们成功地实现了学生管理项目的查询所有功能。我们通过构建一个学生管理系统,并添加了测试数据,以模拟真实的学生信息。通过调用系统提供的showAllStudents()方法,我们可以轻松地查看并打印所有学生的信息。这个功能为学生管理系统增添了强大的查询能力,使得管理工作更加高效和便捷。

在今天的学习中,我们不仅巩固了Java的基础知识,还深入了解了如何处理和展示大量的数据。随着项目的发展,我们将继续探索更多有趣和实用的功能,并逐步建立一个完整的学生管理系统。希望本文对你有所启发和帮助,如果你有任何疑问或建议,请随时与我们分享。期待下一篇博客,继续探索Java开发的奇妙世界!

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

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

相关文章

性能优化之FPS

如果每秒钟有60帧&#xff0c;那么每一帧的时间就是总时间&#xff08;1秒&#xff09;除以总帧数&#xff08;60帧&#xff09;&#xff1a; 所以&#xff1a;每帧时间1000 毫秒/60 帧≈16.67 毫秒 因此&#xff0c;如果每秒有60帧&#xff0c;那么每一帧大约需要16.67毫秒来…

华为云之一键安装宝塔面板

华为云之一键安装宝塔面板 一、本次实践介绍1.1 实践环境简介1.2 本次实践目的 二、宝塔面板介绍三、环境准备工作3.1 预置实验环境3.2 查看环境信息3.3 登录华为云3.4 查看弹性云服务器状态3.5 ssh登录弹性云服务器3.6 查看操作系统版本 四、安装宝塔面板4.1 一键部署宝塔面板…

c MJPG(1)

.读取量化表&#xff0c;全局参数&#xff0c;霍夫曼表&#xff0c;恢复表编码&#xff0c;现在只是实现思路。 #include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <sys/ioctl.h> #include <sy…

J签证、移民、绿卡都是怎么回事?

随着全球化的不断推进&#xff0c;越来越多的人开始关注国际间的移民与签证政策&#xff0c;其中包括J签证、移民以及绿卡的申请问题。本文将简要介绍J签证、移民绿卡的基本概念&#xff0c;并提供相关申请的一般步骤&#xff0c;以帮助读者更好地了解这些程序。 首先&#xff…

网站优化SEO文章采集组合方法

为了在激烈的网络竞争中脱颖而出&#xff0c;SEO专业人士不断寻求创新的方法和技术。其中&#xff0c;SEO文章采集后重组是一项备受关注的技术&#xff0c;通过巧妙地整合和重新组织已有的信息&#xff0c;以提升网站在搜索引擎中的排名和曝光度。 SEO文章采集是这一技术的第一…

老师上公开课的好处

作为一名老师&#xff0c;公开课是不可避免的&#xff0c;也是提升自己教学水平的重要途径。那么&#xff0c;老师上公开课到底有哪些好处呢&#xff1f;以下几条&#xff0c;也许可以为你解开疑惑。 提升老师的教学水平。在公开课上&#xff0c;老师需要将平时的教学经验、方法…

docker-compose;私有镜像仓库harbor搭建;镜像推送到私有仓库harbor

docker-compose&#xff1b;私有镜像仓库harbor搭建&#xff1b;镜像推送到私有仓库harbor 文章目录 docker-compose&#xff1b;私有镜像仓库harbor搭建&#xff1b;镜像推送到私有仓库harbordocker-compose私有镜像仓库harbor搭建镜像推送到私有仓库harbor docker-compose D…

Elk+Filebeat+Kafka实现日志收集

ElkFilebeatKafka实现日志收集(本机nginx) 部署Zookeeper 1.实验组件 #准备3台服务器做Zookeeper集群 20.0.0.10 20.0.0.20 20.0.0.30 2.安装前准备 #关闭防火墙 systemctl stop firewalld systemctl disable firewalld setenforce 0#安装JDK yum install -y java-1.8.0-o…

井盖位移报警器安装,智能化井盖厂家推荐

当井盖发生位移或倾斜时&#xff0c;通常会引起所处道路的安全隐患&#xff0c;给过往的车辆和行人带来许多潜在的危险。为了避免潜在的安全事故频繁出现&#xff0c;及时发现并处理井盖位移或倾斜才能更好的保障人民的安全。因此安装井盖位移报警器是满足政府和市民需求的。 单…

抖音本地生活服务商申请条件

抖音的本地生活服务商目前有两种&#xff0c;一种是可以做全国的服务商&#xff0c;我们一般叫抖音本地生活服务商&#xff0c;一种是区域优待服务商&#xff0c;也就是后面出来的服务商&#xff0c;这两种服务商的申请方式大同小异。 相同的地方就是都需要给平台交保证金。抖…

用java制作飞翔的小鸟

第一步是创建项目 项目名自拟 第二步创建个包名 来规范class 再创建一个包 来存储照片 如下&#xff1a; package game; import java.awt.*; import javax.swing.*; import javax.imageio.ImageIO;public class Bird {Image image;int x,y;int width,height;int size;doubl…

计算机体系结构----指令系统(二)

本文仅供学习&#xff0c;不作任何商业用途&#xff0c;严禁转载。绝大部分资料来自----计算机系统结构教程(第二版)张晨曦等 计算机体系结构----指令系统&#xff08;二&#xff09; 2.1 指令系统结构的分类2.2 寻址方式2.3 MIPS 指令系统结构2.3.1 MIPS的寄存器2.3.2 MIPS的…

虚拟化CentOS7分区大小调整+磁盘扩容=新分区

一、适应场景 1、虚拟化环境ESXI6.7下的虚拟服务器&#xff0c;使用一段时间后&#xff0c;把空闲的存储空间腾出来&#xff0c;给新的分区使用。 2、Linux的版本为CentOS7 3、本例为部署minio存储业务做准备 4、虚拟化存储扩容 二、配置过程 调整分区大小&#xff0c;为min…

Go语言 值传递

官方说法&#xff0c;Go中只有值传递&#xff0c;没有引用传递 而Go语言中的一些让你觉得它是引用传递的原因&#xff0c;是因为Go语言有值类型和引用类型&#xff0c;但是它们都是值传递。 值类型 有int、float、bool、string、array、sturct等 引用类型有slice&#xff0c…

免费SSL证书有效果吗?

首先&#xff0c;我们要明确一点&#xff1a;无论是付费还是免费的SSL证书&#xff0c;它们都能实现基本的HTTPS加密功能&#xff0c;确保数据在客户端和服务器之间的传输过程中不会被窃取或篡改。从这个角度来看&#xff0c;免费SSL证书的确可以提供一定的安全保障。 然而&…

每天一点python——day81

#每天一点Python——81 #递归函数&#xff1a; 递归函数&#xff1a; 一个函数在该函数体内调用了该函数本身&#xff0c;这个函数称为递归函数 【释&#xff1a;我自己调用自己的函数】 递归函数的组成部分&#xff1a; 递归调用与递归终止条件。 【一定有一个跳出循环的终止条…

【MySQL】事务(事务四大特性+四种隔离级别+MVCC)

事务 前言正式开始事务的四大特性为什么会出现事务事务的版本支持事务提交方式事务常见操作方式启动事务回滚演示提交事务事务的异常autocommit 事务的隔离性隔离级别查看隔离级别修改隔离级别验证四种隔离级别读未提交(read uncommitted) —— 缩写为RU读提交(read committed)…

web:catcat-new(文件包含漏洞、flask_session伪造)

前提知识 /etc/passwd 该文件储存了该Linux系统中所有用户的一些基本信息&#xff0c;只有root权限才可以修改。其具体格式为 用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell&#xff08;以冒号作为分隔符&#xff09; /proc/self proc是一个伪文件系统…

C++和Python混合编程在数据采集程序中的应用

目录 一、引言 二、C和Python的特性及其在数据采集程序中的应用 1、C的特性及其在数据采集程序中的应用 2、Python的特性及其在数据采集程序中的应用 三、C和Python混合编程在数据采集程序中的实现方法 四、混合编程的优缺点以及未来发展趋势 五、代码示例 六、结论 一…

创业者如何在居家办公和固定办公场地办公中权衡利弊,选择合适的

创业者如何选择办公方式&#xff0c;可能要根据自己的创业项目、团队规模、资金情况、行业特点等多方面因素来考虑。一般来说&#xff0c;居家办公和固定办公场地各有优缺点&#xff0c;没有绝对的好坏&#xff0c;只有适合不适合。我为大家总结了一些相关的信息&#xff0c;希…