我有一个包含两列的表格:纬度和经度。我想将所有对象放入“矩形”(好吧,纬度/经度坐标度量中的矩形)边界框内:最小-最大纬度和最小-最大经度。基本上归结为以下伪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。
我想上运行两个不同版本的的相同的多模块Maven项目下蚀.
不幸的是,当您在eclipse下导入多模块maven项目时,您可以自己更改父模块项目名称,以防止冲突,但不能更改子模块项目名称.子模块作为根项目导入,以模块名称命名.显然,在导入期间无法重命名它们.
在一个理想的情况下,我想保持它的原样.显然我想保持相同的eclipse工作区 ......
Java中是否有任何开源马尔可夫聚类算法(又称MCL)实现?既可以是独立的,也可以是库的一部分.
我有一组 2D 无向线段,由两个端点组成。从统计上讲,他们中的大多数都或多或少地处于相同的方向。
我想计算的是段集的平均方向(例如,如果该集是全局 N/S,它将返回 ~ 0° 等......)。请注意,我不在乎返回哪个实际方向(0° 或 180° 也一样)。
在 [0..180°[ 范围内钳制每个段的方向并取平均值不起作用(例如两个段,一个 1° 和另一个 -1°:第二个将钳位到 179°,平均值为错了,这里是 90°,应该是 0°)。
我还考虑将“标准化段”端点分为两组,并计算由 2 个簇中点组成的段的方向,但这对于任务来说似乎有点复杂。“归一化线段”是指在单位圆上具有两个端点和在原点处的中点的线段。
是否有已知的算法/公式?
我目前正在使用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进行了测试.
我想让Jersey2和Guice一起合作,这显然是相当困难的.我已经看到了一些涉及使用HK2-to-Guice桥的解决方案.但是这个桥依赖于ServiceLocator在init()自定义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.我怎样才能在这种情况下得到它?
我想在Java中将a转换Spliterator<T>为a List<T>。
这样做的最佳习惯用法是什么?我目前正在使用以下代码:
List<T> list = new ArrayList<>();
spliterator.forEachRemaining(list::add);
Run Code Online (Sandbox Code Playgroud)
有没有更简单/更快的方法?
我经常使用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) 我目前正在编写一个Web小部件,我想用我服务器上的wicket组件生成的一些HTML数据来填充这个小部件的内容.
为此,服务器将通过JSONP输出HTML数据.到现在为止还挺好.
但是,我需要获取此HTML数据.如何从服务器获取某些wicket组件的HTML输出?
这看起来可能是一个愚蠢的问题,但我想将一个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) 我计划使用一个地图,其中键是相当长的列表(~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类封装我的列表,保持缓存中的哈希码值以提高性能,但是:
equals()在比较相同的元素时,这并不能解决性能问题.处理这种情况会有更好的想法吗?
java ×6
collections ×2
algorithm ×1
database ×1
eclipse ×1
geometry ×1
graph ×1
guice ×1
hk2 ×1
idioms ×1
jackson ×1
jersey-2.0 ×1
json ×1
jsonp ×1
jvm ×1
list ×1
map ×1
maven ×1
memory ×1
multi-module ×1
pom.xml ×1
postgis ×1
postgresql ×1
spliterator ×1
wicket ×1