MyBatis-Plus-Generator代码生成器(Version 3.5.1+)使用

2023-11-11

这几天研究了一下MyBatis-Plus-Generator新版本3.5.1+的使用,做个笔记方便自己使用。

maven配置

 <!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-boot-starter -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.1</version>
        </dependency>
        <!-- 数据库连接池-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.2.6</version>
        </dependency>

        <!--lombok依赖-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>

        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.5.1</version>
        </dependency>

        <!--Mysql数据库驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.16</version>
        </dependency>

        <dependency>
            <groupId>org.freemarker</groupId>
            <artifactId>freemarker</artifactId>
            <version>2.3.28</version>
            <scope>compile</scope>
        </dependency>

application.yml

spring:
  datasource:
    #type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/test?allowMutiQueries=true&rewriteBatchedStatements=true&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&useSSL=false&autoReconnect=true&allowPublicKeyRetrieval=true&allowPublicKeyRetrieval=true
    username: root
    password: 123456
    hikari:
      idle-timeout: 60000
      maximum-pool-size: 30
      minimum-idle: 10
      max-lifetime: 12
      connection-test-query: SELECT 1
mybatis-plus:
  mapper-locations: classpath:/mapper/*.xml
  type-aliases-package: com.example.mybatisplusdemo.module.entity
  configuration:
    auto-mapping-behavior: partial
    map-underscore-to-camel-case: true
    call-setters-on-nulls: true
    default-fetch-size: 1000
  global-config:
    db-config:
      id-type: auto

新建一个CodeGenerator类,代码如下:

package com.example.mybatisplusdemo.CodeGenerator;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import com.baomidou.mybatisplus.generator.fill.Column;

import java.util.*;

/**
 * @author juzi
 * @date 2022/8/1 14:50
 */
public class CodeGenerator {
    // 基础信息配置
    /**
     * 数据库连接字符
     */
    private static final String URL = "!!需要填写!!";

	/**
     * 示例:private static final String PARENT_PACKAGE_NAME = "com.example.mybatisplusdemo";
     */
    private static final String PARENT_PACKAGE_NAME = "!!需要填写!!";
    
    /**
     * 数据库用户名
     */
    private static final String USERNAME = "root";
    /**
     * 数据库密码
     */
    private static final String PASSWORD = "123456";
    /**
     * 项目根路径
     */
    private static final String PROJECT_ROOT_PATH = System.getProperty("user.dir");

    /**
     * 执行此处
     */
    public static void main(String[] args) {
        // 简单示例,适用于单模块项目
        simpleGenerator();
        // 完整示例,适用于多模块项目
//        completeGenerator();
    }

