在Appengine中,我试图自动计算属性值并与对象一起存储.
我有一个类,矩形,它有宽度,高度和面积.显然该区域是宽度和高度的函数,但我希望它是一个属性,因为我想用它来进行排序.所以我尝试修改put()函数以在存储Rectangle时隐藏该区域,如下所示:
class Rectangle(db.Model):
width = db.IntegerProperty()
height = db.IntegerProperty()
area = db.IntegerProperty()
def put(self, **kwargs):
self.area = self.width * self.height
super(Rectangle, self).put(**kwargs)
Run Code Online (Sandbox Code Playgroud)
这在我put()直接调用Area对象时有效:
re1 = Rectangle(width=10, height=10)
re1.put()
print re1.area # >> 10
Run Code Online (Sandbox Code Playgroud)
但是当我使用db.put()(例如一次性保存很多)时,这会中断.
re2 = Rectangle(width=5, height=5)
db.put(re2)
print re2.area # >> None
Run Code Online (Sandbox Code Playgroud)
"偷偷摸摸"计算值的正确方法是什么?
默认情况下,Eclipse (CDT) 对 C++ 文件使用 .cpp 文件扩展名。我希望它使用 .cc(和 .hh)扩展名,但我在任何地方都找不到这样的选项。
编辑:准确地说,当我开始一个新的 C++ 项目时,它会创建一个 .cpp 文件。可以将此行为更改为创建 .cc 文件吗?
我本来希望它在 Window > Options > C/C++ > File Types 下,但据我所知,这没有帮助。我在 Google 上搜索过,我找到的唯一页面解释了如何在 Netbeans 中执行此操作。任何帮助是极大的赞赏!
出于多种原因,我想继续并切换到Python 2.7.新的python版本需要使用High Replication数据存储区.据我所知,转换到它是不可能的:唯一的方法是创建一个新的应用程序,使用新的ID,并复制数据存储区.更改我的应用ID是我不热衷的事情.
有没有办法改变App ID?或者是在不久的将来预期的解决方法?2.7版本最终会支持主/从数据存储吗?我想并非所有的AppEngine用户都会愉快地改变他们的身份......
我正在测试使用零初始化大型javascript数组的不同方法.到目前为止,使用push(0)的简单for循环似乎远远超过其他方法(参见http://jsperf.com/initialise-array-with-zeros),但我对此有效性表示怀疑测试.
在实践中,您只需创建一个这样的大型数组并对其进行缓存,以便稍后当您再次需要大型初始化数组时,您可以简单地对其进行切片.因此,我认为最重要的评估是第一次执行此代码所需的时间,而不是许多试验的平均值.
有人不同意吗?或者有人知道我如何/在哪里测试一轮的时间?
编辑:为了回应关于分配具有如此多零的数组的基本原理的一些误解,我想澄清两件事.
因此,我的解决方案是创建一个大型零填充数组,然后在需要新数组时获取slice(),然后通过引用将该副本传递给任何函数以使用它.在任何浏览器中,Slice都是超级超级快速的.
现在,虽然您可能仍然担心我为什么要这样做,但我真正感兴趣的是,如果可以在第一次运行时评估不同初始化方法的性能.我希望有这个时间,因为在我的情况下,我肯定只运行一次.
是的,我的jsperf代码可能会错过一些解决方案.所以如果你有一个我没有想到的方法,请随意添加它!谢谢!
python ×2
c++ ×1
eclipse ×1
eclipse-cdt ×1
file-type ×1
javascript ×1
optimization ×1
performance ×1