OSS服务进行后端的存储附件

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,内容安全 1000次 1年
对象存储 OSS,恶意文件检测 1000次 1年
简介: OSS服务进行后端的存储附件

当操作完OSS的流后,需要关闭对应的流,否则会造成资源泄漏或者占用服务资源过多。关闭流的方式如下:

```java

if (inputStream != null) {

   try {

       inputStream.close();

   } catch (IOException e) {

       e.printStackTrace();

   }

}

if (outputStream != null) {

   try {

       outputStream.close();

   } catch (IOException e) {

       e.printStackTrace();

   }

}

```

关于OSS连接池的使用,推荐使用Alibaba Cloud SDK for Java中提供 OSSClientBuilder 来构建连接池的连接。在使用OSS服务时,我们一般都需要创建 OSSClient 实例,而 OSSClient 并不是线程安全的,所以需要使用连接池来减少每个线程创建的 OSSClient 实例和连接数。 示例代码如下:

```java

import com.aliyun.oss.OSSClient;

import com.aliyun.oss.OSSClientBuilder;

import com.aliyun.oss.common.auth.DefaultCredentialProvider;

import com.aliyun.oss.common.comm.Protocol;

import com.aliyun.oss.common.utils.AuthUtils;

import java.util.ArrayList;

import java.util.List;

import java.util.concurrent.ArrayBlockingQueue;

import java.util.concurrent.BlockingQueue;

import java.util.concurrent.TimeUnit;

public class OSSClientPool {

   // 连接池最大连接数

   private static int DEFAULT_MAX_CONNECTIONS = 100;

   // 默认的空闲时间(单位:毫秒)

   private static long DEFAULT_IDLE_TIMEOUT = 5 * 60 * 1000;

   // OSS连接池

   private BlockingQueue<OSSClient> ossClientPool = new ArrayBlockingQueue<OSSClient>(DEFAULT_MAX_CONNECTIONS);

   // OSS连接池中最多使用的连接数

   private int maxConnections;

   // OSS连接池中空闲连接的超时时间

   private long idleTimeout;

   // 构造函数

   public OSSClientPool() {

       this(DEFAULT_MAX_CONNECTIONS, DEFAULT_IDLE_TIMEOUT);

   }

   public OSSClientPool(int maxConnections, long idleTimeout) {

       this.maxConnections = maxConnections;

       this.idleTimeout = idleTimeout;

       initialize();

   }

   // 初始化OSS连接池

   private void initialize() {

       for (int i = 0; i < maxConnections; i++) {

           OSSClient ossClient = buildOSSClient();

           if (ossClient != null) {

               ossClientPool.add(ossClient);

           }

       }

   }

   // 构建OSSClient实例

   private OSSClient buildOSSClient() {

       String endpoint = "yourEndPoint"; // 替换成自己的endpoint

       String accessKeyId = "yourAccessKeyId"; // 替换成自己的accessKeyId

       String accessKeySecret = "yourAccessKeySecret"; // 替换成自己的accessKeySecret

       boolean isCname = false; // 非CNAME模式

       OSSClient ossClient = null;

       try {

           ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);

           ossClient.setEndpoint(endpoint);

           ossClient.setCredentials(new DefaultCredentialProvider(accessKeyId, accessKeySecret, null));

           ossClient.setProtocol(Protocol.HTTPS);

           ossClient.setTimeout(30000);

       } catch (Exception e) {

           e.printStackTrace();

       }

       return ossClient;

   }

   // 获取OSSClient连接

   public OSSClient getOSSClient() {

       OSSClient ossClient = null;

       try {

           ossClient = ossClientPool.poll(idleTimeout, TimeUnit.MILLISECONDS);

       } catch (InterruptedException e) {

           e.printStackTrace();

       }

       if (ossClient == null) {

           ossClient = buildOSSClient();

       }

       return ossClient;

   }

   // 释放OSSClient连接

   public boolean releaseOSSClient(OSSClient ossClient) {

       return (ossClientPool.add(ossClient) || ossClientPool.offer(ossClient));

   }

   // 销毁OSS连接池

   public void destroy() {

       List<OSSClient> list = new ArrayList<OSSClient>();

       ossClientPool.drainTo(list);

       for (OSSClient ossClient : list) {

           ossClient.shutdown();

       }

   }

}

```

