package com.aliyun.oss.demo;

import com.aliyun.oss.ClientException;
import com.aliyun.oss.OSSClient;
import com.aliyun.oss.OSSException;
import com.aliyun.oss.model.*;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator; import java.util.ArrayList;
import java.util.List; /**
* @BelongsProject: maven-demo
* @BelongsPackage: com.aliyun.oss.demo
* @Author: Guoyh
* @CreateTime: 2018-10-11 15:36
* @Description: 拷贝文件
*/
public class CopyObjects {
static Logger logger = Logger.getLogger(HelloOSS.class); // endpoint是访问OSS的域名。如果您已经在OSS的控制台上 创建了Bucket,请在控制台上查看域名。
// 如果您还没有创建Bucket,endpoint选择请参看文档中心的“开发人员指南 > 基本概念 > 访问域名”,
// 链接地址是:https://help.aliyun.com/document_detail/oss/user_guide/oss_concept/endpoint.html?spm=5176.docoss/user_guide/endpoint_region
// endpoint的格式形如“http://oss-cn-hangzhou.aliyuncs.com/”,注意http://后不带bucket名称,
// 比如“http://bucket-name.oss-cn-hangzhou.aliyuncs.com”,是错误的endpoint,请去掉其中的“bucket-name”。
private static String endpoint = "http://oss-cn-huhehaote.aliyuncs.com"; // accessKeyId和accessKeySecret是OSS的访问密钥,您可以在控制台上创建和查看,
// 创建和查看访问密钥的链接地址是:https://ak-console.aliyun.com/#/。
// 注意:accessKeyId和accessKeySecret前后都没有空格,从控制台复制时请检查并去除多余的空格。
private static String accessKeyId = "";
private static String accessKeySecret = ""; // Bucket用来管理所存储Object的存储空间,详细描述请参看“开发人员指南 > 基本概念 > OSS基本概念介绍”。
// Bucket命名规范如下:只能包括小写字母,数字和短横线(-),必须以小写字母或者数字开头,长度必须在3-63字节之间。
private static String bucketName = ""; public static void main(String[] args) { // 日志配置,OSS Java SDK使用log4j记录错误信息。示例程序会在工程目录下生成“oss-demo.log”日志文件,默认日志级别是INFO。
// 日志的配置文件是“conf/log4j.properties”,如果您不需要日志,可以没有日志配置文件和下面的日志配置。
PropertyConfigurator.configure("conf/log4j.properties"); logger.info("Started"); // 生成OSSClient,您可以指定一些参数,详见“SDK手册 > Java-SDK > 初始化”,
// 链接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/init.html?spm=5176.docoss/sdk/java-sdk/get-start
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret); try { /* 校验存储空间 */
// 判断Bucket是否存在。详细请参看“SDK手册 > Java-SDK > 管理Bucket”。
// 链接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_bucket.html?spm=5176.docoss/sdk/java-sdk/init
if (ossClient.doesBucketExist(bucketName)) {
System.out.println("您已经创建Bucket:" + bucketName + "。");
} else {
System.out.println("您的Bucket不存在,创建Bucket:" + bucketName + "。");
// 创建Bucket。详细请参看“SDK手册 > Java-SDK > 管理Bucket”。
// 链接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_bucket.html?spm=5176.docoss/sdk/java-sdk/init
ossClient.createBucket(bucketName);
} // 查看Bucket信息。详细请参看“SDK手册 > Java-SDK > 管理Bucket”。
// 链接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_bucket.html?spm=5176.docoss/sdk/java-sdk/init
BucketInfo info = ossClient.getBucketInfo(bucketName);
System.out.println("Bucket " + bucketName + "的信息如下:");
System.out.println("\t数据中心:" + info.getBucket().getLocation());
System.out.println("\t创建时间:" + info.getBucket().getCreationDate());
System.out.println("\t用户标志:" + info.getBucket().getOwner()); /*拷贝文件*/
String sourceBucketName = bucketName;
String sourceObjectName = "oss-accesslog/********2018-10-10-15-00-00-0001";
String destinationBucketName = bucketName;
String destinationObjectName = "*****/********2018-10-10-15-00-00-0001-copy";
ObjectMetadata objectMetadata = ossClient.getObjectMetadata(sourceBucketName, sourceObjectName);
// 获取被拷贝文件的大小。
long contentLength = objectMetadata.getContentLength(); // 设置分片大小为10MB。
long partSize = 1024 * 1024 * 10; // 计算分片总数。
int partCount = (int) (contentLength / partSize);
if (contentLength % partSize != 0) {
partCount++;
}
System.out.println("total part count:" + partCount); // 初始化拷贝任务。可以通过InitiateMultipartUploadRequest指定目标文件元信息。
InitiateMultipartUploadRequest initiateMultipartUploadRequest = new InitiateMultipartUploadRequest(destinationBucketName, destinationObjectName);
InitiateMultipartUploadResult initiateMultipartUploadResult = ossClient.initiateMultipartUpload(initiateMultipartUploadRequest);
String uploadId = initiateMultipartUploadResult.getUploadId(); // 分片拷贝。
List<PartETag> partETags = new ArrayList<PartETag>();
for (int i = 0; i < partCount; i++) {
// 计算每个分片的大小。
long skipBytes = partSize * i;
long size = partSize < contentLength - skipBytes ? partSize : contentLength - skipBytes; // 创建UploadPartCopyRequest。可以通过UploadPartCopyRequest指定限定条件。
UploadPartCopyRequest uploadPartCopyRequest =
new UploadPartCopyRequest(sourceBucketName, sourceObjectName, destinationBucketName, destinationObjectName);
uploadPartCopyRequest.setUploadId(uploadId);
uploadPartCopyRequest.setPartSize(size);
uploadPartCopyRequest.setBeginIndex(skipBytes);
uploadPartCopyRequest.setPartNumber(i + 1);
UploadPartCopyResult uploadPartCopyResult = ossClient.uploadPartCopy(uploadPartCopyRequest); // 将返回的分片ETag保存到partETags中。
partETags.add(uploadPartCopyResult.getPartETag());
} // 提交分片拷贝任务。
CompleteMultipartUploadRequest completeMultipartUploadRequest = new CompleteMultipartUploadRequest(
destinationBucketName, destinationObjectName, uploadId, partETags);
ossClient.completeMultipartUpload(completeMultipartUploadRequest);
System.out.println("\t"+destinationObjectName+"\t"+"拷贝完成"); } catch (OSSException oe) {
oe.printStackTrace();
} catch (ClientException ce) {
ce.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
ossClient.shutdown();
} logger.info("Completed");
} }

