查看进程对应的路径查看端口号对应的进程ubuntu 安装ssh共享WiFi设置MyBatis 使用map类型作为参数,复杂查询(导出数据)

news2024/11/19 5:50:40

Linux 查询当前进程所在的路径

top  命令查询相应的进程号pid

ps -ef |grep 进程名

lsof -I:端口号

netstat -anp|grep 端口号

cd /proc/进程id

cwd 进程运行目录

exe 执行程序的绝对路径

cmdline 程序运行时输入的命令行命令

environ 记录了进程运行时的环境变量

fd 目录下是进程打开或使用的文件的符号连接

查看端口号对应进程

lsof -i :端口号

ubuntu 安装ssh

sudo apt-get install openssh-server

OpenGauss SpringBoot  配置

driver-class-name: org.postgresql.Driver

url:jdbc:postgresql://ip:port/db-name

共享WiFi

将带有无线网卡的电脑设置成热点(一般win10以上的系统)

右键转到设置,可编辑WiFi信息。

MyBatis 使用map类型作为参数,复杂查询(导出数据)

interface声明

/**

 * @author Be.insighted

 */

@Mapper

public interface InterviewerMapper{

    IPage<TInterviewer> query(IPage<?> page, @Param("param") Map<String, ?> param);

}

mapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.*.mapper.InterviewerMapper">
    <!--面试官查询 管理端 -->
    <select id="query" resultType="com.*.entity.TInterviewer" parameterType="map">
        select * from t_table
        where del_flag=0 and valid_flag='0'
        <if test="param.keyword != null and param.keyword != ''">
            and (INSTR(interviewer_name,#{param.keyword}) or interviewer_code = #{param.keyword})  <!--姓名或者工号-->
        </if>
        <if test="param.companyCode != null and param.companyCode != ''">
            and company_code = #{param.companyCode}  <!--企业编号-->
        </if>
        <if test="param.positionCode != null and param.positionCode != ''">
            and position_code = #{param.positionCode}  <!--岗位编码-->
        </if>
        <if test="param.label != null and param.label != ''">
            and INSTR(label,#{param.label})  <!--标签-->
        </if>
        <if test="param.interviewerStatus != null and param.interviewerStatus != ''">
            and interviewer_status = #{param.interviewerStatus} <!--状态-->
        </if>
        <if test="param.interviewerStatus == null">
            and interviewer_status = '0'  <!--状态-->
        </if>
        <if test="param.ids != null">
            AND id in
            <foreach collection="param.ids" index="index" open="(" close=")" item="item" separator=",">
                #{item}
            </foreach>
        </if>
        order by create_time desc
    </select>
</mapper>

对应的controller

    @GetMapping(value = "/interviewer/en/export")
    @ApiOperation(value = "面试官导出")
    public void export(HttpServletResponse response, InterviewerParams params) throws IOException, IllegalAccessException {
        LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
        String companyCode = sysUser.getCompanyId();
        TInterviewer interviewer = interviewerConvert.toEntity(params);
        interviewer.setCompanyCode(companyCode);
        interviewer.setDelFlag(false);
        IPage<?> page = new Page();
        page.setCurrent(params.getPageNo());
        page.setSize(params.getPageSize());
        Map<String, Object> paramMap = new HashMap<>();
        String id = params.getIds();
        if (StrUtil.isNotBlank(id)) {
            EnInfo enInfo = enInfoService.getById(companyCode);
            String companyName = enInfo.getEnName();
            // 导出选中的数据
            paramMap.put("ids", id.split(","));
            List<TInterviewer> records = interviewerService.lambdaQuery().in(TInterviewer::getId, id.split(",")).list();
            List<InterviewerVO> temps = records.stream().map(item -> {
                InterviewerVO vo = new InterviewerVO();
                BeanUtils.copyProperties(item, vo);
                vo.setCompanyName(companyName);
                return vo;
            }).collect(Collectors.toList());
            List<String> positionCodes = records.stream().map(TInterviewer::getPositionCode).collect(Collectors.toList());
            List<String> collect = positionCodes.stream().distinct().collect(Collectors.toList());
            Map<String, String> positionCode2NameMap = new HashMap<>(collect.size());
            if (!CollectionUtils.isEmpty(collect)) {
                List<TPosition> positions = positionService.lambdaQuery().in(TPosition::getPositionCode, collect).list();
                positionCode2NameMap = positions.stream().collect(Collectors.toMap(TPosition::getPositionCode, TPosition::getPositionName));
                for (int i = 0; i < temps.size(); i++) {
                    temps.get(i).setPositionName(positionCode2NameMap.get(temps.get(i).getPositionCode()));
                }
            }
            if (!CollectionUtils.isEmpty(temps)) {
                ExcelUtil<InterviewerVO> excelUtil = new ExcelUtil();
                excelUtil.setClose(false);
                excelUtil.buildExcel(response, temps);
            }
            return;
        } else {
            paramMap.put("keyword", params.getKeyword());
            paramMap.put("interviewerStatus", params.getInterviewerStatus());
            paramMap.put("positionCode", params.getPositionCode());
            paramMap.put("label", params.getLabel());
            paramMap.put("companyCode", companyCode);
        }

        IPage<TInterviewer> pageInfo = interviewerService.query4En(page, paramMap);
        List<TInterviewer> records = pageInfo.getRecords();
        EnInfo enInfo = enInfoService.getById(companyCode);
        String companyName = enInfo.getEnName();
        List<InterviewerVO> temps = records.stream().map(item -> {
            InterviewerVO vo = new InterviewerVO();
            BeanUtils.copyProperties(item, vo);
            vo.setCompanyName(companyName);
            return vo;
        }).collect(Collectors.toList());
        List<String> positionCodes = records.stream().map(TInterviewer::getPositionCode).collect(Collectors.toList());
        List<String> collect = positionCodes.stream().distinct().collect(Collectors.toList());
        Map<String, String> positionCode2NameMap = new HashMap<>(collect.size());
        if (!CollectionUtils.isEmpty(collect)) {
            List<TPosition> positions = positionService.lambdaQuery().in(TPosition::getPositionCode, collect).list();
            positionCode2NameMap = positions.stream().collect(Collectors.toMap(TPosition::getPositionCode, TPosition::getPositionName));
            for (int i = 0; i < temps.size(); i++) {
                temps.get(i).setPositionName(positionCode2NameMap.get(temps.get(i).getPositionCode()));
            }
        }

        if (!CollectionUtils.isEmpty(temps)) {
            ExcelUtil<InterviewerVO> excelUtil = new ExcelUtil();
            excelUtil.setClose(false);
            excelUtil.buildExcel(response, temps);
        }
    }

导出Excel工具类

package com.*.utils;

import cn.com.*.annotation.Column;
import cn.com.*.annotation.Title;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.io.IoUtil;
import cn.hutool.core.util.ReflectUtil;
import cn.hutool.core.util.URLUtil;
import lombok.Data;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.ss.usermodel.BorderStyle;
import org.apache.poi.ss.usermodel.FillPatternType;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.apache.poi.ss.usermodel.VerticalAlignment;
import org.apache.poi.ss.util.CellRangeAddress;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.OutputStream;
import java.lang.reflect.Field;
import java.math.BigDecimal;
import java.net.URLEncoder;
import java.sql.Time;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * @author Be.insighted
 * @title: ExcelUtil
 * @description: 默认每个sheet最多50000条数据  超过另起一个sheet
 * @date @date 2023-11-14 15:42
 */
@Data
public class ExcelUtil<T> {

    /**
     * 设置每行的宽度 每个值的index 对应第几列  如{1500,1000} 表示第一个1500长度 第二个1000长度 以此类推
     */
    private int[] size;

    /**
     * 查询条件文本描述
     */
    private String queryCriteria;

    /**
     * 是否关闭流 默认关闭
     */
    private boolean close = true;

    public ExcelUtil() {
        this.queryCriteria = null;
    }

    public ExcelUtil(String queryCriteria) {
        this.queryCriteria = queryCriteria;
    }

    public void buildExcel(HttpServletResponse response, List<T> list, String filename) throws IOException, IllegalAccessException {
        String name = Objects.isNull(filename) ? "" : filename;
        OutputStream output = response.getOutputStream();
        response.reset();
        response.setCharacterEncoding("UTF-8");
        name = URLEncoder.encode(name + DateUtil.format(new Date(), "yyyyMMddHHmmss") + ".xls", "UTF-8");
        response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");
        response.setHeader("Content-Disposition", "attachment; filename=" + URLUtil.encode(name, "UTF-8"));
        response.setHeader("Pragma", "no-cache");
        response.setHeader("Expires", "0");
        response.setContentType("application/msexcel;charset=utf-8");

        List<String> parameter = new ArrayList<>();
        List<Field> fieldArrayList = new ArrayList<>();
        if (CollUtil.isNotEmpty(list)) {
            Class<?> clazz = list.get(0).getClass();
            Field[] fields = clazz.getDeclaredFields();
            for (Field field : fields) {
                if (field.getAnnotation(Column.class) != null) {
                    if (!StringUtils.isEmpty(field.getAnnotation(Column.class).name())) {
                        parameter.add(field.getAnnotation(Column.class).name());
                    } else {
                        parameter.add(field.getName());
                    }
                    fieldArrayList.add(field);
                }
            }
            Title title = clazz.getDeclaredAnnotation(Title.class);
            if (title != null) {
                name = title.title();
            }
        } else {
            return;
        }

        HSSFWorkbook hssfWorkbook = new HSSFWorkbook();
        try {
            final int sheetNum = (int) Math.ceil((float) list.size() / 50000);
            HSSFCellStyle style = hssfWorkbook.createCellStyle();
            style.setFillForegroundColor((short) 22);
            style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
            style.setBorderBottom(BorderStyle.THIN);
            style.setBorderLeft(BorderStyle.THIN);
            style.setBorderRight(BorderStyle.THIN);
            style.setBorderTop(BorderStyle.THIN);
            style.setAlignment(HorizontalAlignment.CENTER);
            style.setVerticalAlignment(VerticalAlignment.CENTER);
            //2022年4月8日17:16:09 增加,解决:导出数据之后数据并未换行,只有双击之后才展现换行效果
            style.setWrapText(true);

            HSSFFont font = hssfWorkbook.createFont();
            font.setFontHeightInPoints((short) 12);
            style.setFont(font);
            HSSFCellStyle style2 = hssfWorkbook.createCellStyle();
            style2.setAlignment(HorizontalAlignment.CENTER);
            //垂直居中
            style2.setVerticalAlignment(VerticalAlignment.CENTER);
            //2022年4月8日17:16:09 增加,解决:导出数据之后数据并未换行,只有双击之后才展现换行效果
            style2.setWrapText(true);

            for (int n = 1; n <= sheetNum; n++) {
                final HSSFSheet sheet = hssfWorkbook.createSheet("sheet" + "-" + n);
                List<T> toOut = null;
                if (sheetNum > 1) {
                    if (n == sheetNum) {
                        toOut = getSubList(list, 0, list.size() - 1);
                    } else {
                        toOut = getSubList(list, 0, 50000);
                    }
                } else {
                    toOut = list;
                }
                if (CollUtil.isNotEmpty(toOut)) {
                    Class<?> clazz = toOut.get(0).getClass();
                    HSSFRow row1 = sheet.createRow(0);
                    HSSFCell cellTitle = row1.createCell(0);
                    cellTitle.setCellStyle(style);
                    Title title = clazz.getDeclaredAnnotation(Title.class);
                    if (title != null) {
                        if (StringUtils.isNotBlank(queryCriteria)) {
                            cellTitle.setCellValue(title.title() + "                         " + queryCriteria);
                        } else {
                            cellTitle.setCellValue(title.title());
                        }
                        sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, parameter.size() - 1));
                    }
                    if (getSize() != null && getSize().length > 0) {
                        for (int i = 0; i < getSize().length; i++) {
                            sheet.setColumnWidth(i, getSize()[i]);
                        }
                    } else {
                        int length = parameter.size();
                        this.size = new int[length];
                        for (int i = 0; i < length; i++) {
                            this.size[i] = 10000;
                            sheet.setColumnWidth(i, getSize()[i]);
                        }
                    }
                    HSSFRow row2 = sheet.createRow(1);
                    for (int i = 0; i < parameter.size(); i++) {
                        HSSFCell cell = row2.createCell(i);
                        cell.setCellStyle(style);
                        cell.setCellValue(parameter.get(i));
                    }
                    for (int i = 0; i < toOut.size(); i++) {
                        HSSFRow row = sheet.createRow(i + 2);
                        for (int j = 0; j < fieldArrayList.size(); j++) {
                            Field field = fieldArrayList.get(j);
                            Object value = ReflectUtil.getFieldValue(toOut.get(i), field);
                            HSSFCell cell = row.createCell(j);
                            cell.setCellStyle(style2);
                            Column column = field.getDeclaredAnnotation(Column.class);
                            if (value != null && !"null".equals(value)) {
                                String rule = column.timeFormat();
                                boolean rate = column.rate();
                                boolean condition = StringUtils.isNotBlank(rule) && (field.getType().equals(Date.class) ||
                                    field.getType().equals(java.sql.Date.class) ||
                                    field.getType().equals(Time.class) ||
                                    field.getType().equals(Timestamp.class));
                                if (condition) {
                                    SimpleDateFormat simpleDateFormat = new SimpleDateFormat(rule);
                                    cell.setCellValue(simpleDateFormat.format(value));
                                } else if (rate && field.getType().equals(BigDecimal.class)) {
                                    BigDecimal valueReal = (BigDecimal) value;
                                    cell.setCellValue(valueReal.multiply(new BigDecimal("100")) + "%");
                                } else {
                                    cell.setCellValue(value.toString());
                                }

                            } else {
                                if (field.getType().equals(Integer.class) || field.getType().equals(Long.class) ||
                                    field.getType().equals(Double.class) || field.getType().equals(Float.class) ||
                                    field.getType().equals(BigDecimal.class)) {
                                    cell.setCellValue(0);
                                } else {
                                    cell.setCellValue("");
                                }
                            }
                        }
                    }
                }
            }
            hssfWorkbook.write(output);
        } finally {
            IoUtil.close(hssfWorkbook);
            if (close) {
                IoUtil.close(output);
            }
        }
    }

    /**
     * 截取list  含左不含右
     *
     * @param list
     * @param fromIndex
     * @param toIndex
     * @param <T>
     * @return
     */
    private static <T> List<T> getSubList(List<T> list, int fromIndex, int toIndex) {
        List<T> listClone = list;
        List<T> sub = listClone.subList(fromIndex, toIndex);
        return new ArrayList<>(sub);
    }

}

column、title注解定义

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
@Inherited
@Documented
public @interface Column {

    String name() default "";

    String timeFormat() default "";

    boolean rate() default false;
}

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Inherited
@Documented
public @interface Title {
    String title() default "";

}

导出的对象定义

@Data
@Accessors(chain = true)
@ApiModel(value = "面试官表示")
@Title(title = "面试官信息")
public class InterviewerVO implements Serializable {
    private String id;

    /**
     * 企业编码
     */
    @Excel(name = "企业编码")
    @Column(name = "企业编码")
    @Dict( dictTable="sys_depart",dicCode="id",dicText="depart_name")
    private String companyCode;

    /**
     * 企业名称
     */
    @Excel(name = "企业名称")
    @Column(name = "企业名称")
    private String companyName;

    /**
     * 面试官名称
     */
    @Excel(name = "面试官名称")
    @Column(name = "面试官名称")
    private String interviewerName;

    /**
     * 面试官编号,取黄河人才网的id
     */
    private String interviewerCode;

    /**
     * 部门
     */
    private String department;
    /**
     * 岗位名称
     */
    @Excel(name = "岗位名称")
    @Column(name = "岗位名称")
    private String positionName;


    /**
     * 岗位code
     */
    private String positionCode;

    /**
     * 标签
     */
    @Excel(name = "标签")
    @Column(name = "标签")
    private String label;
    /**
     * 联系方式
     */
    @Excel(name = "联系方式")
    @Column(name = "联系方式")
    private String contactInfo;

    /**
     * 面试官类别
     */
    @Dict(dicCode = "interviewer_type")
    private String interviewerType;

    /**
     * 面试官状态
     */
    @Dict(dicCode = "interviewer_status")
    private String interviewerStatus;

    /**
     * 面试官有效标识
     */
    private String validFlag;

    /**
     * 创建人姓名
     */
    @Excel(name = "创建人")
    @Column(name = "创建人")
    private String createName;

    /**
     * 创建人工号
     */
    private String createCode;

    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date createTime;
    /**
     * 更新人
     */
    private String updateName;
    /**
     * 更新时间
     */
    private Date updateTime;
}


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

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

相关文章

互联网加竞赛 基于YOLO实现的口罩佩戴检测 - python opemcv 深度学习

文章目录 0 前言1 课题介绍2 算法原理2.1 算法简介2.2 网络架构 3 关键代码4 数据集4.1 安装4.2 打开4.3 选择yolo标注格式4.4 打标签4.5 保存 5 训练6 实现效果6.1 pyqt实现简单GUI6.3 视频识别效果6.4 摄像头实时识别 7 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xf…

科普:嵌入式多核并行仿真

自信息技术革命以来&#xff0c;计算机一直被应用在各种复杂的数据处理中&#xff0c;如火箭弹道&#xff0c;高能物理和生物学数据等。随着嵌入式领域的多样化需求的不断丰富&#xff0c;多核CPU的应用也越来越广泛&#xff1a;嵌入式系统通常需要同时处理多个任务和实时数据&…

数字藏品如何赋能线下实体?以 BOOMSHAKE 潮流夜店为例

此篇为报告内容精华版&#xff0c;更多详细精彩内容请点击 完整版 在数字化浪潮的推动下&#xff0c;品牌和企业正在迎来一场前所未有的变革。传统市场营销策略逐渐让位于新兴技术&#xff0c;特别是非同质化代币&#xff08;NFT&#xff09;的应用。这些技术不仅改变了品牌资…

牵绳遛狗你我他文明家园每一天,助力共建文明社区,基于YOLOv6开发构建公共场景下未牵绳遛狗检测识别系统

遛狗是每天要打卡的事情&#xff0c;狗狗生性活泼爱动&#xff0c;一天不遛就浑身难受&#xff0c;遛狗最重要的就是要拴绳了&#xff0c;牵紧文明绳是养犬人的必修课。外出遛狗时&#xff0c;主人手上的牵引绳更多是狗狗生命健康的一道重要屏障。每天的社区生活中&#xff0c;…

stable diffusion 基础教程-提示词之艺术风格用法

展现夕阳 golden hour, (rim lighting):1.2, warm tones, sun flare, soft shadows, vibrant colors, hazy glow, painterly effect, dreamy atmosphere阴影 chiaroscuro, (high contrast):1.2, dramatic shadows, bold highlights, moody atmosphere, captivating inte…

[通俗易懂]c语言中指针变量和数值之间的关系

一、指针变量的定义 在C语言中&#xff0c;指针变量是一种特殊类型的变量&#xff0c;它存储的是另一个变量的内存地址。指针变量可以用来间接访问和操作内存中的其他变量。指针变量的定义如下&#xff1a; 数据类型 *指针变量名&#xff1b;其中&#xff0c;数据类型可以是任…

年终总结——平凡又不平凡的2023

前言 总结不知道该如何写起&#xff0c;也不知该如何建立这一篇文章的大致框架&#xff0c;只知道我的2023大概也就分成两大块罢了。说起2023一整年&#xff0c;只能用平凡而又不平凡来形容&#xff0c;平凡在我依旧没有什么太突出的技术点&#xff0c;专业水平也一直处于龟速…

二刷Laravel 教程(构建页面)总结Ⅰ

L01 Laravel 教程 - Web 开发实战入门 ( Laravel 9.x ) 一、功能 1.会话控制&#xff08;登录、退出、记住我&#xff09; 2.用户功能&#xff08;注册、用户激活、密码重设、邮件发送、个人中心、用户列表、用户删除&#xff09; 3.静态页面&#xff08;首页、关于、帮助&am…

AIDEGen + Android Studio本地环境调试代码

AIDEGen是谷歌在Android10推出的一个自动生成项目配置文件的工具&#xff0c;可以 Android Studio or IntelliJ IDEA等查看调试源码. 1、下载Android Studio放在 /opt文件夹下 2、编译sdk source build/envsetup.sh lunch sdk-eng make sdk 3、查看out/host/linux-x86/fr…

蒙特卡洛采样【python实例】

文章目录 一、均匀分布采样二、直接采样例 三、拒绝接受采样实例 四、重要性采样&#xff08;1&#xff09; 目的&#xff08;2&#xff09; 原理&#xff08;2.1&#xff09; π ( x ) 归一化 \pi(x)归一化 π(x)归一化&#xff08;2.2&#xff09;若 π ( x ) ( 即 p ( x ) …

2019数据结构----队列真题

(1)允许增加空间&#xff0c;空间可以改变所以是通过链表,链式存储实现的&#xff1b;占用的空间可以重复使用&#xff0c;所以是循环队列。 (2)队空&#xff1a;frontrear;队满&#xff1a;frontrear->next

TypeScript Array(数组)

目录 1、数组初始化 2、Array 对象 3、数组迭代 4、数组在函数中的使用 4.1、作为参数传递给函数 4.2、作为函数的返回值 5、数组方法 数组对象是使用单独的变量名来存储一系列的值。数组非常常用。假如你有一组数据&#xff08;例如&#xff1a;网站名字&#xff09;…

【整理总结】几十个程序员硬核工具

在我认识的所有程序员里&#xff0c;每个人几乎都有专属于自己的常用工具和相关资源&#xff0c;今天给大家奉上数几十个程序员硬核工具&#xff0c;我相信这里总有一款工具是属于你的&#xff01; 程序员生产力工具大全如下&#xff1a; Idea-Intellij IDEA (java 编程语言 开…

视频智能分析/云存储平台EasyCVR接入海康SDK,通道名称未自动更新该如何解决?

视频监控GB28181平台EasyCVR能在复杂的网络环境中&#xff0c;将分散的各类视频资源进行统一汇聚、整合、集中管理&#xff0c;在视频监控播放上&#xff0c;TSINGSEE青犀视频安防监控汇聚平台可支持1、4、9、16个画面窗口播放&#xff0c;可同时播放多路视频流&#xff0c;也能…

Vue3——element-plus表格组件怎样得到当前行的id

实现方法&#xff1a; <el-table-column property"address" label"操作" show-overflow-tooltip header-align"center" v-slot"scope"><el-button type"success" click"editBtn(scope.row.id)">编辑…

系列三十三、如何将一个springboot jar做成批处理文件

一、将一个springboot jar做成批处理文件 1.1、需求 最近在写【Spring Cloud Alibaba】的系列文章&#xff0c;其中有一个部分是安装Sentinel控制台&#xff0c;使用命令执行完全没有问题&#xff0c;但是命令太长了&#xff0c;每次启动时都要找笔记&#xff0c;然后粘贴到命…

NSSCTF hate eat snake

开启其环境: 将网页另存本地&#xff0c;搜索网页和snake.js是否包含flag文本&#xff0c;没有发现。 审计snake.js。 第7行定义了游戏的速度this.speed this.oldSpeed speed || 10 ; 全文搜索speed&#xff0c;在第237行发现自增代码this.speed; 注释或者删除自增代码&am…

从技术角度分析:HTTP 和 HTTPS 有何不同

网络安全问题正变得日益重要&#xff0c;而 HTTP 与 HTTPS 对用户数据的保护十分关键。本文将深入探讨这两种协议的特点、工作原理&#xff0c;以及保证数据安全的 HTTPS 为何变得至关重要。 认识 HTTP 与 HTTPS HTTP 的工作原理 HTTP&#xff0c;全称超文本传输协议&#xf…

【EI会议征稿通知】第十届先进制造技术与应用材料国际学术会议(ICAMMT 2024)

第十届先进制造技术与应用材料国际学术会议&#xff08;ICAMMT 2024&#xff09; The 10th International Conference on Applied Materials and Manufacturing Technology 至今ICAMMT已连续举办九届&#xff0c;会议先后在三亚、杭州、清远等城市成功召开。每一届最终征集收…

高校电力能耗监测精细化管理系统,提升能源利用效率的利器

电力是高校不可离开的重要能源&#xff0c;为学校相关管理人员提供在线用能查询统计等服务。通过对学校照明用电、空调用电等数据的采集、监控、分析&#xff0c;为学校电能管理制定合理的能源政策提供参考。同时&#xff0c;也可以培养学生的节能意识&#xff0c;学校后勤电力…