最近工作中遇到的8个问题(2019 |
您所在的位置:网站首页 › pg数据库表空间大小 › 最近工作中遇到的8个问题(2019 |
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"; } 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 |