当前位置: 首页 > news >正文

seo网站优化插件做公众号试卷的网站

seo网站优化插件,做公众号试卷的网站,做百度推广是网站好还是阿里好,游戏棋牌网站建设Spring Boot 自动化脚本-多线程批量压缩图片 支持多线程支持多路径配置支持断点续压支持压缩后文件层级路径不变脚本一键启动#xff0c;支持本地 main 调用或远程 POST 接口调用 背景#xff1a;在进行数据迁移时#xff0c;发现附件文件夹过于庞大#xff0c;且大都为图…Spring Boot 自动化脚本-多线程批量压缩图片 支持多线程支持多路径配置支持断点续压支持压缩后文件层级路径不变脚本一键启动支持本地 main 调用或远程 POST 接口调用 背景在进行数据迁移时发现附件文件夹过于庞大且大都为图片格式一方面图片数量过多再一方面就是在文件上传时未对图片进行压缩导致磁盘占用过大。 解决方案写一个脚本对服务器图片进行压缩。 目标压缩后不影响图片内容查看且压缩后文件结构路径与原来一致。 安装 dependencygroupIdnet.coobird/groupIdartifactIdthumbnailator/artifactIdversion0.4.20/version/dependency压缩 Thumbnails.of(inputFile).scale(0.3) //scale是指定图片的大小值在0到1之间1就是原图大小.outputQuality(0.3) //图片的质量值也是在0到1越接近于1质量越好.toFile(outputFile);处理逻辑 import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.io.FileUtil; import cn.hutool.core.util.ReUtil; import cn.hutool.core.util.StrUtil; import lombok.Data; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import net.coobird.thumbnailator.Thumbnails;import java.io.File; import java.util.List; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors;/*** 解决图片附件目录过大问题压缩图片处理* 支持多线程* 支持多路径配置* 支持断点续压* 支持压缩后文件层级路径不变** author jason*/ Slf4j public class ImgReduceService {private static final ExecutorService EXECUTOR_SERVICE Executors.newFixedThreadPool(20);public static void main(String[] args) {PathInfo pathInfo new PathInfo();pathInfo.setInputBasePath(/data/attachment);pathInfo.setOutputBasePath(/data/output/attachment);PathInfo pathInfo1 new PathInfo();pathInfo1.setInputBasePath(/data/attachment2);pathInfo1.setOutputBasePath(/data/output/attachment);ImgReduceService.start(CollectionUtil.newArrayList(pathInfo, pathInfo1));}SneakyThrowspublic static void start(ListPathInfo pathInfoList) {for (PathInfo pathInfo : pathInfoList) {String inputBasePath pathInfo.getInputBasePath();String outputBasePath pathInfo.getOutputBasePath();if (StrUtil.isBlank(inputBasePath)) {continue;}ListFile fileList FileUtil.loopFiles(inputBasePath);log.info(文件数量{}, fileList.size());for (File file : fileList) {String inputFile FileUtil.getAbsolutePath(file);String inputPath FileUtil.getAbsolutePath(FileUtil.getParent(file, 1));inputPath StrUtil.replace(inputPath, D:, );inputPath StrUtil.replace(inputPath, File.separator, /);String outputPath StrUtil.replace(inputPath, inputBasePath, );outputPath outputBasePath outputPath;FileUtil.mkdir(outputPath);// 目标文件String outputFile outputPath / file.getName();// 已存在的跳过if (FileUtil.exist(outputFile)) {log.info(目标文件已存在{}, outputFile);continue;}String regex .*\\.(jpg|jpeg|png|gif|bmp)$;boolean isImage ReUtil.isMatch(regex, file.getName());// 图片才处理if (!isImage) {// 非图片直接免压缩丢过去FileUtil.copy(inputFile, outputPath, false);continue;}// 压缩asyncReduce(inputFile, outputFile, outputPath);}}}/*** 压缩-多线程*/SneakyThrowsprivate static void asyncReduce(String inputFile, String outputFile, String outputPath) {EXECUTOR_SERVICE.execute(() - reduce(inputFile, outputFile, outputPath));}/*** 压缩-单线程*/private static void reduce(String inputFile, String outputFile, String outputPath) {try {long startTime System.currentTimeMillis();Thumbnails.of(inputFile).scale(0.3) //scale是指定图片的大小值在0到1之间1就是原图大小.outputQuality(0.3) //图片的质量值也是在0到1越接近于1质量越好.toFile(outputFile);log.info(源文件{}, inputFile);log.info(目标文件{}, outputFile);log.info(压缩耗时{}ms, System.currentTimeMillis() - startTime);// long inputSize FileUtil.size(FileUtil.file(inputFile)); // long outputSize FileUtil.size(FileUtil.file(outputFile)); // log.info(源文件大小{}压缩后大小{}, DataSizeUtil.format(inputSize), DataSizeUtil.format(outputSize)); // double f (double) inputSize / outputSize; // log.info(压缩率{}, NumberUtil.formatPercent(f, 2));} catch (Exception e) { // log.error(压缩异常, e);log.info(压缩异常{}源文件路径{}, e.getMessage(), inputFile);// 压缩失败直接复制FileUtil.copy(inputFile, outputPath, false);}}/*** 配置信息*/Datapublic static class PathInfo {/*** 源文件根路径*/private String inputBasePath;/*** 输入文件根路径*/private String outputBasePath;}}java 简单部署 startup.sh 启动脚本 #!/bin/bashnohup java -Xms2G -Xmx3G -jar job_api.jar app.log 21 shutdown.sh 停止脚本 #!/bin/bash# 应用名称 APP_NAMEjob_api# 查找 Java 应用的进程ID PID$(ps -ef | grep $APP_NAME | grep -v grep | awk {print $2})# 判断是否存在进程ID if [ -z $PID ]; thenecho 未找到名为 $APP_NAME 的进程 elseecho 正在终止名为 $APP_NAME 的进程进程ID为$PIDkill -9 $PID fi支持代码调用和接口调用 curl http://127.0.0.1:9092/job/index/reduce \ --header Content-Type: application/json \ --data [{inputBasePath: /home/env/attachment,outputBasePath: /home/env/output/attachment},{inputBasePath: /home/env/attachment2,outputBasePath: /home/env/output/attachment} ]源码 https://gitee.com/zhaomingjian/workspace_jason_demo/tree/master/spring-boot-thumbnails
http://www.hkea.cn/news/14373578/