CopyObjects.java

package com.aliyun.oss.demo;

import com.aliyun.oss.ClientException;
import com.aliyun.oss.OSSClient;
import com.aliyun.oss.OSSException;
import com.aliyun.oss.model.BucketInfo;
import com.aliyun.oss.model.ListObjectsRequest;
import com.aliyun.oss.model.OSSObjectSummary;
import com.aliyun.oss.model.ObjectListing;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator; import java.util.List; /**
* @BelongsProject: maven-demo
* @BelongsPackage: com.aliyun.oss.demo
* @Author: Guoyh
* @CreateTime: 2018-10-12 13:39
* @Description: 删除oss对象
*/
public class DeleteObjects {
static Logger logger = Logger.getLogger(HelloOSS.class); // endpoint是访问OSS的域名。如果您已经在OSS的控制台上 创建了Bucket,请在控制台上查看域名。
// endpoint的格式形如“http://oss-cn-hangzhou.aliyuncs.com/”,注意http://后不带bucket名称,
// 比如“http://bucket-name.oss-cn-hangzhou.aliyuncs.com”,是错误的endpoint,请去掉其中的“bucket-name”。
private static String endpoint = "http://oss-cn-huhehaote.aliyuncs.com"; // accessKeyId和accessKeySecret是OSS的访问密钥,您可以在控制台上创建和查看
// 注意:accessKeyId和accessKeySecret前后都没有空格,从控制台复制时请检查并去除多余的空格。
private static String accessKeyId = "";
private static String accessKeySecret = ""; // Bucket用来管理所存储Object的存储空间,
// Bucket命名规范如下:只能包括小写字母,数字和短横线(-),必须以小写字母或者数字开头,长度必须在3-63字节之间。
private static String bucketName = ""; public static void main(String[] args) { // 日志配置,OSS Java SDK使用log4j记录错误信息。示例程序会在工程目录下生成“oss-demo.log”日志文件,默认日志级别是INFO。
// 日志的配置文件是“conf/log4j.properties”,如果您不需要日志,可以没有日志配置文件和下面的日志配置。
PropertyConfigurator.configure("conf/log4j.properties"); logger.info("Started"); // 生成OSSClient,您可以指定一些参数,
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret); try {
/* 校验存储空间 */
// 判断Bucket是否存在。
if (ossClient.doesBucketExist(bucketName)) {
System.out.println("您已经创建Bucket:" + bucketName + "。");
} else {
System.out.println("您的Bucket不存在,创建Bucket:" + bucketName + "。");
// 创建Bucket。
ossClient.createBucket(bucketName);
} // 查看Bucket信息。
BucketInfo info = ossClient.getBucketInfo(bucketName);
System.out.println("Bucket " + bucketName + "的信息如下:");
System.out.println("\t数据中心:" + info.getBucket().getLocation());
System.out.println("\t创建时间:" + info.getBucket().getCreationDate());
System.out.println("\t用户标志:" + info.getBucket().getOwner()); /*遍历存储空间*/
// 查看Bucket中的Object。
// 指定前缀。列举文件
final String keyPrefix = "************";
// 列举包含指定前缀的文件。默认列举100个文件。
ObjectListing objectListingWithPrefix = ossClient.listObjects(new ListObjectsRequest(bucketName).withPrefix(keyPrefix));
List<OSSObjectSummary> sums = objectListingWithPrefix.getObjectSummaries();
System.out.println("您有以下Object:");
for (OSSObjectSummary s : sums) {
System.out.println("\t" + s.getKey());
}
System.out.println("\t" + "--------------------------------------------------------------------------"); /*删除空间文件*/
// 删除Object。详细请参看“SDK手册 > Java-SDK > 管理文件”。
// 链接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_object.html?spm=5176.docoss/sdk/java-sdk/manage_bucket
ossClient.deleteObject(bucketName, "************/89gN8339293844m6915l693800g7Tk40.gif");
System.out.println("删除Object:" + "************/89gN8339293844m6915l693800g7Tk40.gif" + "成功。"); System.out.println("\t" + "--------------------------------------------------------------------------");
ObjectListing objectListingWithPrefixP = ossClient.listObjects(new ListObjectsRequest(bucketName).withPrefix(keyPrefix));
List<OSSObjectSummary> sum = objectListingWithPrefixP.getObjectSummaries();
System.out.println("您有以下Object:");
for (OSSObjectSummary s : sum) {
System.out.println("\t" + s.getKey());
} } catch (OSSException oe) {
oe.printStackTrace();
} catch (ClientException ce) {
ce.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
ossClient.shutdown();
} logger.info("Completed");
} }

DeleteObjects.java

package com.aliyun.oss.demo;

