小编Mat*_*eak的帖子

这是最小化绑定失效的有效方法吗?

我有一些复杂的Observable结构,这可能是也可能不是坏主意,但这不是这个问题的焦点.

这些结构的问题在于它们会产生很多ObservableUI显示的对象失效.就像我所知,当JavaFX UI显示某些内容时,它会ChangeListener在其上注册,因此任何使用延迟评估的尝试都会消失.也就是说,使observable无效似乎告诉UI它可能已经改变,这会导致UI 立即请求它的值,迫使它立即进行评估.

所以,我有想法推迟失效Platform.runLater().

我创建了一个名为" DeferredBinding委托" 的类Binding,除了invalidate()方法之外,它将所有内容委托给一个包装,它将延迟到稍后要处理的JavaFX UI线程.它似乎工作......我可以无效一百次,它似乎只是实际处理失效一次.

但是,我之前没有见过这种模式,我担心它可能会属于"不错但尝试不好"的范畴.

所以,问题:这是一个坏主意吗?我特别关注引入Observable依赖于其他对象的错误DeferredBinding.一旦Platform.runLater()发生,它们会好吗?

package com.myapp.SAM.model.datastructures;

import java.util.concurrent.atomic.AtomicBoolean;
import java.util.logging.Logger;

import javafx.application.Platform;
import javafx.beans.InvalidationListener;
import javafx.beans.binding.Binding;
import javafx.beans.value.ChangeListener;
import javafx.collections.ObservableList;

