springboot人事管理系统设计与实现

news2025/4/9 4:06:36

126springboot人事管理系统java web员工信息管理系统

人事管理系统,属于ERP的一个部分。它单指汇集成功企业先进的人力资源管理理念、人力资源管理实践、人力资源信息化系统建设的经验,以信息技术实现对企业人力资源信息的高度集成化管理,为中国企业使用的人力资源管理解决方案。核心价值在于将人力资源工作者从繁重的日常琐碎事务中解放出来,将更多的精力用于企业的人力资源职能管理和管理决策,保持企业的持续高效运营。 集中记录、监测和分析所有劳动力的技能和资格,提供决策分析。提高企业整体的科技含量与管理效率,加快企业的信息化建设。

 开发工具:idea 

 数据库mysql5.7+(mysql5.7最佳)

 数据库链接工具:navcat,小海豚等

开发技术: springboot  html

 

package cn.zdxh.personnelmanage.controller;


import cn.zdxh.personnelmanage.enums.ResultEnum;
import cn.zdxh.personnelmanage.exception.MyException;
import cn.zdxh.personnelmanage.po.BirthdayRecord;
import cn.zdxh.personnelmanage.po.CertificatesInfo;
import cn.zdxh.personnelmanage.po.Contraceptive;
import cn.zdxh.personnelmanage.po.EmployeeInfo;
import cn.zdxh.personnelmanage.service.CertificatesInfoService;
import cn.zdxh.personnelmanage.service.EmployeeInfoService;
import cn.zdxh.personnelmanage.utils.*;
import net.sf.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import org.springframework.stereotype.Controller;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.lang.reflect.InvocationTargetException;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;

/**
 * <p>
 * 证件情况表 前端控制器
 * </p>
 *
 * @author Justin
 * @since 2019-03-15
 */
@Controller
@RequestMapping("/CertificatesInfo")
public class CertificatesInfoController {

    @Autowired
    private CertificatesInfoService certificatesInfoService;
    @Autowired
    private EmployeeInfoService employeeInfoService;

    @GetMapping("/list")
    public String findCertificates(@RequestParam(value = "currentPage", defaultValue = "0") Integer currentPage, @RequestParam(value = "limit", defaultValue = "3") Integer limit, Map<String, Object> map){
        List<CertificatesInfo> list = certificatesInfoService.findCertificatesInfoAll(currentPage, limit);
        System.out.println(list);
        Integer addCount = certificatesInfoService.findCertificatesInfoAllCount();
        map.put("list", list);
        map.put("currentPage", currentPage);
        map.put("totalPage", limit);
        map.put("operation", "health_certificate_model");
        map.put("URL", "/CertificatesInfo");
        return "employee/employee_list";
    }

    @GetMapping("/create")
    public String goCertificationCreate(Map<String, Object> map, ContraceptiveUtils contraceptiveUtils){
        List<EmployeeInfo> list = employeeInfoService.selectList(null);
        List<Contraceptive> list1 = contraceptiveUtils.contraceptives();
        map.put("type", "create");
        map.put("employees", list);
        map.put("contraceptive", list1);
        map.put("operation", "health_certificate_model");
        map.put("req_url", "/CertificatesInfo/add");
        return "employee/employee_create";
    }

    @GetMapping("/add")
    public String addCertification(CertificatesInfo certificatesInfo, Map<String, Object> map){

        if (certificatesInfo != null){
            System.out.println("certificatesInfo:"+certificatesInfo);
            certificatesInfoService.insertCertificatesInfo(certificatesInfo);
        }
        map.put("operat", "success");
        return "result/success";
    }

    @GetMapping("/update/{id}")
    public String goCertificationUpda(@PathVariable("id") Integer id, Map<String, Object> map, ContraceptiveUtils contraceptiveUtils){
        CertificatesInfo certificatesInfo = certificatesInfoService.findCertificatesInfo(id);
        List<EmployeeInfo> list = employeeInfoService.selectList(null);
        List<Contraceptive> list1 = contraceptiveUtils.contraceptives();
        map.put("type", "update");
        map.put("operation", "health_certificate_model");
        map.put("req_url", "/CertificatesInfo/update");
        map.put("employees", list);
        map.put("contraceptive", list1);
        map.put("certificatesInfo", certificatesInfo);
        return "employee/employee_create";
    }