import com.aliyun.oss.ClientException;
import com.aliyun.oss.OSSClient;
import com.aliyun.oss.OSSException;
import com.aliyun.oss.model.*;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator; import java.util.List; /**
* @BelongsProject: maven-demo
* @BelongsPackage: com.aliyun.oss.demo
* @Author: Guoyh
* @CreateTime: 2018-10-11 14:51
* @Description: 下载OSS文件
*/
public class DownloadObjects {
static Logger logger = Logger.getLogger(HelloOSS.class); // endpoint是访问OSS的域名。如果您已经在OSS的控制台上 创建了Bucket,请在控制台上查看域名。
// 如果您还没有创建Bucket,endpoint选择请参看文档中心的“开发人员指南 > 基本概念 > 访问域名”,
// 链接地址是:https://help.aliyun.com/document_detail/oss/user_guide/oss_concept/endpoint.html?spm=5176.docoss/user_guide/endpoint_region
// endpoint的格式形如“http://oss-cn-hangzhou.aliyuncs.com/”,注意http://后不带bucket名称,
// 比如“http://bucket-name.oss-cn-hangzhou.aliyuncs.com”,是错误的endpoint,请去掉其中的“bucket-name”。
private static String endpoint = "http://oss-cn-huhehaote.aliyuncs.com"; // accessKeyId和accessKeySecret是OSS的访问密钥,您可以在控制台上创建和查看,
// 创建和查看访问密钥的链接地址是:https://ak-console.aliyun.com/#/。
// 注意:accessKeyId和accessKeySecret前后都没有空格,从控制台复制时请检查并去除多余的空格。
private static String accessKeyId = "";
private static String accessKeySecret = ""; // Bucket用来管理所存储Object的存储空间,详细描述请参看“开发人员指南 > 基本概念 > OSS基本概念介绍”。
// Bucket命名规范如下:只能包括小写字母,数字和短横线(-),必须以小写字母或者数字开头,长度必须在3-63字节之间。
private static String bucketName = ""; public static void main(String[] args) { // 日志配置,OSS Java SDK使用log4j记录错误信息。示例程序会在工程目录下生成“oss-demo.log”日志文件,默认日志级别是INFO。
// 日志的配置文件是“conf/log4j.properties”,如果您不需要日志,可以没有日志配置文件和下面的日志配置。
PropertyConfigurator.configure("conf/log4j.properties"); logger.info("Started"); // 生成OSSClient,您可以指定一些参数,详见“SDK手册 > Java-SDK > 初始化”,
// 链接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/init.html?spm=5176.docoss/sdk/java-sdk/get-start
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret); try { /* 校验存储空间 */
// 判断Bucket是否存在。详细请参看“SDK手册 > Java-SDK > 管理Bucket”。
// 链接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_bucket.html?spm=5176.docoss/sdk/java-sdk/init
if (ossClient.doesBucketExist(bucketName)) {
System.out.println("您已经创建Bucket:" + bucketName + "。");
} else {
System.out.println("您的Bucket不存在,创建Bucket:" + bucketName + "。");
// 创建Bucket。详细请参看“SDK手册 > Java-SDK > 管理Bucket”。
// 链接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_bucket.html?spm=5176.docoss/sdk/java-sdk/init
ossClient.createBucket(bucketName);
} // 查看Bucket信息。详细请参看“SDK手册 > Java-SDK > 管理Bucket”。
// 链接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_bucket.html?spm=5176.docoss/sdk/java-sdk/init
BucketInfo info = ossClient.getBucketInfo(bucketName);
System.out.println("Bucket " + bucketName + "的信息如下:");
System.out.println("\t数据中心:" + info.getBucket().getLocation());
System.out.println("\t创建时间:" + info.getBucket().getCreationDate());
System.out.println("\t用户标志:" + info.getBucket().getOwner()); /*遍历存储空间文件 并下载*/
// 查看Bucket中的Object。详细请参看“SDK手册 > Java-SDK > 管理文件”。
// 链接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_object.html?spm=5176.docoss/sdk/java-sdk/manage_bucket
// 指定前缀。
final String keyPrefix = "oss-accesslog";
// 列举包含指定前缀的文件。默认列举100个文件。
ObjectListing objectListing = ossClient.listObjects(new ListObjectsRequest(bucketName).withPrefix(keyPrefix));
List<OSSObjectSummary> sums = objectListing.getObjectSummaries();
System.out.println("您有以下Object:");
//文件名+访问路径
for (OSSObjectSummary s : sums) {
/*下载文件到本地*/
// 下载OSS文件到本地文件。如果指定的本地文件存在会覆盖,不存在则新建。
String str = s.getKey();
// ossClient.getObject(new GetObjectRequest(bucketName, str), new File("G://oss//oss-accesslog//"+str.substring(str.lastIndexOf("/"))));
System.out.println("\t" + str+"\t" +"下载完成!");
} /*下载文件*/
String objectKey = "oss-accesslog/**********2018-10-10-15-00-00-0001";
// ossClient.getObject(new GetObjectRequest(bucketName, objectKey), new File("G://oss//oss-accesslog//"+objectKey.substring(objectKey.lastIndexOf("/"))));
// System.out.println("\t" + objectKey.substring(objectKey.lastIndexOf("/"))+"\t" +"下载完成!"); } catch (OSSException oe) {
oe.printStackTrace();
} catch (ClientException ce) {
ce.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
ossClient.shutdown();
} logger.info("Completed");
} }

DownloadObjects.java

package com.aliyun.oss.demo;