    /**
     * 【单模块】简单的实现方案
     */
    protected static void simpleGenerator() {

        // 包路径
        String packagePath = PROJECT_ROOT_PATH + "/src/main/java";
        // XML文件的路径
        String mapperXmlPath = PROJECT_ROOT_PATH + "/src/main/resources/mapper";

        // 开始执行代码生成
        FastAutoGenerator.create(URL, USERNAME, PASSWORD)
                // 1. 全局配置
                .globalConfig(builder -> builder
                        // 作者名称
                        .author("橘子")
                        // 开启覆盖已生成的文件。注释掉则关闭覆盖。
                        .fileOverride()
                        // 禁止打开输出目录。注释掉则生成完毕后,自动打开生成的文件目录。
                        .disableOpenDir()
                        // 指定输出目录。如果指定,Windows生成至D盘根目录下,Linux or MAC 生成至 /tmp 目录下。
                        .outputDir(packagePath)
                        // 开启swagger2.注释掉则默认关闭。
                        // .enableSwagger()
                        // 指定时间策略。
                        .dateType(DateType.TIME_PACK)
                        // 注释时间策略。
                        .commentDate("yyyy-MM-dd")
                )

                // 2. 包配置
                .packageConfig((scanner, builder) -> builder
                        // 设置父表名
                        .parent(PARENT_PACKAGE_NAME)
                        .moduleName(scanner.apply("请输入模块名:"))
                        // mapper.xml 文件的路径。单模块下,其他文件路径默认即可。
                        .pathInfo(Collections.singletonMap(OutputFile.mapperXml, mapperXmlPath))
                )

                // 3. 策略配置
                .strategyConfig((scanner, builder) -> builder.addInclude(getTables(scanner.apply("请输入表名,多个英文逗号分隔?生成所有表,请输入[all]:")))
                        // 阶段1:Entity实体类策略配置
                        .entityBuilder()
                        // 开启生成实体时生成字段注解。
                        // 会在实体类的属性前,添加[@TableField("nickname")]
                        .enableTableFieldAnnotation()
                        // 逻辑删除字段名(数据库)。
                        .logicDeleteColumnName("is_delete")
                        // 逻辑删除属性名(实体)。
                        // 会在实体类的该字段属性前加注解[@TableLogic]
                        .logicDeletePropertyName("isDelete")
                        // 会在实体类的该字段上追加注解[@TableField(value = "create_time", fill = FieldFill.INSERT)]
                        .addTableFills(new Column("create_time", FieldFill.INSERT))
                        // 会在实体类的该字段上追加注解[@TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)]
                        .addTableFills(new Column("update_time", FieldFill.INSERT_UPDATE))
                        // 阶段2:Mapper策略配置
                        .mapperBuilder()
                        // 开启 @Mapper 注解。
                        // 会在mapper接口上添加注解[@Mapper]
                        .enableMapperAnnotation()
                        // 启用 BaseResultMap 生成。
                        // 会在mapper.xml文件生成[通用查询映射结果]配置。
                        .enableBaseResultMap()
                        // 启用 BaseColumnList。
                        // 会在mapper.xml文件生成[通用查询结果列 ]配置
                        .enableBaseColumnList()
                        // 阶段4:Controller策略配置
                        .controllerBuilder()
                        // 会在控制类中加[@RestController]注解。
                        .enableRestStyle()
                        // 开启驼峰转连字符
                        .enableHyphenStyle()
                        .build()
                )

                // 4. 模板引擎配置,默认 Velocity 可选模板引擎 Beetl 或 Freemarker
                //.templateEngine(new BeetlTemplateEngine())
                .templateEngine(new FreemarkerTemplateEngine())

                // 5. 执行
                .execute();
    }

