在处理项目时,我遇到了一项任务,即设计一组实现定义简单操作的接口的类.通常这些类会按特定顺序完成它们的工作,但是同时只能从其中一个调用方法的可能性也是必需的.
考虑到以上所有因素并考虑到: - 每个类都有相当基本的逻辑 - 不需要扩展另一个类 - 将所有类放在一个文件中可能很方便 - 在需要时编辑源文件不是问题
我提出了以下解决方案(实际课程不是那么做作,但下面的例子足以给你一些基本的想法):
public enum Bestiary {
DOG(1) {
@Override
void makeNoise(Loudspeaker ls) {
ls.shoutOutLoud("I am alpha dog");
}
},
CAT(2) {
@Override
void makeNoise(Loudspeaker ls) {
ls.shoutOutLoud("I am beta cat");
}
},
RAT(3) {
List<String> foods = new ArrayList<>();
{
foods.add("gods");
foods.add("dogs");
foods.add("cats");
foods.add("other rats");
}
@Override
void makeNoise(Loudspeaker ls) {
StringBuilder cry = new StringBuilder("I am THE rat; usually I eat ");
for (int i = 0; i < foods.size(); …Run Code Online (Sandbox Code Playgroud) 我必须在 Elasticsearch 中构造一个相当重要的(就像现在看起来的那样)查询。假设我有几个实体,每个实体都有一个由字符串组成的数组元素:
1). ['A', 'B']
2). ['A', 'C']
3). ['A', 'E']
4). ['A']
Run Code Online (Sandbox Code Playgroud)
数组元素的映射如下(使用动态模板):
{
"my_array_of_strings": {
"path_match": "stringArray*",
"mapping": {
"type": "string",
"index": "not_analyzed"
}
}
}
Run Code Online (Sandbox Code Playgroud)
实体的 Json 表示如下所示:
{
"stringArray": [
"A",
"B"
]
}
Run Code Online (Sandbox Code Playgroud)
然后我有用户输入:['A','B','C']。
我想要实现的是找到仅包含输入中指定元素的实体 - 预期结果是: ['A', 'B'], ['A', 'C'], ['A'] 但不是 [' A', 'E'](因为用户输入中不存在 'E')。
这个场景可以用Elasticsearch实现吗?
更新: 除了使用脚本的解决方案 - 应该可以很好地工作,但如果有许多匹配的记录,很可能会大大减慢查询速度 - 我还设计了另一种解决方案。下面我将尝试解释其主要思想,不涉及代码实现。
我没有提到的一个重要条件(这可能给其他用户提供了有价值的提示)是数组由枚举元素组成,即数组中此类元素的数量是有限的。这允许将此类数组展平为实体的单独字段。
假设有 5 个可能的值:“A”、“B”、“C”、“D”、“E”。这些值中的每一个都是一个布尔字段 - 如果为空则为 true(即数组版本将包含此元素),否则为 false。然后每个实体都可以重写如下:
1).
A = true
B = true
C = false
D = …Run Code Online (Sandbox Code Playgroud) 默认情况下,Intellij IDEA 12 Public Preview正在监听其中一个插件的10001端口.在我们公司,我们使用这个端口用于其他目的,似乎没有简单的方法来改变这个...任何人都可以建议任何选择?谷歌搜索大约一个小时无济于事.
我们的团队很高兴看到为 AWS DynamoDB 宣布了自动扩展功能,并且在通过在 Web 界面中添加配置进行尝试时,我们发现这非常符合我们应用程序的四个需求。
然而,事实证明,通过 CF 添加相同配置的尝试要复杂一些。本文中提供的以下示例 - http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dynamodb-table.html#cfn-dynamodb-table-examples-application-autoscaling - 下面是结果,这是行不通的。堆栈详细信息:
17:02:25 UTC+0300 UPDATE_ROLLBACK_IN_PROGRESS AWS::CloudFormation::Stack my-stack The following resource(s) failed to create: [WriteCapacityScalableTarget].
17:02:24 UTC+0300 CREATE_FAILED AWS::ApplicationAutoScaling::ScalableTarget WriteCapacityScalableTarget table/TableName|dynamodb:table:WriteCapacityUnits|dynamodb already exists
17:02:18 UTC+0300 CREATE_IN_PROGRESS AWS::ApplicationAutoScaling::ScalableTarget WriteCapacityScalableTarget
17:02:15 UTC+0300 CREATE_COMPLETE AWS::IAM::Role ScalingRole
17:01:42 UTC+0300 CREATE_IN_PROGRESS AWS::IAM::Role ScalingRole Resource creation Initiated
17:01:42 UTC+0300 CREATE_IN_PROGRESS AWS::IAM::Role ScalingRole
17:01:37 UTC+0300 UPDATE_IN_PROGRESS AWS::CloudFormation::Stack my-stack User Initiated
我的CF脚本如下:
{
"Resources": {
"MyCustomTableName": {
"Type": "AWS::DynamoDB::Table",
"Properties": {
"TableName": "TableName",
"AttributeDefinitions": [
{
"AttributeName": "someAttribute1:someAttribute2", …Run Code Online (Sandbox Code Playgroud) amazon-web-services aws-cloudformation amazon-dynamodb autoscaling