如何使用 Java SDK 检查存储桶是否已存在于我的 Aws S3 帐户中?
使用下面的代码
AmazonS3ClientBuilder.defaultClient().doesBucketExistV2(bucketName);
Run Code Online (Sandbox Code Playgroud)
检查存储桶的全局存在,如果具有此名称的存储桶全局存在,即使我不是此存储桶的所有者或我无权访问该存储桶,也返回 true。
我理解以这种方式制作此方法的意图,以便它允许我们确定存储桶名称的可用性,但这不是我所需要的。当然,它会抛出异常,我以后无法访问它,但它会返回声明具有此名称的存储桶存在。
我想检查我的 S3 帐户中是否存在具有给定名称的存储桶,以便我可以对其执行操作。
一种可能的解决方案可以是list所有存储桶并在返回的列表中搜索我的存储桶,我觉得这在性能方面不是很好(如果我错了,请纠正我),因为可能有成千上万的存储桶并在其中搜索他们效率不高。
如何在不检查全局存在的情况下确定存储桶是否存在于我的 S3 帐户中?
我有一个所有静态成员的类。静态成员的数量超过 10 个(可能会随着时间的推移而增加)。
我正在使用 lombok,我想像我们为非静态成员所做的那样,在类上使用单个@Getter和@Setter注释为所有静态成员生成 Getter/Setter 。
我知道
您还可以在类上添加 @Getter 和/或 @Setter 注释。在这种情况下,就好像您使用注释对该类中的所有非静态字段进行了注释。
我也知道
我们可以单独注释静态字段,
@Getter @Setter用于为静态字段生成 Getter/Setter。
但这看起来很难看,我想让我的班级看起来尽可能干净。
有什么方法可以配置/覆盖@Getter 和@Setter 注释,以便我可以对类进行注释,并为包括静态和非静态成员在内的所有成员生成 Getter 和 Setter,毕竟这些方法所做的是返回提到的多变的。
更准确地说,我希望以下代码片段为所有类变量生成 Getter 和 Setter-
@Getter
@Setter
public class myClass {
private static String d;
private static SomePojo c;
private String a;
private Integer b;
private SomeClass d;
}
Run Code Online (Sandbox Code Playgroud) 我试图查找向量是否包含重复项(请不要提供检查重复项的算法。)我想到了这种奇怪的行为。向量1,2,3,1上的std :: unique应该使其1,2,3,1返回迭代器为1,但擦除迭代器返回到vector.end()时,我得到了与我是原始向量。这是描述上述行为的代码片段(可在ideone上获得)
vector<int> nums2 = {1,2,3,4};
vector<int> nums = {1,2,3,1};
cout << "nums1" << endl;
vector<int> a(nums.begin(), nums.end());
auto ip = unique(nums.begin(), nums.begin()+nums.size());
nums.resize( std::distance(nums.begin(),ip) );
cout << a.size() << " " << nums.size() << endl;
cout << "Nums2" << endl;
vector<int> a2(nums2.begin(), nums2.end());
auto ip2 = unique(nums2.begin(), nums2.begin()+nums2.size());
nums.resize( std::distance(nums2.begin(),ip2) );
cout << a2.size() << " " << nums2.size();
Run Code Online (Sandbox Code Playgroud)
实际输出为
nums1
4 4
Nums2
4 4
Run Code Online (Sandbox Code Playgroud)
但这应该是
nums1
4 3
Nums2
4 4
Run Code Online (Sandbox Code Playgroud) 考虑一个函数
void foo(string s) {
...
}
Run Code Online (Sandbox Code Playgroud)
我想按如下方式调用该函数:
char ch = 'a';
foo(ch);
Run Code Online (Sandbox Code Playgroud)
当然它不能像ch字符一样工作,我们需要将其转换为字符串。
我知道我能做到
char ch = 'a';
string str;
foo(str+ch);
Run Code Online (Sandbox Code Playgroud)
我不想string str事先声明,我想在函数调用本身期间做一些事情来转换ch为string,例如:
char ch = 'a';
foo(some_operation_on_ch);
Run Code Online (Sandbox Code Playgroud)
是否可以这样做,如果可以,如何做?