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

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;
}


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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

[HCTF 2018]Warmup

[HCTF 2018]Warmup wp 进入页面&#xff1a; 查看源码&#xff1a; 发现提示&#xff1a;source.php &#xff0c;直接访问&#xff0c;得到源代码&#xff1a; <?phphighlight_file(__FILE__);class emmm{public static function checkFile(&$page){$whitelist [&qu…

ROS-urdf集成gazebo

文章目录 一、URDF与Gazebo基本集成流程二、URDF集成Gazebo相关设置三、URDF集成Gazebo实操四、Gazebo仿真环境搭建 一、URDF与Gazebo基本集成流程 1.创建功能包 创建新功能包&#xff0c;导入依赖包: urdf、xacro、gazebo_ros、gazebo_ros_control、gazebo_plugins 2.编写URD…

2023年全国职业院校技能大赛(高职组)“云计算应用”赛项赛卷⑨

2023年全国职业院校技能大赛&#xff08;高职组&#xff09; “云计算应用”赛项赛卷9 目录 需要竞赛软件包环境以及备赛资源可私信博主&#xff01;&#xff01;&#xff01; 2023年全国职业院校技能大赛&#xff08;高职组&#xff09; “云计算应用”赛项赛卷9 模块一 …

阿里云服务器的tcp端口无法访问(云服务厂家问题?)

问题->无法访问 阿里云服务器的tcp端口 最近一台阿里云服务器的一个端口61616无法访问&#xff0c;在服务器内用外网地ip发现无法访问&#xff0c;用内网ip访问是正常的&#xff0c;通过技术排查&#xff1a; 解决->无法访问 阿里云服务器的tcp端口 1 配置官网的安全组…

ArkTS - 数据持久化

一、概述 应用数据持久化&#xff0c;是指应用将内存中的数据通过文件或数据库的形式保存到设备上。内存中的数据形态通常是任意的数据结构或数据对象&#xff0c;存储介质上的数据形态可能是文本、数据库、二进制文件等。 持久&#xff08;Persistence&#xff09;&#xff0…

Unity编辑器扩展(外挂)

每日一句:未来的样子藏在现在的努力里 目录 什么是编译器开发 C#特性[System.Serializable] 特殊目录 命名空间 /*检视器属性控制*/ //添加变量悬浮提示文字 //给数值设定范围&#xff08;最小0&#xff0c;最大150&#xff09; //指定输入框&#xff0c;拥有5行 //默认…

机器学习激活函数

激活函数 激活函数是人工神经网络中的一个重要组成部分。它们用于向神经网络中添加非线性因素&#xff0c;使得网络能够解决复杂问题&#xff0c;如图像识别、语言处理等。激活函数的作用是决定一个神经元是否应该被激活&#xff0c;也就是说&#xff0c;它帮助决定神经元的输…

jupyter notebook 配置conda 虚拟环境python

conda创建python环境 conda create -n openvoice python3.9 激活环境 source activate openvoice 在虚拟环境中安装ipykernel pip install ipykernel 添加虚拟环境进到 jupyter notebook python -m ipykernel install --user --name openvoice --display-name openvoice …

计算机网络必考大题

TCP / IP 五层协议或OSI七层参考模型 CRC校验码&#xff08;也称为循环冗余码&#xff09; 1、根据生成多项式P(x)确定除数&#xff1b; 2、给生成多项式的P(x)的最高阶补0&#xff1b; 3、给信息位(补0后)与除数做异或运算&#xff0c;得到余数。 不相同为1 ^ 4、得到的余数补…

免费申请eu.org域名,开启个人网站之旅

介绍 eu.org的免费域名注册服务是由OpenTLD B.V.提供的。相比于其他免费域名注册服务&#xff0c;eu.org的域名后缀更加独特。同时&#xff0c;eu.org的域名注册也比较简单&#xff0c;只需要填写一些基本信息&#xff0c;就可以获得自己的免费域名。 注册账号 点击进入登…

如何在Github上快速下载代码

