小编dsp*_*pjm的帖子

为什么我们使用零长度数组而不是指针?

据说零长度数组用于可变长度结构,我可以理解.但令我困惑的是为什么我们不仅仅使用指针,我们可以取消引用并以相同的方式分配不同的大小结构.

编辑 - 添加评论示例

假设:

struct p
{
    char ch;
    int *arr;
};
Run Code Online (Sandbox Code Playgroud)

我们可以用这个:

struct p *p = malloc(sizeof(*p) + (sizeof(int) * n));

p->arr = (struct p*)(p + 1);
Run Code Online (Sandbox Code Playgroud)

获得一块连续的记忆.但是,我似乎忘记了空间p->arr占用,它似乎是零大小数组方法的不同之处.

c linux compiler-construction gcc

7
推荐指数
3
解决办法
1957
查看次数

如何使用linux内核中的内存屏障

内核源代码Documentation/memory-barriers.txt中有一个例子,如下所示:

    CPU 1                   CPU 2
    ======================= =======================
            { B = 7; X = 9; Y = 8; C = &Y }
    STORE A = 1
    STORE B = 2
    <write barrier>
    STORE C = &B            LOAD X
    STORE D = 4             LOAD C (gets &B)
                            LOAD *C (reads B)
Run Code Online (Sandbox Code Playgroud)

在没有干预的情况下,CPU 2可以以一些有效的随机顺序感知CPU 1上的事件,尽管CPU 1发出了写屏障:

    +-------+       :      :                :       :
    |       |       +------+                +-------+  | Sequence of update
    |       |------>| B=2  |-----       --->| Y->8  |  | of perception on
    |       |  : …
Run Code Online (Sandbox Code Playgroud)

linux memory smp linux-kernel memory-barriers

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

如何在 django 模型中隐藏一个字段?

例如:

class TestModel(models.Model):
    ref1 = models.ForeignKey(RefModel)
    text1 = models.TextField()

class TestModelForm(ModelForm):
    class Meta:
        model = TestModel
        fields = ('text1')
Run Code Online (Sandbox Code Playgroud)

我只允许用户输入text1字段,但是当我重新定义我的视图的post 方法时,我也想设置ref1值,我该怎么做?

我希望我可以让 TestModelForm 有 ref1 字段但不要让用户修改它,然后我可以在 post 方法中修改 request.POSt 的值,并将其传递给 TestModelForm,这可能吗?

python django django-models django-forms django-views

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

什么是__dirstream,在哪里可以找到定义

正如我们在中看到的dirent.h,有一个typedef:

typedef struct __dirstream DIR;
Run Code Online (Sandbox Code Playgroud)

它说它对用户是不透明的。而且,即使在gcc标头中也找不到它,__dirstream结构定义只能在glibc源代码中找到。我想知道为什么这个结构必须是不透明的(我认为说它阻止用户直接引用是不合理的,也许我错了)?有什么收获?

c linux directory posix header

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

在类中使用自变量比传递变量更好吗?

我曾经是 ac 程序员,所以我们必须将每个变量作为参数或指针传递,而不鼓励定义全局变量。

我将在 python 的几个函数中使用一些变量。

一般来说,哪个更好,将变量作为参数传递,还是在我们获取变量的值时定义一个自变量?python对此有什么一般规则吗?

像这样:

class A:
    def func2(self, var):
        print var

    def func1(self):
        var = 1
        self.func2(var)

class B:
    def func2(self):
        print self.var

    def func1(self):
        self.var = 1
        self.func2()
Run Code Online (Sandbox Code Playgroud)

哪个更好?甲还是乙?

python

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

如何在Django中反向查询多个级别的对象?

假设我有:

Class Level1:
    name = CharField()

Class Level2:
    name = CharField()
    level1 = ForeignKey(Level1)

Class Level3:
    name = CharField()
    level2 = ForeignKey(Level2)

Class Level4:
    name = CharField()
    level3 = ForeignKey(Level3)
Run Code Online (Sandbox Code Playgroud)

假设我已经有一个Level1对象:level1,如何获取Level1的所有Level4对象?

含义如下:level1.level2_set.level3_set.level4_set。

python django django-models

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

什么是python中的超级(类型)?

班级定义:

class A(object):
    def foo(self):
        print "A" 


class B(object):
    def foo(self):
        print "B" 


class C(A, B): 
    def foo(self):
        print "C"
Run Code Online (Sandbox Code Playgroud)

输出:

>>> super(C)
<super: <class 'C'>, NULL>
>>> super(C).foo
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'super' object has no attribute 'foo'
Run Code Online (Sandbox Code Playgroud)

如果我们无法访问类的属性,那么super(type)有什么用?

python inheritance super

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

Django:如何以方便的方式将http标头添加到响应中?

我知道我们可以使用HttpResponseInstance['headername'] = 'headervalue'向http响应添加标头.但是通过这种方式,我必须重写我正在使用的所有通用视图,这使得更多的工作.

有没有一种方便的方法来向响应中添加标题,例如回复回调或url装饰器?

python django http web

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

Javascript:如何在发生多个事件后执行代码?

我想在事件侦听器发生多个事件后运行一个函数,例如:

listenTo(eventA occurred && eventB occured && eventC occurred) {
    do something.
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

javascript

3
推荐指数
1
解决办法
132
查看次数

Python:如何摆脱str(dict)中的空格?

例如,如果你在dict上使用str(),你会得到:

>>> str({'a': 1, 'b': 'as df'})
"{'a': 1, 'b': 'as df'}"
Run Code Online (Sandbox Code Playgroud)

但是,我希望字符串如下:

"{'a':1,'b':'as df'}"
Run Code Online (Sandbox Code Playgroud)

我怎么能做到这一点?

python

3
推荐指数
1
解决办法
124
查看次数