小编Edd*_*ant的帖子

在Java应用程序中查询内存中的一组对象的技术

我们有一个系统通过调用另一个返回一组Java对象的系统上的接口来执行"粗略搜索".一旦我们收到搜索结果,我需要能够根据描述属性状态的某些标准进一步过滤生成的Java对象(例如,从初始对象返回所有对象,其中xy> z && ab == c).

每次用于过滤对象集的标准部分是用户可配置的,我的意思是用户将能够选择要匹配的值和范围,但是他们可以从中选择的属性将是固定集.

对于每次搜索,数据集可能包含<= 10,000个对象.搜索将由应用程序用户群手动执行,每天不超过2000次(大约).值得一提的是,结果集中的所有对象都是已知的域对象类,它们具有描述其结构和关系的Hibernate和JPA注释.

可能的解决方案

在我的头脑中,我可以想到3种方法:

  1. 对于每次搜索,在我们的数据库中保留初始结果集对象,然后使用Hibernate使用更细粒度的标准重新查询它们.
  2. 使用内存数据库(例如hsqldb?)来查询和优化初始结果集.
  3. 编写一些自定义代码,迭代初始结果集并提取所需的记录.

选项1

选项1似乎涉及很多网络中的物理数据库(Oracle 10g),可能会导致大量的网络和磁盘活动.还需要将每次搜索的结果与其他结果集隔离,以确保不同的搜索不会相互干扰.

选项2

选项2原则上似乎是一个好主意,因为它允许我在内存中进行更精细的查询,并且不需要结果数据的持久性,只有在搜索完成后才会丢弃.Gut的感觉是,这可能也非常高效,但可能会导致更大的内存开销(这很好,因为我们可以非常灵活地调整JVM获得的内存量).

选项3

选项3可能非常高效,但是我想避免这样做,因为我们编写的任何代码都需要经过仔细的测试,以至于实现灵活且足够强大的时间可能会令人望而却步.


我没有时间对所有3个想法进行原型设计,因此我正在寻找人们对上述3个选项的评论,以及我未考虑过的任何进一步的想法,以帮助我确定哪个想法可能是最合适的.我目前正倾向于选项2(在内存数据库中),所以很想听到有人在内存中查询POJO的经验.

希望我已经详细描述了这种情况,但是不要犹豫,询问是否需要任何进一步的信息来更好地理解这种情况.

干杯,

埃德

java database jpa in-memory-database

8
推荐指数
1
解决办法
816
查看次数

如何在页面事件后使用Geb检查元素属性值

在这里得到一些帮助之后,我正在使用Geb编写一个功能性Web测试,并希望在事件发生之前和之后测试表单提交按钮的禁用属性值,流程应如下所示:

  1. 加载页面,提交按钮在页面源中声明为禁用,因此应禁用,例如<input type="submit" class="submit" disabled="true"/>.
  2. 选中页面上的复选框,这将导致执行一段JQuery代码,这将使用以下命令以编程方式启用禁用的提交按钮: $('input.submit').attr('disabled', false);

我的第一次尝试是使用断言$('input.submit').@disabled == 'true',这似乎适用于页面加载后的初始检查,但是在执行我的JQuery代码以启用按钮之后,后续检查仍然返回相同的结果.这让我想知道这种检查是否只能在页面加载时报告值,并且看不到任何后续的程序化更改?

然后我发现了Geb的jquery迭代,我希望我可以使用它来返回提交按钮的值并对此进行断言,$('input.submit').jquery.attr('disabled') == false但是Geb文档确认所有对.jquery属性的调用都返回Geb Navigator实例,所以很遗憾我不知道我想我可以归还我想要的信息.

我也怀疑JQuery代码是否真的切换了提交按钮禁用状态,我已经使用Firebug进行了大量测试并且可以确认这在浏览器中完美运行,所以我怀疑这是我对Geb的理解或者问题也许是Geb本身的局限?

