小编Jim*_*ans的帖子

Java中的闭包模拟是否有意义?

具有闭包的语言(例如Ruby)使得优雅的构造能够转换列表.假设我们有一个班级

class QueryTerm {
  String value;
  public String getValue() {...}
}
Run Code Online (Sandbox Code Playgroud)

以及List<QueryTerm> terms我们想要转换为其值列表的术语列表List<String> values.

在Ruby中我们可以编写如下内容:

values1 = terms.collect do |term|
    term.getValue()
end
Run Code Online (Sandbox Code Playgroud)

Java强制我们构造结果列表并自己遍历术语集合(至少在引入foreach之后没有涉及迭代器或索引位置):

Collection<String> values2 = new HashSet<String>();
for (QueryTerm term : terms) {
    values2.add(term.getValue());
}
Run Code Online (Sandbox Code Playgroud)

Apache CommonsGoogle Collections2尝试使用匿名类来模拟Java中的闭包:

Collection<String> values3 = Collections2.transform(terms, new Function<QueryTerm, String>() {
    @Override
    public String apply(QueryTerm term) {
        return term.getValue();
    }
});
Run Code Online (Sandbox Code Playgroud)

奇怪的是,这个版本有更多的代码行和比原始版本更多的字符!我认为由于这个原因很难理解.因此,当我在Apache Commons中看到它时,我就驳回了这个想法.然而,最近我在谷歌收藏中看到它,我开始怀疑我是否遗漏了一些东西.

因此我的问题是:您对上述结构有何看法?您认为该Collections2.transform()版本比默认版本更易读/可理解吗?我完全错过了什么吗?

最好的问候,约翰内斯

java

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

解析XML命名空间?

使用JavaScript/Ajax?

我正试图从中提取值:

<yweather:astronomy sunrise="6:34 am"   sunset="8:38 pm"/>
Run Code Online (Sandbox Code Playgroud)

寻找类似的东西:

var response = transport.responseXML.getElementsByTagName("channel");
sunrise = response[0].getElementsByTagName("yweather:astronomy").item(0).Attributes["sunrise"].Value;
Run Code Online (Sandbox Code Playgroud)

但到目前为止没有任何作用 :'( 谢谢.

javascript xml ajax namespaces

7
推荐指数
1
解决办法
6424
查看次数

寻找学习练习:实施这些单子

在学习新的编程主题时,我通常遵循一种模式:我读到它,我理解它,然后我编写了几个例子来确保我真的得到它.

我已经阅读了很多关于monad的内容,我相信我理解并得到它们.我现在正处于一个阶段,我真的想编写一些monad来巩固我的理解,并真正弄清楚如何为各种类型实现bind.

问题是我无法想到许多明显的monad要实现,所以我正在寻找建议.最好是,我想要一个推荐列表,一些简单的,一些不那么容易.

我也意识到虽然monad用于在功能程序中"封装"副作用,但它们也比这更通用.因此,我希望建议包括既包含副作用又包含一些常规效果的monad.

谢谢!

