🎯先上结论,Mapstruct的性能远远高于BeanUtils,这应该是大佬使用Mapstruct的主要原因,下面是我的测试结果,可以看出随着属性个数的增加,BeanUtils的耗时也在增加,并且BeanUtils的耗时跟属性个数成正比,而Mapstruct的耗时却一直是1秒,所以从对比数据可以看出Mapstruct是非常优秀的,其性能远远超过BeanUtils。
xml
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct</artifactId>
<version>1.5.0.Final</version>
</dependency>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>1.5.0.Final</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.12</version>
</dependency>
Sa-Token 是一个轻量级 Java 权限认证框架,主要解决:登录认证、权限认证、单点登录、OAuth2.0、分布式Session会话、微服务网关鉴权 等一系列权限相关问题。
无需实现任何接口,无需创建任何配置文件,只需要一句静态代码的调用,便可以完成会话登录认证。
Sa-Token 目前主要五大功能模块:登录认证、权限认证、单点登录、OAuth2.0、微服务鉴权。
文件传输协议(File Transfer Protocol,FTP),基于该协议FTP客户端与服务端可以实现共享文件、上传文件、下载文件。
FTP 基于TCP协议生成一个虚拟的连接,主要用于控制FTP连接信息,同时再生成一个单独的TCP连接用于FTP数据传输。用户可以通过客户端向FTP服务器端上传、下载、删除文件,FTP服务器端可以同时提供给多人共享使用。
FTP服务是Client/Server(简称C/S)模式,基于FTP协议实现FTP文件对外共享及传输的软件称之为FTP服务器源端,客户端程序基于FTP协议,则称之为FTP客户端,FTP客户端可以向FTP服务器上传、下载文件
java
String projectPath = System.getProperty("user.dir");
File file = new File(projectPath + "/filename");
获取项目使用路径,在其下面创建一个文件夹俩存放内容、
javaString unzipPath=RecMrDetailIndexController.class.getResource("/unzip/").getPath();
在项目resources目录下先创建一个文件夹,存放一些文件,打包时会打进targer-classes目录下面,可以直接在classes下找到自己创建的文件夹,将文件存放到里面
先读取压缩文件到本地,然后解压,再向前端输出文件夹中的内容
这部分忽略,可以直接查看之前的文章,直接从ftpUtil获取文件,得到ByteArrayOutputStream开始,讲解
java
//通过zip获取pdf
public ByteArrayOutputStream getPdfBase64ByZip(ByteArrayOutputStream fileData,String fileName) throws Exception {
ByteArrayInputStream inputStream = new ByteArrayInputStream(fileData.toByteArray());
String base64= Base64Encoder.encode(IOUtils.toByteArray(inputStream));
System.out.println(base64);
String unzipPath=RecMrDetailIndexController.class.getResource("/unzip/").getPath();
String zipName=unzipPath+fileName.split("as")[0]+"zip";
FileUtils.base64ToFile(zipName,base64);
ZipUtil.unZip(zipName,unzipPath,"mars");
String pdfName=unzipPath+fileName.split("as")[0]+"pdf";
System.out.println("pdfName"+pdfName);
File file=new File(pdfName);
FileInputStream fileInputStream=new FileInputStream(file);
byte[] bytes=IOUtils.toByteArray(fileInputStream);
ByteArrayOutputStream outputStream = new ByteArrayOutputStream(bytes.length);
outputStream.write(bytes, 0, bytes.length);
return outputStream;
}