小编Saw*_*yer的帖子

如何使用反射递归序列化对象?

我想导航到对象的第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 ......)可以做到这一点,你能给我一些关于如何自己写这个的有启发性的想法吗?

java recursion json

4
推荐指数
2
解决办法
8899
查看次数

无法理解相互递归

我正在阅读在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)

recursion haskell mutual-recursion

4
推荐指数
1
解决办法
511
查看次数

Prototype.js获取元素值的快捷方式?

之前我没有使用Prototype.js,当我使用jquery时,我可以获得一个元素值,就像$("#inputA").val(); 在原型中有一个等效方法吗?我用$("inputA").getAttribute('value');,这是非常冗长的.

javascript prototypejs

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

Scala的理解效率如何?

在第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)

scala for-comprehension

3
推荐指数
2
解决办法
2359
查看次数

Hibernate中的有效实体更新?

如何通过使用SQL在hibernate中"有效"更新实体.

例如:我有一个Product实体,它有一个字段名称createTime.当我使用时,session.saveOrUpdate(product)我必须从数据库获取此字段然后设置为产品然后更新,实际上每当我使用时session.saveOrUpdate(),我更新了所有字段,即使我只需要更新一个字段.但是大多数时候我们传递给DAO层的值对象不能包含所有字段信息,比如createDate在Product中,我们很少需要更新这个字段.

如何更新所选字段?当然我可以使用HQL,但这将分离保存和更新逻辑.

如果Hibernate有这样的方法会更好:

session.updateOnlyNotNullFields(product);
Run Code Online (Sandbox Code Playgroud)

我怎么能在Hibernate中做到这一点?

java orm hibernate

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

需要有关简单SQL更新语句的帮助

有一个varchar类型的字段.它实际上存储一个浮点字符串.像2.0,12.0,34.5,67.50 ......我需要的是一个更新语句,删除2.0,12.0等字段的结束零,将它们更改为它们的整数表示,即2,12 ...,并留下3.45, 67.50不变.我该怎么做?我正在使用oracle 10.

sql database oracle

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

Maven SBT依赖项工件?

我同时使用Maven和SBT管理我的项目.原因是:

  1. Intellij IDEA无法导入SBT项目.(idea-sbt插件不能很好地工作)
  2. 我不知道如何从SBT获取源代码和javadoc.(我想看到有关此问题的任何答案)

问题是我不知道如何让Maven下载SBT依赖.我通过maven存储库搜索,找不到任何关于sbt的信息.我想使用Maven或SBT管理我项目中的所有罐子.

scala intellij-idea maven sbt

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

一阶参数多态和一阶函数

我正在读报纸Generics of a Higher Kind,第一句是

在Java 5和C#2.0中,一阶参数多态性以泛型的名义在主流的面向对象编程语言中引入.

我不知道什么是一阶参数多态,我也不太明白什么是一阶函数,我知道高阶函数是一个函数,它接受一个函数并返回一个函数,但我不知道什么是零 - 订单功能,一阶功能.我从这里看到了一个解释,像这样:

f - > g是零阶
f - > g - > h是一阶
f - > g - > h - > i是二阶
等.

有人能为我解释这两个词吗?

functional-programming scala lambda-calculus

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

带有正则表达式分隔符的Java Scanner

为什么以下代码返回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)

java java.util.scanner

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

Windows上的regex-pcre

如何在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)

haskell cabal

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