最近工作中遇到的8个问题(2019

您所在的位置:网站首页 pg数据库表空间大小 最近工作中遇到的8个问题(2019

最近工作中遇到的8个问题(2019

2023-05-06 16:01| 来源: 网络整理| 查看: 265

1、Java文件大小

    用 file.length()方法。

    getTotalSpace, getFreeSpace 查询的是 磁盘(分区)空间。

(磁盘分区大小方法,放在文件File的API里,很容易让人产生歧义)

File file = new File(filePath); double fileLength = length(file.length()); double used = length2(file.getTotalSpace() - file.getFreeSpace()); double total = length2(file.getTotalSpace()); double free = length2(file.getFreeSpace()); System.out.println("fileLength=" + fileLength); System.out.println("used=" + used); System.out.println("total=" + total); System.out.println("free=" + free); private static double length(long length) { return length; } private static double length2(long length) { return 1.0 * length / (1024 * 1024*1024); }

输出:

fileLength=69120.0  (文件大小为69120字节) used=77.01800537109375 total=123.81933212280273(总大小123G,符合事实) free=46.801326751708984(可用,46.8G,符合事实)

最近工作中遇到的8个问题(2019-09-11),Java文件大小,Fastdfs下载文件指定文件名,springloaded热部署有局限性,数据库表同步-2种方式_sed

 

 

2、jenkins Maven打包,没更新,加了 clean了。

啥情况呢?

从 打包的jar文件时间来看,不是最新的。初步感受是,代码也不是最新的。

目前不能100%确认。

需要关注下。

 

3、Fastdfs上传文件,扩展名,文件后缀 必填。public String uploadFile(File file) throws IOException { log.info("one file,length:{},totalSpace:{}",file.length(),file.getTotalSpace()); String extension = FilenameUtils.getExtension(file.getName()); //Fastdf扩展名不能为空,默认为"txt" if(StringUtils.isEmpty(extension)){ extension="txt"; } StorePath storePath = storageClient.uploadFile(new FileInputStream(file), file.length(), extension, null); return getResAccessUrl(storePath); }

 

 

4、文件大小可以为0。

下载文件的时候,判断了大小为0,不下载。

这样是有问题的。

存在文件大小为0的文件。

 

5、Linux设置时间

date -s '2019-09-11 14:54'

记得带引号

(每次都忘记,记不住啊)

 

 

6、springloaded热部署

好处是,普通代码,比如实体类的属性,改完代码保存就生效。

缺点是,代码改动,就“重新加载”,debug时,上下文变量根本看不到。也就是说,如果是debug,还是得重启啊。 这个技术是有很大“局限性”的。

 

 

7、fastdfs下载时恢复原始文件名(尚未验证)文件被上传到FastDFS后Storage服务端将返回的文件索引(FID),其中文件名是根据FastDFS自定义规则重新生成的 例如:wKgB-lkdxUmAPb-QAAIbD3CxJDw317.txt,而不是原始文件名,使用http下载时如不加处理,显示给用户的文件名会是这样的wKgB-lkdxUmAPb-QAAIbD3CxJDw317.txt,这样的用户体验很不好。由于FastDFS不会存储原始文件名,也不提供回复原始名的方法,我们需要自己实现 那么就需要我们将原始文件名记录在数据库中,在下载的时候将原文件名传递到服务器,然后用nginx获取到原始文件名,在写入响应头里面 http://192.168.1.124:8000/group2/M00/00/00/wKgB-Vkb2yuAEk80AAAABpDVNbM781.txt?attname=name.txt if ($arg_attname ~* \.(doc|docx|txt|pdf|zip|rar|txt)$) { add_header Content-Disposition "attachment;filename=$arg_attname"; }

 

8、数据库表同步,2种方式

A表和B表,需要同步到A1、B1。

“看似简单”的方式,查询A,再关联A的多个B。

经过加工,保存到A1和多个B1。

 

又有新需求,B1中有文件下载,增加了C1表。

 

以此类推,表越来越多,任务越来越多,同步很容易出错。

某个字段变化了,是否需要更新呢?业务要求能更新吗?

怎么防重。

 

因此有了第2种方式,

A表到A1。

B表到B1。

可以做成2个独立的任务。

 

A1产生C1 或 B1产生 C1,再单独加任务。

拆分成“流水线”式的,思路清晰,代码简单,事务可控,增加更新也简单,排查问题也方便。

都是泪。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3