问题列表 - 第30136页

列表程序中的空间泄漏

我正在解决Haskell中Project Euler的一些问题.我为它写了一个谜语程序,它没有像我预期的那样工作.

当我在运行程序时查看任务管理器时,我发现它在ghc上使用了> 1 GB的RAM.我的一个朋友在Java中编写了一个具有相同含义的程序,并在7秒内成功完成.

import Data.List

opl = find vw $ map (\x-> fromDigits (x++[0,0,9]) ) 
        $ sequence [[1],re,[2],re,[3],re,[4],re,[5],re,[6],re,[7],re,[8],re]

vw x = hh^2 == x
    where hh = (round.sqrt.fromIntegral) x

re = [0..9]

fromDigits x = foldl1 (\n m->10*n+m) x
Run Code Online (Sandbox Code Playgroud)

我知道这个程序会在给定足够的RAM和时间的情况下输出我想要的数字,但必须有更好的表现方式.

performance haskell lazy-evaluation

13
推荐指数
1
解决办法
1106
查看次数

多态关联验证?

有没有办法验证多态关联只与一个项目相关?例如,如果我有一个多态的评论,可以在照片,帖子等.我想确保如果我在帖子的评论列表中添加评论,如果评论已经与帖子相关联,添加将失败.(验证唯一性错误).有任何想法吗?

ruby-on-rails

3
推荐指数
1
解决办法
891
查看次数

如何使用merge()更新R中的表

我正在试图弄清楚如何使用merge()更新数据库.

这是一个例子.以数据框为例foo

foo <- data.frame(index=c('a', 'b', 'c', 'd'), value=c(100, 101, NA, NA))
Run Code Online (Sandbox Code Playgroud)

其中包含以下值

index value
1     a   100
2     b   101
3     c    NA
4     d    NA
Run Code Online (Sandbox Code Playgroud)

和数据框架 bar

bar <- data.frame(index=c('c', 'd'), value=c(200, 201))
Run Code Online (Sandbox Code Playgroud)

其中包含以下值:

 index value
1     c   200
2     d   201
Run Code Online (Sandbox Code Playgroud)

当我运行下面的merge()函数来更新值cd

merge(foo, bar, by='index', all=T)
Run Code Online (Sandbox Code Playgroud)

它导致此输出:

 index value.x value.y
1     a     100      NA
2     b     101      NA
3     c      NA     200
4     d      NA     201
Run Code Online (Sandbox Code Playgroud)

我想输出的merge()避免的创作,在这个具体的例子中, …

merge r

19
推荐指数
2
解决办法
8195
查看次数

Python:如何打印范围az?

1.打印一个: abcdefghijklmn

2.每一秒钟: acegikm

3.附加到URL的索引{ hello.com/,hej.com/,...,hallo.com/}:hello.com/a hej.com/b ... hallo.com/n

python string ascii list

93
推荐指数
8
解决办法
21万
查看次数

如何在32位机器上完成64位数学运算?

如果32位处理器的长度确实只有32位,那么数学运算如何处理64位数?例如:

long lngTemp1 = 123456789123;
long lngTemp2 = lngTemp1 * 123;
Run Code Online (Sandbox Code Playgroud)

根据MSDN,C#中有一个长期签名的64位数字:http://msdn.microsoft.com/en-us/library/ctetwysk(VS.71).aspx

32位英特尔微处理器如何能够执行代码,如上所述而不会出现溢出?

c# types overflow long-integer

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

以2的幂分配内存是否更好?

当我们使用malloc()分配内存时,我们应该给出两个幂的大小吗?或者我们只是给出我们需要的确切尺寸?
喜欢

//char *ptr= malloc( 200 ); 
char *ptr= malloc( 256 );//instead of 200 we use 256
Run Code Online (Sandbox Code Playgroud)

如果给出2的幂的大小更好,那是什么原因?为什么更好?

谢谢

编辑

我混淆的原因是在Joel的博客Back to Basics中引用

智能程序员通过始终分配大小为2的内存块来最小化malloc的潜在破坏.你知道,4个字节,8个字节,16个字节,18446744073709551616个字节等.由于任何使用乐高的人都应该直观的原因,这可以最大限度地减少自由链中发生的奇怪碎片的数量.虽然看起来这似乎浪费了空间,但也很容易看出它永远不会浪费50%以上的空间.所以你的程序使用的内存不会超过它需要的两倍,这不是什么大不了的事.

对不起,我应该早点发布上面的报价.我很抱歉!

到目前为止,大多数回复都说,以2的力量分配内存是一个坏主意,那么在哪种情况下更好地遵循Joel的观点malloc()呢?他为什么这么说?以上引用的建议现在已经过时了吗?

请解释一下.
谢谢

c malloc memory-management

40
推荐指数
3
解决办法
6390
查看次数

KornShell:变量分配"000010"转换为8而不是10.

我有一个固定长度的字符串,这是一个数字.当我将字符串分配给变量时,它被赋值为8而不是10.为什么?我怎么阻止它?

$ i=10
$ ((i=i+1))
$ echo $i
11    # Right answer
$ i=000010
$ ((i=i+1))
$ echo $i
9     # Wrong answer
Run Code Online (Sandbox Code Playgroud)

更新:答案确认数字正在转换为八进制,并且需要删除前导零.这是sed命令.

echo"000010"| sed's/0*//'

unix shell scripting ksh sed

0
推荐指数
1
解决办法
921
查看次数

斜杠哈希斜杠

有一个带有散列的URL的优点是用它周围的斜杠写的.例如:

http://www.example.com/#/profile

SEO更好吗?在斜线没有编入索引之后,我想到了什么.

url seo

5
推荐指数
2
解决办法
2326
查看次数

使用空FK多次连接一个表

在我有两个表的情况下:

  • 游戏(id,player1Id,player2Id)
  • 玩家(身份,性别)

我想选择所有游戏和玩家的性别,我如何绕过null playerIds?

根据这个解释,我认为答案是:

SELECT Games.id, p1.gender, p2.gender
FROM Games JOIN Players p1 on player1Id = p1.id 
JOIN Players p2 on player2Id = p2.id
Run Code Online (Sandbox Code Playgroud)

但是,这不会返回任何将player1Id或player2Id设为null的游戏.有可能在可能的情况下显示所有连接玩家的游戏吗?

谢谢.

sql database

0
推荐指数
1
解决办法
87
查看次数

带有引号的Java Runtime.getRuntime().exec()

我试图通过Linux上的exec调用运行ffmpeg.但是我必须在命令中使用引号(ffmpeg需要它).我一直在浏览java doc for processbuilder和exec以及stackoverflow上的问题,但我似乎无法找到解决方案.

我需要跑

ffmpeg -i "rtmp://127.0.0.1/vod/sample start=1500 stop=24000" -re -vcodec copy -acodec copy -f flv rtmp://127.0.0.1/live/qltv
Run Code Online (Sandbox Code Playgroud)

我需要在下面的参数字符串中插入引号.注意,由于processbuilder解析和运行命令的性质,简单地添加单引号或双引号前面加一个反斜杠不起作用.

String argument = "ffmpeg -i rtmp://127.0.0.1/vod/"
                    + nextVideo.getFilename()
                    + " start=" + nextVideo.getStart()
                    + " stop=" + nextVideo.getStop()
                    + " -re -vcodec copy -acodec copy -f flv rtmp://127.0.0.1/live/qltv";
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激.

java linux exec runtime.exec

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