小编Ed *_*zur的帖子

在Java中抑制不推荐使用的导入警告

在Java中,如果导入已弃用的类:

import SomeDeprecatedClass;
Run Code Online (Sandbox Code Playgroud)

你得到这个警告: The type SomeDeprecatedClass is deprecated

有没有办法压制这个警告?

java import deprecated suppress-warnings

95
推荐指数
5
解决办法
6万
查看次数

资源垃圾收集得太早

我已经使用SWIG创建了一个PHP扩展,一切正常,但是当链接方法调用时,我正在观察一些奇怪的垃圾收集行为.例如,这有效:

$results = $response->results();
$row = $results->get(0)->iterator()->next();
printf('%s %s' . "\n", $row->getString(0), $row->getString(1));
Run Code Online (Sandbox Code Playgroud)

但这段错误:

$row = $response->results()->get(0)->iterator()->next();
printf('%s %s' . "\n", $row->getString(0), $row->getString(1));
Run Code Online (Sandbox Code Playgroud)

唯一的区别是第一个创建$results,而第二个将调用链接在一起.

SWIG实际上只向PHP公开函数并生成PHP代理类以与它们进行交互.这些代理类基本上包含一个传递给每个公开函数的资源以及这些函数通常采用的其他参数.考虑到这些代理类可能是问题所在,我重新编写代码来绕过它们,而是直接使用公开的函数.和以前一样,这有效:

$results = InvocationResponse_results($response->_cPtr);
$row = TableIterator_next(Table_iterator(Tables_get($results, 0)));
printf('%s %s' . "\n", Row_getString($row, 0), Row_getString($row, 1));
Run Code Online (Sandbox Code Playgroud)

再次,这段错误:

$row = TableIterator_next(Table_iterator(Tables_get(InvocationResponse_results($response->_cPtr), 0)));
printf('%s %s' . "\n", Row_getString($row, 0), Row_getString($row, 1));
Run Code Online (Sandbox Code Playgroud)

同样,唯一的区别是第一个创建$results,而第二个将调用链接在一起.

此时,我花了一些时间在gdb/valgrind中进行调试,并确定在InvocationResponse_results将调用链接在一起时过早调用返回的析构函数.为了观察,我std::cout在暴露的C++函数及其析构函数的顶部插入了语句.这是没有链接的输出:

InvocationResponse_results()
Tables_get()
Table_iterator()
TableIterator_next()
__wrap_delete_TableIterator
Row_getString()
Row_getString()
Hola Mundo
---
__wrap_delete_InvocationResponse
__wrap_delete_Row
__wrap_delete_Tables
Run Code Online (Sandbox Code Playgroud)

--- …

php swig garbage-collection php-extension chaining

9
推荐指数
1
解决办法
565
查看次数

将对象记录到Chrome中的控制台的解决方法

如果您执行此代码:

var foo = {bar: 'baz'};
window.console.log(foo);
foo.bar = 'bla';
Run Code Online (Sandbox Code Playgroud)

控制台在展开对象后显示:

(在记录对象和数组时,它不是记录的运行时值)

一年前记录了这个错误:

http://code.google.com/p/chromium/issues/detail?id=50316

是否有在Chrome中记录对象的解决方法?

javascript debugging console google-chrome google-chrome-devtools

9
推荐指数
1
解决办法
2644
查看次数

忽略带有bash tab-completion的路径条目

我有两个命令,foo并且foo-bar,foo符号链接在哪里foo-bar.我希望能够键入f+ TAB(假装这些是路径上唯一的两个命令开头f)并且其中一个命令已完成(意味着全名后面的空格).

最终发生的事情是因为它完成了foo(没有空间)foo-bar.显然没什么工作可以打到空格键,但这会打断我的流量.

一些额外的细节:

  • foofoo-bar在同一目录中.
  • 删除/移动foo不是一个选项(我隐藏了一些细节).

有没有办法忽略特定的路径条目?

bash ignore autocomplete path tab-completion

8
推荐指数
1
解决办法
1647
查看次数

使用PHPUnit设置测试超时持续时间

我有一些测试用例可以在失败时进入无限循环.是否有内置的方法来设置PHPUnit的测试超时持续时间?

如果没有,那么将这个功能添加到测试用例中最不显眼的方法是什么?

