web开发中标配:aliyun ECS(阿里云服务器),aliyun RDS(阿里云数据库),aliyun OSS(阿里云对象存储),aliyun Memcache(阿里云缓存数据库)。

今天就介绍下OSS和Memcache的使用方法(开通方法就不详细介绍了)。

1 OSS使用demo

首先导入oss开发包

 <dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>2.0.6</version>
</dependency>

导入开发包后开发代码如下:

package com.cyparty.security.utils;

import com.aliyun.oss.OSSClient;
import com.aliyun.oss.model.ObjectMetadata; import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream; /**
* Created by Shadow on 2016/4/28.
*/
public class OssUtil {
public static void main(String[] args) {
getOSSUrl("E:/1.jpg");
} public static String getOSSUrl(String filepath){
try {
File file = new File(filepath);
String file_name=filepath.split("/")[filepath.split("/").length-1];
String OssUrl=null;
if (file.exists() && file.length() > 0) {
OssUrl= OssUtil.getOssFilePath(file_name, filepath);
}
return OssUrl; }catch (Exception e){
e.printStackTrace();
return null;
}
}
/**
* 获取上传到OSS的图片连接
*
* @param fileName 完整的文件名
* @param uploadFilePath 文件的路径
* @return 来自OSS的Url地址
*/
private static String getOssFilePath(String fileName, String uploadFilePath) {
String uri = "";
// 创建OSSClient对象
//todo:注意查看要链接的bucket服务器位置(shanghai or beijing or hangzhou)
String bucket_name="laihui";
String bucket_source="oss-cn-shanghai.aliyuncs.com";
String accessKeyId="XXXXXXXX";
String secretAccessKey="XXXXXXXXXXXXXX";
OSSClient client = new OSSClient(bucket_source, accessKeyId, secretAccessKey);
//上传图片
String key="security/images/"+Utils.getCurrenTimeStamp()/1000+"-"+fileName; //指定文件上传到bucket下面的那个文件夹下及文件名
boolean isSuccess= uploadFile(client, bucket_name, key, uploadFilePath);//指定bucket if (isSuccess) {
//uri = "laihui.oss-cn-shanghai.aliyuncs.com/" + key;
uri = bucket_name+bucket_source +"/"+ key;
}
return uri;
} /**
* 将本地图片上传至OSS的方法
*
* @param client OSS外网域名
* @param bucketName bucket的名字
* @param key 图片的名字
* @param filePath 所上传图片的路径
* @return boolean类型的成功与失败状态
*/
private static boolean uploadFile(OSSClient client, String bucketName, String key, String filePath) {
int MAX_TRY = 3;
int downloadTurn = 0;
boolean uploadSuccess = false;
while (downloadTurn < MAX_TRY) {
try {
File file = new File(filePath);
if ((!file.exists()) || file.length() == 0) {
uploadSuccess = false;
break;
}
ObjectMetadata objectMeta = new ObjectMetadata();
objectMeta.setContentLength(file.length());
// 可以在metadata中标记文件类型 if (!client.doesObjectExist(bucketName, key)) {
//System.out.println("开始上传文件" + filePath);
InputStream input = new FileInputStream(file);
client.putObject(bucketName, key, input, objectMeta);
System.out.println(filePath+"上传成功!");
uploadSuccess = true;
break;
} else {
uploadSuccess = true;
break;
}
} catch (Exception e) {
e.printStackTrace();
}
}
return uploadSuccess;
}
}
accessKeyId和secretAccessKey查看方法如下图,选中个人账号-->点击-->accessKeys-->查看

2 Memcache的使用

首先导入开发包-->下载地址,导入项目中后,具体代码如下
package com.cyparty.laihui.utilities;

