我正在编写一个涉及多个前端节点的分布式应用程序,除非它们是列表的一部分,否则需要拒绝对用户执行操作.
现在我们有超过4个节点,但只有一个运行DB2的数据库服务器通常需要维护.
现在我们正在轮询数据库以更新内存列表,这样如果用户从列表中删除,则更改会反映到所有4个节点.但是,如果在数据库关闭时重新启动其中一个节点,我们最终会得到一个空列表,这将拒绝我们不想要的所有用户请求.我们可以接受来自用户的请求,即使数据库已关闭,因为我们将它们缓冲在消息队列中,但我们想立即拒绝它们,如果它们需要被拒绝的话!
在我们的4个节点上运行Zookeeper实例并在Zookeeper中存储用户权限是否有意义.因此,阅读应该是快速的,并且数据具有高可用性和可靠性.我们不必再进行轮询,即使我们重新启动数据库,节点也可以从zookeeper获取配置!
使用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) 迭代最大键值,以便它将替换最大字符串值.我的代码是
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".
if(pf[i].length > highest){
highest = pf[i].length;
}
Run Code Online (Sandbox Code Playgroud)
传达上述陈述的最有效方式是什么?
我继续得到
java.lang.NoClassDefFoundError:android/content/pm/PackageManager $ NameNotFoundException ... java.lang.ClassNotFoundException:无法加载android.content.pm.PackageManager $ NameNotFoundException ...引起:java.util.zip.ZipException :LOC标头无效(签名错误)
知道是什么导致这个以及如何解决它?
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)
我的理论是,与方法不同,实例变量是静态查找的,但我不确定为什么会这样.
谢谢!
我是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的绝对路径并加载但不能.:(
如何从程序代码中引用此模型的确切位置?
非常感谢您的帮助和帮助!
在 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\nRun Code Online (Sandbox Code Playgroud)\n\n\n\n\n不需要wrappValue 示例中的\xe2\x80\x99 中的localVariable,因为\n 参数本身就是一个局部变量。
\n\n思考这样的程序需要一些练习。一个好的心理模型是将 function 关键字视为 \xe2\x80\x9c 冻结\xe2\x80\x9d 其主体中的代码,并将其包装到一个包(函数值)中。因此,当您阅读 return function(...) {...} 时,请将其视为将句柄返回到一段计算,并冻结以供以后使用。
\n\n在示例中,乘法器返回一个冻结的代码块,该代码块存储在两次变量中。然后,最后一行调用此变量中的值,从而激活冻结的代码(返回数字*因子;)。它仍然可以从创建它的乘法器调用中访问因子变量,此外,它还可以通过其数字参数访问解冻它时传递的参数 5。
\n
javascript 如何知道以下内容中的 5:
\n\nconsole.log(twice(5));\nRun Code Online (Sandbox Code Playgroud)\n\n应该是 number 的值?JavaScript 本质上是在对自己说“我已经有 2 作为因子的值,并且我无法更改它,所以 5 必须是数字的值”。
\n\n换句话说
\n\nvar twice = multiplier(2)\n\nso twice = multiplier(2) {return function …Run Code Online (Sandbox Code Playgroud) 我打算使用纪元毫秒进行反序列化和序列化。然而,只有反序列化有效,但未能序列化回正确的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
我们遇到的基本问题是,当存在类型为基类的属性可以是多个子类中的任何一个时,如何处理 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 ×7
jackson ×3
javascript ×2
json ×2
android ×1
distributed ×1
dynamic ×1
fasterxml ×1
function ×1
hashmap ×1
iterator ×1
java-8 ×1
mongodb ×1
polymorphism ×1
robolectric ×1
spring ×1
stanford-nlp ×1
static ×1