由于网络环境问题&#xff0c;有时候比较难从Github上下载代码&#xff0c;我归纳了以下三种从Github上下载代码的方法&#xff0c;如何选择使用&#xff0c;可根据你的实际情况&#xff1a; 目录 方法一&#xff1a;使用 “Download ZIP” 按钮 方法二&#xff1a;使用 Git…

代码随想录刷题笔记(DAY 10)

今日总结&#xff1a;快要期末考试了&#xff0c;现在在疯狂速成&#xff0c;今天稍微缓和了一点&#xff0c;应该能保证继续每天刷题&#xff0c;欠下的那些寒假补上。 Day 10 01. 用栈实现队列&#xff08;No. 232&#xff09; 题目链接 代码随想录题解 1.1 题目 请你仅…

【JAVA基础】JVM之类加载--双亲委派机制

目录 1. 类加载的过程描述&#xff1a;看图&#xff1a;解释&#xff1a; 2. 那么类加载器都有哪些呢3. 双亲委派机制3.1 双亲委派机制的过程3.2 图看委派过程3.3 为什么要设计双亲委派机制 4. 自定义类加载器4.1 如何定义自己的类加载器&#xff1f; 1. 类加载的过程 描述&am…

YOLOv8 + openVINO 多线程数据读写顺序处理

多线程数据读写顺序处理 一个典型的生产者-消费者模型&#xff0c;在这个模型中&#xff0c;多个工作线程并行处理从共享队列中获取的数据&#xff0c;并将处理结果以保持原始顺序的方式放入另一个队列。 多线程处理模型&#xff0c;具体细节如下&#xff1a; 1.数据:数据里必…

Java学习,一文掌握Java之SpringBoot框架学习文集(4)

&#x1f3c6;作者简介&#xff0c;普修罗双战士&#xff0c;一直追求不断学习和成长&#xff0c;在技术的道路上持续探索和实践。 &#x1f3c6;多年互联网行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责人。 &#x1f389;欢迎 &#x1f44d;点赞✍评论…

GBASE南大通用SQL API 中的 SQL

ESQL 产品为GBASE南大通用数据库 GBase 8s SQL API&#xff08;应用程序编程接口&#xff09;。 GBase 为 C 编程语言产生 SQL API。 下图展示 SQL API 产品如何工作。您编写您在其中将 SQL 语句处理作为可执行代码的源 程序。嵌入式 SQL 预处理器处理您的源程序&#xff0c;它…

【QML COOK】- 008-自定义属性

前面介绍了用C定义QML类型&#xff0c;通常在使用Qt Quick开发项目时&#xff0c;C定义后端数据类型&#xff0c;前端则完全使用QML实现。而QML类型或Qt Quick中的类型时不免需要为对象增加一些属性&#xff0c;本篇就来介绍如何自定义属性。 1. 创建项目&#xff0c;并编辑Ma…

Qt 6之六:Qt Designer介绍

Qt 6之六&#xff1a;Qt Designer介绍 Qt Designer是一个可视化的用户界面设计工具&#xff0c;用于创建Qt应用程序的用户界面&#xff0c;允许开发人员通过拖放和布局来设计和创建GUI界面。 Qt 6之一&#xff1a;简介、安装与简单使用 https://blog.csdn.net/cnds123/articl…

作用域与作用域链

作用域与作用域链 一、什么是作用域 作用域就是一个独立的代码区域&#xff0c;域内的变量不会暴露到外部&#xff0c;外部无法访问&#xff0c;也就是说具有隔离性。 function outFun() {var inVariable "内层变量2"; } outFun(); // inVariable 的作用域仅在函…

matlab绘图修改坐标轴数字字体大小及坐标轴自定义间隔设置

一、背景 在matlab使用plot函数绘图后&#xff0c;生成的图片坐标轴数字字体大小及间隔可能并不符合我们的要求&#xff0c;因此需要自定义修改&#xff0c;具体方法如下 二、修改坐标轴数字字体大小 只需添加以下命令即可&#xff1a; set(gca,FontName,Times New Roman,F…