import com.alibaba.fastjson.JSONObject;
import net.spy.memcached.AddrUtil;
import net.spy.memcached.BinaryConnectionFactory;
import net.spy.memcached.MemcachedClient;
import net.spy.memcached.internal.OperationFuture; public class Memcache {
private static MemcachedClient cache=null;
public static MemcachedClient getCache()
{
final String host = "XXXXXXX.m.XXXXXXX.ocs.aliyuncs.com"; //控制台上的“内网地址”
final String port = "11211"; //默认端口 11211,不用改
if(cache==null)
{
try {
cache = new MemcachedClient(new BinaryConnectionFactory(), AddrUtil.getAddresses(host + ":" + port));
}
catch (Exception e)
{
cache=null;
System.out.println("getCache Error:"+e.getMessage());
}
}
return cache;
}
public static JSONObject getMemcache(String where){
JSONObject result=new JSONObject();
try {
MemcachedClient cacheClient=getCache();
if (cacheClient.get(where)==null){
result.put("cache_status","0");
return result;
}else {
return (JSONObject)cacheClient.get(where);
}
} catch (Exception e) {
e.printStackTrace();
}
result.put("status","0");
return result;
} public static void setMemcache(String where,JSONObject resultObject) { MemcachedClient cacheClient = null;
try { cacheClient = getCache(); //向OCS中存一个key为"ocs"的数据,便于后面验证读取数据
String key = where;
JSONObject value =resultObject;
int expireTime = 60*60*24*10; // 过期时间10day,单位s; 从写入时刻开始计时,超过expireTime s后,该数据过期失效,无法再读出;
OperationFuture future = cacheClient.set(key, expireTime, value);
System.out.println("Set操作完成key为"+key); future.get(); // 确保之前(mc.set())操作已经结束
//执行get操作,从缓存中读数据,读取key为"ocs"的数据
System.out.println("Get操作:" + cache.get(key)); } catch (Exception e) {
e.printStackTrace();
}
}
public static void setMemcache(String token,int id,int expireTime) {
MemcachedClient cacheClient = null;
try {
cacheClient = getCache();
//向OCS中存一个key为"ocs"的数据,便于后面验证读取数据
String key = token;
int value =id;
if(expireTime<=0) {
expireTime = 60 * 60 * 2; // 过期时间,单位s; 从写入时刻开始计时,超过expireTime s后,该数据过期失效,无法再读出;
}
OperationFuture future = cacheClient.set(key, expireTime, value);
System.out.println("Set操作完成!链接为"+key); future.get(); // 确保之前(mc.set())操作已经结束 //执行get操作,从缓存中读数据,读取key为"ocs"的数据
System.out.println("Get操作:" + cache.get(key)); } catch (Exception e) {
e.printStackTrace();
}
}
}

java开发之阿里云对象存储OSS和云数据库Memcache的使用的更多相关文章

  1. 阿里云对象存储OSS与文件存储NAS的区别

    一.简介 应用场景:选择一款存储产品,面向文档数据的存取,不会涉及到数据处理. 产品选型主要从OSS和NAS中选择一款,满足文档存储的需求. 二.NAS优缺点 NAS 是一种采用直接与网络介质相连的特 ...

  2. 阿里云对象存储OSS访问控制

    阿里云对象存储OSS的Android SDK提供了STS鉴权模式和自签名模式来保障移动终端的安全性. OSS可以通过阿里云STS (Security Token Service) 进行临时授权访问.交 ...

  3. 阿里云对象存储OSS使用 HTTPS

    一.前言 阿里云对象存储oss本身也是可以用HTTPS直接访问的,但是它本身的地址是http://***.oss-cn-hangzhou.aliyuncs.com这样的,那么如果我们想使用自己的域名, ...

  4. Delphi阿里云对象存储OSS【支持上传文件、下载文件、删除文件、创建目录、删除目录、Bucket操作等】

    作者QQ:(648437169) 点击下载➨Delphi阿里云对象存储OSS             阿里云api文档 [Delphi阿里云对象存储OSS]支持 获取Bucket列表.设置Bucket ...

  5. 阿里云对象存储OSS

    阿里云的产品种类繁多,今天让我们一起来了解下对象存储(Object Storage Service,简称OSS)吧! 什么是对象存储呢? 简单来说,对象存储OSS是阿里云提供的海量.安全和高可靠的云存 ...

  6. 阿里云对象存储OSS支持版本管理特性

    阿里云对象存储OSS现已经全面支持“对象版本管理”特性.该功能适用于所有的存储类型以及区域.当Bucket启用该特性后,“对象版本管理”功能可以保护和恢复误删除.误覆盖的数据. 对象存储OSS“版本管 ...

  7. 阿里云对象存储OSS及CDN加速配置

    目录 十大云存储服务商 1. 登陆阿里云官网,开通对象存储服务 OSS 2. 创建存储空间 3. 绑定自定义域名 4. 配置阿里云CDN加速 5. 购买阿里云免费SSL证书 6. 阿里云CDN配置HT ...

  8. 干货 | 基于Go SDK操作京东云对象存储OSS的入门指南

    前言 本文介绍如何使用Go语言对京东云对象存储OSS进行基本的操作,帮助客户快速通过Go SDK接入京东云对象存储,提高应用开发的效率. 在实际操作之前,我们先看一下京东云OSS的API接口支持范围和 ...

  9. 阿里云对象存储 OSS 应用服务器搭建代码

    背景说明 最近做一个APP客户端图片直传阿里云OSS的服务,需要在后台开一个阿里云的OSSToken获取的接口. 阿里云官方文档地址:快速搭建移动应用直传服务. 略过移动端说明,直接看服务端的. 不是 ...