import com.aliyun.oss.ClientException;
import com.aliyun.oss.OSSClient;
import com.aliyun.oss.OSSException;
import com.aliyun.oss.model.*;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator; import java.util.List; /**
* @BelongsProject: maven-demo
* @BelongsPackage: com.aliyun.oss.demo
* @Author: Guoyh
* @CreateTime: 2018-10-11 14:28
* @Description: 获取文件访问的URL
*/
public class GetObjectsRequestURL {
static Logger logger = Logger.getLogger(HelloOSS.class); // endpoint是访问OSS的域名。如果您已经在OSS的控制台上 创建了Bucket,请在控制台上查看域名。
// 如果您还没有创建Bucket,endpoint选择请参看文档中心的“开发人员指南 > 基本概念 > 访问域名”,
// 链接地址是:https://help.aliyun.com/document_detail/oss/user_guide/oss_concept/endpoint.html?spm=5176.docoss/user_guide/endpoint_region
// endpoint的格式形如“http://oss-cn-hangzhou.aliyuncs.com/”,注意http://后不带bucket名称,
// 比如“http://bucket-name.oss-cn-hangzhou.aliyuncs.com”,是错误的endpoint,请去掉其中的“bucket-name”。
private static String endpoint = "http://oss-cn-huhehaote.aliyuncs.com"; // accessKeyId和accessKeySecret是OSS的访问密钥,您可以在控制台上创建和查看,
// 创建和查看访问密钥的链接地址是:https://ak-console.aliyun.com/#/。
// 注意:accessKeyId和accessKeySecret前后都没有空格,从控制台复制时请检查并去除多余的空格。
private static String accessKeyId = "";
private static String accessKeySecret = ""; // Bucket用来管理所存储Object的存储空间,详细描述请参看“开发人员指南 > 基本概念 > OSS基本概念介绍”。
// Bucket命名规范如下:只能包括小写字母,数字和短横线(-),必须以小写字母或者数字开头,长度必须在3-63字节之间。
private static String bucketName = ""; public static void main(String[] args) { // 日志配置,OSS Java SDK使用log4j记录错误信息。示例程序会在工程目录下生成“oss-demo.log”日志文件,默认日志级别是INFO。
// 日志的配置文件是“conf/log4j.properties”,如果您不需要日志,可以没有日志配置文件和下面的日志配置。
PropertyConfigurator.configure("conf/log4j.properties"); logger.info("Started"); // 生成OSSClient,您可以指定一些参数,详见“SDK手册 > Java-SDK > 初始化”,
// 链接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/init.html?spm=5176.docoss/sdk/java-sdk/get-start
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret); try { /* 校验存储空间 */
// 判断Bucket是否存在。详细请参看“SDK手册 > Java-SDK > 管理Bucket”。
// 链接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_bucket.html?spm=5176.docoss/sdk/java-sdk/init
if (ossClient.doesBucketExist(bucketName)) {
System.out.println("您已经创建Bucket:" + bucketName + "。");
} else {
System.out.println("您的Bucket不存在,创建Bucket:" + bucketName + "。");
// 创建Bucket。详细请参看“SDK手册 > Java-SDK > 管理Bucket”。
// 链接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_bucket.html?spm=5176.docoss/sdk/java-sdk/init
ossClient.createBucket(bucketName);
} // 查看Bucket信息。详细请参看“SDK手册 > Java-SDK > 管理Bucket”。
// 链接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_bucket.html?spm=5176.docoss/sdk/java-sdk/init
BucketInfo info = ossClient.getBucketInfo(bucketName);
System.out.println("Bucket " + bucketName + "的信息如下:");
System.out.println("\t数据中心:" + info.getBucket().getLocation());
System.out.println("\t创建时间:" + info.getBucket().getCreationDate());
System.out.println("\t用户标志:" + info.getBucket().getOwner()); /*遍历存储空间*/
// 查看Bucket中的Object。详细请参看“SDK手册 > Java-SDK > 管理文件”。
// 链接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_object.html?spm=5176.docoss/sdk/java-sdk/manage_bucket
// 指定前缀。
final String keyPrefix = "**********";
// 列举包含指定前缀的文件。默认列举100个文件。
ObjectListing objectListing = ossClient.listObjects(new ListObjectsRequest(bucketName).withPrefix(keyPrefix));
List<OSSObjectSummary> sums = objectListing.getObjectSummaries();
System.out.println("您"+keyPrefix+"有以下Object:");
//文件名+访问路径
for (OSSObjectSummary s : sums) {
if (s.getKey().endsWith("/")) {
System.out.println("\t" + s.getKey());
}else {
System.out.println("\t" + s.getKey() + "\t" + "访问路径:" + "http://**********.oss-cn-huhehaote.aliyuncs.com/" + s.getKey()+"?x-oss-process=image/resize,m_fixed,h_128,w_236");
}
} } catch (OSSException oe) {
oe.printStackTrace();
} catch (ClientException ce) {
ce.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
ossClient.shutdown();
} logger.info("Completed");
} }

GetObjectsRequestURL.java

package com.aliyun.oss.demo;

