今天我用一个包含64000000个条目的数组/列表编写了一个程序.然而,当sigma=[1]*64000000
使用Python 编写它运行正常,但稍后,随着程序计算,我的Ubuntu冻结 - 没有任何反应输入,甚至鼠标移动.我试了两次,结果是一样的.
在C++中实现时,long long sigma[64000000]
保持良好并且运行速度非常快.
有没有什么理由说我的程序会在运行过程中冻结,而不是在开始时崩溃?
编辑:要回复下面的克里斯,我的代码直到几个循环之后才冻结.
谢谢你们!
对于那些有兴趣看到代码的人来说,这就是程序,一个蛮力的Project Euler 211:
def e211():
ans=0
sigma=[1]*64000000
for i in range(2,64000000):
j=i;
if ((j%1000==0) or (j<100)):
print(j)
q=i*i
while j<64000000:
sigma[j]+=q
j+=i
for i in range(1,64000000):
j=int(sqrt(sigma[i]))
if j*j==sigma[i]:
ans+=i
if __name__=='__main__':
print(e211())
Run Code Online (Sandbox Code Playgroud) 我正在阅读K&RC语言书,代码片段如下:
char c;
while ((c = getchar()) != EOF) ...
Run Code Online (Sandbox Code Playgroud)
有人提到,对于EOF(我认为它是-1)是来自getchar的"带外"返回值,与getchar可以返回的所有可能值不同.
我的问题如下:
signed char
可以存储-127到+127所以它可以检查-1它是如何"带外"的? char c
而不是上面的程序片段会失败int c
吗?谢谢!
今天我在Haskell写一个小程序.我发现在ghci的交互模式中,这个:
take 100 $ foldl (\s a -> s ++ [last s + a]) [0] (1:[6,12..])
Run Code Online (Sandbox Code Playgroud)
会因为内存不足而挂起ghci并使其崩溃,但是:
take 100 $ foldl (\s a -> s ++ [last s + a]) [0] (1:[6,12..606])
Run Code Online (Sandbox Code Playgroud)
可以运行得很好.
为什么Haskell的懒惰评估不能让第一个在内存中运行(3G,BTW)?或者也许这是ghci的怪癖?
感谢您的任何投入!
在阅读Learning Perl时,我遇到了一个关于正则表达式的问题。在第 9 章中,练习 3 要求学生使用正则表达式将字符串 a 替换为另一个字符串 b,并将 b 替换为 a,例如:如果 a='hitman' 且 b='assassin',则 'A hitman谋杀了刺客'应修改为“一名刺客谋杀了一名杀手”。
书中的答案是删除所有的eoln,然后用eoln作为占位符来处理这种情况,但这种方法似乎很笨拙,并不普遍适用。也许有人可以有更好的(例如,一句台词)来解决这个问题?
我正在编写一个小型库,我需要在其中访问几种不同类型的文件。虽然每种文件格式的访问方法本身都不同,但它们似乎有很多共同点,我在类层次结构中放置了一个接口,我在其中编写了一个应该连接到数据源的方法。
但是,由于数据源可能受到密码和/或用户权限的保护,因此有时需要身份验证才能检索数据。我的问题是:
在需要身份验证时抛出异常是个好主意吗?
由于我想尽可能少地公开实现,我只想告诉用户发生了什么。但是身份验证可能需要很多不同的东西(用户名、密码等),所以我可以将它们打包成一个异常并将其丢弃吗?或者,也许有更好的方法而不求助于异常,因为“需要身份验证”实际上并不是异常通常用来处理的异常行为。
需要身份验证时抛出什么异常?
现在假设我决定使用异常来处理这个问题。我应该抛出哪个异常?AuthenticationException
Java API 附带的几个s 似乎不符合此要求,因为它们似乎都非常特定于案例,例如,用于命名服务。我不确定这是不是SecurityException
要走的路,但如果这是不正确的,我仍然真的不想抛出我自己的异常,因为这会妨碍其他人理解我的代码以及 API 背后发生的事情。
感谢您提供任何意见!这有点冗长或过于冗长,因此非常欢迎任何可以改善问题的编辑。
来自其他各种语言,我觉得R强大而直观,但我对它的表现并不感到兴奋.所以我决定尝试改进我写的一些片段,并学习如何在R中更好地编码.
这是我写的一个函数,试图确定一个向量是二进制值(两个不同的值还是只有一个值):
isBinaryVector <- function(v) {
if (length(v) == 0) {
return (c(0, 1))
}
a <- v[1]
b <- a
lapply(v, function(x) { if (x != a && x != b) {if (a != b) { return (c()) } else { b = x }}})
if (a < b) {
return (c(a, b))
} else {
return (c(b, a))
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:该功能预计将通过一个载体来看看,然后返回c()
,如果它不是二进制值,并返回c(a, b)
如果是这样,一个是小值,B是较大的一个(如果== B,则刚刚c(a, a)
例如,对于.
A B C
1 1 1 0
2 …
Run Code Online (Sandbox Code Playgroud) 我遇到了一个pmax
我无法理解的行为:
pmax(data.frame(matrix(1:16, nrow=4)), c(6))
Run Code Online (Sandbox Code Playgroud)
会回来的
X1 X2 X3 X4
1 6 NA 9 13
2 6 6 10 14
3 6 7 11 15
4 6 8 12 16
Run Code Online (Sandbox Code Playgroud)
我不明白的是小于6项为什么只有和未在第一列得到变成了NA
-如果我们回收c(6, NA, NA, NA)
通过行会不是所有的X2
,X3
,X4
是NA
因为max(NA, anything) = NA
?为什么只有不在第一列且小于6的条目才会变为NA
s?
我需要删除Component
在Center
的JPanel
,但一些尝试之后没有占上风.
我试过这个方法:
使用BorderLayout从JPanel中删除CENTER元素
但答案的方法会产生编译时错误:
Type mismatch: cannot convert from LayoutManager to BorderLayout
Run Code Online (Sandbox Code Playgroud)
我是否错误地解释了答案?
另外,如果我只能从GroupLayout更新一个组件,我也很好奇.有人能告诉我怎么做吗?
编辑:@mre:这是代码:
BorderLayout layout = panel.getLayout();
panel.remove(layout.getLayoutComponent(BorderLayout.CENTER));
Run Code Online (Sandbox Code Playgroud)
这与链接基本相同.
谢谢你们!
我刚刚实现了一个Java Web Start应用程序,我在编程过程中发现了一个问题:
如果我分发版本并使用JNLP文件下载它,我不能让系统再次下载文件,除非我添加/删除文件或从Java缓存中清除任务.这意味着如果我只修改文件,系统将不会下载新文件:它只会使用旧文件.
我知道我可能只是禁止系统缓存文件,但是有更好的方法可以更优雅地解决这个问题吗?
我还从官方指南中注意到这一点:
If offline-allowed is specified, Java Web Start will also check to see if an update is available. However, if the application is already downloaded the check will timeout after a few seconds, in which case the cached application will be launched instead. Given a reasonable fast server connection, the lastest version of the application will usually be run, but it is not guaranteed. The application, however, can be run offline.
这是否意味着如果网络速度慢,在实践中将不会经常运行最新版本的情况?也就是说,"合理快速"的速度有多快?
感谢所有的投入!
我有持久性实体Cats(id,name).我想查询所有猫(使用HQL/JPQL),名为'Tom'的猫在顶部,即按自定义表达式名称='Tom'排序.
在Oracle中,我可以使用
ORDER BY CASE name WHEN 'Tom' THEN 0 ELSE 1 END.
Run Code Online (Sandbox Code Playgroud)
怎么做Hibernate?