easycode-自定义的模板-类型对应问题

news2025/2/2 18:04:26

一、遇到的问题
1、mysql数据库中有些字段没有生成到

在图形工具中修改了表结构 ,增加了字段,这个时候要在idea中刷新下数据库

在这里插入图片描述

2、数据库中有tinyint 类型的字段,生成代码后mapper.xml中jdbcType总是BYTE,但是mybatis中并没有BYTE。

在这里插入图片描述
在这里插入图片描述3、生成代码存放位置

在这里插入图片描述 

(1)前面是包路径,后面是生成文件的存放路径,存放路径是不能后退的,在window的cmd中…/表示进到上级目录,这个在这没用,文件的存放路径只能是你选择的目录的子目录。
(2)还有一个问题是在为多个表生成代码时,生成的代码位置会错乱,跟选择的不一样,出现这样的问题主要是我之前我单表测试生成与多表生成时选择的path路径不一样 ,这种情况勾选“统一配置”就好了,多表生成建议把这个勾上。

4、最好有一个专门生成代码的目录,然后再将生成好的代码复制到项目中
这样的话可能会导致一些包没有导入(用我的模板),在idea中设置自动导包,不用一个个去alt + enter.

在这里插入图片描述

将上面四个勾选框都勾上,这样idea就会自动帮你导包(有些可能不会自动导,但是alt + enter一个后,该文件其他未导入的都会自动帮你导入)

二、自定义模板
说明:$!module是引用定义的全局变量,模板后会贴上全局变量的配置,连续的两个##表示注释1、entity.java

$!init
##引入宏定义
$!define
##使用宏定义设置回调(保存位置与文件后缀)
#save("/entity/$!module/", ".java")
##使用宏定义设置包后缀
#setPackageSuffix("entity.$!module")

##使用全局变量实现默认包导入
$!autoImport
import lombok.Data;

##使用宏定义实现类注释信息
#tableComment("实体类")
@Data
public class $!{tableInfo.name}  {
    #foreach($column in $tableInfo.fullColumn)
    #if(${column.comment})/**
     * ${column.comment}
     */#end
    private $!{tool.getClsNameByFullName($column.type)} $!{column.name};
    #end
 
}

2、dao.java

##定义初始变量
$!init
$!define

#save("/dao/$!module/", "Dao.java")

##使用宏定义设置包后缀
#setPackageSuffix("dao.$!module")

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;

#set($time=$!time.currTime())
#set($time=$time.substring(0,11))
#set($time=$time.replace("-","/"))
/**
 * <p>
 * $!{tableInfo.comment}($!{tableInfo.name})表数据库访问层
 * </p>
 * 
 * @author:$!author
 * @date:$!time
 */
@Mapper
public interface $!{tableInfo.name}Dao {

    /**
     * 通过唯一标识查询单条数据
     *
     * @param recordNo 唯一标识
     * @return 实例对象
     */
    $!{tableInfo.name} queryByRecordNo(String recordNo);

    /**
     * 新增数据
     *
     * @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象
     * @return 影响行数
     */
    int insert($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));

    /**
     * 新增选择列
     *
     * @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象
     * @return 影响行数
     */
    int insertSelective($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));
    
    /**
     * 修改数据
     *
     * @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象
     * @return 影响行数
     */
    int update($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));

    /**
     * 通过唯一标识删除数据(物理删除)
     *
     * @param recordNo 唯一标识
     * @return 影响行数
     */
    int deleteByRecordNo(String recordNo);
    
    /**
     * 通过唯一标识删除数据(真实删除)
     *
     * @param recordNo 唯一标识
     * @return 影响行数
     */
    int realDeleteByRecordNo(String recordNo);
    
    /**
     * 批量新增
     * @param recordList 实例列表
     * @return 影响行数
     */
    int batchInsert(@Param("recordList") List<$!{tableInfo.name}> recordList);
    
    /**
     * 根据条件查询列表
     * @param dqo 查询条件
     * @return 实例列表
     */
    List<$!{tableInfo.name}> selectListByCondition($!{tableInfo.name}Dqo dqo);
    
}