import java.io.*;
import java.net.URL;
import java.util.List;
import java.util.Date;
import java.util.Random; import com.aliyun.oss.ClientException;
import com.aliyun.oss.OSSClient;
import com.aliyun.oss.OSSException;
import com.aliyun.oss.model.*; import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator; public class HelloOSS {
static Logger logger = Logger.getLogger(HelloOSS.class); // endpoint是访问OSS的域名。如果您已经在OSS的控制台上 创建了Bucket,请在控制台上查看域名。
// 如果您还没有创建Bucket,endpoint选择请参看文档中心的“开发人员指南 > 基本概念 > 访问域名”,
// 链接地址是:https://help.aliyun.com/document_detail/oss/user_guide/oss_concept/endpoint.html?spm=5176.docoss/user_guide/endpoint_region
// endpoint的格式形如“http://oss-cn-hangzhou.aliyuncs.com/”,注意http://后不带bucket名称,
// 比如“http://bucket-name.oss-cn-hangzhou.aliyuncs.com”,是错误的endpoint,请去掉其中的“bucket-name”。
private static String endpoint = "http://oss-cn-huhehaote.aliyuncs.com"; // accessKeyId和accessKeySecret是OSS的访问密钥,您可以在控制台上创建和查看,
// 创建和查看访问密钥的链接地址是:https://ak-console.aliyun.com/#/。
// 注意:accessKeyId和accessKeySecret前后都没有空格,从控制台复制时请检查并去除多余的空格。
private static String accessKeyId = "";
private static String accessKeySecret = ""; // Bucket用来管理所存储Object的存储空间,详细描述请参看“开发人员指南 > 基本概念 > OSS基本概念介绍”。
// Bucket命名规范如下:只能包括小写字母,数字和短横线(-),必须以小写字母或者数字开头,长度必须在3-63字节之间。
private static String bucketName = ""; public static void main(String[] args) { // 日志配置,OSS Java SDK使用log4j记录错误信息。示例程序会在工程目录下生成“oss-demo.log”日志文件,默认日志级别是INFO。
// 日志的配置文件是“conf/log4j.properties”,如果您不需要日志,可以没有日志配置文件和下面的日志配置。
PropertyConfigurator.configure("conf/log4j.properties"); logger.info("Started"); // 生成OSSClient,您可以指定一些参数,详见“SDK手册 > Java-SDK > 初始化”,
// 链接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/init.html?spm=5176.docoss/sdk/java-sdk/get-start
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret); try { /* 校验存储空间 */
// 判断Bucket是否存在。详细请参看“SDK手册 > Java-SDK > 管理Bucket”。
// 链接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_bucket.html?spm=5176.docoss/sdk/java-sdk/init
if (ossClient.doesBucketExist(bucketName)) {
System.out.println("您已经创建Bucket:" + bucketName + "。");
} else {
System.out.println("您的Bucket不存在,创建Bucket:" + bucketName + "。");
// 创建Bucket。详细请参看“SDK手册 > Java-SDK > 管理Bucket”。
// 链接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_bucket.html?spm=5176.docoss/sdk/java-sdk/init
ossClient.createBucket(bucketName);
} // 查看Bucket信息。详细请参看“SDK手册 > Java-SDK > 管理Bucket”。
// 链接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_bucket.html?spm=5176.docoss/sdk/java-sdk/init
BucketInfo info = ossClient.getBucketInfo(bucketName);
System.out.println("Bucket " + bucketName + "的信息如下:");
System.out.println("\t数据中心:" + info.getBucket().getLocation());
System.out.println("\t创建时间:" + info.getBucket().getCreationDate());
System.out.println("\t用户标志:" + info.getBucket().getOwner()); /*上传本地图片*/
//图片全路径
String filePath = "G://oss//snow.jpg";
//上传文件全名称
String newFileKey = getStringRandom(32)+getContentType(filePath);
InputStream inputStream = new FileInputStream(filePath);
//上传流文件
ossClient.putObject(bucketName, "*************/"+newFileKey, inputStream); // 设置URL过期时间为1小时。
Date expiration = new Date(System.currentTimeMillis() + 3600 * 1000);
// 生成以GET方法访问的签名URL,访客可以直接通过浏览器访问相关内容。
URL url = ossClient.generatePresignedUrl(bucketName, "*************/"+newFileKey, expiration);
System.out.println(url); /*遍历存储空间*/
// 查看Bucket中的Object。详细请参看“SDK手册 > Java-SDK > 管理文件”。
// 链接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_object.html?spm=5176.docoss/sdk/java-sdk/manage_bucket
// 指定前缀。
final String keyPrefix = "*************";
// 列举包含指定前缀的文件。默认列举100个文件。
ObjectListing objectListing = ossClient.listObjects(new ListObjectsRequest(bucketName).withPrefix(keyPrefix));
List<OSSObjectSummary> sums = objectListing.getObjectSummaries();
System.out.println("您有以下Object:");
for (OSSObjectSummary s : sums) {
System.out.println("\t" + s.getKey());
} /*下载文件到本地*/
// 下载OSS文件到本地文件。如果指定的本地文件存在会覆盖,不存在则新建。
ossClient.getObject(new GetObjectRequest(bucketName, "*************/"+newFileKey), new File("G://oss//"+newFileKey)); /*删除空间文件*/
// 删除Object。详细请参看“SDK手册 > Java-SDK > 管理文件”。
// 链接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_object.html?spm=5176.docoss/sdk/java-sdk/manage_bucket
ossClient.deleteObject(bucketName, newFileKey);
System.out.println("删除Object:" + newFileKey + "成功。"); } catch (OSSException oe) {
oe.printStackTrace();
} catch (ClientException ce) {
ce.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
ossClient.shutdown();
} logger.info("Completed");
} /**
*生成随机数字和字母
* @param length 长度
* @return 随机字符串
*/
public static String getStringRandom(int length) {
String val = "";
Random random = new Random();
//参数length,表示生成几位随机数
for(int i = 0; i < length; i++) {
String charOrNum = random.nextInt(2) % 2 == 0 ? "char" : "num";
//输出字母还是数字
if( "char".equalsIgnoreCase(charOrNum) ) {
//输出是大写字母还是小写字母
int temp = random.nextInt(2) % 2 == 0 ? 65 : 97;
val += (char)(random.nextInt(26) + temp);
} else if( "num".equalsIgnoreCase(charOrNum) ) {
val += String.valueOf(random.nextInt(10));
}
}
return val;
} /**
* 通过文件名判断并获取OSS服务文件上传时文件的contentType
* @param fileName 文件名
* @return 文件的contentType
*/
public static String getContentType(String fileName){
//文件的后缀名
String fileExtension = fileName.substring(fileName.lastIndexOf("."));
if(".bmp".equalsIgnoreCase(fileExtension)) {
return ".bmp";
}
if(".gif".equalsIgnoreCase(fileExtension)) {
return ".gif";
}
if(".jpeg".equalsIgnoreCase(fileExtension)) {
return ".jpeg";
}
if(".jpg".equalsIgnoreCase(fileExtension)) {
return ".jpg";
}
if(".png".equalsIgnoreCase(fileExtension) ) {
return ".png";
}
//默认返回类型
return ".jpeg";
} }

HelloOSS.java

package com.aliyun.oss.demo;

