小编Per*_*ing的帖子

使用ConcurrentHashMap,何时需要同步?

我有一个ConcurrentHashMap,我在其中执行以下操作:

sequences = new ConcurrentHashMap<Class<?>, AtomicLong>();

if(!sequences.containsKey(table)) {
    synchronized (sequences) {
        if(!sequences.containsKey(table))
            initializeHashMapKeyValue(table);
    }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是 - 是否没有必要做额外的事情

if(!sequences.containsKey(table))
Run Code Online (Sandbox Code Playgroud)

检查synschronized块内部,以便其他线程不会初始化相同的hashmap值?

也许检查是必要的,我做错了?我正在做的事似乎有点傻,但我认为这是必要的.

java concurrency concurrenthashmap

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

更新select语句中的表

有没有办法更新mysql选择查询的select_expr部分中的表.这是我想要实现的一个例子:

SELECT id, name, (UPDATE tbl2 SET currname = tbl.name WHERE tbl2.id = tbl.id) FROM tbl;
Run Code Online (Sandbox Code Playgroud)

这给了我一个mysql错误,但我不明白为什么这不应该是可能的,只要我不改变tbl.

编辑:我将澄清为什么我不能使用普通的构造.

以下是我正在研究的问题的更复杂的例子:

SELECT id, (SELECT @var = col1 FROM tbl2), @var := @var+1, 
(UPDATE tbl2 SET col1 = @var) FROM tbl WHERE ...
Run Code Online (Sandbox Code Playgroud)

所以我基本上处于这样一种情况:我在select语句中递增一个变量,并且想要反映这个变化,因为我在选择行时因为我在执行期间使用了这个变量的值.这里给出的例子可能可以通过其他方式实现,但是由于存在太多不必要的代码,我不会在这里发布的真实示例需要此功能.

mysql sql

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

即使你知道你不应该使用什么反模式?

我是唯一一个有时采取看似简单但错误的方式摆脱某些设计情况的人吗?我承认我已经分享了可疑的Singleton对象.除此之外,我已经知道要制造一两个上帝的对象以使事情看起来更容易.

即使你知道你不应该使用反模式吗?

design-patterns coding-style anti-patterns

5
推荐指数
3
解决办法
1417
查看次数

大型SSIS ETL项目中的版本控制

我们即将使用SSIS将数据从一个系统转换到另一个系统.我们是四个人,他们将继续为此工作两年,因此我们需要某种版本控制系统.我们不能使用团队基础.我们目前正在配置SVN服务器,但深入研究它我看到了一些很大的风险.

似乎解决方案存储在一个巨大的XML文件中.这在SSIS组合的代码/拖放环境中一定是个大问题,因为SVN无法正确合并更改,每当我们在提交时遇到错误,我们都必须查看那个巨大的XML文件,手动纠正​​错误.

解决此问题的一种方法是在SSIS中创建许多解决方案项目.然而,这并不是我们想要的设置,因为我们正在创建一个大型怪物,它将有2天的执行时间,我们希望在执行时跟踪其进度.如果我们必须创建多个解决方案,是否有方法可以链接它们的执行,并且仍然可以直观地了解正在进行的操作以及执行的执行情况如何?

有没有人有类似的问题和/或你有什么建议如何解决它们?

version-control ssis

4
推荐指数
3
解决办法
7937
查看次数

使用enum参数自动推断返回类型

如果我将Enum作为参数提供给Java中的方法,是否可以自动推断返回类型?

我希望能够通过使getValue通用并使用Enum中的信息来支持这些调用

String myval = obj.getValue(MyEnum.Field1)
int myval2 = obj.getValue(MyEnum.Field2)
Run Code Online (Sandbox Code Playgroud)

当前解决方案

我目前的解决方案是这样的:

String val = typeRow.getColumnValueGen(TYPEGODKENDCRM.COLUMN_TYPEGODKENDNR, String.class)

它用于访问表的ORM表示中的列.我知道这个字段是一个字符串,我想避免在每次调用时告诉它.

java generics enums

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