小编Il-*_*ima的帖子

将对象数组转换为其基本类型的数组

如果您有一个具有基本类型的Java对象数组(例如Byte,Integer,Char等).有没有一种简洁的方法我可以将它转换为原始类型的数组?特别是可以在不必创建新数组并遍历内容的情况下完成此操作.

例如,给定

Integer[] array
Run Code Online (Sandbox Code Playgroud)

什么是将其转换为最佳方式

int[] intArray
Run Code Online (Sandbox Code Playgroud)

不幸的是,当Hibernate与我们无法控制的某些第三方库之间进行交互时,我们必须经常这样做.这似乎是一个非常常见的操作,所以如果没有捷径我会感到惊讶.

谢谢你的帮助!

java arrays primitive-types

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

工作窃取始终是最合适的用户级线程调度算法吗?

我一直在研究我正在实现的线程池的不同调度算法.由于我正在解决的问题的性质,我可以假设并行运行的任务是独立的,不会产生任何新任务.任务可以是不同的大小.

我立即采用最流行的调度算法"偷工作",使用无锁的deques作为本地工作队列,我对这种方法比较满意.但是我想知道是否有任何常见的情况,工作窃取不是最好的方法.

对于这个特殊问题,我对每个单独任务的大小有一个很好的估计.工作窃取没有利用这些信息,我想知道是否有任何调度程序可以提供更好的负载平衡,而不是工作窃取这些信息(显然具有相同的效率).

NB.这个问题与之前的问题有关.

algorithm multithreading load-balancing scheduling work-stealing

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

线程间负载均衡的启发式算法

我正在研究一个多线程程序,我有许多工作线程执行不等长的任务.我想对任务进行负载平衡,以确保它们完成大致相同的工作量.对于每个工作T 我有一个数字c 提供了一个很好的近似认为是必需的任务的工作量.

我正在寻找一个有效的(O(N)N =任务数或更好的)算法,这将给出"大致"给定c i值的良好负载平衡.它不一定是最优的,但我希望能够对结果分配的糟糕程度有一些理论界限.

有任何想法吗?

algorithm load-balancing heuristics scheduling

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

hibernate二级缓存ehcache的性能

我们正在考虑使用ehcache(1.6.0-beta5)来启用从未修改过的许多表的二级缓存.我们为这个表设置了一个只读的ehcache区域,目前它似乎工作正常.存储在缓存中的Hibnerate POJO都是不可变的.

其中一位开发人员提出了一个问题,即从ehcache"水合"对象所花费的时间显着减少,即从ehcache的实体内部表示到实际java对象的映射.相反,他建议我们手动将对象存储在我们自己的缓存中.这需要对我们的代码进行重大修改,我对改进的程度有所保留.

我的问题是:

  1. 这种性能下降真的很重要吗?
  2. 如果实体在只读缓存中是不可变的,那么ehcache实际上是否需要进行任何水合作用?它不能直接存储对象吗?

谢谢你的帮助.

java caching hibernate ehcache

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

最好的Spring/Hibernate配置,永不改变表格

我目前正在使用Spring + Hibernate + MySQL来处理我正在进行的项目.我意识到有一些表永远不会改变.它们是静态的,在这些表上不会发生插入或更新,因此可以认为是不可变的.对这些表的所有访问都是通过实体集合和hql查询的延迟加载(可以是急切的).

我想知道这种情况下处理这种情况的最佳方法是什么.我有基础知识,只读ehcache,查询缓存和设置为只读的事务(这对Mysql做了什么呢?).我还能看到其他什么?哪种ISOLATION模式,PROPAGATION模式最好?我应该看看其他缓存解决方案吗?或者我应该简单地取消所有这些,只需将数据加载到一系列的哈希图中(这有望成为最后的手段)?

另一个可能的(牵强附会的?)解决方案是拥有一些内存/无事务数据库并让hibernate连接到它.这样的数据库引擎存在吗?

我很感激任何指针,经验你们有过!

java mysql performance spring hibernate

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

从属性文件自动刷新spring bean属性

我正在使用Spring 2.5.6.我有一个bean,其属性通过PropertyPlaceholderConfigurer从属性文件中分配.我想知道在修改属性文件时是否可以更新bean的属性.例如,会有一些周期性过程检查属性文件的最后修改日期,如果已经更改,则重新加载bean.

我想知道是否已经满足了我的要求.如果没有,解决这个问题的最佳方法是什么?

谢谢你的帮助.

configuration spring properties javabeans

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

Java正则表达式语法的ANTLR语法

我目前正在为正则表达式测试框架,并且需要能够将Java正则表达式解析为AST,以便能够生成与给定正则表达式匹配的示例字符串。

我查看了的实现,java.util.regex.Pattern但是代码看起来很笨拙(我想的重点是速度而不是可读性),所以我决定使用ANTLR从头开始编写正则表达式解析器。

我想知道是否有人在我自己扑过去之前就已经准备好用于正则表达式的ANTLR语法。

java regex parsing antlr

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

并行版本的循环不比串行版本快

我正在用C++编写一个程序来执行特定系统的模拟.对于每个时间步长,执行的最大部分是由单个循环占用.幸运的是,这是非常平行的,所以我决定使用Boost Threads并行化它(我在2核机器上运行).我期望加速接近串行版本的2倍,因为没有锁定.但是我发现根本没有加速.

我实现了循环的并行版本如下:

  • 唤醒两个线程(它们被阻挡在屏障上).
  • 然后每个线程执行以下操作:

    • 以原子方式获取并递增全局计数器.
    • 使用该索引检索粒子.
    • 对该粒子执行计算,将结果存储在单独的数组中
    • 等待工作完成障碍
  • 主线程等待工作完成障碍.

我使用这种方法,因为它应该提供良好的负载平衡(因为每次计算可能需要不同的时间量).我真的很好奇可能导致这种放缓的原因.我总是读到原子变量很快,但现在我开始怀疑它们是否有性能成本.

如果有人有什么想法或任何提示,我会非常感激.我一直在抨击它一个星期,并且剖析没有透露太多.

编辑:问题解决了! 我将详细说明我是如何解决这个问题的.我再次使用gprof,但这次编译时没有优化标志(-O3).然后,分析器立即表明我在函数中花费了不可思议的时间,该函数对每个单独的粒子执行计算:远远超过串行版本.

此功能是虚拟的,可以多态访问.我改变了代码直接访问它,而不是通过vtable和voila'并行版本产生了近2的加速!串行版本的相同更改几乎没有影响.

我不知道为什么会这样,如果有人知道的话会感兴趣!

感谢所有的海报.你们都在某种程度上有所帮助,接受一个答案是非常困难的.

parallel-processing performance multithreading boost-thread atomic-values

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

确定顶点的顺序以形成四边形

假设我在 2D 空间中有 4 个顶点。有什么知道一个有效的算法,它会给我一个对应于简单四边形的顶点的排序吗?也就是说,它将标记顶点,1, 2, 3, 4以便如果我跟随1-2, 2-3, 3-4我将追踪一个简单的(即不相交的)四边形。

只需提供我可以谷歌搜索的标准算法的名称就可以了。

algorithm 2d computational-geometry

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

什么是这个游戏的名字?

这本身不是编程问题,尽管最终目标是设计算法.我正在寻找参考或至少是一种游戏的名称.它在电视游戏节目中非常普遍.游戏如下:

你有许多插槽,每个插槽包含一个你不知道的项目(来自一些有限的集合).你必须猜测每个插槽包含的内容.你告诉你的判断(谁知道每个插槽包含什么),他告诉你有多少猜测是正确的,而不告诉你哪一个.当您成功猜出所有项目时,游戏结束.

我对这种类型的游戏的任何信息感兴趣,包括对尽可能少猜测的算法的参考,等等.这个名字所以我可以google它也没关系.

谢谢!

algorithm game-theory combinatorics

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