import com.aliyun.oss.ClientException;
import com.aliyun.oss.OSSClient;
import com.aliyun.oss.OSSException;
import com.aliyun.oss.model.*;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator; import java.util.List; /**
* @BelongsProject: maven-demo
* @BelongsPackage: com.aliyun.oss.demo
* @Author: Guoyh
* @CreateTime: 2018-10-11 11:45
* @Description: oss文件操作管理
*/
public class ListObjects {
static Logger logger = Logger.getLogger(HelloOSS.class); // endpoint是访问OSS的域名。如果您已经在OSS的控制台上 创建了Bucket,请在控制台上查看域名。
// endpoint的格式形如“http://oss-cn-hangzhou.aliyuncs.com/”,注意http://后不带bucket名称,
// 比如“http://bucket-name.oss-cn-hangzhou.aliyuncs.com”,是错误的endpoint,请去掉其中的“bucket-name”。
private static String endpoint = "http://oss-cn-huhehaote.aliyuncs.com"; // accessKeyId和accessKeySecret是OSS的访问密钥,您可以在控制台上创建和查看
// 注意:accessKeyId和accessKeySecret前后都没有空格,从控制台复制时请检查并去除多余的空格。
private static String accessKeyId = "";
private static String accessKeySecret = ""; // Bucket用来管理所存储Object的存储空间,
// Bucket命名规范如下:只能包括小写字母,数字和短横线(-),必须以小写字母或者数字开头,长度必须在3-63字节之间。
private static String bucketName = ""; public static void main(String[] args) { // 日志配置,OSS Java SDK使用log4j记录错误信息。示例程序会在工程目录下生成“oss-demo.log”日志文件,默认日志级别是INFO。
// 日志的配置文件是“conf/log4j.properties”,如果您不需要日志,可以没有日志配置文件和下面的日志配置。
PropertyConfigurator.configure("conf/log4j.properties"); logger.info("Started"); // 生成OSSClient,您可以指定一些参数,
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret); try {
/* 校验存储空间 */
// 判断Bucket是否存在。
if (ossClient.doesBucketExist(bucketName)) {
System.out.println("您已经创建Bucket:" + bucketName + "。");
} else {
System.out.println("您的Bucket不存在,创建Bucket:" + bucketName + "。");
// 创建Bucket。
ossClient.createBucket(bucketName);
} // 查看Bucket信息。
BucketInfo info = ossClient.getBucketInfo(bucketName);
System.out.println("Bucket " + bucketName + "的信息如下:");
System.out.println("\t数据中心:" + info.getBucket().getLocation());
System.out.println("\t创建时间:" + info.getBucket().getCreationDate());
System.out.println("\t用户标志:" + info.getBucket().getOwner()); //
// /*遍历存储空间*/
// // 查看Bucket中的Object。
// // 指定前缀。列举文件
// final String keyPrefix = "********";
// // 列举包含指定前缀的文件。默认列举100个文件。
// ObjectListing objectListingWithPrefix = ossClient.listObjects(new ListObjectsRequest(bucketName).withPrefix(keyPrefix));
// List<OSSObjectSummary> sums = objectListingWithPrefix.getObjectSummaries();
// System.out.println("您有以下Object:");
// for (OSSObjectSummary s : sums) {
// System.out.println("\t" + s.getKey());
// }
// System.out.println("\t" + "-----------------------------------------------------"); // // 列举文件。 如果不设置KeyPrefix,则列举存储空间下所有的文件。KeyPrefix,则列举包含指定前缀的文件。
// ObjectListing objectListingOne = ossClient.listObjects(bucketName);
// List<OSSObjectSummary> sumsOne = objectListingOne.getObjectSummaries();
// for (OSSObjectSummary s : sumsOne) {
// System.out.println("\t" + s.getKey());
// }
// System.out.println("\t" + "-----------------------------------------------------");
//
//
// // 设置最大个数。
// final int maxKeys = 200;
// // 列举文件。
// ObjectListing objectListingWithMaxKeys = ossClient.listObjects(new ListObjectsRequest(bucketName).withMaxKeys(maxKeys));
// List<OSSObjectSummary> sumsPlus = objectListingWithMaxKeys.getObjectSummaries();
// for (OSSObjectSummary s : sumsPlus) {
// System.out.println("\t" + s.getKey());
// }
// System.out.println("\t" + "-----------------------------------------------------"); //分页列举所有文件
final int maxKey = 200;
String nextMarker = null;
ObjectListing objectListing; do {
objectListing = ossClient.listObjects(new ListObjectsRequest(bucketName).withMarker(nextMarker).withMaxKeys(maxKey)); List<OSSObjectSummary> sumsx = objectListing.getObjectSummaries();
for (OSSObjectSummary s : sumsx) {
System.out.println("\t" + s.getKey());
} nextMarker = objectListing.getNextMarker(); } while (objectListing.isTruncated()); System.out.println("\t" + "-----------------------------------------------------");
//
//
// // 构造ListObjectsRequest请求。
// ListObjectsRequest listObjectsRequest = new ListObjectsRequest(bucketName);
// // 列出文件。
// ObjectListing listing = ossClient.listObjects(listObjectsRequest);
// // 遍历所有文件。
// System.out.println("Objects:");
// for (OSSObjectSummary objectSummary : listing.getObjectSummaries()) {
// System.out.println(objectSummary.getKey());
// }
// // 遍历所有commonPrefix。
// System.out.println("CommonPrefixes:");
// for (String commonPrefix : listing.getCommonPrefixes()) {
// System.out.println(commonPrefix);
// } } catch (OSSException oe) {
oe.printStackTrace();
} catch (ClientException ce) {
ce.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
ossClient.shutdown();
} logger.info("Completed");
} }

ListObjects.java

