小编Alb*_*ert的帖子

提升:Boost.Signals中究竟不是线程安全的?

我在多个地方读到Boost.Signals不是线程安全但我没有找到更多关于它的细节.这个简单的引用并没有说真的那么多.现在大多数应用程序都有线程 - 即使它们试图是单线程的,它们的一些库也可能使用线程(例如libsdl).

我想实现没有其他线程无法访问插槽的问题.所以在这个意义上它至少是线程安全的.

但到底有什么作用,哪些不行?只要我不同时访问它,它是否可以在多个线程中使用它?即如果我在插槽周围建立自己的互斥锁?

或者我被迫只在我创建它的那个线程中使用插槽?或者我第一次使用它的地方?

c++ boost boost-signals

9
推荐指数
1
解决办法
2129
查看次数

C++:错误"非命名空间范围中的显式特化"

template<typename T1, typename T2>
class Bimap {
public:
    class Data {
    private:
        template<typename T> Data& set(T);
        template<> Data& set<T1>(typename T1 v) { /*...*/ }
    };
};
Run Code Online (Sandbox Code Playgroud)

这给了我错误:

error: explicit specialization in non-namespace scope 'class Bimap<T1, T2>::Data'

我明白错误在说什么.但为什么我不能这样做呢?我该如何解决?

c++ templates

9
推荐指数
1
解决办法
1万
查看次数

Python:深度复制ast节点树

我正在尝试使用deepcopy(从copy模块)深度复制模块中的节点树ast.

这似乎不起作用.我遇到了奇怪的错误,比如TypeError: required field "name" missing from FunctionDef当我使用复制的结果时(我检查了它;它在复制的节点中确实丢失了),所以它没有正确地复制它们.

有什么技巧可以使这个工作吗?或许我错过了什么?

python copy deep-copy abstract-syntax-tree

9
推荐指数
1
解决办法
1435
查看次数

在PKCS#1 OAEP加密/解密中交换公钥/私钥

我对RSA只有一些非常基本的理论知识.

在阅读关于如何在实践中使用它的不同来源时,似乎PKCS#1 OAEP将是一件好事.

对于测试实现,我使用Python和PyCrypto.例如,是使用PKCS#1 OAEP的示例.

使用公钥加密然后使用私钥解密工作正常.例如,公众可以使用私钥向人X发送一些数据.

根据我对RSA如何工作的基本理解,我认为我可以交换公钥/私钥,即我可以使用公钥进行加密,使用私钥进行解密.例如,人X可以使用自己的私钥加密某些数据,公众可以使用公钥对其进行解密.如果解密工作正常,则可以提供某种证据证明数据来自人X.

当我尝试使用公钥解密时,PyCrypto会抱怨.

通过阅读PyCrypto源代码,在_RSAKey._decrypt函数(这里)中,似乎关键对象本身知道它是私钥还是公钥并且它们之间有所不同(令我惊讶的是,再次基于我非常基本的RSA理解).

从那里,看起来我可以破解解密功能,以便它使用公钥.或者有些不同:我可以在关键对象中交换公共指数e和私有指数d.

但所有这些似乎并不打算以这种方式使用/攻击.所以我想问一下我的误解.

另外,出于好奇,我生成了一些键(RSA.generate(2048))并查看n,e并且d.在所有情况下,n并且d非常巨大,而e在所有情况下都是恒定的(65537)(我不会预期).

我想从这一切我不应该只是交换ed.

所以我想我应该使用其他方法进行签名,如PKCS1_PSS.


加密/解密的一些代码,如果有人有兴趣:

def randomString(l):
    import random
    return ''.join(chr(random.randint(0, 0xFF)) for i in range(l))

def genkeypair():
    from Crypto.PublicKey import RSA
    key = RSA.generate(2048)
    pubkey = key.publickey().exportKey("DER")
    privkey = key.exportKey("DER")
    return (pubkey,privkey)

def encrypt(v, rsapubkey):
    from Crypto.PublicKey import RSA …
Run Code Online (Sandbox Code Playgroud)

encryption cryptography rsa public-key-encryption

9
推荐指数
1
解决办法
5851
查看次数

PyPy cpyext:任何文档?如何使用?PyThreadState_Get错误?

我已经读过(这里)PyPy通过cpyext支持CPython扩展模块.

我还没有找到任何cpyext文档.有没有?

我该如何使用它?

从源代码(例如这里),我发现要加载我的leveldb.so模块,我可能必须这样做:

import cpyext
cpyext.load_module("leveldb.so","leveldb")
Run Code Online (Sandbox Code Playgroud)

但是,这会因此错误而崩溃:

Fatal Python error: PyThreadState_Get: no current thread
Run Code Online (Sandbox Code Playgroud)

我在回溯中注意到它从我的CPython调用函数,而不是从PyPy调用:

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   libsystem_kernel.dylib          0x00007fff8b3e4d46 __kill + 10
1   libsystem_c.dylib               0x00007fff927a9df0 abort + 177
2   org.python.python               0x0000000104692eaa Py_FatalError + 49
3   org.python.python               0x0000000104691370 PyThreadState_Get + 28
4   org.python.python               0x000000010468cf16 Py_InitModule4_64 + 58
5   leveldb.so                      0x00000001027e0881 initleveldb + 49 (leveldb_ext.cc:59)
6   pypy                            0x0000000100f59bb3 PyLong_CheckExact + 55379
7   pypy                            0x0000000100f6e7c7 PyLong_CheckExact + 140391
....
Run Code Online (Sandbox Code Playgroud)

pypy cpython

9
推荐指数
1
解决办法
2289
查看次数

Numpy中的dimshuffle等效函数

我经常使用theano.tensor.dimshuffle.Numpy有相同的功能吗?

我想我可以通过几个numpy.swapaxesnumpy.newaxis(对于广播维度)做同样的事情,numpy.reshape但有一些更简单或更直接的方式,就像dimshuffle

python numpy theano

9
推荐指数
1
解决办法
6789
查看次数

与TensorFlow / cuDNN中的NHWC相比,NCHW快多少?

TensorFlow官方性能指南指出:

CNN使用的大多数TensorFlow操作都支持NHWC和NCHW数据格式。在GPU上,NCHW更快。但是在CPU上,NHWC有时更快。

与TensorFlow / cuDNN中的NHWC相比,NCHW的卷积速度要快多少?是否有任何参考或基准?

另外,为什么速度更快?据我了解(请参阅此处),用于GPU上的NHWC的TensorFlow将始终在内部转置为NCHW,然后为NCHW调用cuDNN conv内核,然后将其转回。但是为什么要这样做呢?cuDNN转换内核也适用于NHWC。也许他们在某个时候进行了比较,并且NHWC的cuDNN conv内核非常慢。但这是最新的吗?差异有多大?NHWC这么慢的技术原因是什么?还是针对这种情况的cuDNN内核没有得到很好的优化?

gpu tensorflow cudnn

9
推荐指数
1
解决办法
7766
查看次数

Python:复杂的列表推导,其中一个var依赖于另一个(测试中t的t为t [1]中的x为x)

我想做的事情如下:

all = [ x for x in t[1] for t in tests ]
Run Code Online (Sandbox Code Playgroud)

测试看起来像:

[ ("foo",[a,b,c]), ("bar",[d,e,f]) ]
Run Code Online (Sandbox Code Playgroud)

所以我想得到结果

all = [a,b,c,d,e,f]
Run Code Online (Sandbox Code Playgroud)

我的代码不起作用,Python说:

UnboundLocalError: local variable 't' referenced before assignment
Run Code Online (Sandbox Code Playgroud)

有没有简单的方法呢?

python list-comprehension

8
推荐指数
2
解决办法
8141
查看次数

C++:如何创建线程局部/全局变量

在这段代码中:

int foo() {
   static int x;
}
Run Code Online (Sandbox Code Playgroud)

x每个线程中所有线程或本地的全局?或者这取决于编译器标志和/或编译器,所以我真的不知道代码是什么?

几个问题(所有问题都独立于编译器和编译器标志和操作系统):

  1. 如何创建一个对所有线程都是全局的静态变量?
  2. 如何创建每个线程本地的静态变量?
  3. 如何创建一个对所有线程都是全局的全局变量?
  4. 如何创建每个线程本地的全局变量?

我想这不是C++本身.(它是在C++ 0x?)一些Boost lib可以做到这一点?

c++ variables static multithreading

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

Java:如何编写`zip`函数?什么应该是返回类型?

什么应该是zip函数的返回类型?(zip与大多数其他语言一样,例如在这里阅读)

我想到了一些Pair类型,但在Java中并不存在.通常认为这是因为专门的Pair-class比一般的更好(参见这个问题).但是,这在一般zip功能中是不可能的.

java

8
推荐指数
1
解决办法
8677
查看次数