    @PostMapping("/update")
    public String updateCertification(CertificatesInfo certificatesInfo, Map<String, Object> map){
        CertificatesInfo certificatesInfo1 = certificatesInfoService.findCertificatesInfo(certificatesInfo.getCerId());
        if (certificatesInfo1 != null){
            certificatesInfoService.updateCertificatesInfo(certificatesInfo);
        }
        map.put("operat", "success");
        return "result/success";
    }

    @DeleteMapping("/delete/{id}")
    public String deleteCertification(@PathVariable("id") Integer id, Map<String, Object> map){
        CertificatesInfo certificatesInfo = certificatesInfoService.findCertificatesInfo(id);
        if (certificatesInfo != null){
            certificatesInfoService.deleteCertificatesInfo(id);
        }
        map.put("operat", "success");
        return "result/success";
    }

    @DeleteMapping("/batchDelete")
    public String batchDeleteBirth(@RequestParam("data_id") String data_id, Map<String, Object> map){
        String[] id = data_id.split(",");
        for (int i = 0; i < id.length; i++){
            CertificatesInfo certificatesInfo = certificatesInfoService.findCertificatesInfo(Integer.parseInt(id[i]));
            if (certificatesInfo != null){
                certificatesInfoService.deleteCertificatesInfo(Integer.parseInt(id[i]));
            }
        }
        return "result/success";
    }

    @PostMapping("/search")
    public String searchBirthRecord(@RequestParam("data") String data, Map<String, Object> map){
        List<CertificatesInfo> list = certificatesInfoService.findAllCertificatesInfoBySearch(data);
        map.put("list", list);
        map.put("operation", "health_certificate_model");
        return "employee/employee_list";
    }


    /**
     * 功能需求:完成客户端的Excel表数据写入数据库功能
     *
     * @param file //用户上传的Excel文件
     * @param uploadUtils //上传文件的工具类 cn.zdxh.personnelmanage.utils.UploadUtils
     * @return
     * @throws Exception
     */
    @PostMapping("/updateExcel")
    @ResponseBody
    public JSONObject updateExcel(@RequestParam("file") MultipartFile file, UploadUtils uploadUtils) throws Exception {
        JSONObject json = new JSONObject();
        try {
            //第一个参数为Excel表,第二个参数为从第几行读取Excel的内容,返回值为一个字符串数组集合(每一个数组代表Excel表的一行数据)
            List<String[]> list =  uploadUtils.updateExcelUtils(file, 1);
            //遍历字符串数组集合中的数据
            for (String[] str:list){
                //获取实体类对象封装数据(每一个实体类对象封装Excel表中的一行数据)
                CertificatesInfo certificatesInfo = new CertificatesInfo();
                //一个工具类,把字符串数组数据封装到实体类对象中,第一个参数为实体类对象,第二个参数为字符串数组
                ExcelValuesHelperUtils.setAttributeValue(certificatesInfo, str);

                /**
                 * 在完成Excel表中数据写入数据库操作之前先判断
                 * 该实体类对象的是否为数据库已有(进行更新操作)
                 * 该实体类对象的数据为数据库没有(进行插入操作)
                 */
                if (certificatesInfoService.findCertificatesInfo(Integer.parseInt(str[0])) != null){
                    certificatesInfoService.updateCertificatesInfo(certificatesInfo);
                } else {
                    certificatesInfoService.insertCertificatesInfo(certificatesInfo);
                }
            }
        } catch (Exception e){
            /**
             * 做一个报错检测
             */
            throw new MyException(ResultEnum.UPDATE_EXCEL_ERROR.getCode(), ResultEnum.UPDATE_EXCEL_ERROR.getMsg());
        }

        //返回客户端的数据
        json.put("code", 1);
        json.put("data", "Excel表上传成功!");
        json.put("ret", true);
        return json;
    }