    /**
     * 【多模块使用】完整的实现方案
     */
    protected static void completeGenerator() {
        //【1】基础信息配置
        // 指定模块名,用于生成的java文件的import。
        String moduleName = scanner();
        // 六个文件的路径。多模块项目下,一般来说每个文件的路径都是不同的(根据项目实际,可能在不同的模块下)。
        String entityPath = PROJECT_ROOT_PATH + "/project-entity/src/main/java/com/yourdomain/projectname/entity/" + moduleName;
        String mapperPath = PROJECT_ROOT_PATH + "/project-dao/src/main/java/com/yourdomain/projectname/mapper/" + moduleName;
        String mapperXmlPath = PROJECT_ROOT_PATH + "/project-dao/src/main/resources/mapper/" + moduleName;
        String servicePath = PROJECT_ROOT_PATH + "/project-service/src/main/java/com/yourdomain/projectname/service/" + moduleName;
        String serviceImplPath = PROJECT_ROOT_PATH + "/project-service/src/main/java/com/yourdomain/projectname/service/" + moduleName + "/impl";
        String controllerPath = PROJECT_ROOT_PATH + "/project-controller/src/main/java/com/yourdomain/projectname/controller/" + moduleName;
        // 关于以上写法的解释:
        // --- 假设我们的项目有四个模块:project-entity、project-dao、project-service、project-controller
        // --- project-entity 的包路径:com.yourdomain.projectname.eneity,
        //   ---则生成system模块下的sys_user表,生成的实体文件将放在:com.yourdomain.projectname.entity.system包下,SysUser.java。
        // --- project-dao 的包路径:com.yourdomain.projectname.mapper,
        //   ---则生成system模块下的sys_user表,生成的mapper接口文件将放在:com.yourdomain.projectname.mapper.system包下,类名为:SysUserMapper.java。
        // --- 其他文件以此类推,即每个模块放MVC结构中对应的类型文件。
        // --- 注意:这里最后的文件路径修改了,下文配置中的【2 包配置】中的包路径也要同步修改!否则生成的java文件,首句import会报错。原因是路径错误。

        // 【2】开始执行代码生成
        FastAutoGenerator.create(URL, USERNAME, PASSWORD)
                // 1. 全局配置
                .globalConfig(builder -> builder
                        // 作者名称
                        .author("拾年之璐")
                        // 开启覆盖已生成的文件。注释掉则关闭覆盖。请谨慎开启此选项!
                        // .fileOverride()
                        // 禁止打开输出目录。注释掉则生成完毕后,自动打开生成的文件目录。
                        .disableOpenDir()
                        // 指定输出目录。多模块下,每个类型的文件输出目录不一致,在包配置阶段配置。
                        // .outputDir(packagePath)
                        // 开启swagger2。注释掉则默认关闭。
                        // .enableSwagger()
                        // 开启 kotlin 模式。注释掉则关闭此模式
                        // .enableKotlin()
                        // 指定时间策略。
                        .dateType(DateType.TIME_PACK)
                        // 注释时间策略。
                        .commentDate("yyyy-MM-dd")
                )

                // 2. 包配置
                .packageConfig((scanner, builder) -> builder
                        // 阶段1:各个文件的包名设置,用来拼接每个java文件的第一句:package com.XXX.XXX.XXX.xxx;
                        // 父包名配置
                        .parent(PARENT_PACKAGE_NAME)
                        // 输入模块名。此模块名会在下面的几个包名前加。多模块项目,请根据实际选择是否添加。
                        // .moduleName(moduleName)
                        .entity("entity." + moduleName)
                        .mapper("mapper." + moduleName)
                        .service("service." + moduleName)
                        .serviceImpl("service." + moduleName + ".impl")
                        .controller("controller." + moduleName)
                        .other("other")
                        // 阶段2:所有文件的生成路径配置
                        .pathInfo(
                                new HashMap<OutputFile, String>() {{
                                    // 实体类的保存路径
                                    put(OutputFile.entity, entityPath);
                                    // mapper接口的保存路径
                                    put(OutputFile.mapper, mapperPath);
                                    // mapper.xml文件的保存路径
                                    put(OutputFile.mapperXml, mapperXmlPath);
                                    // service层接口的保存路径
                                    put(OutputFile.service, servicePath);
                                    // service层接口实现类的保存路径
                                    put(OutputFile.serviceImpl, serviceImplPath);
                                    // 控制类的保存路径
                                    put(OutputFile.controller, controllerPath);
                                }}
                        )
                )

                // 3. 策略配置【请仔细阅读每一行,根据项目实际项目需求,修改、增删!!!】
                .strategyConfig((scanner, builder) -> builder.addInclude(getTables(scanner.apply("请输入表名,多个英文逗号分隔?生成所有表,请输入[all]:")))
                        // 阶段1:Entity实体类策略配置
                        .entityBuilder()
                        // 设置父类。会在生成的实体类名后:extends BaseEntity
                        // .superClass(BaseEntity.class)
                        // 禁用生成 serialVersionUID。(不推荐禁用)
                        // .disableSerialVersionUID()
                        // 开启生成字段常量。
                        // 会在实体类末尾生成一系列 [public static final String NICKNAME = "nickname";] 的语句。(一般在写wapper时,会用到)
                        // .enableColumnConstant()
                        // 开启链式模型。
                        // 会在实体类前添加 [@Accessors(chain = true)] 注解。用法如 [User user=new User().setAge(31).setName("snzl");](这是Lombok的注解,需要添加Lombok依赖)
                        // .enableChainModel()
                        // 开启 lombok 模型。
                        // 会在实体类前添加 [@Getter] 和 [@Setter] 注解。(这是Lombok的注解,需要添加Lombok依赖)
                        // .enableLombok()
                        // 开启 Boolean 类型字段移除 is 前缀。
                        // .enableRemoveIsPrefix()
                        // 开启生成实体时生成字段注解。
                        // 会在实体类的属性前,添加[@TableField("nickname")]
                        .enableTableFieldAnnotation()
                        // 逻辑删除字段名(数据库)。
                        .logicDeleteColumnName("is_delete")
                        // 逻辑删除属性名(实体)。
                        // 会在实体类的该字段属性前加注解[@TableLogic]
                        .logicDeletePropertyName("isDelete")
                        // 数据库表映射到实体的命名策略(默认下划线转驼峰)。一般不用设置
                        // .naming(NamingStrategy.underline_to_camel)
                        // 数据库表字段映射到实体的命名策略(默认为 null,未指定按照 naming 执行)。一般不用设置
                        // .columnNaming(NamingStrategy.underline_to_camel)
                        // 添加父类公共字段。
                        // 这些字段不会出现在新增的实体类中。
                        .addSuperEntityColumns("id", "delete_time")
                        // 添加忽略字段。
                        // 这些字段不会出现在新增的实体类中。
                        // .addIgnoreColumns("password")
                        // 添加表字段填充
                        // 会在实体类的该字段上追加注解[@TableField(value = "create_time", fill = FieldFill.INSERT)]
                        .addTableFills(new Column("create_time", FieldFill.INSERT))
                        // 会在实体类的该字段上追加注解[@TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)]
                        .addTableFills(new Column("update_time", FieldFill.INSERT_UPDATE))
                        // 全局主键类型。如果MySQL主键设置为自增,则不需要设置此项。
                        // .idType(IdType.AUTO)
                        // 格式化文件名称。
                        // 如果不设置,如表[sys_user]的实体类名是[SysUser]。设置成下面这样,将是[SysUserEntity]
                        // .formatFileName("%sEntity")

                        // 阶段2:Mapper策略配置
                        .mapperBuilder()
                        // 设置父类
                        // 会在mapper接口方法集成[extends BaseMapper<XXXEntity>]
                        // .superClass(BaseMapper.class)
                        // 开启 @Mapper 注解。
                        // 会在mapper接口上添加注解[@Mapper]
                        .enableMapperAnnotation()
                        // 启用 BaseResultMap 生成。
                        // 会在mapper.xml文件生成[通用查询映射结果]配置。
                        .enableBaseResultMap()
                        // 启用 BaseColumnList。
                        // 会在mapper.xml文件生成[通用查询结果列 ]配置
                        .enableBaseColumnList()
                        // 设置缓存实现类
                        // .cache(MyMapperCache.class)
                        // 格式化 mapper 文件名称。
                        // 如果不设置,如表[sys_user],默认的文件名是[SysUserMapper]。写成下面这种形式后,将变成[SysUserDao]。
                        // .formatMapperFileName("%sDao")
                        // 格式化 xml 实现类文件名称。
                        // 如果不设置,如表[sys_user],默认的文件名是[SysUserMapper.xml],写成下面这种形式后,将变成[SysUserXml.xml]。
                        // .formatXmlFileName("%sXml")

                        // 阶段3:Service策略配置
                        // .serviceBuilder()
                        // 设置 service 接口父类
                        // .superServiceClass(BaseService.class)
                        // 设置 service 实现类父类
                        // .superServiceImplClass(BaseServiceImpl.class)
                        // 格式化 service 接口文件名称
                        // 如果不设置,如表[sys_user],默认的是[ISysUserService]。写成下面这种形式后,将变成[SysUserService]。
                        // .formatServiceFileName("%sService")
                        // 格式化 service 实现类文件名称
                        // 如果不设置,如表[sys_user],默认的是[SysUserServiceImpl]。
                        // .formatServiceImplFileName("%sServiceImpl")

                        // 阶段4:Controller策略配置
                        .controllerBuilder()
                        // 设置父类。
                        // 会集成此父类。
                        // .superClass(BaseController.class)
                        // 开启生成 @RestController 控制器
                        // 会在控制类中加[@RestController]注解。
                        .enableRestStyle()
                        // 开启驼峰转连字符
                        .enableHyphenStyle()

                        // 最后:构建
                        .build()
                )

                //模板引擎配置,默认 Velocity 可选模板引擎 Beetl 或 Freemarker
                //.templateEngine(new BeetlTemplateEngine())
                .templateEngine(new FreemarkerTemplateEngine())

                // 执行
                .execute();
    }

