所以我在Ruby 2.4.0中运行了一些基准并意识到了这一点
(1...1000000000000000000000000000000).sum
Run Code Online (Sandbox Code Playgroud)
立即计算,而
(1...1000000000000000000000000000000).inject(:+)
Run Code Online (Sandbox Code Playgroud)
需要很长时间,我只是中止了操作.我的印象Range#sum
是别名,Range#inject(:+)
但似乎不是这样.那怎么sum
工作,为什么它比这快得多inject(:+)
?
NBEnumerable#sum
(由其实现Range
)的文档没有说明延迟评估或其他任何内容.
我不确定我的命名法是否正确,但我想知道Haskell中是否有一个贪婪的zip函数.这意味着,如果我有
a = [1, 2, 3]
b = [4, 5]
zip' a b
#=> [(Just 1, Just 4),(Just 2, Just 5),(Just 3, Nothing)]
Run Code Online (Sandbox Code Playgroud)
... zip'
贪婪的zip函数在哪里,它将返回一个元组列表,列表的长度更长,列表中有一个元素,但较短的列表不会Nothing
放在相应的元组位置.我不是问如何写这个,而是想知道这是否作为内置存在.
这是我的实现(可能不是很好)
zip' :: [a] -> [b] -> [(Maybe a, Maybe b)]
zip' (a:xs) [] = (Just a, Nothing) : zip' xs []
zip' [] (b:ys) = (Nothing, Just b) : zip' [] ys
zip' [] _ = []
zip' (a:xs) (b:ys) = (Just a, Just b) : zip' xs ys
Run Code Online (Sandbox Code Playgroud) 我在Openbuack上创建了一个Spark集群,在Ubuntu14.04上运行,内存为8GB.我创建了两个虚拟机,每个虚拟机3GB(为父操作系统保留2 GB).此外,我从第一台虚拟机和第二台机器的3名工人创建了一个主人和两名工人.
spark-env.sh文件具有基本设置
export SPARK_MASTER_IP=10.0.0.30
export SPARK_WORKER_INSTANCES=2
export SPARK_WORKER_MEMORY=1g
export SPARK_WORKER_CORES=1
Run Code Online (Sandbox Code Playgroud)
每当我与部署的start-all.sh集群,我得到"无法启动org.apache.spark.deploy.worker.Worker",有的时候"未能推出org.apache.spark.deploy.master.Master".当我看到日志文件以查找错误时,我得到以下内容
星火命令:/ usr/lib中/ JVM/Java的7-的OpenJDK,AMD64 /斌/ java命令> /home/ubuntu/spark-1.5.1/sbin /../的conf /:/首页/ Ubuntu的/火花> 1.5.1 /组件/目标/阶-2.10 /火花组件-1.5.1-> hadoop2.2.0.jar:/home/ubuntu/spark-1.5.1/lib_managed/jars/datanucleus-api-> jdo- 3.2.6.jar:/home/ubuntu/spark-1.5.1/lib_managed/jars/datanucleus-core-> 3.2.10.jar:/home/ubuntu/spark-1.5.1/lib_managed/jars/datanucleus-rdbms - > 3.2.9.jar -Xms1g -Xmx1g -XX:MaxPermSize参数=256米> org.apache.spark.deploy.master.Master --ip 10.0.0.30 --port 7077 --webui->端口8080
虽然我得到了失败的消息,但主人或工人在几秒钟后就活了起来.
有人可以解释原因吗?
我正在阅读一些代码,我看到了一些东西
module M
def +@
self
end
end
Run Code Online (Sandbox Code Playgroud)
我很惊讶这是合法的语法,但是当我运行ruby -c
文件(到lint)时,它说它是有效的.-@
当我尝试*@
或d@
两者都是非法的时候,这也是一个合法的方法名称.我想知道什么+@
意思,为什么合法?
好的,所以我试图删除下划线,如某些假期中所见(例如,fourth_of_july).然后我想把每个单词都大写.
预期成果:4th_of_july>七月四日
所以这是我的代码:
holiday_dec = {
:winter => {
:christmas => ["Lights", "Wreath"],
:new_years => ["Party Hats"]
},
:summer => {
:fourth_of_july => ["Fireworks", "BBQ"]
},
:fall => {
:thanksgiving => ["Turkey"]
},
:spring => {
:memorial_day => ["BBQ"]
}
}
def all_supplies_in_holidays(holiday_hash)
holiday_hash.each do |seasons, holidays|
holidays.each do |holidays, supplies|
puts "#{seasons.to_s.capitalize}:"
puts " #{holidays.to_s.tr("_"," ").capitalize}: #{supplies.join(", ")}"
end
end
end
all_supplies_in_holidays(holiday_dec)
Run Code Online (Sandbox Code Playgroud) 在Ruby中,如果我有一个数组,a = [1, 2, 3, 4, 5]
并且我希望得到每个元素的总和乘以它的索引
a.each.with_index.inject(0) {|s,(i,j)| s + i*j}
Run Code Online (Sandbox Code Playgroud)
有没有惯用的方法在Rust做同样的事情?到目前为止,我有
a.into_iter().fold(0, |x, i| x + i)
Run Code Online (Sandbox Code Playgroud)
但这并没有考虑到索引,我无法找到一种方法来让它考虑索引.这是可能的,如果是的话,怎么样?
我发现Apache Spark RDD的一个非常奇怪的行为(带有scala 2.11的spark 1.6.0):
当我在RDD上使用subtractByKey时,生成的RDD应该是相等或更小的大小.我得到的是一个在内存中占用更多空间的RDD:
//Initialize first RDD
val rdd1 = sc.parallelize(Array((1,1),(2,2),(3,3))).cache()
//dummy action to cache it => size according to webgui: 184 Bytes
rdd1.first
//Initialize RDD to subtract (empty RDD should result in no change for rdd1)
val rdd2 = sc.parallelize(Array[(Int,Int)]())
//perform subtraction
val rdd3 = rdd1.subtractByKey(rdd2).cache()
//dummy action to cache rdd3 => size according to webgui: 208 Bytes
rdd3.first
Run Code Online (Sandbox Code Playgroud)
我首先意识到这个奇怪的行为是一个~20万行和1.3 GB的RDD,减法后可以扩展到2 GB以上
编辑:尝试使用更多值(10k)=>相同的行为上面的示例.大小增加约1.6倍.另外,reduceByKey似乎也有类似的效果.
当我创建一个RDD时
sc.paralellize(rdd3.collect())
Run Code Online (Sandbox Code Playgroud)
大小与rdd3相同,因此即使从RDD中提取,大小也会增加.
我试图使用*ngFor
但迭代迭代对象的属性in
.当我尝试这样做
@Controller({
selector: 'sample-controller',
template: `
<ul>
<li *ngFor="let i in obj">
<b>{{i}}</b>: {{obj[i]}}
</li>
</ul>`
})
class SampleController {
obj = {a: 1, b: 2}
}
Run Code Online (Sandbox Code Playgroud)
我收到错误消息:
无法绑定到'ngForIn',因为它不是'li'的已知属性.
我已经包含FormsModule
并BrowserModule
在imports
一节@NgModule
此组件.
是否有可能使用ngForIn
上li
,如果没有有一个惯用的方法吗?
ruby ×4
apache-spark ×2
angular ×1
c ×1
capitalize ×1
fold ×1
haskell ×1
indexing ×1
ngfor ×1
rdd ×1
rust ×1
scala ×1
sockets ×1
typescript ×1
ubuntu ×1