Spring Boot配置文件顺序学习
1、SpringBoot的总体读取顺序优先级包外大于包内,properties大于yml。
2、 SpringBoot的总体读取顺序如下所示:
- config/application.properties(项目同级目录中config目录下)
- config/application.yml
- application.properties(项目同级目录下)
- application.yml
- resources/config/application.properties(项目resources目录中config目录下)
- resources/config/application.yml
- resources/application.properties(项目的resources目录下)
- resources/application.yml
项目同级目录,相当于生产环境中的JAR包。
Java ZipOutputStream实现将文件列表或者文件夹压缩成zip
需求概述
支持按勾选的成果申请记录批量下载附件。按"年份"+“成果名称"将对应的成果附件放入文件夹,最后将所有文件夹打包成一个压缩包,名称未"成果附件”+“下载时间(精确到秒)”。例如:
工具类
在网上找了个Zip压缩工具类,基本满足了我的需求,代码如下:
1 | /** |
业务中需要删除临时文件夹以及下面的所有文件,用到的工具类代码如下所示:
1 | /** |
业务代码
核心逻辑就是要把每个成果申请的所有文件放入到成果申请临时文件夹中,成果申请临时文件夹名:“年份”+“成果名称”,然后对每个成果申请文件夹压缩,最后删除临时文件夹。我在代码中也有详细地写注释,业务代码如下所示:
1 | @Override |
Java程序猿搬砖笔记(八)
作为码农平时搜集一些小知识点个人认为是个不错的习惯,书上说
好记性不如烂笔头
我想即使是以前忽略或者新get的很简单的东西,自己动手记下来不管如何印象也会更深刻。
mybatis的配置打印的是info级别日志 线上环境建议去除
1 | mybatis: |
MySQL的GROUP_CONCAT给值加上单引号后再拼接
语法:
1 | SELECT GROUP_CONCAT(DISTINCT '''',待拼接字段,'''') FROM 表名 |
示例代码:
1 | select GROUP_CONCAT(DISTINCT '''',company,'''') from t_awards_detail WHERE company_type='1'; |
返回数据:
‘上海产业研究院’,‘上海公司’,‘上海曦智科技有限公司’
Linux查询某个进程JVM占用情况
语法:
1 | jstat -gc 进程号 刷新时间 |
示例代码:
1 | -- 查询进程6126的JVM占用情况 每隔3秒刷新一次 |
Linux查询某个进程CPU、内存占用情况
1 | top -H -p 进程id |
MySQL的concat()、concat_ws()和group_concat()的用法
group_concat()对多字段拼接操作示例代码:
1 | group_concat(column1,'拼接字符串'column2 SEPARATOR '分割字符串') |
例如,筛选不同状态的数量、部门和用户拼接数据sql如下:
1 | SELECT STATUS,COUNT(id),GROUP_CONCAT(reply_department,'-',reply_user SEPARATOR '、') |
查询结果如下所示:
参考链接
Java导出大批量数据的优化过程
- 使用EasyExcel生成导出文件流
- 异步把文件流上传到服务器,成功后更新文件上传状态
- 用户去页面下载
10W+ 的数据从生成Excel文件流到上传只要8秒,原来约要8分钟。
参考链接
request.getParameter(“ticket”)方法
- 接口传参为form表单格式提交,即Content-Type为application/x-www-form-urlencoded类型
- /web/auth/v1/login/getUserRight?ticket=1234567。
只有这两种格式可以取到参数,取不到JSON格式的参数。
MySQL按中文拼音字母排序
如果表字段使用的GBK编码的话,我们可以直接order by value ,因为GBK本身就是按照拼音字母排序ABCDEFGHIGK…,当第一位相同的时候会比较第二位,以此类推。 如果表字段使用的UTF-8编码的话,通常我们都会的编码,这样我们可以使用MySQL的convert方法开转换gbk进行排序。
举例:
1 | SELECT * FROM TEST ORDER BY CONVERT(value USING GBK) ASC/DESC |
自定义排序
自定义排序是根据自己想要的特定字符串(数字)顺序进行排序。
主要是使用函数 FIELD(str,str1,str2,str3,…)
MySQL的自定义排序,str与str1、str2、str3…进行比较,并按照str1,str2,str3…的顺序输出,如果遇到str为null或者不存在str1,str2,str3…中的情况的则序列为0,
例1:
1 | SELECT * FROM TEST ORDER BY FIELD(value,'test1','test2','test3','test4') ASC/DESC |
例2:
1 | SELECT * FROM TEST WHERE VALUE IN('test1','test2','test3','test4') ORDER BY FIELD(value,'test1','test2','test3','test4') ASC/DESC |
自定义排序(详细)
- case when 转换实现自定义排序
- mysql排序函数filed 实现自定义排序(推荐)
- 函数locate 实现自定义排序
- 函数lnstr 实现自定义排序
- 利用数据字典实现自定义排序
Linux将一个服务器上的文件或者文件夹复制到另一个服务器上
scp命令
命令语法:
1 | // 从本地主机传输文件到远程主机 |
示例:
1 | [award_dev@localhost ~]$ scp -r /opt/aspire/product/award_dev/testMove award_dev@10.12.7.182:/home/award_dev/ |
1 | The authenticity of host '10.12.7.182 (10.12.7.182)' can't be established. |
密码输入成功就可以迁移过去,不过存在中文文件名的会有问题(文件名改为了数字且内容为空)。
解决中文文件名迁移问题:
1、现在本地机器给待迁移文件夹打压缩包
命令: tar -zcvf filename.tar.gz dir/file
2、scp命令迁移到新服务器
3、在新服务器中解压
命令: tar -zxvf tarname.tar.gz -C 指定解压后文件存放地址
参考链接1、参考链接2
如果远程服务器是sftp服务器,用scp命令可能会不成功,这时候需要使用sftp命令传输。
sftp命令
命令语法:
1 | sftp -oPort=[端口号] [用户名]@[ip地址] |
使用示例:
先进入本机待传文件的目录 -> 用命令连接上远程sftp服务器 -> 进入远程待接收文件的目录 -> put 文件名
1 | [award_server@localhost jlwz-innovation]$ sftp -oPort=55521 package@10.217.247.13 |
spring占位符打印日志
1 | try{ |
1、前面的参数必须和占位符一一对应。
2、最后面参数是异常信息可以打印,非异常信息不会打印。
3、占位符的值可以为null。
Linux复制文件夹下面的所有文件到另一个文件夹
1 | cp -r 当前路径/* 目标路径 |
注意:目标路径必须先存在。
例如:
1 | cp -r /home/award_dev/nginx-1.20.2/conf/* /usr/local/nginx/conf |
Nginx指定安装位置
默认位置是/usr/local/nginx,需要进入nginx-1.20.2目录后执行下面的命令
./configure --prefix=/home/award_dev/nginx
参考链接
Nginx安装步骤
Linux查看端口
1 | netstat -anp | grep 8888 |
SpringBoot+Vue.js前后端分离实现大文件分块上传
Java 8 Predicate
SpringCloud读取配置中心配置
需要引入下面的依赖
1 | <dependency> |
客户端添加spring-cloud-starter-config依赖后 会默认最高优先级读取(即使bootstrap.yml不配置)localhost:8888链接下的application.yml配置。
具体可以通过http://10.12.7.182:8888/应用名(对应bootstrap引导文件中的config.name配置)/profile 访问查看读取的配置 例如:http://10.12.7.182:8888/webbas32-gateway-v1/dev
或者直接访问文件 http://10.12.7.182:8888/webbas32-application-gateway-v1-dev.yml
spring-cloud-starter-bootstrap依赖非必须
参考链接
SpringBoot的jasypt加解密
StringEncryptor类中有加解密方法
配置文件配置ENC(“密文”)后,@Value注解可以自动解密
参考链接1、参考链接2