3、service.java

$!init
$!define

#save("/service/intefaces/$!module/", "Service.java")
#setPackageSuffix("service.intefaces.$!module")

import com.powater.common.bean.PageInfoListResult;

#set($time=$!time.currTime())
#set($time=$time.substring(0,11))
#set($time=$time.replace("-","/"))
/**
 * <p>
 * $!{tableInfo.comment}($!{tableInfo.name})表服务接口
 * </p>
 * 
 * @author:$!author
 * @date:$!time
 */
public interface $!{tableInfo.name}Service {

    /**
     * 新增或修改 ——$!{tableInfo.comment}——记录
     *
     * @param dio 前端输入信息
     * @return 新增或修改结果
     */
    String addOrUpdate($!{tableInfo.name}Dio dio);
    
     /**
     * 逻辑删除 ——$!{tableInfo.comment}——记录
     *
     * @param recordNo 唯一标识
     * @return 删除结果
     */
    String del(String recordNo);
    
     /**
     * 条件查询 ——$!{tableInfo.comment}——记录
     *
     * @param dqo 查询条件
     * @return 查询的列表数据
     */
    PageInfoListResult<$!{tableInfo.name}Doo> queryList($!{tableInfo.name}Dqo dqo);

}


4、serviceImpl.java

##初始化定义
$!init
$!define

#save("/service/impl/$!module/", "ServiceImpl.java")
#setPackageSuffix("service.impl.$!module")


import org.springframework.stereotype.Service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import com.powater.common.bean.PageInfoListResult;

#set($time=$!time.currTime())
#set($time=$time.substring(0,11))
#set($time=$time.replace("-","/"))
/**
 * <p>
 * $!{tableInfo.comment}($!{tableInfo.name})表服务实现类
 * </p>
 * 
 * @author:$!author
 * @date:$!time
 */
@Service("/$!tool.firstLowerCase($!{tableInfo.name})Service")
@Transactional(rollbackFor = Exception.class)
public class $!{tableInfo.name}ServiceImpl implements $!{tableInfo.name}Service {

    @Autowired
    private $!{tableInfo.name}Dao $!tool.firstLowerCase($!{tableInfo.name})Dao;
    
    
    @Override
    public String addOrUpdate($!{tableInfo.name}Dio dio) {
        
        return null;
    }
    
    @Override
    public String del(String recordNo) {
    
        return null;
    }
    
    @Override
    public PageInfoListResult<$!{tableInfo.name}Doo> queryList($!{tableInfo.name}Dqo dqo) {
    
        return null;
    }

}


5、controller.java

##定义初始变量
$!init
$!define

#save("/controller/$!module/", "Controller.java")
#setPackageSuffix("controller.$!module")


import com.powater.common.bean.PageInfoListResult;
import com.powater.common.util.CommonResult;
import org.springframework.stereotype.Service;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

#set($time=$!time.currTime())
#set($time=$time.substring(0,11))
#set($time=$time.replace("-","/"))
/**
 * <p>
 * $!{tableInfo.comment}($!{tableInfo.name})表控制层
 * </p>
 * 
 * @author:$!author
 * @date:$!time
 */
@RestController
@RequestMapping("/soil/api/$!module/$!tool.firstLowerCase($tableInfo.name)")
@Api(description = "$!{tableInfo.name}Controller", tags = "$!{tableInfo.comment} —— 相关接口")
public class $!{tableInfo.name}Controller {

    @Autowired
    private $!{tableInfo.name}Service $!tool.firstLowerCase($tableInfo.name)Service;
    
    
    @ApiOperation(value = "新增-修改",httpMethod = "POST")
    @PostMapping(value = "/addOrUpdate")
    public CommonResult addOrUpdate(@RequestBody $!{tableInfo.name}Dio dio) {
         
        return null;
    }
    
