乱码经常出现在什么位置
- 数据保存过程中的乱码
- 数据展示过程中的乱码
2025年07月20日
aria2 虽然很强大,配置就略有些复杂,一些懒人包说实话整成了累人包。
今天抽了点时间改进了一下 aardio 中的 process.aria2 扩展库,顺手解决了 aria2 不支持 UPnP 内网穿透的问题 —— 再也不用手动去配置了。
process.aria2 可以自动创建并管理 aria2 服务进程,自动获取并添加最新 Tracker 服务器,自动探测可用空闲端口,多个 aria2 进程不会冲突。并且自动检测系统环境并自动设置最佳配置。
2025年07月20日
随着云计算和大数据的快速发展,企业对存储系统的需求逐渐增大,尤其是对于海量数据的存储和管理。传统的文件存储方式已经不能满足性能、可扩展性和安全性等方面的要求。对象存储(Object Storage)作为一种新的存储方式,凭借其灵活性、扩展性和高可用性,逐渐成为了现代企业存储系统的首选。
MinIO 是一个高性能、分布式对象存储服务,兼容 Amazon S3 API,非常适合用于开发和部署私有云存储服务。Spring Boot 是一个简化企业级 Java 应用程序开发的框架,它凭借开箱即用的特性,广泛用于快速开发微服务应用。
2025年07月20日
文件上传下载功能是Web应用中的常见需求,从简单的用户头像上传到大型文件的传输与共享,都需要可靠的文件处理机制。
SpringBoot作为流行的Java应用开发框架,提供了多种实现文件上传下载的工具和方案。
本文将介绍七种在SpringBoot中处理文件上传下载的工具。
2025年07月20日
/**
* 以压缩包的方式下载excel
* @param response 响应
* @param workbookMap
* @param zipName 压缩包名称
* @throws Exception
*/
public static void downloadExcelForZip(HttpServletResponse response, Map<String, XSSFWorkbook> workbookMap, String zipName) throws Exception {
ZipOutputStream out = null;
try {
response.setContentType("application/*");
response.setHeader("Content-Disposition", "attachment;filename=" + new String(zipName.getBytes("gb2312"), "ISO8859-1"));
out = new ZipOutputStream(response.getOutputStream());
for (String fileName : workbookMap.keySet()) {
XSSFWorkbook workbook = workbookMap.get(fileName);
//创建一个新的ZIP条目,文件名由fileName指定
ZipEntry zipEntry = new ZipEntry(fileName);
//将新创建的ZIP条目写入ZIP输出流,表示即将写入该条目对应的数据
out.putNextEntry(zipEntry);
//由于workbook.write()方法在写入完成后会关闭底层的输出流,因此不能直接将工作簿写入ZIP输出流out
//为了避免流被提前关闭,代码使用ByteArrayOutputStream作为中间缓冲,先将工作簿写入内存,再将内存中的数据写入ZIP流
ByteArrayOutputStream bos = new ByteArrayOutputStream();
workbook.write(bos);
bos.writeTo(out);
out.closeEntry();
}
out.flush();
} catch (Exception e) {
throw new ServletException("下载文件异常" + e.getMessage());
} finally {
if (out != null) {
out.close();
}
}
}
2025年07月20日
setCharacterEncoding:只是设置字符的编码方式
response.setCharacterEncoding("utf-8");