小编Lau*_*ire的帖子

Java三元运算符对泛型类型推断的影响

public List<String> foo1() {
    List<String> retval = bar();
    if (retval == null)
        return Collections.emptyList();
    else
        return retval;
}

public List<String> foo2() {
    List<String> retval = bar();
    return retval == null ? Collections.emptyList() : retval;
}
Run Code Online (Sandbox Code Playgroud)

为什么foo1()编译很好而foo2()有错误?(更准确地说"类型不匹配:无法从List <capture#1-of?extends Object>转换为List <String>")

我原以为这两个函数都会编译成相同的字节码,所以一个聪明的编译器应该推断出正确的类型emptyList()...

java generics compiler-errors java-7

31
推荐指数
2
解决办法
1120
查看次数

跨系统和版本的python伪随机数的再现性?

在给定初始参数的情况下,我需要生成受控的伪随机数序列.为此,我使用标准的python随机生成器,由此参数播种.我想确保我将跨系统生成相同的序列(操作系统,但也包括Python版本).

总结:python是否确保其伪随机数生成器在实现版本中的可重复性/可移植性?

python random portability

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

AbstractList :: equals()的JDK实现不首先检查列表大小相等

奇怪的AbstractList::equals() 是,如果两个列表具有相同的大小,则默认的JDK 6实现似乎不会先检查:

public boolean equals(Object o) {
    if (o == this)
        return true;
    if (!(o instanceof List))
        return false;
    ListIterator<E> e1 = listIterator();
    ListIterator e2 = ((List) o).listIterator();
    while(e1.hasNext() && e2.hasNext()) {
        E o1 = e1.next();
        Object o2 = e2.next();
        if (!(o1==null ? o2==null : o1.equals(o2)))
            return false;
    }
    return !(e1.hasNext() || e2.hasNext());
}
Run Code Online (Sandbox Code Playgroud)

如果两个列表都包含大量项目或需要时间进行比较的项目,则会在意识到一个列表比另一个列表短之前对它们进行比较; 这对我来说似乎真的很低效,因为即使没有调用一个比较也可以做到平等.

特别是对于许多情况,列表大小在大多数情况下会有所不同.此外,大多数Java List实现具有O(1)size()性能(甚至LinkedList,其在缓存中保持其大小).

这个默认实现有充分的理由吗?

java collections list jdk1.6

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

跨系统和版本的java伪随机数的再现性?

在给定初始整数参数的情况下,我需要生成受控的伪随机数序列.为此,我使用标准Java Random类,由整数参数播种.我想确保在可预见的未来(以及更多!)中我将跨系统(操作系统,还有Java/JDK版本)生成相同的序列.

总结:Java是否确保其伪随机数生成器在实现版本之间的可重复性/可移植性?

注意:我已经为Python提出了完全相同的问题.我之后将实现语言改为Java,但出于其他原因.

java random portability

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

appengine数据存储区中的空列表:java vs python

我在AppEngine中有以下java模型类:

public class Xyz ... {
    @Persistent
    private Set<Long> uvw;
}
Run Code Online (Sandbox Code Playgroud)

在Java中使用uvw保存对象Xyz时,我得到一个" null "字段(如appengine数据存储区查看器中所列).当我尝试在python中加载相同的对象(通过remote_api)时,由以下python模型类定义:

class Xyz(db.Model):
    uvw = db.ListProperty(int)
Run Code Online (Sandbox Code Playgroud)

我得到一个" BadValueError:属性uvw是必需的 ".

在python中使用空的uvw列表保存同一类的另一个对象时,数据存储区查看器将打印" 缺少 "字段.

显然空列表存储处理在Java和python之间有所不同,并导致"不兼容"对象.

因此我的问题是:有没有办法,或者:

  • 强制Java将空列表存储为"缺失"字段,
  • 强制Python在加载对象时优雅地接受"null"列表作为空列表?

或者关于如何处理两种语言的空列表字段的任何其他建议.

谢谢你的回答!

python java google-app-engine datanucleus

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

如何转储部分二进制文件

我有二进制文件,想要提取部分内容,从知道字节字符串(即FF D8 FF D0)开始,以已知字节字符串结尾(AF FF D9)

在过去,我曾经习惯dd从开始/结束中删除部分二进制文件,但这个命令似乎不支持我的要求.

终端上的什么工具可以做到这一点?

linux bash terminal dump

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

在泽西请求中获取客户端区域设置

在Jersey(JAX-RS)请求的上下文中获取客户端区域设置的最佳和更便携的方法是什么?我有以下代码:

@GET
@Produces("text/html")
@Path("/myrequest")
public Response myRequest(@Context HttpServletRequest request) {
    Locale locale = ...
}
Run Code Online (Sandbox Code Playgroud)

请假设"请求"是由浏览器中的某些javascript代码通过调用生成的 window.location = ...;

java locale jax-rs jersey

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

Objectify/AppEngine:计算查询返回的对象数的最佳方法?

AppEngine上使用Objectify计算查询返回的对象数量(实际加载它们)的最佳(即最有效)方法是什么?我猜最好的方法是获取所有密钥并计算结果:

public int getEntityCount(Long v) {
    Objectify ofy = ObjectifyService.begin();
    Iterable<Key<MyEntity>> list = ofy.query(MyEntity.class)
            .filter("field", v).fetchKeys();
    int n = 0;
    for (Key<MyEntity> e : list)
        n++;
    return n;
}
Run Code Online (Sandbox Code Playgroud)

似乎没有任何专门的方法来做到这一点.有任何想法吗?

google-app-engine objectify

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

空间索引与两个坐标索引

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

Postgresql 中是否需要对复合主键的一部分建立索引?

我有一个带有复合主键的(大)表,由 5 列(a、b、c、d、e)组成。

我想有效地选择具有给定值的其中两列(a + e)的所有行。

在 PostgreSQL 中,我需要一个索引吗?或者数据库会使用主键(甚至部分使用?)

我看过下面的帖子,其中指定 MySQL 可以使用多列索引的最左边部分来有效地查询行。但我在复合主键上没有找到 PostgreSQL 的任何内容。

postgresql indexing primary-key composite-index composite-primary-key

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