好的,所以这总是困扰着我.我知道的树数据结构是:
如何确定哪种树是最适合工作的工具?显然,堆被规范地用于形成优先级队列.但其余的人似乎只是做同样事情的不同方式.有没有办法选择最适合这份工作的?
所以,我花了足够的时间使用ASP.NET webforms来了解我几乎要回到做经典的ASP而不是使用它们.但是我很犹豫要转向ASP.NET MVC,直到它变得更加成熟.有没有开源替代品?
我正在寻找的主要内容是易于学习和使用原型的原型.如果它有任何帮助,我的主要偏好是python"混合搭配"方法(比如说web.py/SQLAlchemy/whatever模板引擎适合我当时的喜好).
我正在使用类似于以下形式的SQL查询:
SELECT col1, col2
FROM table1
LEFT OUTER JOIN table2
ON table1.person_uid = table2.person_uid
AND table1.period = table2.period
Run Code Online (Sandbox Code Playgroud)
而且它要么太慢,要么死机,因为它至少需要4分钟才能返回.如果我要将其更改为:
SELECT col1, col2
FROM table1
LEFT OUTER JOIN table2
ON table1.person_uid = table2.person_uid
WHERE table1.period = table2.period
Run Code Online (Sandbox Code Playgroud)
然后它工作正常(尽管没有返回正确数量的列).有什么方法可以加快速度吗?
更新:如果我切换后一个查询的最后两行,它会做同样的事情:
SELECT col1, col2
FROM table1
LEFT OUTER JOIN table2
ON table1.period = table2.period
WHERE table1.person_uid = table2.person_uid
Run Code Online (Sandbox Code Playgroud)
更新2: 这些实际上是我加入的观点.不幸的是,它们位于我无法控制的数据库上,因此我无法(轻松)对索引进行任何更改.我倾向于同意这是一个索引问题.我会等一会儿才接受答案,以防有一些神奇的方法来调整我不知道的查询.否则,我会接受当前的答案之一,并尝试找出另一种方法来做我想做的事情.感谢大家的帮助到目前为止.
我有一个SQL查询,看起来像这样:
SELECT * FROM(
SELECT
...,
row_number() OVER(ORDER BY ID) rn
FROM
...
) WHERE rn between :start and :end
Run Code Online (Sandbox Code Playgroud)
从本质上讲,正是ORDER BY部分减慢了速度.如果我要删除它,EXPLAIN成本会下降一个数量级(超过1000倍).我试过这个:
SELECT
...
FROM
...
WHERE
rownum between :start and :end
Run Code Online (Sandbox Code Playgroud)
但这并没有给出正确的结果.有没有简单的方法来加快速度?或者我是否需要花更多时间使用EXPLAIN工具?
我想破解Python解释器并尝试创建一个小型DSL.是否有任何模块我可以做这样的理论代码(类似于LINQ表达式树)?
expression_tree = Function(
Print(
String('Hello world!')
)
)
compile_to_bytecode(expression_tree)
Run Code Online (Sandbox Code Playgroud)
或者只是更容易生成Python源代码?使用C或SWIG或Cython可以使这更容易吗?
我用C,Python和OCaml 编写了一个基本的Hippity Hop程序.当然,这可能不是这三种语言的非常好的基准.但我得到的结果是这样的:
python性能并没有让我感到惊讶,但我对OCaml的速度感到震惊(尤其是解释版本).为了比较,我将发布C版本和OCaml版本.
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
long get_count(char *name);
int main(int argc, char *argv[])
{
if (argc != 2){
printf("Filename must be specified as a positional argument.\n");
exit(EXIT_FAILURE);
}
long count_no = get_count(argv[1]);
int i;
for (i = 1; i <= count_no; i++){
if (((i % 3) == 0) && ((i % 5) == 0)){
printf("Hop\n");
continue;
}
if ((i % 3) == 0){
printf("Hoppity\n");
}
if ((i …Run Code Online (Sandbox Code Playgroud) 我刚刚看到Unladen Swallow的这一部分文档出现在Hacker News上.基本上,谷歌工程师说他们对删除GIL并不乐观.然而,似乎有关于垃圾收集器的讨论穿插在这个关于GIL的讨论中.有人可以向我解释这种关系吗?
在我的机器上,hash(None)返回一个值:
>>> hash(None)
-2138947203
Run Code Online (Sandbox Code Playgroud)
出于好奇,这个哈希值是如何计算的?似乎这个值不是基于None's,id因为如果我重新启动Python解释器它是相同的.
有一个文件,我想确保不会超过2 GB(因为它必须在使用ext 2的系统上运行).检查文件大小的好方法是什么,记住我将在两次检查之间写入此文件?特别是,我是否需要担心尚未写入磁盘的缓冲,未刷新的更改?
关于programmers.se的一个问题让我想知道:有没有人发布过开源病毒?当然,我只是想知道病毒的源代码可能是什么样的好奇心.快速谷歌搜索显示有大量的开源防病毒程序,但我没有看到任何开源病毒.
python ×4
open-source ×2
oracle ×2
oracle10g ×2
sql ×2
asp.net-mvc ×1
bytecode ×1
c ×1
dsl ×1
ext2 ×1
file ×1
filesystems ×1
gil ×1
hash ×1
join ×1
left-join ×1
linux ×1
ocaml ×1
performance ×1
row-number ×1
tree ×1
virus ×1
webforms ×1