    @ApiOperation(value = "删除",httpMethod = "GET")
    @GetMapping(value = "/del")
    public CommonResult del(@RequestParam(value = "recordNo") String recordNo) {
         
        return null;
    }
    
    @ApiOperation(value = "根据条件查询列表",httpMethod = "POST")
    @PostMapping(value = "/list")
    public CommonResult<PageInfoListResult<$!{tableInfo.name}Doo>> queryList(@RequestBody $!{tableInfo.name}Dqo dqo) {
         
        return null;
    }

}


6、mapper.xml

##引入mybatis支持
$!mybatisSupport
##初始化定义
$!init
$!define

##设置保存名称与保存位置
#save("/mapper/$!module","Dao.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="$!{tableInfo.savePackageName}.dao.$!module.$!{tableInfo.name}Dao">

    <resultMap  id="BaseResultMap" type="$!{tableInfo.savePackageName}.entity.$!module.$!{tableInfo.name}">
#foreach($column in $tableInfo.fullColumn)
        <result property="$!column.name" column="$!column.obj.name" jdbcType="$!column.ext.jdbcType"/>
#end
    </resultMap>
    
    <!-- 伪列 -->
    <sql id="Base_Column_List">
#foreach($column in $tableInfo.fullColumn)
        `$!column.obj.name`,
