小编Man*_*dis的帖子

使用Zookeeper存储用户权限是否有意义

我正在编写一个涉及多个前端节点的分布式应用程序,除非它们是列表的一部分,否则需要拒绝对用户执行操作.

现在我们有超过4个节点,但只有一个运行DB2的数据库服务器通常需要维护.

现在我们正在轮询数据库以更新内存列表,这样如果用户从列表中删除,则更改会反映到所有4个节点.但是,如果在数据库关闭时重新启动其中一个节点,我们最终会得到一个空列表,这将拒绝我们不想要的所有用户请求.我们可以接受来自用户的请求,即使数据库已关闭,因为我们将它们缓冲在消息队列中,但我们想立即拒绝它们,如果它们需要被拒绝的话!

在我们的4个节点上运行Zookeeper实例并在Zookeeper中存储用户权限是否有意义.因此,阅读应该是快速的,并且数据具有高可用性和可靠性.我们不必再进行轮询,即使我们重新启动数据库,节点也可以从zookeeper获取配置!

java distributed apache-zookeeper

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

使用Jackson将MongoDB日期字段反序列化为Java POJO

使用Spring Boot 1.4.4.RELEASE,已将一个保存RequestBody到MongoDB,如下所示:

{
    "startTime" : NumberLong("1483542955570"),
    "startDate" : ISODate("2017-01-04T15:15:55.570Z"),
    "endTime" : NumberLong("1483542955570"),
    "endDate" : ISODate("2017-01-04T15:15:55.570Z")
}
Run Code Online (Sandbox Code Playgroud)

在将其映射回Java POJO时,我正在尝试以下代码.

public <T> T getPOJOFromMongoDocument(Document resourceDocument, Class<T> clazz) {
        String serialize = JSON.serialize(resourceDocument);
        return objectMapper.readValue(serialize,
                                      clazz);
}
Run Code Online (Sandbox Code Playgroud)

serialize具有如下返回的日期字段

"startDate" : { "$date" : "2017-01-04T15:15:55.570Z"}
Run Code Online (Sandbox Code Playgroud)

由于$date,杰克逊ObjectMapper在解析期间返回以下异常:

java.lang.RuntimeException: Error parsing mongoDoc to Pojo : errorMessage : {Can not deserialize instance of java.util.Date out of START_OBJECT token at [Source: {
"startTime": 1483542955570,
"startDate": {
    "$date": "2017-01-04T15:15:55.570Z"
},
"endTime": 1483542955570, …
Run Code Online (Sandbox Code Playgroud)

java spring json mongodb jackson

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

如何从hashmap中找到最高键值

迭代最大键值,以便它将替换最大字符串值.我的代码是

HashMap<String, String> mapp=new HashMap<String, String>();
mapp.put("ab","blue");
mapp.put("abc","black");
mapp.put("abcd","pink");
for (Iterator it = alltyp.iterator(); it.hasNext();) {
    String finalstring = (String) it.next();

    Iterator it1=mapp.entrySet().iterator();
    while(it1.hasNext())
    {
        Map.Entry pairs = (Map.Entry) it1.next();
        String key_ = (String) pairs.getKey();
        String value_ = (String) pairs.getValue();
        finalstring = finalstring.replaceAll(key_, value_);      
    }
}
Run Code Online (Sandbox Code Playgroud)

我想用最大键值迭代意味着键值"abcd"应首先迭代然后"abc"然后"ab".

java iterator hashmap

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

什么是javascript简写?

if(pf[i].length > highest){
    highest = pf[i].length;
}
Run Code Online (Sandbox Code Playgroud)

传达上述陈述的最有效方式是什么?

javascript

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

无法进行Roboelectric测试

我继续得到

java.lang.NoClassDefFoundError:android/content/pm/PackageManager $ NameNotFoundException ... java.lang.ClassNotFoundException:无法加载android.content.pm.PackageManager $ NameNotFoundException ...引起:java.util.zip.ZipException :LOC标头无效(签名错误)

知道是什么导致这个以及如何解决它?

android robolectric android-testing

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

静态实例变量查找Java

class A {int x = 5;}
class B extends A {int x = 10;}
class D {
    public static void main(String[] args){
        A b0 = new B();
        System.out.print(b0.x);
    }
}
Run Code Online (Sandbox Code Playgroud)

我想知道为什么这个代码打印5而不是10.

如果我改为编写以下内容,将变量x转换为方法,它的工作方式就像我期望的那样,并打印出10,因为在编译时它只检查b0的静态类型A是否有方法x,然后是运行时,使用b0的动态类型B来运行x.

class A {int x() {return 5;}}
class B extends A {int x() {return 10;}}
class D {
    public static void main(String[] args){
        A b0 = new B();
        System.out.print(b0.x());
    }
}
Run Code Online (Sandbox Code Playgroud)

我的理论是,与方法不同,实例变量是静态查找的,但我不确定为什么会这样.

谢谢!

java static dynamic

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

Stanford Core NLP LexicalizedParser模型

我是NLP的新手.我正在尝试一个示例程序,LexicalizedParser但无法找到该模型.

String parseModel = "...../models/lexparser/englishPCFG.ser.gz";
LexicalizedParser lecicalizedParser = LexicalizedParser.loadModel(parseModel);
Run Code Online (Sandbox Code Playgroud)

stanford-core-nlp-3.5.2.jar在示例Java应用程序的构建路径中也有必需的和ner jar.

我尝试引用核心jar的绝对路径并加载但不能.:(

如何从程序代码中引用此模型的确切位置?

非常感谢您的帮助和帮助!

java stanford-nlp

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

eloquent javascript - 闭包和函数

在 eloquent JavaScript 中,作者提供了以下示例+散文:

\n\n
\n

只需稍加改动,我们就可以将前面的示例转变为创建乘以任意数量的函数的方法。

\n
\n\n
function multiplier(factor) {   \n    return function(number) {\n        return number * factor;   \n    }; \n}\n\nvar twice = multiplier(2); \nconsole.log(twice(5)); \n\n// \xe2\x86\x92 10 The explicit\n
Run Code Online (Sandbox Code Playgroud)\n\n
\n

不需要wrappValue 示例中的\xe2\x80\x99 中的localVariable,因为\n 参数本身就是一个局部变量。

\n\n

思考这样的程序需要一些练习。一个好的心理模型是将 function 关键字视为 \xe2\x80\x9c 冻结\xe2\x80\x9d 其主体中的代码,并将其包装到一个包(函数值)中。因此,当您阅读 return function(...) {...} 时,请将其视为将句柄返回到一段计算,并冻结以供以后使用。

\n\n

在示例中,乘法器返回一个冻结的代码块,该代码块存储在两次变量中。然后,最后一行调用此变量中的值,从而激活冻结的代码(返回数字*因子;)。它仍然可以从创建它的乘法器调用中访问因子变量,此外,它还可以通过其数字参数访问解冻它时传递的参数 5。

\n
\n\n

javascript 如何知道以下内容中的 5:

\n\n
console.log(twice(5));\n
Run Code Online (Sandbox Code Playgroud)\n\n

应该是 number 的值?JavaScript 本质上是在对自己说“我已经有 2 作为因子的值,并且我无法更改它,所以 5 必须是数字的值”。

\n\n

换句话说

\n\n
var twice = multiplier(2)\n\nso twice =  multiplier(2) {return function …
Run Code Online (Sandbox Code Playgroud)

javascript function

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

ZonedDateTime 使用 FasterXML Jackson 序列化纪元毫秒

我打算使用纪元毫秒进行反序列化和序列化。然而,只有反序列化有效,但未能序列化回正确的ZonedDateTime.

ObjectMapper mapper = new ObjectMapper();
mapper.setTimeZone(TimeZone.getDefault());
mapper.registerModule(new JavaTimeModule());
mapper.configure(SerializationFeature.WRITE_DATE_TIMESTAMPS_AS_NANOSECONDS, false);

System.out.println(mapper.writeValueAsString(ZonedDateTime.now()));  // print 1493703996728 [Expected]
System.out.println(mapper.readValue("1493703996728", ZonedDateTime.class)); // print +49303-08-07T00:52:08+08:00[Asia/Singapore] [Unexpected]
Run Code Online (Sandbox Code Playgroud)

如何使序列化以获取日期2017-05-02T13:46:36.728+08:00[Asia/Singapore]

com.fasterxml.jackson.* 的版本都是 2.8.8

java jackson java-8 fasterxml zoneddatetime

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

由于循环依赖,在基类以外的东西上指定 Jackson JSON 子类型

我们遇到的基本问题是,当存在类型为基类的属性可以是多个子类中的任何一个时,如何处理 JSON 的反序列化。关于这个主题有很多问题,绝大多数似乎都指向基类上 JSONSubTypes 注释的使用。

一般示例如下所示,其中动物可以是多种类型 - 狗、猫、马等.....

public class Pets {

   private List<Animal> myPets;

   public List<Animal> getMyPets(){
        return myPets;
   }

}
Run Code Online (Sandbox Code Playgroud)

埋在注释中的通常是反对每次添加子类时更改基类的要求的注释。考虑以下示例。如果创建了一个“Horse”类并需要使用一个新类型,则需要将一个新类型添加到 Horse 类的 JsonSubTypes 列表中。

@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY)
@JsonSubTypes({
@JsonSubTypes.Type(value = Dog.class, name = "Dog"),
@JsonSubTypes.Type(value = Cat.class, name = "Cat") }
)
public abstract class Animal {

    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

}
Run Code Online (Sandbox Code Playgroud)

这里的问题是如果基类和所有子类不存在于同一个 jar 文件中怎么办?您现在最终会遇到循环依赖。子类依赖于带有基类的 jar 文件,基类依赖于带有子类的 jar。

JAXB …

java polymorphism json jackson

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