记录后端开发的一些基础小知识

118 阅读2分钟

有些小知识、小TIPS、小的开发小技巧,很基础,不需要记,但是用到的时候要能随时打出来

小数字符串转成整数字符串

有这么一个场景,excel的导入,有一列的格式为yyyyMM,导入到后端会被认为是一个浮点类型,它的实际意义是一个精度到月的时间字符串,因为其格式原因在excel中会被认为小数,这样导入到后端也就会被认为是浮点数类型,如果传入的为202304,后端得到的字符串就为202304.0,数据库对于这个字段的就定义了6个长度,肯定不可以的。

当时想到的一个解决思路,先转成浮点型对象,再转成int,再转成String,最后存入数据库

String str = String.valueOf(new Float(fieldObj).intValue());

日期验证yyyyMM问题

承接上一段,其实最终的目的就是要判断传入的格式是否符合yyyyMM格式,并传入到数据库,后来一想可以先将字符串后两位.0去掉后,再通过验证日期格式来实现

collectTime = collectTimeObj.toString().substring(0, 6);
// 注意:这里原本是通过LocalDate.parse('yyyyMM')来实现,报错,必须得是一个日期字符串才可,这样补个01来验证
LocalDate.parse(collectTime + "01", DateTimeFormatter.ofPattern("yyyyMMdd"));

清理生产环境磁盘空间

 昨天生产环境一个服务器的磁盘满了,下面记录一下当时定位占用磁盘空间的文件的相关命令

# 查看磁盘空间还剩多少空间
df -h

# 查看根目录下每个目录占用空间大小
du --max-depth=1 -h  /

# 可以简写为
du -d 1 -h

# 查看当前目录占用空间大小
du -sh 

# 当前目录下的文件按大小排序
du -s ./* | sort -nr | head -10

# ls实现列文件按时间排序
# 时间最近的在前面
ls -lt 
# 时间从前到后
ls -ltr 
# 利用sort, (日期为第8列) 时间从前到后
ls -l | sort +7 
# 时间最近的在前面
ls -l | sort -r +7 

# 按大小排序,大的显示在最后
ls -lhSr 

# 删除文件大小为0的文件
find -size 0 -exec rm '{}' ';'

mysql提取表的所有列

如果新接手一个微服务项目,每个微服务一个库,如果只知道一个表名的情况下,不知道具体在哪个库,想要快速知道这个表的字段信息可用下面的sql来查询

select COLUMN_NAME from information_schema.COLUMNS where table_name = 'customers' and table_schema = 'Populate';

select group_concat(COLUMN_NAME SEPARATOR ',') AS t_info from information_schema.COLUMNS where table_name = 'customers' and table_schema = 'Populate';