具有闭包的语言(例如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 Commons和Google 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()版本比默认版本更易读/可理解吗?我完全错过了什么吗?
最好的问候,约翰内斯
使用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)
但到目前为止没有任何作用 :'( 谢谢.
在学习新的编程主题时,我通常遵循一种模式:我读到它,我理解它,然后我编写了几个例子来确保我真的得到它.
我已经阅读了很多关于monad的内容,我相信我理解并得到它们.我现在正处于一个阶段,我真的想编写一些monad来巩固我的理解,并真正弄清楚如何为各种类型实现bind.
问题是我无法想到许多明显的monad要实现,所以我正在寻找建议.最好是,我想要一个推荐列表,一些简单的,一些不那么容易.
我也意识到虽然monad用于在功能程序中"封装"副作用,但它们也比这更通用.因此,我希望建议包括既包含副作用又包含一些常规效果的monad.
谢谢!
(作为旁注:我将使用f#来做到这一点,但我认为这个问题可能适用于任何函数式语言).
我不太确定java JDBC的自动提交模式,我正在建立一个自动提交模式设置为false的连接.之后我在数据库上激活了一个select查询,工作正常,我的印象是必须只为insert,update,delete语句调用commit.
现在我需要为Select查询提交连接吗?如果不是,那个表会被锁定用于其他交易吗?
谢谢,罗希特.
好.我需要使用Intellij的全部功能,我想买这本书:IntelliJ IDEA in Action
Intellij的最后一个版本是v8(v9很快),但本书介绍了v5.买这本书是个好主意吗?
我的替代方案是什么(除了帮助功能)?
例:
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名称.这甚至可能吗?谢谢.
我正在使用Catalyst框架编写Web应用程序.我还使用了一个名为TheSchwartz的作业队列.
我想要使用作业队列,因为我希望尽可能多的特定于应用程序的代码与Web应用程序接口代码分离.
基本上整个系统由三个主要部分组成:
因此理论上,GUI为爬虫创建作业,从而为"攻击组件"创建作业.
目前我在Catalyst中有一个Model,它实例化一个TheSchwartz对象,以便Web应用程序中的控制器可以将作业添加到作业队列中.
我还需要创建一些工作者脚本来持续监听(/检查数据库)新的作业,以便他们可以执行所需的操作.目前TheSchwartz的数据库特定内容是在Catalyst中的模型中,我认为我不能轻易访问Catalyst之外的内容?
我不想在模型中复制TheSchwartz作业队列的数据库连接数据,然后在我的作业工作者脚本中复制数据库连接数据.我应该在位于Catalyst外部的另一个类中包装TheSchwartz对象的创建,并在当前实例化TheSchwartz对象的模型中调用它吗?然后我也可以在工作脚本中使用它.或者我应该在配置文件中包含数据库数据并在需要时实例化新的TheSchwartz对象(在Catalyst /内部作业工作者脚本中)?
或者我只是在想这个?
一些内容丰富的Web应用程序架构文章的链接也可能很有用(我之前从未构建过一种复杂的复杂性).
干杯
我们希望识别并显示代理Web服务器后面运行的Java应用程序的服务器和端口.这意味着getServerName()和getServerPort()返回代理的服务器名称及其端口(80).
我们在一个物理盒上运行两个应用服务器实例,因此每个盒子有两个活动端口,即9080,9081 <Application Server Name>:<Application Server Port>.显示我想要的内容.
有任何想法吗?我是一个完整的Java noob,对不起,如果这是一个基本问题.
我在多线程版本中实现了一个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:
分析没有帮助.我不确定哪些数据有助于理解我的代码 - 请问问.
这让我很困惑.
我不太明白有一个标题; 它似乎违反了DRY原则!标题中的所有信息都(可以)包含在实现中.
java ×3
ajax ×1
architecture ×1
c ×1
c++ ×1
catalyst ×1
class ×1
header ×1
instance ×1
javascript ×1
jdbc ×1
job-queue ×1
monads ×1
namespaces ×1
performance ×1
perl ×1
principles ×1
pthreads ×1
python ×1
websphere ×1
xml ×1