package com.aliyun.oss.demo;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import java.net.URL;
import java.util.List;
import java.util.Date;
import java.util.Random; import com.aliyun.oss.ClientException;
import com.aliyun.oss.OSSClient;
import com.aliyun.oss.OSSException;
import com.aliyun.oss.model.*; import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator; import javax.swing.*; public class UploadPictures2OSS extends JFrame implements ActionListener {
static Logger logger = Logger.getLogger(UploadPictures2OSS.class); // endpoint是访问OSS的域名。如果您已经在OSS的控制台上 创建了Bucket,请在控制台上查看域名。
// 如果您还没有创建Bucket,endpoint选择请参看文档中心的“开发人员指南 > 基本概念 > 访问域名”,
// 链接地址是:https://help.aliyun.com/document_detail/oss/user_guide/oss_concept/endpoint.html?spm=5176.docoss/user_guide/endpoint_region
// endpoint的格式形如“http://oss-cn-hangzhou.aliyuncs.com/”,注意http://后不带bucket名称,
// 比如“http://bucket-name.oss-cn-hangzhou.aliyuncs.com”,是错误的endpoint,请去掉其中的“bucket-name”。
private static String endpoint = "http://oss-cn-huhehaote.aliyuncs.com"; // accessKeyId和accessKeySecret是OSS的访问密钥,您可以在控制台上创建和查看,
// 创建和查看访问密钥的链接地址是:https://ak-console.aliyun.com/#/。
// 注意:accessKeyId和accessKeySecret前后都没有空格,从控制台复制时请检查并去除多余的空格。
private static String accessKeyId = "";
private static String accessKeySecret = ""; // Bucket用来管理所存储Object的存储空间,详细描述请参看“开发人员指南 > 基本概念 > OSS基本概念介绍”。
// Bucket命名规范如下:只能包括小写字母,数字和短横线(-),必须以小写字母或者数字开头,长度必须在3-63字节之间。
private static String bucketName = ""; JButton jb = new JButton("选择文件"); public static void main(String[] args) {
// TODO 自动生成的方法存根
new UploadPictures2OSS();
} public UploadPictures2OSS() {
jb.setActionCommand("open");
//设置按钮颜色
jb.setBackground(Color.LIGHT_GRAY);
//建立容器使用边界布局
this.getContentPane().add(jb, BorderLayout.SOUTH); jb.addActionListener(this);
this.setTitle("标题");
this.setSize(333, 288);
this.setLocation(200, 200);
//显示窗口true
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
} @Override
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equals("open")) {
JFileChooser jf = new JFileChooser();
//显示打开的文件对话框
jf.showOpenDialog(this);
//使用文件类获取选择器选择的文件
File f = jf.getSelectedFile();
//返回路径名
String s = f.getAbsolutePath();
//JOptionPane弹出对话框类,显示绝对路径名
//JOptionPane.showMessageDialog(this, s, "标题",JOptionPane.WARNING_MESSAGE);
uploadPicture(s);
}
} public void uploadPicture(String path) {
// 日志配置,OSS Java SDK使用log4j记录错误信息。示例程序会在工程目录下生成“oss-demo.log”日志文件,默认日志级别是INFO。
// 日志的配置文件是“conf/log4j.properties”,如果您不需要日志,可以没有日志配置文件和下面的日志配置。
PropertyConfigurator.configure("conf/log4j.properties"); logger.info("Started"); // 生成OSSClient,您可以指定一些参数,详见“SDK手册 > Java-SDK > 初始化”,
// 链接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/init.html?spm=5176.docoss/sdk/java-sdk/get-start
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret); try { /* 校验存储空间 */
// 判断Bucket是否存在。详细请参看“SDK手册 > Java-SDK > 管理Bucket”。
// 链接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_bucket.html?spm=5176.docoss/sdk/java-sdk/init
if (ossClient.doesBucketExist(bucketName)) {
System.out.println("您已经创建Bucket:" + bucketName + "。");
} else {
System.out.println("您的Bucket不存在,创建Bucket:" + bucketName + "。");
// 创建Bucket。详细请参看“SDK手册 > Java-SDK > 管理Bucket”。
// 链接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_bucket.html?spm=5176.docoss/sdk/java-sdk/init
ossClient.createBucket(bucketName);
} // 查看Bucket信息。详细请参看“SDK手册 > Java-SDK > 管理Bucket”。
// 链接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_bucket.html?spm=5176.docoss/sdk/java-sdk/init
BucketInfo info = ossClient.getBucketInfo(bucketName);
System.out.println("Bucket " + bucketName + "的信息如下:");
System.out.println("\t数据中心:" + info.getBucket().getLocation());
System.out.println("\t创建时间:" + info.getBucket().getCreationDate());
System.out.println("\t用户标志:" + info.getBucket().getOwner()); /*上传本地图片*/
//图片全路径
String filePath = path;
//上传文件全名称
String newFileKey = getStringRandom(32) + getContentType(filePath);
InputStream inputStream = new FileInputStream(filePath);
//上传流文件
ossClient.putObject(bucketName, "*********/" + newFileKey, inputStream); // 设置URL过期时间为1小时。
Date expiration = new Date(System.currentTimeMillis() + 3600 * 1000);
// 生成以GET方法访问的签名URL,访客可以直接通过浏览器访问相关内容。
URL url = ossClient.generatePresignedUrl(bucketName, "*********/" + newFileKey, expiration);
System.out.println(url); /*遍历存储空间*/
// 查看Bucket中的Object。详细请参看“SDK手册 > Java-SDK > 管理文件”。
// 链接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_object.html?spm=5176.docoss/sdk/java-sdk/manage_bucket
// 指定前缀。
final String keyPrefix = "*********";
// 列举包含指定前缀的文件。默认列举100个文件。
ObjectListing objectListing = ossClient.listObjects(new ListObjectsRequest(bucketName).withPrefix(keyPrefix));
List<OSSObjectSummary> sums = objectListing.getObjectSummaries();
System.out.println("您有以下Object:");
for (OSSObjectSummary s : sums) {
System.out.println("\t" + s.getKey());
} /*下载文件到本地*/
//下载OSS文件到本地文件。如果指定的本地文件存在会覆盖,不存在则新建。
// ossClient.getObject(new GetObjectRequest(bucketName, "*********/"+newFileKey), new File("G://oss//"+newFileKey)); /*删除空间文件*/
// 删除Object。详细请参看“SDK手册 > Java-SDK > 管理文件”。
// 链接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_object.html?spm=5176.docoss/sdk/java-sdk/manage_bucket
// ossClient.deleteObject(bucketName, "*********/"+newFileKey);
// System.out.println("删除Object:" + newFileKey + "成功。"); } catch (OSSException oe) {
oe.printStackTrace();
} catch (ClientException ce) {
ce.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
ossClient.shutdown();
} logger.info("Completed");
} /**
* 生成随机数字和字母拼接的字符串
* @param length 返回字符串长度
* @return
* @author Guoyh
* @date 2018/10/10 12:25
*/
public static String getStringRandom(int length) {
String val = "";
Random random = new Random();
//参数length,表示生成几位随机数
for (int i = 0; i < length; i++) {
String charOrNum = random.nextInt(2) % 2 == 0 ? "char" : "num";
//输出字母还是数字
if ("char".equalsIgnoreCase(charOrNum)) {
//输出是大写字母还是小写字母
int temp = random.nextInt(2) % 2 == 0 ? 65 : 97;
val += (char) (random.nextInt(26) + temp);
} else if ("num".equalsIgnoreCase(charOrNum)) {
val += String.valueOf(random.nextInt(10));
}
}
return val;
} /**
* 通过文件名判断并获取OSS服务文件上传时文件的contentType
*
* @param fileName 文件名
* @return 文件的contentType
*/
public static String getContentType(String fileName) {
//文件的后缀名
String fileExtension = fileName.substring(fileName.lastIndexOf("."));
if (".bmp".equalsIgnoreCase(fileExtension)) {
return ".bmp";
}
if (".gif".equalsIgnoreCase(fileExtension)) {
return ".gif";
}
if (".jpeg".equalsIgnoreCase(fileExtension)) {
return ".jpeg";
}
if (".jpg".equalsIgnoreCase(fileExtension)) {
return ".jpg";
}
if (".png".equalsIgnoreCase(fileExtension)) {
return ".png";
}
//默认返回类型
return ".jpeg";
} }

