我已经对哈希表进行了一些研究,并且我一直遵循经验法则,当有一定数量的条目(最大或通过75%的加载因子)时,应该扩展哈希表.
几乎总是,建议是将哈希表的大小加倍(或加倍加1,即2n + 1).但是,我没有找到一个很好的理由.
为什么要加倍大小,而不是将其增加25%,或者将其增加到下一个素数或下一个素数(例如三个)?
我已经知道,选择一个初始哈希表大小是一个素数通常是一个好主意,至少如果你的哈希函数使用模数,如通用哈希.我知道这就是为什么通常建议做2n + 1而不是2n(例如,http://www.concentric.net/~Ttwang/tech/hashsize.htm)
然而正如我所说,我没有看到任何真正的解释,为什么加倍或加倍加一个实际上是一个很好的选择,而不是选择新哈希表的大小的其他方法.
(是的,我已经阅读了关于哈希表的维基百科文章:) http://en.wikipedia.org/wiki/Hash_table
多年以前,Unix密码限制为8个字符,或者如果你的密码长度超过8个字符,那么额外的密码就不会有任何区别.
大多数现代Unix/Linux系统仍然如此吗?
如果是这样,在大多数系统上何时可以使用更长的密码?
是否有一种简单的方法可以判断给定的系统是否支持更长的密码,如果是,那么有效最大值(如果有的话)是多少?
我已经对这个主题进行了一些网络搜索,并且找不到任何确定的内容; 所提出的大部分内容来自于21世纪初,当时我认为8个字符的限制仍然很常见(或者通常足以保证坚持这个限制).
我有一个CGI脚本,在Web服务器的错误日志中的堆栈跟踪中收到"IOError:[Errno 13] Permission denied"错误.
作为调试此问题的一部分,我想在脚本中添加一些代码,以便将用户和(特别是)脚本运行的组打印到错误日志中(可能是STDERR).
我知道我可以将值打印到sys.stderr,但是如何确定脚本运行的用户和组?
(我对该组特别感兴趣,因此$ USER环境变量无济于事; CGI脚本设置了setgid位,因此它应该作为组"list"而不是Web服务器的"www-data"运行 - 但我需要代码来查看是否真的发生了.)
在IDLE中,有没有办法直接运行PyUnit(unittest模块)单元测试?
我问,因为我有一个简短的测试模块,当我从Cygwin shell运行python mymodule.py时,我得到了所有测试,但是当我从IDLE使用Run-> Run Module时测试通过,但后来我得到一个异常( SystemExit:False).
例如,这是一个示例测试模块来重现这个:
#!/usr/bin/python
import unittest
class fooTests(unittest.TestCase):
def setUp(self):
self.foo = "bar"
def testDummyTest(self):
self.assertTrue(True)
def testDummyTestTwo(self):
self.assertEquals("foo", "foo")
def tearDown(self):
self.foo = None
if __name__ == '__main__':
unittest.main()
Run Code Online (Sandbox Code Playgroud)
当我使用python fooTests.py从Cygwin shell运行它时,它会产生:
$ python fooTests.py
..
----------------------------------------------------------------------
Ran 2 tests in 0.000s
OK
Run Code Online (Sandbox Code Playgroud)
但是当我在IDLE中编辑fooTests.py并运行Run - > Run Module时,由IDLE生成的新Python Shell会产生:
>>> ================================ RESTART ================================
>>>
..
----------------------------------------------------------------------
Ran 2 tests in 0.031s
OK
Traceback (most recent call last):
File "C:\Some\path\info\I\shortened\fooTests.py", line 20, in <module>
unittest.main() …Run Code Online (Sandbox Code Playgroud) 我正在尝试设置两台PC来同步文件夹树,以便每台PC都有一份树的副本,其中包含每个文件的最新更新.
我考虑过设置Mercurial,但意识到我并不真正关心版本控制(特别是因为我的磁盘空间不足),并且rsync听起来更像是我想做的更多 - 只是让文件保持最新,没有版本.
但是,http://www.linuxjournal.com/content/synchronizing-your-life上的页面说明如下:
使用rsync,将不会传输目标中已存在的任何文件.这大大加快了传输时间.但是,仍然存在对双方进行修改的问题.默认情况下,rsync程序仅查看文件的大小和时间戳是否不同.它不关心哪个文件更新,如果它不同,它会被覆盖.
您可以将'--update'标志传递给rsync,如果它们比源上的文件更新,则会导致它跳过目标上的文件,但只要它们是相同类型的文件.这意味着,例如,如果源文件是常规文件而目标是符号链接,则无论时间戳如何,目标文件都将被覆盖.即使看过它的怪癖, - update标志也无法解决问题,因为它只是跳过目的地上的文件,如果它们更新,它不会将这些更改下载到源计算机.
它是否正确?
如果是这样,我想这使得rsync真的只对将一台主("源")机器备份到一个或多个从机上非常有用,无论时间戳如何,它都将从主机获得更改.虽然我真正试图解决的问题是让两台机器成为"同行",同样只是从另一台获得最近更新的文件.
或者你认为我不得不咬紧牙关并使用git或Mercurial,尽管有额外的磁盘空间来跟踪版本?
(是的,我知道Dropbox的;我是远高于2GB的免费帐户的限制,并在每年花费$ 120- $ 240的时候我并不需要云存储和东西这个简单不是真的有兴趣已到已通过自由和之前完成打开工具.)
PC都在运行XP,但我打算使用Cygwin的rsync和任何其他Unix工具来完成工作.
我正在将一个网站移至 Hostmonster 并询问服务器日志的位置,以便我可以自动扫描它以查找 CGI 错误。有人告诉我,“我们很抱歉,但我们没有将 cgi 错误转到您有权访问的任何文件。”
由于组织原因,我坚持使用 Hostmonster 和这个糟糕的政策,因此作为一种解决方法,我想也许我会修改 CGI 脚本以将 STDERR 重定向到自定义日志文件。
我有很多脚本 (269),所以我需要在 Python 和 Perl 中使用一种简单的方法将 STDERR 重定向到自定义日志文件。
显式或隐式地考虑文件锁定的东西会很棒,因为如果多个脚本同时失败,共享的 CGI 错误日志文件理论上可以同时由多个脚本写入。
(我想使用共享错误日志,以便我可以每晚将其内容通过电子邮件发送给自己,然后将其存档或删除。)
我知道我可能需要修改每个文件 (grrr),这就是为什么我要寻找一些优雅的东西,它只会是几行代码。谢谢。
在Wordpress中为坏页面创建自定义错误页面似乎很容易,即找不到404 - 只需在主题目录中创建404.php.
我想对服务器错误做同样的事情,比如我的Wordpress网站上的CGI脚本是否像divide除0那样愚蠢.
我尝试在我的主题目录中创建一个500.php的页面,但它似乎被忽略了.而是调用主题目录中的404.php页面.
似乎Wordpress以某种方式捕获服务器错误并将其转换为"未找到"错误,然后使用404.php
如果出现服务器错误(500),我怎样才能使Wordpress转到不同的自定义页面,而不是找不到简单的页面(404)错误?
在你告诉我在.htaccess文件中放入像ErrorDocument 500/path-to-custom-error-page这样的东西之前,已经尝试过 - 它会被Web服务器忽略,可能是因为使用了同一文件中的RewriteRule指令通过Wordpress来拦截和处理所有请求(如果ErrorDocument指令高于或低于Wordpress RewriteRule部分,则无关紧要).
(注意:我尝试自己研究这个问题,但搜索结果会被抱怨用Wordpress 收到服务器错误的人所污染,而不是询问如何创建自定义页面来处理它们.)
python ×3
unix ×2
algorithm ×1
cgi ×1
hash ×1
hashtable ×1
hostmonster ×1
linux ×1
passwords ×1
perl ×1
permissions ×1
python-idle ×1
rsync ×1
security ×1
stderr ×1
unit-testing ×1
wordpress ×1