随机推荐

  1. ASP.NET Zero--14.一个例子(7)商品分类管理-分类搜索及分页

    分类搜索实现 1.添加搜索框 打开Index视图,添加一个搜索框,代码如下: ... <div class="portlet light"> <div class ...

  2. POJ2115(扩展欧几里得)

    C Looooops Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 23700   Accepted: 6550 Descr ...

  3. Ubuntu 修改时区

    1. 使用命令行 sudo tzselect 根据提示完成修改 2.修改~/.profile文件 添加: TZ='Asia/Shanghai'; export TZ 注销后重新登陆生效

  4. 【java设计模式】之 抽象工厂(Abstract Factory)模式

    1. 女娲的失误 上一节学习了工厂模式,女娲运用了该模式成功创建了三个人种,可是问题来了,她发现没有性别--这失误也忒大了点吧--竟然没有性别,那岂不是--无奈,只好抹掉重来了,于是所有人都被消灭掉了 ...

  5. js获取当前时间戳

    当使用js时我们可以使用timestamp = (new Date()).valueOf();直接获取当前时区时间点的时间戳.注意:js中时间戳的单位是毫秒,而php中则是秒

  6. Jenkins学习——Jenkins是什么

    Jenkins是什么 对于Jenkins是什么,百度百科给的答案是这样的:Jenkins是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能. 通过这句话,我们可以得到这样的一 ...

  7. 【Zookeeper】源码分析之请求处理链(二)

    一.前言 前面学习了请求处理链的RequestProcessor父类,接着学习PrepRequestProcessor,其通常是请求处理链的第一个处理器. 二.ZooKeeper源码分析 2.1 类的 ...

  8. 读书笔记 effective c++ Item 17 使用单独语句将new出来的对象放入智能指针

    1. 可能会出现资源泄漏的一种用法 假设我们有一个获取进程优先权的函数,还有一个在动态分类的Widget对象上根据进程优先权进行一些操作的函数: int priority(); void proces ...

  9. MONO 如何打包 .NET程序独立运行(winform篇)

    .NET程序独立运行是指运行.NET的电脑上,不需要安装.NET框架. .NET程序集“独立运行”并非真正的独立,它是运行在mono运行时基础之上的.由于这个运行时可以独立存在,所以,我们不需要在目标 ...

  10. 地图定位CoreLocation框架,地理位置编码与反编码

    在现代互联网时代,越来越多的应用,都用到了地图定位功能,在iOS开发中,想要加入这种功能,必须基于两个框架进行开发: 1.Map Kit:用于显示地图, 2.CoreLocation:用于显示地理位置 ...