UploadPictures2OSS.java

【OSS】工具类的更多相关文章

  1. 阿里云OSS工具类

    [前言] 我们上家公司的存储系统用的是FastDFS(智能一代云平台(二十八):对前后端分离和FastDFS的使用的再理解):现在在职的公司用的是阿里云的OSS(OSS的官方文档),在工作的时候整理一 ...

  2. hutoolJava工具类的使用

    前言 安装 友情开源项目 Hutool相关博客(软文) 捐赠使用公开 核心(Hutool-core) 克隆 支持泛型的克隆接口和克隆类 类型转换 类型转换工具类-Convert 自定义类型转换-Con ...

  3. SpringBoot + Vue + ElementUI 实现后台管理系统模板 -- 后端篇(五): 数据表设计、使用 jwt、redis、sms 工具类完善注册登录逻辑

    (1) 相关博文地址: SpringBoot + Vue + ElementUI 实现后台管理系统模板 -- 前端篇(一):搭建基本环境:https://www.cnblogs.com/l-y-h/p ...

  4. Java基础Map接口+Collections工具类

    1.Map中我们主要讲两个接口 HashMap  与   LinkedHashMap (1)其中LinkedHashMap是有序的  怎么存怎么取出来 我们讲一下Map的增删改查功能: /* * Ma ...

  5. Android—关于自定义对话框的工具类

    开发中有很多地方会用到自定义对话框,为了避免不必要的城府代码,在此总结出一个工具类. 弹出对话框的地方很多,但是都大同小异,不同无非就是提示内容或者图片不同,下面这个类是将提示内容和图片放到了自定义函 ...

  6. [转]Java常用工具类集合

    转自:http://blog.csdn.net/justdb/article/details/8653166 数据库连接工具类——仅仅获得连接对象 ConnDB.java package com.ut ...

  7. js常用工具类.

    一些js的工具类 复制代码 /** * Created by sevennight on 15-1-31. * js常用工具类 */ /** * 方法作用:[格式化时间] * 使用方法 * 示例: * ...

  8. Guava库介绍之实用工具类

    作者:Jack47 转载请保留作者和原文出处 欢迎关注我的微信公众账号程序员杰克,两边的文章会同步,也可以添加我的RSS订阅源. 本文是我写的Google开源的Java编程库Guava系列之一,主要介 ...

  9. Java程序员的日常—— Arrays工具类的使用

    这个类在日常的开发中,还是非常常用的.今天就总结一下Arrays工具类的常用方法.最常用的就是asList,sort,toStream,equals,copyOf了.另外可以深入学习下Arrays的排 ...

  10. .net使用正则表达式校验、匹配字符工具类

    开发程序离不开数据的校验,这里整理了一些数据的校验.匹配的方法: /// <summary> /// 字符(串)验证.匹配工具类 /// </summary> public c ...

随机推荐

  1. windows安装mysql(5.7.26版本)压缩包

    1.解压安装包,进入文件夹,并创建一个data文件夹! 2.修改 my-default.ini 文件 [mysql] default-character-set=utf8 [mysqld] port ...

  2. CSP-S2019 退役记/赛后总结

    真就退役了呗. 作为一名非常失败的OIer,开了一个非常失败的blog,一直想在赛后写点什么,做点什么,总结些什么.自csp结束以来,徘徊了半个月,今夜里终于还是起笔了. 因为从来没写过这种玩意,不妨 ...

  3. Permission denied (publickey,gssapi-keyex,gssapi-with-mic)

    当出现警告的时候,恭喜你,你已经离成功很近了. 远程主机这里设为slave2,用户为Hadoop. 本地主机设为slave1 以下都是在远程主机slave2上的配置,使得slave1可以免密码连接到s ...

  4. windows 切换git远程仓库地址后 git push 提示Authentication failed

    git切换远程分支: 方法一: git remote set-url origin 你新的远程仓库地址 方法二: git remote rm origin git remote add origin ...

  5. [codeforces792C][dp]

    https://codeforc.es/contest/792/problem/C C. Divide by Three time limit per test 1 second memory lim ...

  6. Codeforces Round #453 (Div. 1) 901C C. Bipartite Segments

    题 http://codeforces.com/contest/901/problem/C codeforces 901C 解 首先因为图中没有偶数长度的环,所以: 1.图中的环长度全是奇数,也就是说 ...

  7. nginx之location部署yii项目(不使用nginx端口转发)

    前言: 之前部署yii项目的时候, 使用的是域名, 后来使用nginx进行端口转发(反向代理)来部署yii项目. 这一次部署尝试只使用location 进行部署(不需要使用端口). 先贴出nginx的 ...

  8. Java项目笔记01

    1 Tomcat问题 1 今天用了Ecplise和MyEcplise想着用同一个路径下的Tomcat,但是却发现配置完Ecplise后MyEcplise却不能用了,并且后面在bin里启动Tomcat还 ...

  9. 'telnet' is not recognized as an internal or external command

     http://blog.csdn.net/lubinsu/article/details/7294870 使用telnet的时候出现如下提示:'telnet' is not recognized ...

  10. BZOJ 1195: [HNOI2006]最短母串 AC自动机+状压+搜索

    思路比较直接. 由于 $n$ 很小,直接定义 $f[i][j]$ 表示当前在自动机中的节点 $i,$ 被覆盖串的集合为 $j$ 的方案数. #include <bits/stdc++.h> ...