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