    /**
     * 需求功能:完成服务器端把数据库中的数据读出客户端功能
     *
     * @param response //把生成的Excel表响应到客户端
     * @throws NoSuchMethodException //报错
     * @throws IllegalAccessException   //报错
     * @throws InvocationTargetException    //报错
     * @throws InstantiationException   //报错
     */
    @GetMapping("/exportExcel")
    public void exportExcel(HttpServletResponse response) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException {
        //先把数据库中的数据查询出来
        List<CertificatesInfo> list1 = certificatesInfoService.selectList(null);
        //一个设置Excel表标题信息的工具类,获取Excel表标题的字符串数组
        String[] strings = ExcelTitlesHelperUtils.getCertificatesInfoTitles();
        //一个能把对象集合转换成字符串数组集合的工具类,参数为对象集合,返回字符串数组集合
        List<Object[]> list = ExcelValuesHelperUtils.exportExcel(list1);
        try {
            //一个能创建Excel表并完成发送客户端的工具类,第一个参数为字符串数组集合(Excel表内容),第二个参数为字符串数组(Excel表标题),第三个参数为响应器
            ExportExcelUtils.createExcelUtils(list, strings, response);
        } catch (Exception e){
            //导表发生异常的时候
            throw new MyException(ResultEnum.EXPORT_EXCEL_ERROR.getCode(),ResultEnum.EXPORT_EXCEL_ERROR.getMsg());
        }

    }

}

package cn.zdxh.personnelmanage.controller;


import cn.zdxh.personnelmanage.enums.ResultEnum;
import cn.zdxh.personnelmanage.exception.MyException;
import cn.zdxh.personnelmanage.form.EmployeeForm;
import cn.zdxh.personnelmanage.po.EmployeeCard;
import cn.zdxh.personnelmanage.po.EmployeeInfo;
import cn.zdxh.personnelmanage.service.EmployeeInfoService;
import cn.zdxh.personnelmanage.utils.ExcelTitlesHelperUtils;
import cn.zdxh.personnelmanage.utils.ExcelValuesHelperUtils;
import cn.zdxh.personnelmanage.utils.ExportExcelUtils;
import cn.zdxh.personnelmanage.utils.UploadUtils;
import net.sf.json.JSONObject;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.BindingResult;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import org.springframework.stereotype.Controller;
import org.springframework.web.multipart.MultipartFile;
import org.thymeleaf.util.StringUtils;

import javax.servlet.http.HttpServletResponse;
import java.lang.reflect.InvocationTargetException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * <p>
 * 员工信息表 前端控制器
 * </p>
 *
 * @author Justin
 * @since 2019-03-15
 */

@Controller
@RequestMapping("/employee")
public class EmployeeInfoController {

    @Autowired
    private EmployeeInfoService employeeInfoService;



    /**
     * 查询所有的员工(默认0到10个)
     * @GetMapping 表示的是get请求
     * @ResponseBody 返回的是json的格式(分页时的ajax数据请求)
     * @param currentPage 当前页
     * @param limit 每页显示多少个
     * @return
     */
    @GetMapping("/emps")
    public String employees(@RequestParam(value = "currentPage",defaultValue = "0") String currentPage, @RequestParam(value = "limit",defaultValue = "2") String limit,Map<String,Object> map){
        //向数据库查询值
        List<EmployeeInfo> allEmployees = employeeInfoService.findAllEmployees(Integer.parseInt(currentPage), Integer.parseInt(limit));
        Integer allCount = employeeInfoService.findAllCount();
        //存储值,可以在引擎模板中取值(页面中取值)
        map.put("employees",allEmployees);
        map.put("totalPage",allCount);//总页数
        map.put("currentPage",currentPage);//当前页数-1
        map.put("operation","employee_list_model");//判别标识
        //employee_list的意思就是employee_list.html页面,并在其中取值,相当于jsp页面
        return "employee/employee_list";
    }

