我试图弄清楚如何在MySQL中优化一个非常慢的查询(我没有设计这个):
SELECT COUNT(*) FROM change_event me WHERE change_event_id > '1212281603783391';
+----------+
| COUNT(*) |
+----------+
| 3224022 |
+----------+
1 row in set (1 min 0.16 sec)
Run Code Online (Sandbox Code Playgroud)
将其与完整计数进行比较:
select count(*) from change_event;
+----------+
| count(*) |
+----------+
| 6069102 |
+----------+
1 row in set (4.21 sec)
Run Code Online (Sandbox Code Playgroud)
解释声明对我没有帮助:
explain SELECT COUNT(*) FROM change_event me WHERE change_event_id > '1212281603783391'\G
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: me
type: range
possible_keys: PRIMARY
key: PRIMARY
key_len: 8
ref: NULL
rows: 4120213 …Run Code Online (Sandbox Code Playgroud) 我有一些自动生成的代码,可以在一些代码中的一些不同的地方有效地写出以下内容:
no warnings 'uninitialized';
local %ENV = %ENV;
local $/ = $/;
local @INC = @INC;
local %INC = %INC;
local $_ = $_;
local $| = $|;
local %SIG = %SIG;
use warnings 'uninitialized';
Run Code Online (Sandbox Code Playgroud)
当自动生成代码时,有些人认为代码并不是绝对必要的"漂亮",但是我想把它拉到子程序中.但是,这将在该子例程中本地化这些变量.有没有办法在调用堆栈框架中本地化这些变量?
更新:以类似的方式,能够在更高的堆栈帧中运行eval会很好.我认为Python已经有了这个.如果Perl也这样做会很好.
我有一个18M Excel电子表格来解析并且Spreadsheet::ParseExcel消耗了大量内存,我不得不切换到Spreadsheet :: ParseExcel :: Stream.它在我的VM上工作正常,它在我们的登台服务器上工作正常,但在我们的生产服务器上(配置方式相同),我收到此错误:
Can't call method "transfer" on an undefined value at \
lib/Spreadsheet/ParseExcel/Stream/XLS.pm line 31.
Run Code Online (Sandbox Code Playgroud)
这来自以下代码:
my ($wb, $idx, $row, $col, $cell);
my $tmp = my $handler = sub {
($wb, $idx, $row, $col, $cell) = @_;
$parser->transfer($main); XXX here's where we die
};
my $tmp_p = $parser = Coro::State->new(sub {
$xls->Parse($file);
# Flag the generator that we're done
undef $xls;
# If we don't transfer back when done parsing,
# it's …Run Code Online (Sandbox Code Playgroud) 我是参与Test Anything Protocol(TAP)IETF小组的人之一(如果有兴趣,请随时加入邮件列表).许多编程语言开始采用TAP作为他们的主要测试协议,他们比我们目前提供的更多.因此,我们希望从具有xUnit,TestNG或任何其他测试框架/方法背景的人那里获得反馈.
基本上,除了简单的通过/失败,您需要从测试工具中获得哪些信息?只是给你一些例子:
等等 ...
您可以针对性能和准确性推荐哪些XML验证工具,每个工具都是我们系统的关键问题?我们有以下要求:
为什么不用xmllint?(这是背景,你可以跳过它,如果你愿意)
我们有一个大型的Perl系统,它使用RelaxNG来验证我们的XML.我们使用紧凑的RelaxNG格式和trang将其转换为标准的RelaxNG格式.然后我们通过xmllint进行实际验证.
这就是问题出现的时候.xmllint经常会错误地报告验证错误.它不会给出误报或否定,但如果文档无法验证,xmllint通常会报告给定错误的错误元素或属性.有时错误是正确的("不希望看到元素'bar'),但仅仅是因为没有报告先前的错误(因为'bar'应该遵循必需但缺少的元素'foo',但xmllint不会'请告诉我们这一点.请注意,这是xmllint长期存在的问题,即使是最新版本也存在同样的问题.我们经常会收到大量的XML文档,错误地报告错误会给客户和开发人员带来很大的麻烦.
我们有一个REST API,客户端通常会POST和PUT数据.当他们这样做时,有时他们POST数据导致我们的系统没有变化.POST和PUT格式正确,但是他们发送的数据与我们数据库中的数据完全相同.当发生这种情况时,我发现我们正在返回400 HTTP状态.不幸的是,这意味着"不良请求",因为"由于语法格式错误,服务器无法理解请求".
显然情况并非如此,但我被告知我们将使用它,因为没有其他适当的状态代码.我们考虑过的选择:
其他选择似乎同样糟糕.我们可能会200 OK在我们返回的XML文档中使用并获得相关信息,但这似乎不是"RESTish".REST世界通常如何处理这个问题?
(修正未修改的响应代码.感谢Mkoeller)
我在表格中有一个树形结构,它使用物化路径让我快速找到孩子.但是,我还需要对结果进行深度优先排序,正如人们对线程论坛回复所期望的那样.
id | parent_id | matpath | created
----+-----------+---------+----------------------------
2 | 1 | 1 | 2010-05-08 15:18:37.987544
3 | 1 | 1 | 2010-05-08 17:38:14.125377
4 | 1 | 1 | 2010-05-08 17:38:57.26743
5 | 1 | 1 | 2010-05-08 17:43:28.211708
7 | 1 | 1 | 2010-05-08 18:18:11.849735
6 | 2 | 1.2 | 2010-05-08 17:50:43.288759
9 | 5 | 1.5 | 2010-05-09 14:02:43.818646
8 | 6 | 1.2.6 | 2010-05-09 14:01:17.632695
Run Code Online (Sandbox Code Playgroud)
所以最终的结果实际上应该像这样排序:
id | parent_id | matpath | …Run Code Online (Sandbox Code Playgroud) 我最近将我的MacBook Pro升级为Snow Leopard并且"git pull"返回:
rakudo $ git pull
git: 'pull' is not a git-command. See 'git --help'
Did you mean this?
shell
rakudo $ git-pull
-bash: git-pull: command not found
Run Code Online (Sandbox Code Playgroud)
我试过通过macports重新安装,但无济于事.然后我看到了这个
rakudo $ git --exec-path
/Users/ovid/libexec/git-core
Run Code Online (Sandbox Code Playgroud)
这令我感到惊讶,因为该目录不存在,也不存在.谷歌没有帮助.希望你能:)
假设我掷了6个骰子60次,我分别得到16,5,9,7,6,15个数字1到6.数字1和6显示太多,并且只有1.8%的可能性是随机的.如果我使用Statistics :: ChiSquare,它会输出:
There's a >1% chance, and a <5% chance, that this data is random.
Run Code Online (Sandbox Code Playgroud)
因此,它不仅是一个糟糕的接口(我不能直接得到这些数字),但舍入误差很大.
更糟糕的是,如果我掷出两个六面骰子怎么办?获得任何特定数字的几率是:
Sum Frequency Relative Frequency
2 1 1/36
3 2 2/36
4 3 3/36
5 4 4/36
6 5 5/36
7 6 6/36
8 5 5/36
9 4 4/36
10 3 3/36
11 2 2/36
12 1 1/36
Run Code Online (Sandbox Code Playgroud)
Statistics :: ChiSquare曾经有一个chisquare_nonuniform()函数,但它被删除了.
所以数字很差,我不能用它来进行非均匀分布.给出一个实际频率列表和预期频率列表,在Perl中计算卡方检验的最佳方法是什么?我在CPAN上找到的各种模块都没有帮助我,所以我猜我错过了一些明显的东西.
给定子例程引用,有没有办法找出声明子例程的文件和行号?警告和朋友似乎做对了,但我需要外部.这是我的测试程序:
#!/usr/bin/perl -l
use strict;
use warnings;
use B;
# line 99 'bin/some_code.pl'
{
no strict 'refs';
print B::svref_2object(\*{'Foo::some_sub'})->LINE;
print B::svref_2object(\&Foo::some_sub)->GV->LINE;
}
Foo::some_sub();
package Foo;
# line 23 'bin/some_file.pl'
sub some_sub {
warn "Got to here";
}
Run Code Online (Sandbox Code Playgroud)
那输出:
102
102
Got to here at 'bin/some_file.pl' line 24.
Run Code Online (Sandbox Code Playgroud)
线路信息不是我所期望的,所以我假设我做错了(B :: GV有一个相应的FILE方法,但是直到我让LINE工作,它对我来说没用多少).
是否有其他方法来获取此信息,我在上面的代码中做错了什么?
更新:事实证明,如果我没有使用行指令,'FILE'和'LINE'方法似乎工作正常.看起来它可能是B :: GV模块中的错误.
perl ×5
excel ×1
git ×1
http ×1
http-headers ×1
local ×1
macos ×1
mysql ×1
optimization ×1
performance ×1
postgresql ×1
relaxng ×1
rest ×1
schema ×1
scope ×1
sql ×1
statistics ×1
tap ×1
testing ×1
testng ×1
unit-testing ×1
validation ×1
xml ×1
xunit ×1