    // 处理 all 情况
    protected static List<String> getTables(String tables) {
        return "all".equals(tables) ? Collections.emptyList() : Arrays.asList(tables.split(","));
    }

    /**
     * <p>
     * 读取控制台内容
     * </p>
     */
    private static String scanner() {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入" + "请输入模块名:" + ":");
        if (scanner.hasNext()) {
            String ipt = scanner.next();
            if (StringUtils.isNotBlank(ipt)) {
                return ipt;
            }
        }
        throw new MybatisPlusException("请输入正确的" + "请输入模块名:" + "!");
    }


}


大哥们,记得点赞关注哦!非常感谢

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MyBatis-Plus-Generator代码生成器(Version 3.5.1+)使用 的相关文章

  • 新版本代码自动生成(MybatisPlus-generator) 代码示例+问题解决

    虽然MybatisPlus官网上已经给出了新版本代码生成器的核心依赖和核心代码 xff0c 但对于没接触过的小伙伴还是比较困难上手 x1f62d xff0c 本文将展现如何使用MybatisPlus generator快速生成代码 目录 1
  • MyBatisPlus(一)概述介绍

    一 概述 需要的基础 xff1a 把MyBatis Spring SpringMVC学习了 为什么要学习它呢 xff1f MyBatisPlus 可以节省我们大量工作时间 xff0c 所有的CRUD 代码它都可以自动化完成 比如 xff1a
  • MyBatisPlus(四)性能分析插件 | 条件构造器 | 代码生成器

    文章目录 一 性能分析插件1 导入插件2 测试使用 二 条件构造器1 ge gt le It isNull isNotNull2 eq ne3 between notBetween4 like noLike likeLeft likeRig
  • MyBatisPlus中的likeLeft和likeRight

    在使用MyBatisPlus来匹配身份证后6位时遇到了likeLeft和likeRight的问题 xff1a likeLeft时匹配最左边还是匹配最右边 xff1f 所以来一个简单的测试 xff08 通过打印 成功 失败 来判断 xff09
  • SpringBoot整合MybatisPlus时“注入失败”的问题记录

    问题情景 xff1a 最近将几个小的Demo整合在一起 xff0c 其中项目A使用Mybatis项目B使用Mybatis plus 在正常的修改完application yml xff0c pom文件后尝试启动项目 xff0c 启动失败 报
  • MybatisPlus-乐观锁&悲观锁

    乐观锁 xff1a 每次不加锁而是假设没有冲突而去完成某项操作 xff0c 如果失败就重试 xff0c 直到成功为止 悲观锁 xff1a synchronized是独占锁即悲观锁 xff0c 会导致其他所有需要锁的线程挂起 xff0c 等待
  • Mybatis和Mybatis-Plus的配置

    目录 一 springMVC中Mybatis的配置 1 添加 MyBatis 和 MyBatis Spring 的依赖 2 配置数据源 3 配置 MyBatis 4 编写 Mapper 接口和对应的 XML 文件 二 springnboot
  • 3、MyBatisPlus的CRUD 接口

    MyBatisPlus的CRUD 接口 一 insert 1 插入操作 2 主键策略 二 update 1 根据Id更新操作 2 自动填充 3 乐观锁 三 select 1 根据id查询记录 2 通过多个id批量查询 3 简单的条件查询 4
  • mybatis-plus Invalid bound statement (not found):

    1 若是使用了多数据源配置 请检查 DataSourceConfig配置类 将SqlSessionFactoryBean改为mybatis plus里面的MybatisSqlSessionFactoryBean Bean name test
  • MybatisPlus配置双数据库驱动

    个人博客纯净版 MybatisPlus配置双数据库驱动 代码搬运工 最近项目中需要用到2种数据库驱动连接数据库 下面我们基于MybatisPlus实现一下 具体实现 1 在pom xml中添加如下依赖
  • Java使用Mybatis-Plus实现根据参数动态拼接查询条件

    在编写代码的过程中我们常常会遇到下面的业务场景 我们需要根据传进来的参数来去进行拼接查询 例如当前端传过来的参数是base 那么我们就需要在Mybatis Plus的条件构造其中写出如下语句 public PageUtils queryBa
  • Mybatis-Plus(一)

    Mybatis Plus 一 最近在项目当中学习到了一种新的构建sql查询的技术 mybatis plus 相交与之前使用的example即先创建一个example对象 再根据这个对象创建一个criteria对象来说 这种方式更为简洁方便
  • (3)MyBatis-Plus待开发

    常用注解 TableName MyBatis Plus在确定操作的表时 由BaseMapper的泛型决定即实体类型决定 且默认操作的表名和实体类型的类名一致 如果不一致则会因找不到表报异常 向表中插入一条数据 Test public voi
  • mybatisPlus-wrapper使用

    创建测试类 import com baomidou mybatisplus core conditions query QueryWrapper import com plus mybatis mapper UserMapper impor
  • SpringBoot 中 MyBatis-Plus 集成动态多数据源过程(亲测可用)

    使用场景 当你的项目中使用到多个数据源或者需要在程序运行过程中动态的添加数据源时可以参考本文中的实现 这里使用的是dynamic datasource spring boot starter 它是一个基于springboot的快速集成多数据
  • 服务端架构:Mybatis-Plus的优缺点

    前段时间帮朋友处理java后端架构问题 看到了mybatis plus 其实早几年就知道这个东西 但一直没用没学 这两天许久未见的web服务看了看 聊聊个人感受 如有不适 请见谅 文章目录 优点 缺点 1 对数据访问层DAO的上层入侵太强
  • MyBatis-Plus代码生成器

    文章目录 1 在SpringBoot项目中导入Maven依赖 2 编写配置 3 运行后的效果 AutoGenerator 是 MyBatis Plus 的代码生成器 通过 AutoGenerator 可以快速生成 Entity Mapper
  • mybatis-plus 新增/修改实现自动填充指定字段

    需要修改的字段在模型类上添加 TableField fill FieldFill xxx 注解 FieldFill的选项 哪个字段在什么时候填充需要手动设置注解 新建一个MetaObjectHandler的实现类MyMetaObjectHa
  • 【MyBatis-Plus】之批量插入

    一 应用情景介绍 在实际的项目开发过程中 常常遇到批量保存数据的场景 当数据量比较少 比如只有几条数据的情况下 我们可以使用 for 循环来 insert 数据 但如果数据量比较多的情况下就不行 特别是并发的情况下 因为这样会增加数据库的负
  • 5.mybatisPlus自定义SQL

    今日内容 MP自带的条件构造器虽然很强大 有时候也避免不了写稍微复杂一点业务的sql 比如多表查询 那么那么今天说说MP怎么自定义sql语句吧 另外 除了下文提到的通过queryWrapper实现筛选以外 调用查询时 如果你需要做分页 通过