#end
    </sql>

    
    <!-- 通过ID查询单条数据 -->
    <select id="queryByRecordNo" resultMap="BaseResultMap">
        select
          <include refid="Base_Column_List"/>
        from $!tableInfo.obj.name 
        where record_no = #{recordNo} and del_flag = 0
    </select>
    
    <!-- 新增数据 -->
    <insert id="insert" keyProperty="$!pk.name" useGeneratedKeys="true">
        insert into $!{tableInfo.obj.name}(#foreach($column in $tableInfo.fullColumn)`$!column.obj.name`#if($velocityHasNext), #end#end)
        values (#foreach($column in $tableInfo.fullColumn)#{$!{column.name}}#if($velocityHasNext), #end#end)
    </insert>
    
    <!-- 新增选择列 -->
    <insert id="insertSelective" keyProperty="$!pk.name" useGeneratedKeys="true">
        insert into $!{tableInfo.obj.name}
        <trim prefix="(" suffix=")" suffixOverrides="," >
#foreach($column in $tableInfo.fullColumn)
            <if test="$!column.name != null#if($column.type.equals("java.lang.String")) and $!column.name != ''#end">
                `$!column.obj.name`,
            </if>
#end
        </trim>
        <trim prefix="values (" suffix=")" suffixOverrides="," >
#foreach($column in $tableInfo.fullColumn)
            <if test="$!column.name != null#if($column.type.equals("java.lang.String")) and $!column.name != ''#end">
                #{$!column.name,jdbcType=$!column.ext.jdbcType},
            </if>
#end
        </trim>
    </insert>
  
    <!-- 修改数据 -->
    <update id="update">
        update $!{tableInfo.obj.name}
        <set>
#foreach($column in $tableInfo.otherColumn)
            #if ($column.name.equals("recordNo"))#else
            <if test="$!column.name != null#if($column.type.equals("java.lang.String")) and $!column.name != ''#end">
                `$!column.obj.name` = #{$!column.name},
            </if>
             #end
#end
            version = version + 1
        </set>
        where record_no = #{recordNo} and del_flag = 0 and version = #{version}
    </update>

    <!-- 通过主键删除数据(物理删除) -->
    <delete id="realDeleteByRecordNo">
        delete from $!{tableInfo.obj.name}  where record_no = #{recordNo}
    </delete>
    
    <!-- 通过主键删除数据(真实删除) -->
    <delete id="deleteByRecordNo">
        update $!{tableInfo.obj.name} set del_flag = 1 where record_no = #{recordNo} and del_flag = 0
    </delete>
    
  <!-- 批量新增 -->
  <insert id="batchInsert" parameterType="java.util.List">
        insert into $!{tableInfo.obj.name} (
        #foreach($column in $tableInfo.fullColumn)$!column.obj.name#if($velocityHasNext), #end#end
        
        )
    values
    <foreach collection="recordList" index="index" item="item" separator=",">
      (
      #foreach($column in $tableInfo.fullColumn)#{item.$!{column.name}}#if($velocityHasNext), #end#end
      
      )
    </foreach>
  </insert>
  
  <select id="selectListByCondition" resultMap="BaseResultMap">
        select <include refid="Base_Column_List"/>
        from $!{tableInfo.obj.name}
        where del_flag = 0
  </select>
  
</mapper>


7、doo.java

$!init
##引入宏定义
$!define

##使用宏定义设置回调(保存位置与文件后缀)
#save("/pojo/doo/$!module", "Doo.java")

##使用宏定义设置包后缀
#setPackageSuffix("pojo.doo.$!module")

##使用全局变量实现默认包导入
$!autoImport
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

##使用宏定义实现类注释信息
#tableComment(" —— 列表信息")
@Data
@ApiModel(value = "$!{tableInfo.comment} —— 列表信息")
public class $!{tableInfo.name}Doo  {
##    private static final long serialVersionUID = $!tool.serial();
#foreach($column in $tableInfo.fullColumn)
    
    @ApiModelProperty(value = "$!{column.comment}")
    private $!{tool.getClsNameByFullName($column.type)} $!{column.name};
    #end
    
}


8、dio.java

$!init
##引入宏定义
$!define

##使用宏定义设置回调(保存位置与文件后缀)
#save("/pojo/dio/$!module", "Dio.java")

##使用宏定义设置包后缀
#setPackageSuffix("pojo.dio.$!module")

##使用全局变量实现默认包导入
$!autoImport
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

##使用宏定义实现类注释信息
#tableComment(" —— 输入信息")
@Data
@ApiModel(value = "$!{tableInfo.comment} —— 输入信息")
public class $!{tableInfo.name}Dio  {
##    private static final long serialVersionUID = $!tool.serial();
#foreach($column in $tableInfo.fullColumn)
    
    @ApiModelProperty(value = "$!{column.comment}")
    private $!{tool.getClsNameByFullName($column.type)} $!{column.name};
    #end
    
}


9、dqo.java

$!init
##引入宏定义
$!define

##使用宏定义设置回调(保存位置与文件后缀)
#save("/pojo/dqo/$!module", "Dqo.java")

##使用宏定义设置包后缀
#setPackageSuffix("pojo.dqo.$!module")

##使用全局变量实现默认包导入
$!autoImport
import lombok.Data;
import com.powater.soilWaterManager.pojo.dqo.BaseDqo;

##使用宏定义实现类注释信息
#tableComment("实体类")
@Data
public class $!{tableInfo.name}Dqo extends BaseDqo  {

}
说明:模板这里要说明的有两个
(一) #save,这个是默认模板中的一个宏定义,相当于一个函数,第一个参数是文件存放路径 "/"表示根路径的时候就是(问题3)中选择的path,第二个就是类名后缀,比如想要生成TestDao.java,这个时候参数就是“Dao.java”。
(二)#setPackageSuffix,这个是用于设置包路径的后缀,默认会使用(问题3)中选择的package,比如参数是entity,则java类中的package就是 你选择的包(没有则是.) + entity

三、全局变量(大多都是默认的)在这里插入图片描述
1、init

##初始化区域

 

##去掉表的t_前缀
#if($tableInfo.obj.name.startsWith("tb_"))
    $!tableInfo.setName($tool.getClassName($tableInfo.obj.name.replaceFirst("tb_","")))  
#end

##参考阿里巴巴开发手册,POJO 类中布尔类型的变量,都不要加 is 前缀,否则部分框架解析会引起序列化错误
#foreach($column in $tableInfo.fullColumn)
#if($column.name.startsWith("is") && $column.type.equals("java.lang.Boolean"))
    $!column.setName($tool.firstLowerCase($column.name.substring(2)))
#end
#end

##实现动态排除列
#set($temp = $tool.newHashSet("testCreateTime", "otherColumn"))
#foreach($item in $temp)
    #set($newList = $tool.newArrayList())
    #foreach($column in $tableInfo.fullColumn)
        #if($column.name!=$item)
            ##带有反回值的方法调用时使用$tool.call来消除返回值
            $tool.call($newList.add($column))
        #end
    #end
    ##重新保存
    $tableInfo.setFullColumn($newList)
#end

##对importList进行篡改
#set($temp = $tool.newHashSet())
#foreach($column in $tableInfo.fullColumn)
    #if(!$column.type.startsWith("java.lang."))
        ##带有反回值的方法调用时使用$tool.call来消除返回值
        $tool.call($temp.add($column.type))
    #end
#end
##覆盖
#set($importList = $temp)


2、define

##(Velocity宏定义)

##定义设置表名后缀的宏定义,调用方式:#setTableSuffix("Test")
#macro(setTableSuffix $suffix)
    #set($tableName = $!tool.append($tableInfo.name, $suffix))
#end

##定义设置包名后缀的宏定义,调用方式:#setPackageSuffix("Test")
#macro(setPackageSuffix $suffix)
#if($suffix!="")package #end#if($tableInfo.savePackageName!="")$!{tableInfo.savePackageName}.#{end}$!suffix;
#end

##定义直接保存路径与文件名简化的宏定义,调用方式:#save("/entity", ".java")
#macro(save $path $fileName)
    $!callback.setSavePath($tool.append($tableInfo.savePath, $path))
    $!callback.setFileName($tool.append($tableInfo.name, $fileName))
#end

##定义表注释的宏定义,调用方式:#tableComment("注释信息")
#macro(tableComment $desc)
/**
 * $!{tableInfo.comment}($!{tableInfo.name})$desc
 *
 * @author $!author
 * @since $!time.currTime()
 */
#end

##定义GET,SET方法的宏定义,调用方式:#getSetMethod($column)
#macro(getSetMethod $column)

    public $!{tool.getClsNameByFullName($column.type)} get$!{tool.firstUpperCase($column.name)}() {
        return $!{column.name};
    }

    public void set$!{tool.firstUpperCase($column.name)}($!{tool.getClsNameByFullName($column.type)} $!{column.name}) {
        this.$!{column.name} = $!{column.name};
    }
#end


3、autoImport

##自动导入包(仅导入实体属性需要的包,通常用于实体类)
#foreach($import in $importList)
import $!import;
#end
1
2
3
4
4、mybatisSupport
##针对Mybatis 进行支持,主要用于生成xml文件
#foreach($column in $tableInfo.fullColumn)
    ##储存列类型
    $tool.call($column.ext.put("sqlType", $tool.getField($column.obj.dataType, "typeName")))
    #if($tool.newHashSet("java.lang.String").contains($column.type))
        #set($jdbcType="VARCHAR")
    #elseif($tool.newHashSet("java.lang.Boolean", "boolean").contains($column.type))
        #set($jdbcType="BOOLEAN")
    #elseif($tool.newHashSet("java.lang.Byte", "byte").contains($column.type))
        #set($jdbcType="TINYINT")
    #elseif($tool.newHashSet("java.lang.Integer", "int", "java.lang.Short", "short").contains($column.type))
        #set($jdbcType="INTEGER")
    #elseif($tool.newHashSet("java.lang.Long", "long").contains($column.type))
        #set($jdbcType="BIGINT")
    #elseif($tool.newHashSet("java.lang.Float", "float", "java.lang.Double", "double").contains($column.type))
        #set($jdbcType="DOUBLE")
    #elseif($tool.newHashSet("java.util.Date", "java.sql.Timestamp", "java.time.Instant", "java.time.LocalDateTime", "java.time.OffsetDateTime", "    java.time.ZonedDateTime").contains($column.type))
        #set($jdbcType="TIMESTAMP")
    #elseif($tool.newHashSet("java.sql.Date", "java.time.LocalDate").contains($column.type))
        #set($jdbcType="TIMESTAMP")
    #elseif($tool.newHashSet("java.math.BigDecimal").contains($column.type))
        #set($jdbcType="DECIMAL")
    #else
        ##其他类型
        #set($jdbcType="VARCHAR")
    #end
    $tool.call($column.ext.put("jdbcType", $jdbcType))
#end

##定义宏,查询所有列
#macro(allSqlColumn)#foreach($column in $tableInfo.fullColumn)$column.obj.name#if($velocityHasNext), #end#end#end

4、mybatisSupport

##针对Mybatis 进行支持,主要用于生成xml文件
#foreach($column in $tableInfo.fullColumn)
    ##储存列类型
    $tool.call($column.ext.put("sqlType", $tool.getField($column.obj.dataType, "typeName")))
    #if($tool.newHashSet("java.lang.String").contains($column.type))
        #set($jdbcType="VARCHAR")
    #elseif($tool.newHashSet("java.lang.Boolean", "boolean").contains($column.type))
        #set($jdbcType="BOOLEAN")
    #elseif($tool.newHashSet("java.lang.Byte", "byte").contains($column.type))
        #set($jdbcType="TINYINT")
    #elseif($tool.newHashSet("java.lang.Integer", "int", "java.lang.Short", "short").contains($column.type))
        #set($jdbcType="INTEGER")
    #elseif($tool.newHashSet("java.lang.Long", "long").contains($column.type))
        #set($jdbcType="BIGINT")
    #elseif($tool.newHashSet("java.lang.Float", "float", "java.lang.Double", "double").contains($column.type))
        #set($jdbcType="DOUBLE")
    #elseif($tool.newHashSet("java.util.Date", "java.sql.Timestamp", "java.time.Instant", "java.time.LocalDateTime", "java.time.OffsetDateTime", "	java.time.ZonedDateTime").contains($column.type))
        #set($jdbcType="TIMESTAMP")
    #elseif($tool.newHashSet("java.sql.Date", "java.time.LocalDate").contains($column.type))
        #set($jdbcType="TIMESTAMP")
    #elseif($tool.newHashSet("java.math.BigDecimal").contains($column.type))
        #set($jdbcType="DECIMAL")
    #else
        ##其他类型
        #set($jdbcType="VARCHAR")
    #end
    $tool.call($column.ext.put("jdbcType", $jdbcType))
#end

##定义宏,查询所有列
#macro(allSqlColumn)#foreach($column in $tableInfo.fullColumn)$column.obj.name#if($velocityHasNext), #end#end#end


5、author (这个是自己定义的)

ningyewansui


6、module (这个是自己定义的)

tb


最后:根据自己需求来修改模板,模仿default分组的模板来修改,可以参考插件给的说明

在这里插入图片描述

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

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

相关文章

echarts分割柱形图实现渐变电量效果柱状图

先看下效果图是这个样子的 &#xff0c;和普通的柱状图最明显的区别就是需要做成类似于电池格电量显示效果。 目录 1、官网找例子 2、改造示例 3、全部代码 4、初始效果和完成效果对比 1、官网找例子 首先到Echarts官网找到基础的柱状图 官网初始option 我们将option复制到…

一文教你彻底学会IIC协议

一文教你如何看懂I2C协议 一.序言二.IIC读写过程2.1主机向从机写入数据2.2主机向从机读取数据2.3 I2C起始信号和停止信号 三. 数据的有效性四.时序要求4.1 起始信号4.2 终止信号4.3 应答信号4.4 非应答信号读取数据五.代码实例 结语 一.序言 背景知识&#xff1a;I2C总线上是通…

顶奢好文:3W字,穿透Spring事务原理、源码,至少读10遍

说在前面 在40岁老架构师 尼恩的读者社区(50)中&#xff0c;最近有小伙伴拿到了一线互联网企业如阿里、美团、极兔、有赞、希音的面试资格&#xff0c;Spring事务源码的面试题&#xff0c;经常遇到&#xff1a; (1) spring什么情况下进行事务回滚&#xff1f; (2) spring 事务…

微服务springcloud 04. 远程调用,负载平衡,重试,ribbon框架

01.springcloud中关于远程调用&#xff0c;负载平衡。 02.远程调用 ribbon 提供了负载均衡和重试功能, 它底层是使用 RestTemplate 进行 Rest api 调用RestTemplate&#xff0c;RestTemplate 是SpringBoot提供的一个Rest远程调用工具。 它的常用方法: getForObject() - 执行…

「深度学习之优化算法」(六)遗传算法

1. 遗传算法简介 遗传算法(Genetic Algorithms&#xff0c;GA)是一种模拟自然中生物的遗传、进化以适应环境的智能算法。由于其算法流程简单&#xff0c;参数较少优化速度较快&#xff0c;效果较好&#xff0c;在图像处理、函数优化、信号处理、模式识别等领域有着广泛的应用。…

电气火灾探测器在智慧城市消防安全的应用 安科瑞 许敏

【摘要】智慧消防应用是重要的建设内容之一。根据固定资产投资额和消防经费测算&#xff0c;2017年消防市场容量合计约2761.65亿元&#xff0c;2020年消防市场规模可达5200亿元。通过梳理各地政府招标项目&#xff0c;预计全国政府智慧消防项目的投入总额可达92.8亿元。 【关键…

基于Java校园美食交流系统设计实现(源码+lw+部署文档+讲解等)

博主介绍&#xff1a; ✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ &#x1f345; 文末获取源码联系 &#x1f345; &#x1f447;&#x1f3fb; 精…

crontab执行时间与系统时间不一致

crontab执行时间与系统时间不一致 一&#xff1a;问题查找&#xff1a; 问题描述&#xff1a;今天新发现一个问题&#xff0c;定时任务写了之后一直不执行&#xff0c;查看日志才发现&#xff0c;执行的时间给我定时的时间相差了12个小时。 1、查看定时任务的相关日志&#…

Nik Color Efex 滤镜详解(1/5)

双色滤镜 Bi-Color Filter 混合两种颜色然后将混合结果添加到图像&#xff0c;以此模拟传统的双色玻璃滤镜效果。 颜色组合 Color Set 提供棕色、冷/暖、绿色/棕色、青苔色、紫色/粉红色等多种颜色组合&#xff0c;每个颜色组合又有 4 种版本可供选择。 不透明度 Opacity 调整…

Stuart Russell对话姚期智:为全人类设计AI系统,可以借鉴墨子「兼爱」思想丨2023智源大会AI安全与对齐论坛...

导读 在2023智源大会「AI安全与对齐论坛」的对话环节&#xff0c;加州大学伯克利分校教授Stuart Russell与图灵奖得主、中国科学院院士姚期智针对「如何设计对人类有益的AI」、「如何管控AI技术」&#xff0c;以及「LLM内在目标与意识」等话题进行了深度探讨&#xff0c;其中St…

一键式 RLHF 训练 DeepSpeed Chat(二):实践篇

一键式 RLHF 训练 DeepSpeed Chat&#xff08;二&#xff09;&#xff1a;实践篇 之前给大家分享了一键式 RLHF 训练 DeepSpeed Chat&#xff08;一&#xff09;&#xff1a;理论篇&#xff0c;本文给大家分享如何使用DeepSpeed Chat进行RLHF训练。 DeepSpeed Chat 的 RLHF 训…

每日算法(第二十三期)

先来回顾一下上期的问题及答案&#xff1a; 2023年6月14日 「最接近的三数之和」&#xff08;3Sum Closest&#xff09;。以下是题目的描述&#xff1a; 给定一个包括 n 个整数的数组 nums 和一个目标值 target。找出 nums 中的三个整数&#xff0c;使得它们的和与 target 最接…

活动预告 | Hugging Face 音频 AI 派对直播

嘿嘿嘿&#xff0c;&#x1f917; 宝子们&#xff01;我们正在准备一个超级激动人心的音频 AI 派对&#xff0c;千万别错过&#xff01;为了庆祝 Hugging Face 新开设的免费开源 Audio Transformers 课程的启动&#xff0c;我们组织了一场不容错过的网络直播活动&#xff01; &…

Docker 容器入侵排查

随着越来越多的应用程序运行在容器里&#xff0c;各种容器安全事件也随之发生&#xff0c;例如攻击者可以通过容器应用获取容器控制权&#xff0c;利用失陷容器进行内网横向&#xff0c;并进一步逃逸到宿主机甚至攻击K8s集群。 容器的运行环境是相对独立而纯粹&#xff0c;当容…

redis客户端连接不上redis

总结 我先说一下&#xff0c;我觉得最有效就是把Linux防火墙tm的关了&#xff0c; 当我成功后&#xff0c;第二次连接时&#xff0c;防火墙开着&#xff0c;但是我能连接。 systemctl stop firewalled # 关闭防火墙 systemctl start firewalled # 开启防火墙 systemctl status …

利用DPU/IPU 卸载容器镜像以及文件系统的相关操作

1、背景和动机 随着云原生(Cloud Native)被工业界广泛接受&#xff0c;容器(container)在数据中心被广泛部署&#xff0c;其地位正在逐步取代传统的虚拟机(Virtual Machine)。当然目前依然存在用轻量虚拟机来运行和部署容器&#xff0c;比如使用Kata Containers。简单来讲&…

FPGA实现USB3.0 UVC 相机OV5640摄像头输出 基于FT602驱动 提供工程源码和QT上位机源码

目录 1、前言2、UVC简介3、FT602芯片解读4、我这儿的 FT601 USB3.0通信方案5、详细设计方案基于FT602的UVC模块详解 6、vivado工程详解7、上板调试验证8、福利&#xff1a;工程代码的获取 1、前言 目前USB3.0的实现方案很多&#xff0c;但就简单好用的角度而言&#xff0c;FT6…

2023 年 8 个最佳 React UI 组件库和框架

将展示八个最好的 React UI 组件库和框架&#xff0c;如下表所示&#xff1a;&#xff08;星标加关注&#xff0c;开车不迷路&#xff09; 「React Bootstrap&#xff1a;」一个与 Bootstrap 框架集成的实用的 React UI 库。「Grommet&#xff1a;」如果您想在设计中实现可访问…

基于Servlet+mysql+jsp学生宿舍信息管理系统

基于Servletmysqljsp学生宿舍信息管理系统 一、系统介绍二、功能展示1.用户登陆2.学生-主页面3.学生-缺勤记录4.学生-修改密码5.宿舍管理员-主页面6.宿舍管理员-学生查看7.宿舍管理员-缺勤记录8.系统管理员-宿舍管理员管理9.系统管理员-学生管理10.系统管理员-宿舍楼管理11.系统…

中高级前端面试秘籍,为你保驾护航金三银四

引言 各位大佬在评论中指出的种种问题小弟万分感谢。由于这一年来&#xff0c;出了不少变动&#xff0c;所以才一直耽搁&#xff0c;现已修复各位大佬指出的问题和建议。请大家放心食用&#xff01;感恩~&#x1f973; 当下&#xff0c;正面临着近几年来的最严重的互联网寒冬&a…