让我感到震惊的是,在页面上执行某些操作后检查元素属性的值可能是一个常见的用例,因此我非常希望我错过了一些简单的方法.非常感谢能帮我解决问题的任何指针.

干杯,

埃德

groovy spock geb

8
推荐指数
2
解决办法
1万
查看次数

Terraform - AWS - API网关依赖性难题

我正在尝试配置一些AWS资源,特别是连接到Lambda的API网关.我使用的是Terraform v0.8.8.

我有一个模块,它提供Lambda并返回lambda函数ARN作为输出,然后我作为参数提供给以下API网关供应代码(它基于TF文档中的示例):

provider "aws" {
  access_key = "${var.access_key}"
  secret_key = "${var.secret_key}"
  region     = "${var.region}"
}

# Variables
variable "myregion" { default = "eu-west-2" }
variable "accountId" { default = "" }
variable "lambdaArn" { default = "" }
variable "stageName" { default = "lab" }

# API Gateway
resource "aws_api_gateway_rest_api" "api" {
  name = "myapi"
}

resource "aws_api_gateway_method" "method" {
  rest_api_id   = "${aws_api_gateway_rest_api.api.id}"
  resource_id   = "${aws_api_gateway_rest_api.api.root_resource_id}"
  http_method   = "GET"
  authorization = "NONE"
}

resource "aws_api_gateway_integration" "integration" { …
Run Code Online (Sandbox Code Playgroud)

terraform aws-api-gateway

7
推荐指数
1
解决办法
2700
查看次数

每个节点或每个群集是否具有群集WebLogic JDBC数据源设置?

我有一个WebLogic 9.2群集,它运行2个托管服务器节点.我创建了一个JDBC连接池,我将其定位到集群中的所有服务器.我相信这将导致在2个托管服务器中的每一个上物理创建连接池(尽管如果我错了请纠正我)?

根据这个假设,我还假设连接池的配置属性,例如最小/最大大小等,是每个受管服务器而不是每个群集.但是我不确定这一点,在WebLogic文档中找不到任何确认或否认的内容.

这是一个例子:

我创建具有以下设置的connection-pool-a,并将其定位到集群中的所有服务器:

Initial Capacity: 30
Maximum Capacity: 60
Run Code Online (Sandbox Code Playgroud)

这些设置是否适用:

  1. 每个受管服务器 - 即每个节点的初始容量为30,最多为60个连接.
  2. 在整个群集中 - 即所有托管服务器上的初始连接数为30,最高为60.
  3. 在其他方面我没有考虑过?

我问,因为这显然会对数据库的连接总数产生重大影响,并且我试图找出在给定数据库约束的情况下如何最好地调整连接池的大小.

干杯,

埃德

weblogic datasource jdbc cluster-computing

5
推荐指数
1
解决办法
5693
查看次数

Terraform:如何有条件地将 EBS 卷分配给 ECS 集群

我有一个ecs_cluster定义 ECS 集群的模块。我希望该模块可重复使用,以便我可以创建具有不同配置的各种集群。因此,我希望能够选择性地指定是否在 ECS 主机的启动配置中创建和附加 EBS 卷。

我最初尝试countebs_block_device启动配置内部使用,例如

variable "ebs_volume_device_name" { type = "string", default = "" }
variable "ebs_volume_type" { type = "string", default = "" }
variable "ebs_volume_size" { type = "string", default = "" }

resource "aws_launch_configuration" "launch_configuration" {
  name_prefix = "foo"
  image_id = "bar"
  # Irrelevant stuff removed for brevity...

  ebs_block_device {
    count = "${length(var.ebs_volume_device_name) > 0 ? 1 : 0}"
    device_name = "${var.ebs_volume_device_name }"
    volume_type = "${var.ebs_volume_type}"
    volume_size = …
Run Code Online (Sandbox Code Playgroud)

terraform

3
推荐指数
1
解决办法
1967
查看次数