编辑
2024-07-08
实用工具
00

简介

MinIO是一个对象存储解决方案,它提供了与Amazon Web Services S3兼容的API,并支持所有核心S3功能。 新版本采用了AGPL v3.0许可,不可商业,除非开源自己的项目,最后一个使用Apache2.0版本的是RELEASE.2021-04-22T15-44-28Z

docker安装

拉取镜像

docker pull minio/minio

启动镜像

linux
docker run -p 9000:9000 -p 9001:9001 --name minio -d --restart=always -e "MINIO_ACCESS_KEY=admin" -e "MINIO_SECRET_KEY=admin" -v /home/data:/data -v /home/config:/root/.minio minio/minio server --console-address ":9000" --address ":9001" /data

-p:9000是图形界面的端口,9001是API的端口,在使用SDK连接需要用到

MINIO_ACCESS_KEY:指定图形界面的用户名

MINIO_SECRET_KEY:指定图形界面的密码

如果修改了端口映射比如:-p 9900:9000,命令最后这句话是不用变化的还是-console-address ":9000" --address ":9001"

老版本部署

老版本部署比如RELEASE.2021-04-22T15-44-28Z 这是最后一个Apache2.0协议的版本,不用开源自己的代码。新版本使用了AGPLv3协议必须开源自己的代码才能免费使用。

mkdir -p /home/docker/minio/config mkdir -p /home/docker/minio/data
docker run -p 9000:9000 -p 9001:9001 --name minio -d --restart=always \ -e "MINIO_ROOT_USER=minio" \ -e "MINIO_ROOT_PASSWORD=minio123456" \ -v /home/docker/minio/data:/data \ -v /home/docker/minio/config:/root/.minio \ minio/minio:RELEASE.2021-04-22T15-44-28Z server /data

启动

http:/ip:9000/login

获取accessKey和secretKey 选择create service account.

编辑
2024-07-05
学习记录
00

前提

业务需要,得获取大图的缩略图

代码

controller

java
@GetMapping("getThumbnail") @ApiOperation("获取缩略图") public void getThumbnail(String url, HttpServletResponse response){ try (OutputStream outputStream = response.getOutputStream()){ // 设置响应类型为JPEG图片 response.setContentType("image/jpeg"); // 防止中文乱码以及图片在浏览器中显示问题 response.setHeader("Content-Disposition", "inline; filename=image.jpg"); // 写入图片数据到输出流 ImageUtil.getImageStream(url,200,200).writeTo(outputStream); // 刷新缓冲区并结束响应 outputStream.flush(); }catch (IOException e){ throw new SystemException(500,"获取缩略图失败"); } }

ImageUtil

java
public static ByteArrayOutputStream getImageStream(String url,int width, int height) { ByteArrayOutputStream outputStream=null; // 打开URL连接 try (InputStream in = new URL(url).openStream()) { // 从输入流中读取原始图片 BufferedImage originalImage = ImageIO.read(in); // 创建一个新的缩放后的图片 BufferedImage resizedImage = new BufferedImage(width, height, originalImage.getType()); Graphics2D graphics2D = resizedImage.createGraphics(); graphics2D.drawImage(originalImage, 0, 0, width, height, null); graphics2D.dispose(); // 将缩放后的图片转换为字节数组 outputStream = new ByteArrayOutputStream(); ImageIO.write(resizedImage, "jpg", outputStream); } catch (Exception e) { e.printStackTrace(); log.error("获取图片失败:"+e.getMessage()); // 处理异常情况 } return outputStream; } ``

使用

bash
http://localhost:8888/dictimg/getThumbnail?url=http://www.baidu.com/image1.jpg
编辑
2024-07-02
学习记录
00

前提

工作中需要导出word文件,由于之前没弄过,网上查询半天,最后采用了xdocreport的依赖进行导出word文件,效果不错,就是网上的资料比较少,list嵌套输出都查不到,踩了很多的坑,先简单介绍一下xdocreport吧

xdocreport 简介

xdocreportGithub地址, XDocReport means XML Document reporting. It's Java API to merge XML document created with MS Office (docx) or OpenOffice (odt), LibreOffice (odt) with a Java model to generate report and convert it if you need to another format (PDF, XHTML...).

翻译: XDocReport是指XML文档报告。Java API将使用MS Office(docx)或OpenOffice(odt)、LibreOffice(odt)创建的XML文档与Java模型合并以生成报告,并在需要时将其转换为其他格式(PDF、XHTML…)。

简单说就是得先定义一个demo.word文件,在需要填充的地方采用一些freemacker语法进行编译,然后java读取demo文件动态的填充内容,再输出文件。

编辑
2024-07-01
学习记录
00

前提

将文件流写入HttpServerResponse,knife4j不能正常的下载文件,只会把文件信息显示出来

操作

Controller层在对应的接口增加knife4j配置

在@ApiOperation注解中加上produces = “application/octet-stream”

java
@GetMapping("/getWord") @ApiOperation(value = "获取word文件",produces = "application/octet-stream" ) @Permission(rule = PermissionRule.Login) public void getWord(HttpServerResponse res) { taskService.getWord(res); }
编辑
2024-06-27
学习记录
00

介绍

事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。 事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。 事务是一个原子操作:事务中的命令要么全部被执行,要么全部都不执行。

总结说:redis事务就是一次性、顺序性、排他性的执行一个队列中的一系列命令。

事务命令

MULTI :开启事务,redis会将后续的命令逐个放入队列中,然后使用EXEC命令来原子化执行这个命令系列。 EXEC:执行事务中的所有操作命令。 DISCARD:取消事务,放弃执行事务块中的所有命令。 WATCH:监视一个或多个key,如果事务在执行前,这个key(或多个key)被其他命令修改,则事务被中断,不会执行事务中的任何命令。 UNWATCH:取消WATCH对所有key的监视。