周记 2019.3.25~2019.3.31

1. 上传文件报错:The field file exceeds its maximum permitted size of 1048576 bytes

    SpringBoot做文件上传时出现了The field file exceeds its maximum permitted size of 1048576 bytes.错误,显示文件的大小超出了允许的范围。查看了官方文档,原来Spring Boot工程嵌入的tomcat限制了请求的文件大小

     文档说明表示,每个文件的配置最大为1Mb,单次请求的文件的总数不能大于10Mb。

     解决方法如下:

     方法一、在application.properties添加配置项

# Single file max size  即单个文件大小
multipart.maxFileSize=50Mb
# All files max size      即总上传的数据大小
multipart.maxRequestSize=50Mb

    方法二、在启动类中添加配置Bean

import javax.servlet.MultipartConfigElement;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.MultipartConfigFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;


@Configuration
@SpringBootApplication
public class App 
{
    public static void main( String[] args ) {
        SpringApplication.run(App.class, args);
    }
    
    /**  
     * 文件上传配置  
     * @return  
     */  
    @Bean  
    public MultipartConfigElement multipartConfigElement() {  
        MultipartConfigFactory factory = new MultipartConfigFactory();  
        //单个文件最大  
        factory.setMaxFileSize("20480KB");   
        /// 设置总上传数据总大小  
        factory.setMaxRequestSize("204800KB");  
        
        return factory.createMultipartConfig();  
    }  
}
View Code

在上述两种方法中,设置大小时,Long,Kb,MB均可!MultipartConfigFactory类中的转换规则如下:

private long parseSize(String size) {
        Assert.hasLength(size, "Size must not be empty");
        
        size = size.toUpperCase();
        return size.endsWith("KB")?Long.valueOf(size.substring(0, size.length() - 2)).longValue() * 1024L:(size.endsWith("MB")?Long.valueOf(size.substring(0, size.length() - 2)).longValue() * 1024L * 1024L:Long.valueOf(size).longValue());
    }
View Code

参考:https://blog.csdn.net/qq_29229567/article/details/84939996

          https://blog.csdn.net/awmw74520/article/details/70230591

2. springboot maven 多模块 jenkins 单独打包子项目: https://blog.csdn.net/u011662047/article/details/85116163

    使用maven warpath插件合并多module的war包:https://www.yeetrack.com/?p=899

3. intellij idea 快捷键汇总:https://github.com/judasn/IntelliJ-IDEA-Tutorial/blob/master/keymap-introduce.md#ctrl

4. catalina.home和catalina.base 的区别:catalina.home和catalina.base这两个属性仅在你需要安装多个Tomcat实例而不想安装多个软件备份的时候使用,这样能节省磁盘空间。

    catalina.home指向公用信息的位置,就是bin和lib的父目录。
    catalina.base指向每个Tomcat目录私有信息的位置,就是conf、logs、temp、webapps和work的父目录。

    参见:https://blog.csdn.net/lantian0802/article/details/8643627

5. xshell 使用pem文件登录:新建会话属性-->连接-->用户身份验证-->方法(Public Key)-->浏览(选择pem文件)

    参见:https://blog.csdn.net/gsying1474/article/details/50158817

6. 使用@ConfigurationProperties,它可以把同类的配置信息自动封装成实体类:

     我们可以定义一个实体类在装载配置文件信息:

@Component
@ConfigurationProperties(prefix="connection")
public class ConnectionSettings {

    private String username;
    private String remoteAddress;
    private String password ;

    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getRemoteAddress() {
        return remoteAddress;
    }
    public void setRemoteAddress(String remoteAddress) {
        this.remoteAddress = remoteAddress;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }

}
View Code

     我们还可以把@ConfigurationProperties还可以直接定义在@bean的注解上,这是bean实体类就不用@Component和@ConfigurationProperties了

      

@SpringBootApplication
public class DemoApplication{

    //...

    @Bean
    @ConfigurationProperties(prefix = "connection")
    public ConnectionSettings connectionSettings(){
        return new ConnectionSettings();

    }

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}
View Code

     参见:https://blog.csdn.net/yingxiake/article/details/51263071

7. 要替换某一个字段中的部分内容,可以用update 语句和REPLACE方法,结构如下: 

UPDATE 表名 SET 字段名= REPLACE( 替换前的字段值, '替换前关键字', '替换后关键字' ) WHERE 字段名 REGEXP "替换前的字段值"; 

example:

替换订单中用户手机号前缀155改为170

UPDATE order SET mobile= REPLACE( mobile, 155, 170 ) ; 

参见:https://blog.csdn.net/walter_chan/article/details/50339415

8. 子查询必须有别名 

9. 大数据量更新,最好使用索引,没有索引,新建索引

原文地址:https://www.cnblogs.com/Jtianlin/p/10601486.html