我正在阅读一本关于JUnit的书,作者建议在tearDown方法中使资源归零.为什么?这不是GC的工作吗?它会严重伤害吗?
让我们想到这样的例子:
public class SomeTest extends TestCase {
Vector vector;
List<Object> list;
protected void setUp() {
vector = new Vector();
list = new ArrayList<Object>();
}
// messing with resources
// adding, deleting, testing whatever
protected void tearDown() {
vector = null;
list = null;
}
}
Run Code Online (Sandbox Code Playgroud)
你怎么看?tearDown中的代码是否必要?
我有一个模型MyModel,它有一个字段expiration_datetime.
每次用户检索MyModel的实例时,我都需要先检查它是否已过期.如果它已经过期,我需要增加一些计数器,更新其他计数器,然后将expiration_datetime扩展到将来的某个时间.
所以视图会做类似的事情:
if object.expiration_datetime < datetime.datetime.now():
object.counter = F('counter') + 1
object.expiration_datetime = F('expiration_datetime') + datetime.timedelta(days=1)
object.save()
Run Code Online (Sandbox Code Playgroud)
上面的代码中存在竞争条件.假设线程1检查并发现当前实例已过期,它继续增加计数器并延长到期日期时间.但是在它可以这样做之前,线程2被安排并且做同样的事情.到线程1最终完成时,计数器已递增两次,expration_datetime已延长两次.
这看起来应该是一个非常常见的问题.处理它的最有效方法是什么?理想情况下,我希望能够以数据库可移植的方式在Django中处理它.
我的节目:
public class m
{
public static void main (String[] args)
{
boolean bool = true;
while(bool)
{
rand_number player_1 = new rand_number();
System.out.println("Player_1 guessed " + player_1.rand_n);
rand_number player_2 = new rand_number();
System.out.println("Player_2 guessed " + player_2.rand_n);
rand_number player_3 = new rand_number();
System.out.println("Player_3 guessed " + player_3.rand_n);
if(player_1.guessed || player_2.guessed || player_3.guessed)
{
System.out.println("We have a winner");
bool = false;
}
}
}
}
class rand_number
{
int rand_n = (int)(Math.random() * 10);
if(rand_n == 2)
{
boolean guessed …Run Code Online (Sandbox Code Playgroud) 请考虑以下代码:
procedure TForm1.PaintBox1Paint(Sender: TObject);
var
vRect : TRect;
vFormat : TTextFormat;
vStr : string;
begin
vStr := 'This is some text';
vRect := rect(10,10,50,130);
vFormat := [tfCenter,tfVerticalCenter,tfWordBreak];
PaintBox1.Canvas.Rectangle(vRect);
PaintBox1.Canvas.TextRect(vRect,vStr,vFormat);
end;
Run Code Online (Sandbox Code Playgroud)
我希望这样的事情
+--------+
| |
| |
|This is |
| some |
| text |
| |
| |
+--------+
Run Code Online (Sandbox Code Playgroud)
但我明白了
+--------+
|This is |
| some |
| text |
| |
| |
| |
| |
+--------+
Run Code Online (Sandbox Code Playgroud)
tfBottom格式也是如此.水平文本格式(tfLeft,tfRight,tfCenter)按预期工作,但垂直格式不工作.有谁能解释一下?
在SQL Server中,有两种元数据模式:
我听说INFORMATION_SCHEMA表是基于ANSI标准的.在开发例如存储过程时,是否应该INFORMATION_SCHEMA在sys表上使用表格?
我正在研究Windows Phone 7的开发.为了测试我的应用程序,我需要能够模拟一个电话.它可能在模拟器中吗?
我一直在尝试将XSL与谷歌Chrome一起使用,但没有成功.
我读到Chrome有一些XSLT漏洞,其中一个是它不支持xsl:include.可以在此处查看错误:http://code.google.com/p/chromium/issues/detail?id = 8441.
经过一些研究后,我发现了Daer System的转换插件的新版本,它使得xsl:include在Chrome上工作.
jQuery Transform插件可以在http://plugins.jquery.com/project/Transform中找到
现在我的问题是:
我在一些xsl模板中使用默认包含,而这包括使用传递给顶级模板的参数.
所以它就像我有top.xsl模板声明一个[xsl:param name ="param"/],我使用这个param与included.xsl,由第一个调用[xsl:include href = "included.xsl"].这适用于Firefox和Internet Explorer,但不适用于Chrome.我在stackoverflow上看到一个问题,其中一些人从插件重写webkit修复函数,但它不能用xsl:param这样工作.
有谁知道在谷歌浏览器中使用[xsl:param]这样的方法?
我已经开始将doctests集成到我的模块中.(Hooray!)这些文件往往是以脚本开头的文件,现在是一些带有CLI应用程序的函数__name__=='__main__',所以我不想在那里运行测试.我尝试了nosetests --with-doctest,但是我不想看到很多失败,因为在测试发现过程中,这个导入模块不包含doctests但需要导入我在这个系统上没有安装的东西,或者应该在特殊的情况下运行python安装.有没有办法可以运行我的所有doctests?
我已经考虑在vim中运行"import doctest; doctest.testfile(currentFilename)"以在当前模块中运行我的doctests,以及另一个运行所有测试的脚本 - 其他doctest用户做了什么?或者我应该使用doctest以外的东西?