/**
 * Specialized binding that defers its invalidations to the JavaFX UI thread in a throttled manner. The idea being that, if invalidate() is called many times,
 * it only basically happens once (when the …
Run Code Online (Sandbox Code Playgroud)

java concurrency javafx javafx-8

6
推荐指数
1
解决办法
148
查看次数

使用ReadWriteLock需要ConcurrentHashMap吗?

我有一个Map由多个线程读取的,但是(不时地)由另一个线程清除并重建的线程。

我已经用这张地图包围了所有访问该地图的地方

readWriteLock.readLock().lock()
try {
  ... access myMap here...
} finally {
  readWriteLock.readLock().unlock()
}
Run Code Online (Sandbox Code Playgroud)

...或writeLock()等效项,具体取决于访问类型。

我的问题是...是否ReadWriteLock确保对myMap其他线程可见更新(因为它们必须等到unlock()写入线程调用后才可以?)或者,我是否还需要创建myMap并发映射,例如ConcurrentHashMap

为了安全起见,我可能会这样做,但我想更好地理解。

java concurrency java.util.concurrent

6
推荐指数
1
解决办法
112
查看次数

实体框架 6 - StoreGeneratePattern 值不保留

我们针对 Oracle 12c 数据库使用 Entity Framework 6.2.0,并且一直遵循数据库优先方法。

我们的许多表都有一个_ID由数据库在插入时生成的列。这是通过使用数据库服务器上的默认值 来完成的TABLE_SEQUENCE.NEXTVAL

在实体框架中生成数据库模型后,我检查了每一_ID列并将其标记为StoreGeneratedPattern="Identity",我们就准备好了。然而,在一些数据库更改后更新数据库模型时,我们注意到一个问题。特别是有一个表会忘记此设置并将其重置回None。所有其他表都记得StoreGeneratedPattern="Identity"

每次我们从数据库更新数据库模型时,都会发生这种情况。Visual Studio 仍会说PROBLEMATIC_TABLE_IDIdentity设置,但 .edmx 文件没有。我的过程是更新模型,然后打开 .edmx 文件并手动粘贴StoreGeneratedPattern="Identity"该列。

我已将该表与数据库、.edmx、代码库中的其他表进行了比较,但我找不到任何会导致该表上的这一列在数据库模型更新时表现不同的任何内容。

TL;DR:从数据库更新本地数据库模型后,StoreGeneratedPattern列/表的值始终会重置,而所有其他列/表的值保持不变。VS 仍然说是,但 .edmx 文件中的 XML 不同意,需要手动更新。Identity

.net oracle ado.net entity-framework

5
推荐指数
0
解决办法
459
查看次数

在 Oracle WebLogic Server 上部署多个版本 .jar

我们正在尝试将 Web 服务(.war 文件)部署到 Oracle WebLogic 12.2.1.0.0 服务器上。

例如,.war 包含一些第三方 .jar,log4j-api-2.12.0.jar它们是多个版本的 .jar(根据 JEP 238,包含Multi-Release: true在 MANIFEST.MF 中)。

因此,它在META-INF/versions/9目录中包含一些 Java 9 编译的类。WebLogic 12.2 仅使用 Java 8(通过 WebLogic 管理控制台确认版本为 Java 1.8.0_92)。

据我了解,Java 8 服务器应该不会看到/忽略META-INF/versions目录下的任何类,但这似乎并没有发生。看起来 Oracle WLS 只是扫描整个 .war。

结果,当我们尝试部署 .war 时,我们会收到如下错误:

BEA-160248 无法解析类文件:...(然后是META-INF/versions/9目录中的长路径名)

为了使这项工作顺利进行,我们需要做一些特别的事情吗?我会接受以下任何内容:

  • 以某种方式配置 WLS 以忽略这些META-INF/versions/9
  • 配置 Maven 以某种方式构建 .war,而不META-INF/versions/9使用第三方 .jar 中存在的类。

我对涉及每次构建 .war 时手动删除 .war 中的任何内容的答案不感兴趣。另外,我不确定此时是否可以降级到早期版本的第 3 方 .jar。Log4j2,可能可以......但还有其他。

谢谢!

java weblogic maven weblogic12c multi-release-jar

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

Java - 检测在“finally”块期间是否有正在进行的异常

我正在从 Java 语言规范中考虑这一点:

如果 catch 块由于原因 R 突然完成,则执行 finally 块。然后有一个选择:

  • 如果 finally 块正常完成,则 try 语句由于原因 R 突然完成。

  • 如果 finally 块因原因 S 突然完成,则 try 语句因原因 S 突然完成(并且原因 R 被丢弃)。

我有一个块如下:

try {
  .. do stuff that might throw RuntimeException ...
} finally {
  try {
    .. finally block stuff that might throw RuntimeException ...
  } catch {
    // what to do here???
  }
}
Run Code Online (Sandbox Code Playgroud)

理想情况下,我希望块中的任何RuntimeException抛出finally都能逃脱,前提是它不会导致RuntimeExceptiontry块中的抛出被丢弃

Java 中有什么方法可以让我知道与块关联的finally块是否正常完成?

我猜我可以将 a …

java exception finally

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

WebLogic 桥消息:“Web 服务器桥失败:没有可用于连接的后端服务器...”

我有一个在 Oracle WebLogic 上运行的应用程序(来自供应商的打包软件)。

有一些操作,如果我尝试它们,我总是会收到以下错误页面:

(WebLogic 桥消息)Web 服务器桥失败:没有可用于连接的后端服务器:10 秒后超时或幂等设置为 OFF 或方法不是幂等。

在我尝试该操作后几乎恰好五分钟,该错误始终出现。

该页面看起来与应用程序逻辑失败时看到的典型错误页面不同。它看起来像是与基础设施(例如,WebLogic 配置)有关。

我正在与软件供应商解决这个问题,但进展并不顺利。

有没有人看到此消息和/或建议一种诊断根本原因的方法?

configuration weblogic weblogic12c

5
推荐指数
0
解决办法
4万
查看次数

JavaFX 8:从视图分离模型/域

我刚学的JavaFX 8.看来,如果你想显示在控制的东西,比方说TableColumn,你需要的东西是实例ObservableValue,例如SimpleStringProperty

因此,在常用Person对象中,我可能有一个SimpleStringPropertyfor“ firstName”,然后可以将其用作的值TableColumn,如下所示:

TableColumn<Person, String> firstNameCol = 
            new TableColumn<Person, String>("First Name");
firstNameCol.setCellValueFactory(
            new PropertyValueFactory<Person, String>("firstName"));
Run Code Online (Sandbox Code Playgroud)

但是,Person这就是我所谓的“域”类-我的模型可以自由引用和使用的类。我不希望我的域和模型层知道/依赖于使用JavaFX显示应用程序这一事实。

我认为模型/域在这方面应保持纯正性吗?如果是这样,使用JavaFX完成此操作的最佳方法是什么?例如,我是否应该以某种方式为我的域对象编写适配器类以与它们一起呈现ObservableValues

java model-view-controller model javafx javafx-8

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

在 SQL GROUP BY 中聚合集合中的不同值

我有一个表,其中包含集合类型。我想SELECT从表格和GROUP BY一些列中。我希望每个组的结果都包含一个集合,该集合包含该组中所有单独集合的不同并集。

例如,

CREATE OR REPLACE TYPE my_varchar2_list AS TABLE OF VARCHAR2 (80);

WITH test_data (id, a_list) AS
       (SELECT 1,
               NEW my_varchar2_list ('A', 'B', 'C')
        FROM   DUAL
        UNION ALL
        SELECT 1,
               NEW my_varchar2_list ('C', 'D', 'E')
        FROM   DUAL)
SELECT id,
       ... some magic syntax here...
FROM   test_data
GROUP BY id

Desired results:

1,  ('A','B','C','D','E')
Run Code Online (Sandbox Code Playgroud)

我在寻找答案

我只是在寻找可以插入上面的“魔术语法在这里”占位符的表达式。TABLE(a_list)我知道我可以通过连接到主表或以其他方式重组我的查询(或者,当然,使用 PL/SQL)来完成聚合。但是,我现在想避免使用此类解决方案。

sql oracle

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

Oracle存储过程 - 热浪数(一系列模式匹配数)

我需要对Oracle数据集进行后处理才能找到热浪的数量.根据定义,当数据值至少连续两次大于阈值时发生热浪.

例如,给定阈值= 20和序列

23 31 32 17 16 23 16 21 22 18
Run Code Online (Sandbox Code Playgroud)

热浪是2:

{23,31,32} and {21,22}
Run Code Online (Sandbox Code Playgroud)

并且最长的一个长度为3(较大子集的大小)

我的输入数据集由几个序列组成; 示例输入结果集是:

 -----------------------------
|  ID   |    DAY   |   VALUE |
 -----------------------------
|   100 |   1/1/17 |    20   |
|   100 |   2/1/17 |    21   |
|   200 |   1/1/17 |    12   | 
|   200 |   2/1/17 |    24   |
|   ...     ...        ...
Run Code Online (Sandbox Code Playgroud)

换句话说,我每个ID都有一个序列,我需要输出类似的东西:

-----------------------
|  ID   |  #heat waves |
 -----------------------
|   100 |      3       | 
|   200 |      1       | …
Run Code Online (Sandbox Code Playgroud)

oracle

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