    /**
     * 在修改之前需要进行一次数据回显,查询某个需要修改的员工
     * @GetMapping 表示的是get请求
     * @param id  员工id
     * @param map 存储值
     * @return
     */
    @GetMapping("/emp/{id}")
    public String employee(@PathVariable("id") Integer id,Map<String,Object> map){
        EmployeeInfo employee = employeeInfoService.findEmployee(id);
        map.put("employee",employee);
        map.put("type","update");
        return "employee/employee_update";
    }

    /**
     * 更新员工信息
     * @PutMapping 表示的是put请求方式
     * @param employeeForm 表单传过来的对象
     * @param bindingResult 表单验证对象
     * @return
     */
    @PutMapping("/emp/{id}")
    public String updateEmployee(@Validated EmployeeForm employeeForm, BindingResult bindingResult,@PathVariable("id") Integer id){
        //数据校验出现错误的时候,需要抛个异常,并且异常捕获到异常页面
        if (bindingResult.hasErrors()){
            throw new MyException(ResultEnum.CHECK_ERROR.getCode(),bindingResult.getFieldError().getDefaultMessage());
        }
        //封装页面传过来的员工id
        employeeForm.setEmpId(id);
        EmployeeInfo employeeInfo = new EmployeeInfo();
        //对象属性转换
        BeanUtils.copyProperties(employeeForm,employeeInfo);
        employeeInfoService.updateEmployee(employeeInfo);
        return "result/success";
    }

    /**
     * 仅仅作页面跳转的作用(跳转到新增员工的页面)
     * @GetMapping get的请求方式
     * @return
     */
    @GetMapping("/emp")
    public String insertEmployeeBefore(Map<String, Object> map){
        map.put("type","create");
        map.put("operation","employee_create_model");
        return "employee/employee_create";
    }

    /**
     * 新增员工信息
     * @PostMapping post方式提交
     * @param employeeForm
     * @param bindingResult
     * @return
     */
    @PostMapping("/emp")
    public String insertEmployee(@Validated EmployeeForm employeeForm, BindingResult bindingResult){
        //数据校验出现错误的时候,需要抛个异常,并且异常捕获到异常页面
        if (bindingResult.hasErrors()){
            //错误码 ResultEnum.CHECK_ERROR.getCode()
            //数据校验的具体错误信息  bindingResult.getFieldError().getDefaultMessage()
            throw new MyException(ResultEnum.CHECK_ERROR.getCode(),bindingResult.getFieldError().getDefaultMessage());
        }
        EmployeeInfo employeeInfo = new EmployeeInfo();
        //对象属性转换
        BeanUtils.copyProperties(employeeForm,employeeInfo);
        employeeInfoService.insertEmployee(employeeInfo);
        return "result/success";
    }

    /**
     * 删除员工
     * @DeleteMapping delete请求
     * @param id 员工id
     * @return
     */
    @DeleteMapping("emp/{id}")
    public String deleteEmployee(@PathVariable("id") Integer id){
        employeeInfoService.deleteEmployee(id);
        return "employee/employee_list";
    }

    @DeleteMapping("/batchDelete")
    public String batchDeleteBirth(@RequestParam("data_id") String data_id, Map<String, Object> map){
        String[] id = data_id.split(",");
        for (int i = 0; i < id.length; i++){
            EmployeeInfo employeeInfo = employeeInfoService.findEmployee(Integer.parseInt(id[i]));
            if (employeeInfo != null){
                employeeInfoService.deleteEmployee(Integer.parseInt(id[i]));
            }
        }
        return "result/success";
    }

    /**
     * 根据员工姓名模糊查询员工
     * @param content
     * @return
     */
    @PostMapping("/search")
    public String searchEmployees(String content,Map<String,Object> map){
        List<EmployeeInfo> employeeInfos = employeeInfoService.findAllEmployeeInfosBySearch(content);
        //存储值,可以在引擎模板中取值(页面中取值)
        map.put("employees",employeeInfos);
        map.put("operation", "employee_list_model");
        return "employee/employee_list";
    }


