小编Jyo*_*rya的帖子

如何计算逻辑向量中的TRUE值

在R中,计算TRUE逻辑向量中值的数量的最有效/惯用方法是什么?我可以想到两种方式:

z <- sample(c(TRUE, FALSE), 1000, rep = TRUE)
sum(z)
# [1] 498

table(z)["TRUE"]
# TRUE 
#  498 
Run Code Online (Sandbox Code Playgroud)

你喜欢哪个?还有什么更好的吗?

r

152
推荐指数
5
解决办法
25万
查看次数

为什么Yesod会话cookie不能被劫持?

耶索德书

加密防止用户检查数据,签名确保会话既不会被劫持也不会被篡改.

我不清楚为什么会这样.如果窃听者在从服务器发送cookie并在合法用户发出另一个请求之前使用它时获取cookie,那么会话最终是否会被劫持?

在我看来,真正防止会话劫持的唯一方法是始终使用SSL.但是如果我这样做那么Yesod的签名和加密最终会成为不必要的开销(EDIT:防止劫持的开销.正如@sr_在评论中指出的那样,它仍然有用).

security yesod

21
推荐指数
1
解决办法
2140
查看次数

从字符串集合中推断模板

我正在索引一组网站,这些网站具有从少量模板生成的大量页面(数千万).我正在寻找一种算法来学习生成页面的模板,并将模板与页面匹配,这样我就只需要为每个被提取的页面存储变量部分和模板参考.

该算法不需要产生尽可能大的压缩,但是当它看到更多页面时它应该会变得更好,并且当面对使用以前看不见的模板生成的页面时它应该优雅地表现.

我非常感谢任何文献或现有图书馆的参考.

我可以在批量页面上运行通用压缩算法.我不想这样做的原因是我感兴趣的数据将在页面的可变部分中,因此模板方法允许我在不解压缩的情况下对其进行检索.我希望能够重新创建整个页面,如果需要,以确保未来的可复制性和防止我的抓取程序中的错误.

string algorithm screen-scraping information-retrieval pattern-matching

9
推荐指数
1
解决办法
638
查看次数

为什么在Haskell的Data.List中有两个'reverse'定义

查看Data.List来源显示reverse定义为

#ifdef USE_REPORT_PRELUDE
reverse                 =  foldl (flip (:)) []
#else
reverse l =  rev l []
  where
    rev []     a = a
    rev (x:xs) a = rev xs (x:a)
#endif
Run Code Online (Sandbox Code Playgroud)

我想知道为什么提供第二个定义?它在某种意义上是否优越?

编辑:

正如下面的@nm评论,第二个版本"就像第一个版本的直接重写,foldl扩展并flip (:)内联到它." 实际上,Data.List本身定义foldl

foldl        :: (b -> a -> b) -> b -> [a] -> b
foldl f z0 xs0 = lgo z0 xs0
             where
                lgo z []     =  z
                lgo z (x:xs) = lgo (f …
Run Code Online (Sandbox Code Playgroud)

haskell

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

OpenMP:深度优先搜索的良好策略

我正在编写一个C++程序,对闭合的Knight巡演进行蛮力搜索.代码在这里.

我想使用OpenMP并行化这个.我的问题是以一种创造足够程度的并行性的方式来做到这一点.目前,我的代码的相关部分看起来像这样

#pragma omp parallel for reduction(+:count) if (depth==4)
  for (size_t i=0;i<g.neighbours[last].size();i++){
    auto n = g.neighbours[last][i];
    // See if n can be used to extend or complete the tour
Run Code Online (Sandbox Code Playgroud)

if (depth==4)是我尝试确保没有创建太多并行任务,但另一方面创建了足以保持所有处理器繁忙的任务.设置depth==2不会更改程序的运行时.

这似乎没有成功.对于3x12问题,在我的双核处理器上,OpenMP版本消耗的总CPU时间约为130秒,而没有OpenMP的单线程版本需要大约40秒的CPU时间.

我将很感激有关如何更好地使用OpenMP的建议或者不适合此问题的原因.

更新:感谢@Zulan我有一个使用OpenMP任务的更新版本,具有更快的顺序性能和良好的并行化.

c++ parallel-processing openmp

5
推荐指数
1
解决办法
933
查看次数

Haskell,分析导入库的内存使用情况

我试图了解Haskell程序的内存使用情况,我怀疑很多内存分配是在我导入的外部库中发生的.我知道-profGHC 的选项,但这只给我一个我自己的代码细分.我想将其扩展到导入的库,以了解如何修改我对此库或库本身的使用以减少内存使用.这是我安装的开源库cabal.

设置内容的最简单方法是什么,以便我可以对库本身进行概要分析?

profiling haskell

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