据说零长度数组用于可变长度结构,我可以理解.但令我困惑的是为什么我们不仅仅使用指针,我们可以取消引用并以相同的方式分配不同的大小结构.
编辑 - 添加评论示例
假设:
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占用,它似乎是零大小数组方法的不同之处.
内核源代码Documentation/memory-barriers.txt中有一个例子,如下所示:
Run Code Online (Sandbox Code Playgroud)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)在没有干预的情况下,CPU 2可以以一些有效的随机顺序感知CPU 1上的事件,尽管CPU 1发出了写屏障:
Run Code Online (Sandbox Code Playgroud)+-------+ : : : : | | +------+ +-------+ | Sequence of update | |------>| B=2 |----- --->| Y->8 | | of perception on | | : …
例如:
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,这可能吗?
正如我们在中看到的dirent.h,有一个typedef:
typedef struct __dirstream DIR;
Run Code Online (Sandbox Code Playgroud)
它说它对用户是不透明的。而且,即使在gcc标头中也找不到它,__dirstream结构定义只能在glibc源代码中找到。我想知道为什么这个结构必须是不透明的(我认为说它阻止用户直接引用是不合理的,也许我错了)?有什么收获?
我曾经是 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)
哪个更好?甲还是乙?
假设我有:
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。
班级定义:
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)有什么用?
我知道我们可以使用HttpResponseInstance['headername'] = 'headervalue'向http响应添加标头.但是通过这种方式,我必须重写我正在使用的所有通用视图,这使得更多的工作.
有没有一种方便的方法来向响应中添加标题,例如回复回调或url装饰器?
我想在事件侦听器发生多个事件后运行一个函数,例如:
listenTo(eventA occurred && eventB occured && eventC occurred) {
do something.
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
例如,如果你在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 ×6
django ×3
linux ×3
c ×2
directory ×1
django-forms ×1
django-views ×1
gcc ×1
header ×1
http ×1
inheritance ×1
javascript ×1
linux-kernel ×1
memory ×1
posix ×1
smp ×1
super ×1
web ×1