小编jmu*_*llo的帖子

SQL离开连接与FROM行上的多个表?

大多数SQL方言都接受以下查询:

SELECT a.foo, b.foo
FROM a, b
WHERE a.x = b.x

SELECT a.foo, b.foo
FROM a
LEFT JOIN b ON a.x = b.x
Run Code Online (Sandbox Code Playgroud)

现在很明显,当您需要外连接时,需要第二种语法.但是在进行内部连接时,为什么我更喜欢第二种语法(反之亦然)?

sql syntax join

245
推荐指数
7
解决办法
25万
查看次数

值参数的Const正确性

我知道关于const正确性的问题很少,其中声明函数的声明及其定义不需要同意值参数.这是因为值参数的常量仅在函数内部很重要.这可以:

// header
int func(int i);

// cpp
int func(const int i) {
    return i;
}
Run Code Online (Sandbox Code Playgroud)

这样做真的是最好的做法吗?因为我从未见过有人这样做过.我已经在其他地方看过这个引用(不确定来源),这已被讨论过:

"事实上,对于编译器,无论是否在值参数前面包含此const,函数签名都是相同的."

"避免在函数声明中使用const值传递参数.如果不修改参数const,则仍然将参数const置于同一函数的定义中."

第二段说不要将const放在声明中.我假设这是因为值参数的常量作为接口定义的一部分是没有意义的.这是一个实现细节.

根据这个建议,是否也建议指针参数的指针值?(它对参考参数没有意义,因为您无法重新分配参考.)

// header
int func1(int* i);
int func2(int* i);

// cpp
int func1(int* i) {
    int x = 0;

    *i = 3; // compiles without error
    i = &x; // compiles without error

    return *i;
}
int func2(int* const i) {
    int x = 0;

    *i = 3; // compiles without error
    i = &x; // compile error

    return *i; …
Run Code Online (Sandbox Code Playgroud)

c++ const-correctness pass-by-value

26
推荐指数
2
解决办法
6185
查看次数

带有类型或变量的"C"sizeof

最近看到有人赞扬另一个用户使用sizeof var而不是sizeof(type).我一直以为这只是一种风格选择.有什么显着差异吗?例如,具有f和ff的线被认为比具有g和gg的线更好:

 typedef struct _foo {} foo;

 foo *f = malloc(count * sizeof f);
 foo *g = malloc(sizeof(foo) * count);

 foo **ff = malloc(count * sizeof *ff);
 foo **gg = malloc(sizeof(foo*) * count);
Run Code Online (Sandbox Code Playgroud)

在我看来,第一组只是风格问题.但是在第二对线中,额外的第二个*很容易混淆乘法.

c coding-style sizeof

21
推荐指数
2
解决办法
2万
查看次数

如何在C++中使数据所有权显式化

在C++中使用指针和引用时,有时很难看出指针是否对引用的数据具有所有权,或者它是否只是时间引用.例如:

Instance* i = new Instance();
Instance* j = i;
Run Code Online (Sandbox Code Playgroud)

如何弄清楚哪两个指针对实例拥有所有权?换句话说,如何明确必须调用哪个指针删除?

注意:在上面的例子中,这不难看出,因为它是一段很短的代码.但是,当指针被复制并传递很多时,这可能会变得不清楚.

c++

14
推荐指数
2
解决办法
639
查看次数

是否有没有C陷阱的C++风格的语言?

如今,使用C++而不是托管语言的主要原因是为了获得C++带来的好处.C++的支柱之一是"你不为你不需要的东西买单".可以说有时候你不想支付与C的向后兼容性.许多奇怪的C++怪癖可以归结为这种向后兼容性.还有哪些其他语言,"你不为你不需要的东西买单",包括向后兼容C?

编辑/澄清:对我来说,真正的杀手是第二句话.是否有一种真正设计的语言,并没有强加你不想要的代码?C++将其作为其设计理念:不想要RTTI?它不存在.不想要垃圾收集?它不在那里.C++的问题在于它(IMO)在拒绝与过去相冲突时违反了这一要求.我不希望与20岁代码的向后兼容性阻碍我的前进.C++不愿意这样做.什么是/有?

编辑2:我想我应该更清楚一下成本是多少.有多种潜在成本.我最初关注的是运行时成本.

在C++中,通过虚方法的多态性有成本.但并非所有方法都支付这笔费用.调用非虚拟C++方法,其运行时成本与普通旧C函数(具有至少一个参数)相同.C++不要求您使用多态.在其他OOP语言中,所有方法都是虚拟的,因此无法避免多态性的成本.

运行时成本是最重要的,但其他成本可以减轻这种影响.汇编语言显然会有最少的运行时开销,但汇编语言的编写和维护成本是一个巨大的打击.

考虑到这一点,我们的想法是找到提供有用抽象的语言,这些抽象在不使用时不会影响运行时成本.

c++ language-design

11
推荐指数
1
解决办法
855
查看次数

在对象上调用方法

给定PyObject*指向python对象,如何调用其中一个对象方法?文档从未举例说明:

PyObject* obj = ....
PyObject* args = Py_BuildValue("(s)", "An arg");
PyObject* method = PyWHATGOESHERE(obj, "foo");
PyObject* ret = PyWHATGOESHERE(obj, method, args);
if (!ret) {
   // check error...
}
Run Code Online (Sandbox Code Playgroud)

这相当于

>>> ret = obj.foo("An arg")
Run Code Online (Sandbox Code Playgroud)

c python embedded-language

7
推荐指数
1
解决办法
5011
查看次数

MySQL之间的查询返回多余的结果

SELECT webcal_entry.cal_id, webcal_entry.cal_name , webcal_entry.cal_priority,
webcal_entry.cal_date , webcal_entry.cal_time , webcal_entry_user.cal_status,
webcal_entry.cal_create_by , webcal_entry.cal_access, webcal_entry.cal_duration ,
webcal_entry.cal_description , webcal_entry_user.cal_category 
FROM webcal_entry, webcal_entry_user
WHERE webcal_entry.cal_date BETWEEN '20090601' AND '20090631'
Run Code Online (Sandbox Code Playgroud)

当我执行该查询时,php会抛出:

mysql_query(): unable to save result set
MySQL client ran out of memory
Run Code Online (Sandbox Code Playgroud)

当我限制结果时,我发现它正在回收大约280万个结果.该表有7,241行.

我意识到我可以使用LIKE,但我真的不想走那条路.

谢谢你的帮助!

php mysql

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