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

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,符合事实)

 

 

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";

}

————————————————

版权声明:本文为CSDN博主「菜鸟里根」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/sunqingzhong44/article/details/72852751

 

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

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

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

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

 

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

 

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

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

怎么防重。

 

因此有了第2种方式,

A表到A1。

B表到B1。

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

 

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

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

都是泪。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值