我想编组一个对象,这样我就可以使用来自Flask-Restful api的Url,List和Nested来获得包含链接列表的响应.
job_link_fields = {
'href': restful.fields.Url('ep1', absolute=False),
'rel': restful.fields.Url('ep2', absolute=False)
}
job_fields = {
'name': restful.fields.String,
'links': restful.fields.List(restful.fields.Nested(job_link_fields))
}
class JobDao():
def __init__(self, id, job):
self.name = job['name']
self.links = [{'rel': 'jobs', 'id': id},
{'rel': 'jobs', 'id': id}]
class Job(restful.Resource):
@marshal_with(job_fields)
def get(self, id):
return JobDao(id, jobs[id-1])
Run Code Online (Sandbox Code Playgroud)
但是在Url类中,我需要在构造函数中指定端点,这阻止我在List中添加differend job_link_fields.如何创建链接列表?
我想查询我的sqlite数据库中所有大于20的"级别"值,将结果限制为100并按rowid排序.
按rowid排序时,查询速度要慢得多.该数据库包含约300万条记录,级别的最大值为50.为级别创建索引.
这个陈述需要大约20ms:
SELECT * FROM log WHERE level > 20 LIMIT 100
Run Code Online (Sandbox Code Playgroud)
这个陈述需要大约100毫秒:
SELECT * FROM log WHERE level > 20 ORDER BY rowid LIMIT 100
Run Code Online (Sandbox Code Playgroud)
此语句需要约1000毫秒(不存在级别值大于50的行):
SELECT * FROM log WHERE level > 50 ORDER BY rowid LIMIT 100
Run Code Online (Sandbox Code Playgroud)
有没有办法优化这个以获得更快的ORDER BY查询?
这是使用的索引:
CREATE INDEX level_idx ON table (level)
Run Code Online (Sandbox Code Playgroud) 为什么在这段代码中读出y之后text1的值会发生变化?
void func()
{
int value1 = 5;
double value2 = 1.5;
std::ostringstream x, y;
x << value1;
y << value2;
const char *text1 = x.str().c_str();
fprintf(stderr, "text1: v=%s, p=%p\n", text1, &text1);
const char *text2 = y.str().c_str();
fprintf(stderr, "text1: v=%s, p=%p\ntext2: v=%s, p=%p\n", text1, &text1, text2, &text2);
}
Run Code Online (Sandbox Code Playgroud)
输出:
text1:v = 5,a = 0xbfcfd508
text1:v = 1.5,a = 0xbfcfd508
text2:v = 1.5,a = 0xbfcfd510