小编Vla*_*kin的帖子

Elasticsearch读写一致性

Elasticsearch没有"读一致性"参数(如Cassandra).但它具有" 写一致性 "和" 读取偏好 ".

文档说明了关于写一致性的以下内容

写入一致性
为了防止写入发生在网络分区的"错误"端,默认情况下,只有当仲裁(> replicas/2 + 1)活动分片可用时,索引操作才会成功.可以使用action.write_consistency设置逐个节点地覆盖此缺省值.要更改此操作的每个操作,可以使用一致性请求参数.

有效写入一致性值是一个,仲裁和所有.

注意,对于副本数量为1(总共2个数据副本)的情况,如果1个副本(主要副本)可以执行写入,则默认行为是成功的.

索引操作仅在复制组中的所有活动分片已将文档编入索引(同步复制)后才返回.

我的问题是关于最后一段:

索引操作仅在复制组中的所有活动分片已将文档编入索引(同步复制)后才返回.

如果write_consistency=quorum(默认)和所有分片都是活动的(没有节点故障,没有网络分区),那么:
1)一旦分片的法定数量完成索引,索引操作是否会立即返回?(即使所有分片都是活动/活动的)
2)或者当所有实时/活动分片完成索引时,索引操作是否会返回?(即仅在出现故障/超时的情况下才考虑仲裁)

在第一种情况下 - 读取可能是最终一致的(可能会得到陈旧的数据),写入更快.
在第二种情况下 - 读取是一致的(只要没有网络分区),写入速度较慢(因为它等待较慢的分片/节点).

有谁知道它是如何工作的?

我想知道的另一件事 - 为什么' preference'param(在get/search请求中)的默认值是,randomized但是没有 _local(我想这一定是效率更高)

eventual-consistency elasticsearch

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

有效不可变对象

我想确保根据Java内存模型正确理解'有效不可变对象'的行为.

假设我们有一个可变类,我们希望将其发布为有效的不可变类:

class Outworld {
  // This MAY be accessed by multiple threads
  public static volatile MutableLong published;
}

// This class is mutable
class MutableLong {
  private long value;

  public MutableLong(long value) {
    this.value = value;
  }

  public void increment() {
    value++;
  }

  public long get() {
    return value;
  }
}
Run Code Online (Sandbox Code Playgroud)

我们执行以下操作:

// Create a mutable object and modify it
MutableLong val = new MutableLong(1);
val.increment();
val.increment();
// No more modifications
// UPDATED: Let's say for this example we …
Run Code Online (Sandbox Code Playgroud)

java concurrency immutability java-memory-model

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

使用JAXB将通用Java类绑定到JSON

我有以下java类

@XmlRootElement
@XmlSeeAlso(DataClass.class)
public static class EnvelopeClass<T> {

    @XmlElement
    public String version;

    @XmlElement
    public T data;

    EnvelopeClass() {
    }

    EnvelopeClass(String version, T data) {
        this.version = version;
        this.data = data;
    }

}

@XmlRootElement
public static class DataClass {

    @XmlElement
    public String name;

    DataClass() {
    }

    DataClass(String name) {
        this.name = name;
    }

}
Run Code Online (Sandbox Code Playgroud)

我正在创建它的实例并将它编组到json

EnvelopeClass<DataClass> dataClassEnvelopeClass = new EnvelopeClass<DataClass>("1.0", new DataClass("myName"));
Run Code Online (Sandbox Code Playgroud)

我有下一个结果:

{"version":"1.0","data":{"@type":"dataClass","name":"myName"}}
Run Code Online (Sandbox Code Playgroud)

我不想在json "@type":"dataClass"中有类型类型信息,换句话说我想要下一个结果:

{"version":"1.0","data":{"name":"myName"}}
Run Code Online (Sandbox Code Playgroud)

当EnvelopeClass没有Generics时,我得到了这个结果.

有没有办法做到这一点?

json jaxb jersey

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

为什么Intellij Idea为android模拟器显示compatible ="no"

Intellij Idea为每个Android模拟器显示compatible ="no".我尝试了不同api级别的模拟器.同时我的NexusOne兼容="true".

有谁知道它如何检查设备/模拟器的兼容性?

我在清单中有下一个设置:

<uses-sdk android:minSdkVersion="4" android:targetSdkVersion="4"/>

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.WRITE_APN_SETTINGS"/>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>

<supports-screens
        android:largeScreens="true"
        android:normalScreens="true"
        android:smallScreens="true"
        android:anyDensity="true"
        />
Run Code Online (Sandbox Code Playgroud)

android intellij-idea android-emulator

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