php phpunit unit-testing

7
推荐指数
2
解决办法
4003
查看次数

我是否正确理解过早优化?

我一直在努力处理我正在写的应用程序,我想我已经开始看到我的问题是过早优化.我的完美主义者一方希望通过第一次使一切变得最佳和完美,但我发现这使设计变得复杂了很多.而不是编写一个简单易用的小型可测试函数,我倾向于尽可能多地填充功能以提高效率.

例如,我避免多次访问数据库以获取相同的信息,代价是代码变得更加复杂.我的一部分想要不用担心冗余数据库调用.这样可以更容易地编写正确的代码,并且无论如何,所获取的数据量都很小.我的另一部分感觉非常肮脏和不干净这样做.:-)

我倾向于多次去数据库,我认为这是正确的举措.更重要的是,我完成了项目,我觉得我因为这样的优化而陷入困境.我的问题是:这是避免过早优化时使用的正确策略吗?

premature-optimization

5
推荐指数
2
解决办法
541
查看次数

您会编写哪些测试来验证 MD5 实现的正确性?

假设您有权访问“oracle”实现,您相信其输出是正确的。

最明显的方法似乎是通过实现运行一组已知的明文/哈希组合,并查看它们是否按预期输出。可以通过生成随机明文(使用静态种子以保持确定性)并使用预言机查找其哈希值来构造任意数量的此类情况。

我看到的主要问题是它不能保证能够解决可能的极端情况。生成更多案例将减少遗漏极端案例的可能性,但是多少个案例就足够了?

还有一个附带问题是指定这些随机明文的长度,因为 MD5 将任意长度的字符串作为输入。就我的目的而言,我不关心长输入(例如,任何超过 16 字节的内容),因此您可以在答案中使用这是一个“特殊用途”MD5 实现这一事实,如果它使事情变得更简单,或者您可以如果都是一样的话,回答一般情况。

testing md5

5
推荐指数
1
解决办法
343
查看次数

背景选项卡上的最小setInterval()/ setTimeout()延迟

可能重复:
Chrome:超时/间隔在后台标签中暂停?

是否有允许的最小延迟setInterval()以及setTimeout()当你不看目前在标签上正在运行?

此代码setInterval()以指定的100ms延迟运行,并写出实际延迟的时间.它还会在您进入/退出选项卡时报告.

<html>
<body>
<script type="text/javascript">

window.onfocus = function () { document.body.innerHTML += 'entered tab<br />'; };
window.onblur = function () { document.body.innerHTML += 'left tab<br />'; };
var previous = new Date().getTime();
setInterval(function () {
    var now = new Date().getTime();
    var elapsed = now - previous;
    document.body.innerHTML += elapsed + '<br />';
    previous = now;
}, 100);

</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

以下是Ubuntu 10.04.2 LTS上Chrome 12.0.742.100输出的摘录:

101
101
101
left tab
1001
1000 …
Run Code Online (Sandbox Code Playgroud)

javascript settimeout setinterval browser-tab

4
推荐指数
1
解决办法
6262
查看次数

在命令行中打印更好的格式化

我有一个PHP脚本,我通过命令行运行,如

php file.php
Run Code Online (Sandbox Code Playgroud)

在那个文件中,我有一个类似的打印声明

print "<br>Saved the url: {$url} to :{$destination}";
Run Code Online (Sandbox Code Playgroud)

我认为br会把它比另一个低1但是当我运行脚本时我会得到这种格式,这真的很难读

<br>Saved the url: http://example.com/a.mp3 to :/usr/recordings/3e/1555141317-2349577.mp3<br>Saved the url: http://example.com/b.mp3 to :/usr/recordings
Run Code Online (Sandbox Code Playgroud)

所以在控制台中很难读取格式.有没有办法重构我的打印,以获得这样的输出

Saved the url: http://example.com/a.mp3 to :/usr/recordings/3e/1555141317-dadfdasffa.mp3
Saved the url: http://example.com/b.mp3 to :/usr/recordings/3c/1555141317-fddfd.mp3
Saved the url: http://example.com/c.mp3 to :/usr/recordings/3f/1555141317-ffdfd.mp3
Run Code Online (Sandbox Code Playgroud)

php terminal

0
推荐指数
1
解决办法
544
查看次数