通过上述的方式,我们可以方便地使用OSS服务进行后端的存储附件。

相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
相关文章
|
6天前
|
存储 关系型数据库 MySQL
MySQL——数据库备份上传到阿里云OSS存储
MySQL——数据库备份上传到阿里云OSS存储
23 0
|
11天前
|
前端开发 JavaScript NoSQL
构建苏宁商品详情页:从前端展示到后端服务的实战指南
苏宁商品详情页集成前端展示与后端服务,前端利用HTML/CSS/JavaScript呈现信息,后端采用Node.js/Java/Python等技术处理请求并从MySQL/MongoDB等数据库获取数据。示例中,Node.js通过Express框架搭建API,模拟商品查询逻辑。实际应用更为复杂,涵盖用户评价、推荐等功能,并需考虑分布式架构、安全防护及性能优化等方面。
构建苏宁商品详情页:从前端展示到后端服务的实战指南
|
1天前
|
存储 JavaScript 前端开发
Vue中实现图片上传,上传后的图片回显,存储图片到服务器 【使用对象存储OSS】
这篇文章介绍了在Vue中实现图片上传到阿里云OSS对象存储服务的完整流程,包括服务端签名直传的前提知识、后端设置、前端组件封装以及图片上传和回显的效果展示。
|
1天前
|
小程序 JavaScript Java
微信小程序+SpringBoot接入后台服务,接口数据来自后端
这篇文章介绍了如何将微信小程序与SpringBoot后端服务进行数据交互,包括后端接口的编写、小程序获取接口数据的方法,以及数据在小程序中的展示。同时,还涉及到了使用Vue搭建后台管理系统,方便数据的查看和管理。
微信小程序+SpringBoot接入后台服务,接口数据来自后端
|
5天前
|
存储 机器学习/深度学习 弹性计算
阿里云EMR数据湖文件系统问题之OSS-HDFS全托管服务的问题如何解决
阿里云EMR数据湖文件系统问题之OSS-HDFS全托管服务的问题如何解决
|
7天前
|
存储 SQL 缓存
构建高性能后端服务的策略与实践
【8月更文挑战第13天】在数字化时代,后端服务的高效性对于企业至关重要。本文深入探讨了如何通过合理设计、优化数据库操作以及应用缓存技术等策略来提升后端服务性能。同时,也强调了监控和调优的重要性,并指出了团队协作在性能优化中的作用。
20 3
|
8天前
|
SQL 监控 安全
深入浅出:构建高性能后端服务的关键要素
在数字化浪潮的推动下,后端服务成为了支撑现代软件系统的骨干。本文将通过浅显易懂的语言和生动的比喻,带领读者一探究竟,如何打造一个既稳定又高效的后端系统。从选择合适的技术栈到实施最佳实践,我们将一步步揭开高性能后端服务的神秘面纱。无论你是初学者还是资深开发者,这篇文章都将为你提供宝贵的洞见和实用的技巧。
21 4
|
5天前
|
存储 前端开发 JavaScript
Springboot+Vue实现将图片和表单一起提交到后端,同时将图片地址保存到数据库、再次将存储的图片展示到前端vue页面
本文介绍了使用Springboot后端和Vue前端实现图片与表单数据一起提交到后端,并保存图片地址到数据库,然后展示存储的图片到前端Vue页面的完整流程。
Springboot+Vue实现将图片和表单一起提交到后端,同时将图片地址保存到数据库、再次将存储的图片展示到前端vue页面
|
16天前
|
弹性计算 JavaScript 中间件
构建高效后端服务:使用Node.js和Express框架
【8月更文挑战第4天】本文将通过一个实际案例,详细介绍如何使用Node.js和Express框架快速构建一个高效、可扩展的后端服务。我们将从项目初始化开始,逐步实现RESTful API接口,并介绍如何利用中间件优化请求处理流程。最后,我们将展示如何部署应用到云服务器上,确保其高可用性和可扩展性。
|
1天前
|
存储 Kubernetes 数据安全/隐私保护
在K8S中,如果后端nfs存储的ip发生变化如何解决?
在K8S中,如果后端nfs存储的ip发生变化如何解决?

热门文章

最新文章