小编Dan*_*Dan的帖子

如何在MongoDB中为嵌入式文档创建唯一ID?

所以我需要从我的集合中的项目唯一引用特定的子文档.例如:

User = {
    'name': 'jim',
    'documents: [
        {'id': 0001, 'title': "My document"},
        {'id': 0002, 'title': "My second document!"},
    ]
}
Run Code Online (Sandbox Code Playgroud)

所以我需要能够为新文档自动创建ID,最好不要在应用程序级别(因为实际开发场景中会有竞争条件).

有没有办法使用mongo的自动生成的ObjectId(在集合级别的_id字段中使用)或类似的东西?

mongodb

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

为什么__getitem __(键)和get(键)明显慢于[key]?

据我所知,括号只不过是一个包装器__getitem__.以下是我对此进行基准测试的方法:

首先,我生成了一个半大字典.

items = {}
for i in range(1000000):
    items[i] = 1
Run Code Online (Sandbox Code Playgroud)

然后,我使用cProfile测试以下三个函数:

def get2(items):
    for k in items.iterkeys():
        items.get(k)

def magic3(items):
    for k in items.iterkeys():
        items.__getitem__(k)

def brackets1(items):
    for k in items.iterkeys():
        items[k]
Run Code Online (Sandbox Code Playgroud)

结果如下:

         1000004 function calls in 3.779 CPU seconds

   Ordered by: standard name

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
        1    0.000    0.000    3.779    3.779 <string>:1(<module>)
        1    2.135    2.135    3.778    3.778 dict_get_items.py:15(get2)
        1    0.000    0.000    0.000    0.000 {method 'disable' of '_lsprof.Profiler' objects}
  1000000    1.644    0.000    1.644 …
Run Code Online (Sandbox Code Playgroud)

python benchmarking profiling

12
推荐指数
1
解决办法
3198
查看次数

Python:如何更改 smtp/MIME 脚本中的“to”字段而不是添加新字段?

这是我正在使用的代码的摘录。我正在遍历添加电子邮件的部分;我的问题不是在每个循环上更改“to”字段,而是附加“to”数据。显然这会导致一些问题,因为 to 字段最终变得越来越长。我试过 msgRoot.del_param('To') 无济于事。我什至尝试将 msgRoot['To'] 设置为引用列表的第一个索引,这样我就可以简单地更改该列表项的值(也不起作用)。

from email.MIMEMultipart import MIMEMultipart
msgRoot = MIMEMultipart('related')
msgRoot['To'] = 'email@email.com'
Run Code Online (Sandbox Code Playgroud)

python mime smtp

2
推荐指数
1
解决办法
2720
查看次数

jquery:我怎样才能阻止appendTo立即发生?

我一直在谷歌搜索并试图让我的生活延迟追加到即时发生,以便我可以先做一个漂亮的淡出.这里,myObject是一个链接:

<a href="#">My Link</a>
Run Code Online (Sandbox Code Playgroud)

我想把它变成一个无序列表:

<div id="newDiv">
<ul>
    <li>Item 1</li>
    <li>Item 2</li>
    <li>Item 3</li>
</ul>
</div>
Run Code Online (Sandbox Code Playgroud)

做这样的事情:

myObject.fadeOut(300).appendTo('#newDiv ul').fadeIn(300);
myObject.wrap('<li></li>');
Run Code Online (Sandbox Code Playgroud)

我知道appendTo不是动画对象,所以它只是瞬间发生.所以我尝试将追加作为fadeOut的回调:

myObject.fadeOut(300, myObject.appendTo('#newDiv')).fadeIn(300);
myObject.wrap('<li></li>');
Run Code Online (Sandbox Code Playgroud)

只是现在它不仅立即发生,包裹不再起作用.我也尝试使用setTimeout来延迟无效.

javascript jquery delay appendto jquery-animate

2
推荐指数
1
解决办法
367
查看次数

为什么在gdb中调用calloc似乎没有将内存清零?

我正在做一些在运行时编辑进程内存的实验,我注意到当我调用callocgdb'd进程时,调用似乎工作并返回原始传递的指针,但内存似乎没有被初始化为0:

(gdb) call calloc(1, 32)
$88 = (void *) 0x8d9d50
(gdb) x/8xw 0x8d9d50
0x8d9d50:       0xf74a87d8      0x00007fff      0xf74a87d8      0x00007fff
0x8d9d60:       0xfbfbfbfb      0xfbfbfbfb      0x00000000      0x9b510000
Run Code Online (Sandbox Code Playgroud)

memset但是,如果我调用结果指针,初始化工作正常:

(gdb) call memset(0x8d9d50, 0, 32)
$89 = 9280848
(gdb) x/8xw 0x8d9d50
0x8d9d50:       0x00000000      0x00000000      0x00000000      0x00000000
0x8d9d60:       0x00000000      0x00000000      0x00000000      0x00000000
Run Code Online (Sandbox Code Playgroud)

c gdb

2
推荐指数
1
解决办法
326
查看次数