我想导航到对象的第N级,并以String格式序列化它的属性.例如:
class Animal {
public String name;
public int weight;
public Animal friend;
public Set<Animal> children = new HashSet<Animal>() ;
}
Run Code Online (Sandbox Code Playgroud)
应该像这样序列化:
{name:"Monkey",
weight:200,
friend:{name:"Monkey Friend",weight:300 ,children:{...if has children}},
children:{name:"MonkeyChild1",weight:100,children:{... recursively nested}}
}
Run Code Online (Sandbox Code Playgroud)
您可能会注意到它类似于将对象序列化为json.我知道有很多libs(Gson,Jackson ......)可以做到这一点,你能给我一些关于如何自己写这个的有启发性的想法吗?
我正在阅读在Haskell编程,在第8章中,作者给出了编写解析器的示例.完整的来源是:http://www.cs.nott.ac.uk/~gmh/Parsing.lhs
我无法理解以下部分:many 允许零个或多个应用程序p,但many1需要至少一个成功的应用程序:
many :: Parser a ? Parser [a ]
many p = many1 p +++ return [ ]
many1 :: Parser a ? Parser [a ]
many1 p = do v ? p
vs ? many p
return (v : vs)
Run Code Online (Sandbox Code Playgroud)
递归调用是如何发生的
vs <- many p
Run Code Online (Sandbox Code Playgroud)
vs是结果值many p,但很多p调用many1 p,many1在它的定义中都有一个do表示法,并且还有结果值v,并且vs,递归调用何时返回?为什么以下代码段可以返回[("123","abc")]?
> parse (many digit) "123abc"
[("123", "abc")]
Run Code Online (Sandbox Code Playgroud) 之前我没有使用Prototype.js,当我使用jquery时,我可以获得一个元素值,就像$("#inputA").val();
在原型中有一个等效方法吗?我用$("inputA").getAttribute('value');,这是非常冗长的.
在第23章"Scala编程"一书中,作者给出了一个例子:
case class Book(title: String, authors: String*)
val books: List[Book] = // list of books, omitted here
// ?nd all authors who have published at least two books
for (b1 <- books; b2 <- books if b1 != b2;
a1 <- b1.authors; a2 <- b2.authors if a1 == a2)
yield a1
Run Code Online (Sandbox Code Playgroud)
作者说,这将转化为:
books flatMap (b1 =>
books filter (b2 => b1 != b2) flatMap (b2 =>
b1.authors flatMap (a1 =>
b2.authors filter (a2 => a1 == a2) map (a2 => …Run Code Online (Sandbox Code Playgroud) 如何通过使用SQL在hibernate中"有效"更新实体.
例如:我有一个Product实体,它有一个字段名称createTime.当我使用时,session.saveOrUpdate(product)我必须从数据库获取此字段然后设置为产品然后更新,实际上每当我使用时session.saveOrUpdate(),我更新了所有字段,即使我只需要更新一个字段.但是大多数时候我们传递给DAO层的值对象不能包含所有字段信息,比如createDate在Product中,我们很少需要更新这个字段.
如何更新所选字段?当然我可以使用HQL,但这将分离保存和更新逻辑.
如果Hibernate有这样的方法会更好:
session.updateOnlyNotNullFields(product);
Run Code Online (Sandbox Code Playgroud)
我怎么能在Hibernate中做到这一点?
有一个varchar类型的字段.它实际上存储一个浮点字符串.像2.0,12.0,34.5,67.50 ......我需要的是一个更新语句,删除2.0,12.0等字段的结束零,将它们更改为它们的整数表示,即2,12 ...,并留下3.45, 67.50不变.我该怎么做?我正在使用oracle 10.
我同时使用Maven和SBT管理我的项目.原因是:
问题是我不知道如何让Maven下载SBT依赖.我通过maven存储库搜索,找不到任何关于sbt的信息.我想使用Maven或SBT管理我项目中的所有罐子.
我正在读报纸Generics of a Higher Kind,第一句是
在Java 5和C#2.0中,一阶参数多态性以泛型的名义在主流的面向对象编程语言中引入.
我不知道什么是一阶参数多态,我也不太明白什么是一阶函数,我知道高阶函数是一个函数,它接受一个函数并返回一个函数,但我不知道什么是零 - 订单功能,一阶功能.我从这里看到了一个解释,像这样:
f - > g是零阶
f - > g - > h是一阶
f - > g - > h - > i是二阶
等.
有人能为我解释这两个词吗?
为什么以下代码返回false?
Scanner sc = new Scanner("-v ");
sc.useDelimiter("-[a-zA-Z]\\s+");
System.out.println(sc.hasNext());
Run Code Online (Sandbox Code Playgroud)
奇怪的是它-[a-zA-Z]//s+会回归真实.
我也无法理解为什么这会返回true:
Scanner sc = new Scanner(" -v");
sc.useDelimiter("-[a-zA-Z]\\s+");
System.out.println(sc.hasNext());
Run Code Online (Sandbox Code Playgroud) 如何在Windows上安装regex-pcre?
cabal install regex-pcre
Resolving dependencies...
Configuring regex-pcre-0.94.4...
cabal: Missing dependency on a foreign library:
* Missing C library: pcre
This problem can usually be solved by installing the system package that
provides this library (you may need the "-dev" version). If the library is
already installed but in a non-standard location then you can use the flags
--extra-include-dirs= and --extra-lib-dirs= to specify where it is.
Failed to install regex-pcre-0.94.4
cabal: Error: some packages failed to install:
regex-pcre-0.94.4 failed during …Run Code Online (Sandbox Code Playgroud)