周记 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(); } }
在上述两种方法中,设置大小时,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()); }
参考: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; } }
我们还可以把@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); } }
参见: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. 大数据量更新,最好使用索引,没有索引,新建索引