    /**
     * 功能需求:完成客户端的Excel表数据写入数据库功能
     *
     * @param file //用户上传的Excel文件
     * @param uploadUtils //上传文件的工具类 cn.zdxh.personnelmanage.utils.UploadUtils
     * @return
     * @throws Exception
     */
    @PostMapping("/updateExcel")
    @ResponseBody
    public JSONObject updateExcel(@RequestParam("file") MultipartFile file, UploadUtils uploadUtils) throws Exception {
        JSONObject json = new JSONObject();
        try {
            //第一个参数为Excel表,第二个参数为从第几行读取Excel的内容,返回值为一个字符串数组集合(每一个数组代表Excel表的一行数据)
            List<String[]> list =  uploadUtils.updateExcelUtils(file, 1);
            //遍历字符串数组集合中的数据
            for (String[] str:list){
                //获取实体类对象封装数据(每一个实体类对象封装Excel表中的一行数据)
                EmployeeInfo employeeCard = new EmployeeInfo();
                //一个工具类,把字符串数组数据封装到实体类对象中,第一个参数为实体类对象,第二个参数为字符串数组
                ExcelValuesHelperUtils.setAttributeValue(employeeCard, str);

                /**
                 * 在完成Excel表中数据写入数据库操作之前先判断
                 * 该实体类对象的是否为数据库已有(进行更新操作)
                 * 该实体类对象的数据为数据库没有(进行插入操作)
                 */
                if (employeeInfoService.findEmployee(Integer.parseInt(str[0])) != null){
                    employeeInfoService.updateEmployee(employeeCard);
                } else {
                    employeeInfoService.insertEmployee(employeeCard);
                }
            }
        } catch (Exception e){
            /**
             * 做一个报错检测
             */
            throw new MyException(ResultEnum.UPDATE_EXCEL_ERROR.getCode(), ResultEnum.UPDATE_EXCEL_ERROR.getMsg());
        }

        //返回客户端的数据
        json.put("code", 1);
        json.put("data", "Excel表上传成功!");
        json.put("ret", true);
        return json;
    }


    /**
     * 需求功能:完成服务器端把数据库中的数据读出客户端功能
     *
     * @param response //把生成的Excel表响应到客户端
     * @throws NoSuchMethodException //报错
     * @throws IllegalAccessException   //报错
     * @throws InvocationTargetException    //报错
     * @throws InstantiationException   //报错
     */
    @GetMapping("/exportExcel")
    public void exportExcel(HttpServletResponse response) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException {
        //先把数据库中的数据查询出来
        List<EmployeeInfo> list1 = employeeInfoService.selectList(null);
        //一个设置Excel表标题信息的工具类,获取Excel表标题的字符串数组
        String[] strings = ExcelTitlesHelperUtils.getEmployeeInfoTitles();
        //一个能把对象集合转换成字符串数组集合的工具类,参数为对象集合,返回字符串数组集合
        List<Object[]> list = ExcelValuesHelperUtils.exportExcel(list1);
        try {
            //一个能创建Excel表并完成发送客户端的工具类,第一个参数为字符串数组集合(Excel表内容),第二个参数为字符串数组(Excel表标题),第三个参数为响应器
            ExportExcelUtils.createExcelUtils(list, strings, response);
        } catch (Exception e){
            //导表发生异常的时候
            throw new MyException(ResultEnum.EXPORT_EXCEL_ERROR.getCode(),ResultEnum.EXPORT_EXCEL_ERROR.getMsg());
        }

    }

}

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

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

相关文章

dijkstra算法相关(使用邻接表和优先队列两种方法)力扣题:743. 网络延迟时间(有向图);1334. 阈值距离内邻居最少的城市(无向图)

