小编Eli*_*off的帖子

为什么总和比注入(:+)快得多?

所以我在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)的文档没有说明延迟评估或其他任何内容.

ruby

126
推荐指数
1
解决办法
8073
查看次数

Haskell有一个贪婪的拉链(一个保留所有元素)?

我不确定我的命名法是否正确,但我想知道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)

haskell

25
推荐指数
1
解决办法
807
查看次数

Apache Spark:"未能启动org.apache.spark.deploy.worker.Worker"或Master

我在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

虽然我得到了失败的消息,但主人或工人在几秒钟后就活了起来.

有人可以解释原因吗?

ubuntu cluster-computing apache-spark

10
推荐指数
1
解决办法
5836
查看次数

低于低级别的常见bsd插槽

你如何在C中做低级别套接字,例如:实际发送一个SYN.

c sockets network-programming

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

+ @是什么意思作为ruby中的方法

我正在阅读一些代码,我看到了一些东西

module M
  def +@
    self
  end
end
Run Code Online (Sandbox Code Playgroud)

我很惊讶这是合法的语法,但是当我运行ruby -c文件(到lint)时,它说它是有效的.-@当我尝试*@d@两者都是非法的时候,这也是一个合法的方法名称.我想知道什么+@意思,为什么合法?

ruby operator-overloading unary-operator

8
推荐指数
1
解决办法
1142
查看次数

Ruby - 删除下划线并大写

好的,所以我试图删除下划线,如某些假期中所见(例如,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 capitalize

8
推荐指数
3
解决办法
5401
查看次数

有没有办法在Rust中折叠索引?

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

但这并没有考虑到索引,我无法找到一种方法来让它考虑索引.这是可能的,如果是的话,怎么样?

indexing fold rust

8
推荐指数
1
解决办法
811
查看次数

Spark subtractByKey增加RDD缓存的内存大小

我发现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中提取,大小也会增加.

scala apache-spark rdd

7
推荐指数
0
解决办法
457
查看次数

如何提出致命的异常红宝石?

Ruby有一个fatal例外,但没有关于如何使用raise它的指导,我无法弄明白.如何fatal在Ruby中引发异常?

ruby

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

ngForIn可用于角4吗?

我试图使用*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'的已知属性.

我已经包含FormsModuleBrowserModuleimports一节@NgModule此组件.

是否有可能使用ngForInli,如果没有有一个惯用的方法吗?

typescript ngfor angular

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