(作为旁注:我将使用f#来做到这一点,但我认为这个问题可能适用于任何函数式语言).

monads functional-programming

7
推荐指数
1
解决办法
472
查看次数

自动提交虚假模式java

我不太确定java JDBC的自动提交模式,我正在建立一个自动提交模式设置为false的连接.之后我在数据库上激活了一个select查询,工作正常,我的印象是必须只为insert,update,delete语句调用commit.

现在我需要为Select查询提交连接吗?如果不是,那个表会被锁定用于其他交易吗?

谢谢,罗希特.

java jdbc

7
推荐指数
1
解决办法
5824
查看次数

如何使用Intellij IDEA的全部功能?

好.我需要使用Intellij的全部功能,我想买这本书:IntelliJ IDEA in Action

http://www.amazon.com/IntelliJ-IDEA-Action-Stephen-Saunders/dp/1932394443/ref=sr_1_1?ie=UTF8&s=books&qid=1254945349&sr=8-1

Intellij的最后一个版本是v8(v9很快),但本书介绍了v5.买这本书是个好主意吗?

我的替代方案是什么(除了帮助功能)?

intellij-idea

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

Python:获取实例化类的名称?

例:

class Class1:
    def __init__(self):
        self.x = Class2('Woo!')

class Class2:
    def __init__(self, word):
        print word

meow = Class1()
Run Code Online (Sandbox Code Playgroud)

如何派生创建self.x实例的类名?换句话说,如果给我实例self.x,我怎么得到名称'Class1'?使用self.x.__class__.__name__显然只会给你Class2名称.这甚至可能吗?谢谢.

python class instance

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

我应该如何使用作业队列[和Perl/Catalyst]来最好地构建我的Web应用程序?

我正在使用Catalyst框架编写Web应用程序.我还使用了一个名为TheSchwartz的作业队列.

我想要使​​用作业队列,因为我希望尽可能多的特定于应用程序的代码与Web应用程序接口代码分离.

基本上整个系统由三个主要部分组成:

  • GUI(Catalyst Web界面)
  • 一个爬虫
  • "攻击组件"(正在编写应用程序以查找其他Web应用程序/站点中的XSS和SQLi漏洞)

因此理论上,GUI为爬虫创建作业,从而为"攻击组件"创建作业.

目前我在Catalyst中有一个Model,它实例化一个TheSchwartz对象,以便Web应用程序中的控制器可以将作业添加到作业队列中.

我还需要创建一些工作者脚本来持续监听(/检查数据库)新的作业,以便他们可以执行所需的操作.目前TheSchwartz的数据库特定内容是在Catalyst中的模型中,我认为我不能轻易访问Catalyst之外的内容?

我不想在模型中复制TheSchwartz作业队列的数据库连接数据,然后在我的作业工作者脚本中复制数据库连接数据.我应该在位于Catalyst外部的另一个类中包装TheSchwartz对象的创建,并在当前实例化TheSchwartz对象的模型中调用它吗?然后我也可以在工作脚本中使用它.或者我应该在配置文件中包含数据库数据并在需要时实例化新的TheSchwartz对象(在Catalyst /内部作业工作者脚本中)?

或者我只是在想这个?

一些内容丰富的Web应用程序架构文章的链接也可能很有用(我之前从未构建过一种复杂的复杂性).

干杯

architecture perl web-applications catalyst job-queue

7
推荐指数
1
解决办法
1172
查看次数

在Java中获取Application Server名称或ip和端口

我们希望识别并显示代理Web服务器后面运行的Java应用程序的服务器和端口.这意味着getServerName()和getServerPort()返回代理的服务器名称及其端口(80).

我们在一个物理盒上运行两个应用服务器实例,因此每个盒子有两个活动端口,即9080,9081 <Application Server Name>:<Application Server Port>.显示我想要的内容.

有任何想法吗?我是一个完整的Java noob,对不起,如果这是一个基本问题.

java websphere web-applications

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

为什么比核心更多的线程更快?

我在多线程版本中实现了一个PageRank版本.我在4核Q6600上运行它.当我运行它设置为创建4个线程时,我得到:

real    6.968s
user   26.020s
sys     0.050s
Run Code Online (Sandbox Code Playgroud)

当我运行128个线程时,我得到:

real    0.545s
user    1.330s
sys     0.040s
Run Code Online (Sandbox Code Playgroud)

这对我来说毫无意义.基本算法是sum-reduce:

  1. 所有线程总和输入的子集;
  2. 同步;
  3. 然后每个线程累积来自其他线程的部分结果;
  4. 主线程将所有线程的中间值相加,然后确定是否继续.

分析没有帮助.我不确定哪些数据有助于理解我的代码 - 请问问.

这让我很困惑.

performance multithreading pthreads

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

标题背后的理由是什么?

我不太明白有一个标题; 它似乎违反了DRY原则!标题中的所有信息都(可以)包含在实现中.

c c++ header principles

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