随机推荐

  • 【互联网有记忆】爬取微博热搜榜并存入数据库(python爬虫+存储过程后端实现)

    一 爬虫代码 import random time import requests re import datetime import mysql connector 定义爬取间隔 minutes interval time 15 clas
  • 随机森林(RF)

    目录 RF概念 RF算法流程 RF算法的优缺点 RF算法使用实现 RF应用 RF概念 随机森林指的是利用多棵树对样本进行训练并预测的一种分类器 决策树的详解见链接决策树 ID3算法 C4 5算法 CART算法 xiaoming1999的博客
  • Jmeter验证码图片识别注册接口压力测试实战

    写在前面 前段时间写了一篇博文 Jmeter验证码注册接口压力测试实战 前两天又登录对应的网站看了一下 发现原来滑动验证的方式改成了图片验证码的方式 防止用户多次发送手机验证码 看到这里我本来不想再有太多想法了 但是看到如下的注册界面 将很
  • Windows Server 命令行编码乱码问题

    Windows Server 命令行编码乱码问题 输入chcp发现编码是437也就是英文编码 那么有两种解决办法 0 前提 假如服务器是中文的 那么直接跳过 英文版的要找到时间和语言设置里的区域 gt 其他日期 时间和区域设置 将格式改为中
  • kvm环境快照(snapshot)的使用方法

    实例一 使用qemu img命令使用快照 kvm环境下qcow2的镜像支持快照 1 确认镜像的格式 root nc1 boss qemu img info test qcow2 image test qcow2 file format qc
  • 3. Zipkin 持久化

    Zipkin 持久化 其实 我们仔细想想也可以总结出这种方式的几种缺陷 缺陷1 zipkin客户端向zipkin server程序发送数据使用的是http的方式通信 每次发送的时候涉及到连接和发送过程 缺陷2 当我们的zipkin serv
  • AIGC发展研究(1.0版)

    该图谱由中国信息通信研究院 中国通信标准化协会大数据技术标准推进委员会 CCSA TC601 共同发起 旨在梳理数据治理产业上下游相关企业 产品 服务的分布情况 掌握数据治理市场现状 洞察数据治理产业发展趋势 图谱1 0收录了来自98家企业
  • Qt支持https请求

    Qt支持https请求需要配置openssl环境 Qt默认是不支持SSl认证的 检测Qt支持的协议 QNetworkAccessManager manager new QNetworkAccessManager this qDebug lt
  • 毕业两年后的经历总结——一个奋斗中的前端蜂鸟

    转眼间 已经毕业两年了 不得不感叹时间过的真快啊 学生时代的美好 终于只能永久停留在记忆长河中不再复返 韶光易逝 但唯一不变的 是变化 回望过去 有过困惑 有过迷茫 也有过焦虑 刚开始工作时 也遇到了很多很多的困难 这时的我对未来比较迷茫
  • 二进制数字(2ASK)载波调制解调仿真设计(matlab仿真)

    一 实验目的 了解二进制数字信号2ASK波形特点 掌握2ASK调制解调系统的构成 基带信号 载波和2ASK已调信号之间的关系 掌握利用matlab对2ASK进行仿真的分析方法 二 实验任务 利用matlab实现对2ASK信号调制与解调的仿真
  • 微服务架构设计的12个要点

    一 负载均衡 二 API网关 三 无状态化与独立有状态集群 四 异步处理机制 五 数据集群 分库分表 六 缓存 七 服务拆分与服务发现 八 服务编排与弹性伸缩 九 统一配置中心 十 统一日志中心 十一 熔断 限流 降级 十二 全方位的监控
  • 微信小程序获取用户信息(getUserProfile接口回收后)——通过头像昵称填写获取用户头像和昵称

    背景 最近在用uniapp写微信小程序授权登录的时候 发现项目在微信开发者工具中调试是正常的 但是在真机运行时 返回的用户数据中昵称变成了微信用户 头像变成了默认的灰底头像 接着去百度了一下发现出现这个问题的原因是getUserProfil
  • Delphi XE10实现移动端支付宝支付接口(含源码)

    Demo下载地址 https pan baidu com s 14i84u 加入支付宝开发者平台 https open alipay com 签约移动支付服务 访问https b alipay com order productSet ht
  • TensorFlow(Python

    回归任务旨在从输入训练数据中预测连续变量 而分类任务旨在将输入数据分为两个或多个类别 例如 预测某一天是否会下雨的模型是一项分类任务 因为模型的结果将分为两类 下雨或不下雨 然而 预测给定日期的降雨量的模型将是回归任务的一个示例 因为模型的
  • 服务器上传excel文件并读取数据,ASP.NET中上传并读取Excel文件数据示例

    在CSDN中 经常有人问如何打开Excel数据库文件 本文通过一个简单的例子 实现读取Excel数据文件 首先 创建一个Web应用程序项目 在Web页中添加一个DataGrid控件 一个文件控件和一个按钮控件 在代码视图中首先导入OleDb
  • Appium自动化框架从0到1之 框架结构组成

    从0到1搭框架 框架背景 框架功能 框架视图 框架背景 可能会利用一周的时间 我们来写一个Appium自动化框架的搭建 从0到1 跟着小鱼一起 完善Android 的自动化框架体系 框架模式 PO 语言 python3 7 Appium 1
  • mac 利器

    mac 利器 攒了很久的钱 环境彻底迁移到mac os 下 总结下自己使用的一些工具 从win到mac的一些工具迁移可以看老的文章 win下的mac利器替代品 这一篇主要集中在mac下的工具体会和使用心得距离上一次更新 应该很久了 上一次是
  • Flutter之修改AppBar的高度

    全局 设置AppBar的主题中的toolbarHeight override Widget build BuildContext context return GetMaterialApp title Flutter Demo debugS
  • <vulnhub>-记一次实验Load of The Root

    Load of The Root 一 信息收集 1 主机探测 探测到主机IP 192 168 88 159 2 端口扫描 扫描到端口只开放了一个22端口 尝试使用SSH连接 Easy as 1 2 3 端口碰撞 端口上的防火墙通过产生一组预
  • MyBatis-Plus-Generator代码生成器(Version 3.5.1+)使用

    这几天研究了一下MyBatis Plus Generator新版本3 5 1 的使用 做个笔记方便自己使用 maven配置