具体dijkstra算法就不展开说了&#xff0c;因为太多帖子来解释了&#xff0c;并且这也只是我的个人总结/记录&#xff0c;我会把自己的思考过程写在代码的注释中。 743. 网络延迟时间&#xff08;有向图&#xff09; 有 n 个网络节点&#xff0c;标记为 1 到 n。 给你一个列…

ArduPilot开源飞控之MAVProxy简介

ArduPilot开源飞控之MAVProxy简介 1. 源由2. 特点3. 安装 & 更新3.1 安装Step 1: 烧录raspberryPi镜像Step 2&#xff1a;apt软件包更新Step 3&#xff1a;Raspian系统更新Step 4&#xff1a;安装依赖环境Step 5&#xff1a;安装mavproxyStep 6&#xff1a;配置bash环境 3.…

HttpRunner自动化测试之脚手架工具使用(一键搭建)

脚手架工具使用&#xff1a; 每一个成熟的系统工具&#xff0c;都会有对应的脚手架工具&#xff0c;它可以快速构建项目的必要目录&#xff0c;不必自己一个一个的配置与搭建&#xff0c;只需要执行一些命令即可。 httprunner也提供了脚手架工具&#xff0c;使用步骤如下&…

Python接口自动化-requests模块之post请求

一、源码解析 def post(url, dataNone, jsonNone, **kwargs):r"""Sends a POST request.:param url: URL for the new :class:Request object.:param data: (optional) Dictionary, list of tuples, bytes, or file-likeobject to send in the body of the :cla…

微服务——ES实现自动补全

效果展示 在搜索框根据拼音首字母进行提示 拼音分词器 和IK中文分词器一样的用法&#xff0c;按照下面的顺序执行。 # 进入容器内部 docker exec -it elasticsearch /bin/bash# 在线下载并安装 ./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch…

迭代器模式-遍历聚合对象中的元素

在开发中&#xff0c;我们经常使用到Iterator这个接口&#xff0c;我们很疑惑于这个接口的作用&#xff0c;认为集合已经实现了数据访问的方法&#xff0c;增加Iterator的意义在哪。本文我们将学习迭代器模式&#xff0c;用以探讨Iterator的作用。 1.1 迭代器模式概述 提供一…

地图 SDK gitlab 测试代码环境配置

文章目录 1、Gradle 插件版本和 Gradle 版本2、NDK 路径3、JDK 版本4、修改变量5、重新 BuildQ&A&#xff1a; test 用例启动之后问题问题描述 拉下项目的 dev 分支&#xff0c;然后依赖的 mapsdk-base 也完成下载 &#xff0c;之后就是Android Studio 配置环境 1、Gradle …

【Git】保姆级详解:Git配置SSH Key(密钥和公钥)到github

博主简介&#xff1a;22级计算机科学与技术本科生一枚&#x1f338;博主主页&#xff1a;是瑶瑶子啦每日一言&#x1f33c;: “当人们做不到一些事情的时候&#xff0c;他们会对你说你也同样不能。”——《当幸福来敲门》 克里斯加德纳 Git配置SSH Key 一、什么是Git?二、什么…

如何给Google Chrome增加proxy

1. 先打开https://github.com/KaranGauswami/socks-to-http-proxy/releases 我的电脑是Liunx系统所以下载第一个 2. 下载完之后把这个文件变成可执行文件&#xff0c;可以是用这个命令 chmod x 文件名 3. 然后执行这个命令&#xff1a; ./sthp-linux -p 8080 -s 127.0.0.1:…

Jwt(Json web token)——使用token的权限验证方法 用户+角色+权限表设计 SpringBoot项目应用

目录 引出使用token的权限验证方法流程 用户、角色、权限表设计权限表角色表角色-权限关联表用户表查询用户的权限&#xff08;四表联查&#xff09;数据库的视图 项目中的应用自定义注解拦截器controller层DTO返回给前端枚举类型的json化日期json问题 实体类-DAO 总结 引出 1.…

学习pytorch

学习pytorch 1. 环境安装配置镜像源conda命令记录遇到的问题1. torch.cuda.is_available() False 1. 环境安装 B站小土堆视频 配置镜像源 conda config --show channels conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/mainhttp://www.m…

leetcode 图算法小结

文章目录 1 DFS和BFS797. 所有可能的路径200. 岛屿数量 1 DFS和BFS 深度优先遍历一般采用回溯算法进行解决。回溯算法&#xff0c;其实就是dfs的过程。 void dfs(参数) {处理节点dfs(图&#xff0c;选择的节点); // 递归回溯&#xff0c;撤销处理结果 }广度优先搜索理解为层次…

Java-数据类型

数据类型 数据类型基本数据类型整形浮点字符型布尔类字节 引用数据类型类型转换显式转换隐式转换注意事项 整型提升 作为学习Java的入门知识,在刚开始面试的几场,表现不太好的时候,就有几个面试官会问这个问题,估计此时此刻我在他们的心目中也就是这个问题的层次了吧…当然,当时…

Linux网络服务之自动装机(PXE+KICKSTART)详解

自动装机 一、启动操作系统的方式1.1 系统装机的三种引导方式1.2 系统安装过程1.3 三大文件1.4 如何实现自动装机&#xff1f; 二、PXE2.1 PXE的简介和优点2.2 实现PXE的前提条件2.3 PXE实现过程2.5 要安装的服务2.6 实现PXE2.6.1 前置准备2.6.2 安装并配置DHCP2.6.3 安装并配置…

Nginx负载均衡搭建

目录 1、准备一台装有nginx服务的主机 2、所需模块说明&#xff1a; 3、两台Web服务器主机 4、 修改nginx的配置文件 5、查看结果&#xff1a; 1、准备一台装有nginx服务的主机 LVS—DR集群的搭建_.98℃的博客-CSDN博客 2、所需模块说明&#xff1a; Nginx http 功能模…

【音视频】vms布署说明

目录 外场布署场景&#xff08;99%&#xff09; 研发实验场景&#xff08;1%&#xff09; 高级玩法 证书安装方法 外场布署场景&#xff08;99%&#xff09; 下面两种场景&#xff0c;为本产品主要应用场景&#xff0c;2023-08-08日后&#xff08;统一所有证书&#xff09;…

入门平台工程的福音,麦肯锡刚发布了平台工程蓝图

在软件开发和工程效能领域&#xff0c;平台工程 (Platform Engineering) 是继 DevOps 后逐渐兴起的主流概念。平台工程&#xff0c;顾名思义&#xff0c;就是通过组合一系列标准化的软件开发工具&#xff0c;构建起一个标准化的研发平台。目标则是为了提高开发者体验和生产力。…

构建Docker容器监控系统 (1)(Cadvisor +InfluxDB+Grafana)

目录 Cadvisor InfluxDBGrafana 1. Cadvisor 2.InfluxDB 3.Grafana 开始部署&#xff1a; 下载组件镜像 创建自定义网络 创建influxdb容器 创建数据库和数据库用户 创建Cadvisor 容器 准备测试镜像 创建granafa容器 访问granfana 添加数据源 Add data source 新建 …

python接口自动化之自动发送测试报告邮件

前言 ​ SMTP&#xff08;Simple Mail Transfer Protocol&#xff09;也就是简单邮件传输协议&#xff0c;是一种提供可靠且有效电子邮件传输的协议。python的smtplib模块就提供了一种很方便的途径发送电子邮件&#xff0c;它对smtp协议进行了简单的封装。 ​ python发邮件主…

四 、Mysql 开发

四 、Mysql开发 102 可以使用MySQL直接存储文件吗&#xff1f; 可以使用 BLOB (binary large object)&#xff0c;用来存储二进制大对象的字段类型。 TinyBlob 255 值的长度加上用于记录长度的1个字节(8位) Blob 65K值的长度加上用于记录长度的2个字节(16位) MediumBlob 16M值…