相关文章:

  • 贵州城乡住房建设网站wordpress中htaccess
  • 谷德设计网站企业网站手机端模板
  • 广西南宁网站建设有什么网站是可以做ui的
  • 老地方在线观看免费资源大全东莞seo网站管理
  • 中间商网站怎么做公司网站自己创建
  • 犀牛云网站做的怎么样火车头7.6 wordpress发布模块
  • 制作微信公众号的网站开发如何在腾讯云建设网站
  • 单页网站怎么做深圳网站制作工具
  • 怎样做才能让自己的网站做网站找哪家
  • 制作网站的基本流程网站顶部轮播怎么做
  • 青岛网站平台开发网上学编程哪个培训班最好
  • 四川做网站的公司有哪些政协网站建设方案
  • 知名购物网站有哪些wordpress 文章点击排行
  • 网站建设费 科研 类怎么制作网址
  • 专门做配电箱的网站河南第一火电建设公司网站
  • 南宁做网站外包体彩网站建设
  • 建设网站如何给页面命名泰安网站建设优化案例报告
  • 北京 高端网站设计网络营销课程总结与心得体会
  • 成都市建设厅官方网站海口制作网站公司
  • 济南微网站开发自己做网站帮公司出认证证书违法吗
  • 教育培训网站模板下载网站开发哪家公司电话
  • 济南营销型网站建设公司网站建设流程知乎
  • 博物馆展陈公司排名定西seo霸屏推广
  • 打开一个网站必应搜索推广
  • 泾川县建设局网站上海官网制作
  • 源码站用dz wordpress服装网站设计方案
  • 怎么创建网站文件夹国外网站建设的发展
  • 深圳制作网站培训学校手机网站对企业用户的好处
  • 黑龙江建设部网站中国互联网协会成立
  • 做博客网站宁波网站建设免费咨询