2.9k words 3 mins.

最近用到了 springboot 项目返回二进制流,话不多说,代码贴上:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
@PostMapping(value = "/file/{fileName}")
public ResponseEntity<FileSystemResource> getFile(@PathVariable("fileName") String fileName) throws FileNotFoundException {
File file = new File(filePath, fileName);
if (file.exists()) {
return export(file);
}
System.out.println(file);
return null;
}

public ResponseEntity<FileSystemResource> export(File file) {
if (file == null) {
return null;
}
HttpHeaders headers = new HttpHeaders();
headers.add("Cache-Control", "no-cache, no-store, must-revalidate");
headers.add("Content-Disposition", "attachment; filename=" + file.getName());
headers.add("Pragma", "no-cache");
headers.add("Expires", "0");
headers.add("Last-Modified", new Date().toString());
headers.add("ETag", String.valueOf(System.currentTimeMillis()));
return ResponseEntity.ok()
.headers(headers)
.contentLength(file.length())
.contentType(MediaType.parseMediaType("application/octet-stream"))
.body(new FileSystemResource(file));
}
12k words 11 mins.

Here's something encrypted, password is required to continue reading.
17k words 15 mins.

# 动态代理两个实例 (视频中学的)

动态代理在 Java 中有着广泛的应用,比如 Spring AOP、Hibernate 数据查询、测试框架的后端 mock、RPC 远程调用、 Java 注解对象获取、日志、用户鉴权、全局性异常处理、性能监控,甚至事务处理等。
本文主要介绍 Java 中两种常见的动态代理方式: JDK 原生动态代理和 CGLIB 动态代理。

# 代理模式

本文将介绍的 Java 动态代理与设计模式中的代理模式有关,什么是代理模式呢?

9.1k words 8 mins.

# 阻塞队列接口结构和实现类

阻塞队列,顾名思义,首先它是一个队列,而一个阻塞队列在数据结构中所起的作用大致如下图所示: