小编Lau*_*ire的帖子

空间索引与两个坐标索引

我有一个包含两列的表格:纬度和经度。我想将所有对象放入“矩形”(好吧,纬度/经度坐标度量中的矩形)边界框内:最小-最大纬度和最小-最大经度。基本上归结为以下伪SQL:

SELECT * FROM MyTable WHERE lat < :maxlat AND lat > :minlat 
    AND lon < :maxlon AND lon > :minlon
Run Code Online (Sandbox Code Playgroud)

索引我的表的最佳解决方案是什么?两列索引?两列上的两个索引?空间索引?

我想知道在这种情况下是否真的需要空间索引,因为您需要一个特殊的列、特定的库,所有这些都以牺牲数据库的可移植性和简单性为代价。

注意:我想保持这个问题与数据库无关,但为了完整起见,我提到我正在使用 PostGreSQL 8,没有(现在)PostGIS。

database postgresql postgis

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

eclipse下相同多模块maven项目的多个版本

我想上运行两个不同版本的的相同的多模块Maven项目下蚀.

不幸的是,当您在eclipse下导入多模块maven项目时,您可以自己更改父模块项目名称,以防止冲突,但不能更改子模块项目名称.子模块作为根项目导入,以模块名称命名.显然,在导入期间无法重命名它们.

在一个理想的情况下,我想保持它的原样.显然我想保持相同的eclipse工作区 ......

eclipse pom.xml maven multi-module

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

Java中的马尔可夫聚类算法

Java中是否有任何开源马尔可夫聚类算法(又称MCL)实现?既可以是独立的,也可以是库的一部分.

java graph cluster-analysis

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

计算无向线段平均方向的算法

我有一组 2D 无向线段,由两个端点组成。从统计上讲,他们中的大多数都或多或少地处于相同的方向。

我想计算的是段集的平均方向(例如,如果该集是全局 N/S,它将返回 ~ 0° 等......)。请注意,我不在乎返回哪个实际方向(0° 或 180° 也一样)。

在 [0..180°[ 范围内钳制每个段的方向并取平均值不起作用(例如两个段,一个 1° 和另一个 -1°:第二个将钳位到 179°,平均值为错了,这里是 90°,应该是 0°)。

我还考虑将“标准化段”端点分为两组,并计算由 2 个簇中点组成的段的方向,但这对于任务来说似乎有点复杂。“归一化线段”是指在单位圆上具有两个端点和在原点处的中点的线段。

是否有已知的算法/公式?

algorithm geometry

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

JVM优先4个布尔优化,而不是第5个

我目前正在使用Eclipse Memory Analyzer插件(使用标准的jconsole hprof转储)分析一些Java应用程序,我注意到计算对象大小有一些奇怪的结果:

private static class B1 extends B {
} // 16 bytes

private static class B2 extends B {
    boolean d1;
    boolean d2;
    boolean d3;
    boolean d4;
} // also 16 bytes!

private static class B3 extends B {
    boolean d1;
    boolean d2;
    boolean d3;
    boolean d4;
    boolean d5;
} // 24 bytes
Run Code Online (Sandbox Code Playgroud)

显然前4个布尔值以某种方式被塞在对象标题中,这是怎么回事?

注意:在Linux x64上运行的Oracle JDK1.7和64位JDK1.8进行了测试.

java memory jvm micro-optimization

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

如何在Jersey2 ServletContainer中获取HK2 ServiceLocator?

我想让Jersey2和Guice一起合作,这显然是相当困难的.我已经看到了一些涉及使用HK2-to-Guice桥的解决方案.但是这个桥依赖于ServiceLocatorinit()自定义Jersey2 ServletContainer中获取HK2 实例以便初始化GuiceBrige:

public class MyServletContainer extends ServletContainer {
  @Override public void init() {
    ServiceLocator sloc = getApplicationHandler().getServiceLocator();
    ...
} }
Run Code Online (Sandbox Code Playgroud)

但不知何故,在泽西岛(2.26)的最后版本中,getServiceLocator()不再存在ApplicationHandler.我怎样才能在这种情况下得到它?

guice jersey-2.0 hk2

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

在 Java 中将 spliterator 转换为列表的最佳习惯用法是什么?

我想在Java中将a转换Spliterator<T>为a List<T>

这样做的最佳习惯用法是什么?我目前正在使用以下代码:

 List<T> list = new ArrayList<>();
 spliterator.forEachRemaining(list::add);
Run Code Online (Sandbox Code Playgroud)

有没有更简单/更快的方法?

java spliterator

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

使用Java在地图中自动创建缺失值的习惯用法

我经常使用map来存储循环中的值,例如属于同一个类/组的对象的set/list,或者我想要递增的AtomicInteger.因此,我经常编写以下类型的代码(假设我不在地图中存储null):

/* Example #1 -- aggregation */
Map<K, Set<O>> map = new HashMap<K, Set<O>>();
for (O o : oList) {
    K k = o.getK();
    Set<O> oSet = map.get(k);
    if (oSet == null) {
        oSet = new HashSet<O>(o);
        map.put(k, oSet);
    } else {
        oSet.add(o);
    }
}

/* Example #2 -- counting */
Map<K, AtomicInteger> map = new HashMap<K, AtomicInteger>();
for (O o : oList) {
    K k = o.getK();
    AtomicInteger i = map.get(k);
    if (i == null) {
        i = new …
Run Code Online (Sandbox Code Playgroud)

java collections idioms

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

从wicket组件获取HTML输出数据

我目前正在编写一个Web小部件,我想用我服务器上的wicket组件生成的一些HTML数据来填充这个小部件的内容.

为此,服务器将通过JSONP输出HTML数据.到现在为止还挺好.

但是,我需要获取此HTML数据.如何从服务器获取某些wicket组件的HTML输出

jsonp wicket

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

使用Jackson将名为"class"的字段反序列化为POJO

这看起来可能是一个愚蠢的问题,但我想将一个JSON对象反序列化为一个MyObject名为的字段的POJO class,这是Java中的保留关键字...如果可能的话,我想保留MyObjectJackson/Json/Whatever-dependency自由.

我是否需要在我的类字段成员中添加(标准或杰克逊特定的)Java注释来处理此问题?或者是否有另一种解决方案来拥有一个"纯粹的"java对象?如果需要,我可以配置Jackson对象映射器.

public class MyObject {
  public String field1;
  public String class; // FAIL
}
Run Code Online (Sandbox Code Playgroud)

java json unmarshalling jackson

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

在Java中使用长列表作为映射键

我计划使用一个地图,其中键是相当长的列表(~10/100k的小元素):

Map<List<K>, V> myMap = new HashMap<List<K>, V>();
Run Code Online (Sandbox Code Playgroud)

默认List::hashCode()实现(在AbstractList中)使用循环中所有列表元素的哈希码计算它的哈希码值.此外,该List::equals()方法依次比较所有列表元素,并为不同的第一个元素返回false.

除了没有缓存列表哈希码值(JDK 6)并因此每次重新计算,这都使得这种使用模式非常低效(映射经常依赖于哈希码)之外,所有这些都会产生意义.会有更少的问题了equals()为不同的元素将在一个相当低的指数平均有第一不同的项目,这样的循环会提早结束(但必须为同一列表中的所有元素进行比较).

我想用一个新的自定义KeyList类封装我的列表,保持缓存中的哈希码值以提高性能,但是:

  1. 这不是一件容易的事,因为你必须处理同步问题并实现一些列表接口方法;
  2. 它是侵入性的,因为你必须在客户端代码中使用这个装饰器;
  3. equals()在比较相同的元素时,这并不能解决性能问题.

处理这种情况会有更好的想法吗?

java collections design-patterns list map

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