我正在为松散耦合的集群开发一些代码.为了在作业期间实现最佳性能,每次孩子进入或退出时,我都会重新映射其数据.这最终将成为可选的,但是现在它默认执行数据平衡.我的平衡基本上只是确保每个孩子的每台机器的平均文件数量不超过一个.如果除法不干净,则加上余数.并且由于其余部分总是小于儿童数量[除了0例,但我们可以排除],平衡后的儿童最多只有平均值+ 1.
一切似乎都很好,直到我意识到我的算法是O(n!).沿着孩子的名单,找出平均值,余数,谁太多,谁太少.对于列表太多的每个孩子,请通过列表,发送给每个孩子太少.
有更好的解决方案吗?我觉得一定有.
编辑:这是一些伪造的代码来展示我如何派生O(n!):
foreach ( child in children ) {
if ( child.dataLoad > avg + 1 ) {
foreach ( child2 in children ) {
if ( child != child2 && child2.dataLoad < avg ) {
sendLoad(child, child2)
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:O(n ^ 2).Foreach n,n => n*n => n ^ 2.我想我今天早上没有足够的咖啡!;)
在未来,我想转向一种更灵活,更有弹性的分配方法[权重和数据],但是现在,统一的数据分布工作.
我有一个crontab看起来像
0 0 * * * pg_dump DB_NAME > /path/to/dumps/`date +%Y%m%d`.dmp
Run Code Online (Sandbox Code Playgroud)
我手动运行时工作正常,但cron运行时却没有.挖掘完日志后,我明白了
Dec 12 00:00:01 localhost crond[17638]: (postgres) CMD (pg_dump DB_NAME > /path/to/dumps/`date +)
Run Code Online (Sandbox Code Playgroud)
它看起来像百分号的问题,但man页面甚至根本不包含百分比字符,所以我认为它们没问题.
当图的节点具有权重时,计算方向非循环图的关键路径的最佳(关于性能)方法是什么?
例如,如果我有以下结构:
Node A (weight 3)
/ \
Node B (weight 4) Node D (weight 7)
/ \
Node E (weight 2) Node F (weight 3)
Run Code Online (Sandbox Code Playgroud)
关键路径应为A-> B-> F(总重量:10)
假设您正在从头开始设计和实现一种新语言,尽管您可以从现有语言/实现中自由借鉴.
问题:如果程序员声明了一个字符串变量(假设是强类型的),你会如何选择将这个变量存储在内存中?
有许多用例,但您是否拥有在某些领域具有优势的特定模型?你的字符串是否可变?它是可变的,但只是一段不是记忆结束的长度吗?我可以动态设置长度,还是只能在编译时完成?是否容易访问'nth'元素?字符串是否需要连续的内存扇区?可以分解成更小的字符串吗?
程序员可能喜欢用字符串来考虑某些事情:计算长度.添加到字符串.提取字符串的部分(子串).应用正则表达式.转换为不同的值(数字,布尔值等)
编辑:澄清我的意思.
如果用户声明以下内容:
var Name : string
Run Code Online (Sandbox Code Playgroud)
作为语言设计师,您如何选择如何将其存储在RAM中?您的方法有哪些优点和缺点,等等.
我有一个非常简单的问题.我想在Django网站上制作一些基于日期的通用视图,但我也想对它们进行分页.根据文档,object_list视图具有page和paginate_by参数,但archive_month视图没有.这样做的"正确"方法是什么?
是否有一个Grails插件或管理的标准方式created_by,created_on,updated_by,updated_on字段域对象?
我已经在我的计算机上安装了Windows7,我不得不更改所有权限/取得所有权 - 这显然"触及"了我的所有文件,现在一切似乎都被"修改"(当我做"hg status"时),但只有一些文件有实际的变化.
是否有一个命令我可以运行,以便"提交"或"恢复"所有没有实际更改的文件(即文本未更改,即使文件属性已更改).
添加:
我已经从WinXP升级到Win7.我实际上并没有"复制"任何东西,磁盘上的存储库是相同的....它只是改变了Windows.升级后,我无法访问某些文件,我需要"取得所有权"才能重新获得访问权限(不知何故,用户权限未得到妥善保存).这是我得到的:
$ hg stat
../../test/acceptance/spidermonkey/js1_5/String/regress-179068.as M
$ hg diff ../../test/acceptance/spidermonkey/js1_5/String/regress-179068.as
Run Code Online (Sandbox Code Playgroud) ArrayIterator很方便(虽然我不需要这个reset功能),但是像其他的Commons Collections一样,它不使用泛型.我检查过Google Collections,但我没有看到相近的等价物.我错过了吗?是否有另外一个具有类似声誉和质量的图书馆,前两个图书馆提供这样的东西?谢谢.
我有一些像这样的代码:
if var:
if var2 == getSomeValue()
Run Code Online (Sandbox Code Playgroud)
这可以是单个表达式.
if var and var2 == getSomeValue():
Run Code Online (Sandbox Code Playgroud)
...但getSomeValue()只有在var为True时才能调用.
那么,在调用时if var and var2 == getSomeValue(),是否都由解释器评估,或者评估在varif处停止False?我在哪里可以找到有关python文档的信息?(我不知道要搜索什么...:/)