Flash和/或javascript客户端中真正全局唯一的ID.我可以使用当前浏览器/闪存中提供的RNG执行此操作,还是必须构建具有服务器端随机性的复合ID?
我需要为对象生成全局唯一标识符.我有多个用java编写的服务器端"系统",需要能够交换ID; 这些系统中的每一个都有一组flex/javascript客户端,它们实际上为新对象生成ID.我需要保证整个不相关系统的全球唯一性; 例如,我需要能够合并/同步两个独立系统的数据库.我必须保证这些id之间永远不会发生冲突,并且我永远不需要在创建后更改对象的id.我需要能够在flash和javascript客户端生成id而无需为每个id联系服务器.只要不经常联系服务器,依赖于某些服务器提供的种子或系统ID的解决方案就可以了.完全断开连接的解决方案是优选的.类似地,不需要预先注册系统的解决方案优于依赖于中央权限(例如MAC地址中的OUI)的解决方案.
我知道显而易见的解决方案是"使用UUID生成器",例如Flash中的UIDUtil.该功能特别否定全球唯一性.总的来说,我担心依靠PRNG来保证全球的独特性.
Flash 11+有flash.crypto.generateRandomBytes ; Javascript有window.crypto,但它很新,在IE中不受支持.像sjcl这样的解决方案使用鼠标来添加熵.
我知道,鉴于一个完美的RNG,2 122随机UID 碰撞的可能性很小,但是我担心我实际上不会在javascript或flash客户端中获得这种程度的随机性.我还担心即使是加密RNG的典型用例也与我的不同:对于会话密钥等,只要攻击者无法预测,冲突就是可以接受的.就我而言,碰撞是完全不可接受的. 我真的应该依靠安全RNG的原始输出来获取唯一ID吗?
一个明显的实现是在服务器安装时创建系统UUID,保持每个客户端登录会话ID(例如在数据库中),然后将系统和会话ID发送到客户端,这将保持每个会话计数器.uid将是三元组:系统ID,会话ID,客户端计数器.
我可以想象直接连接这些或用加密哈希对它们进行哈希处理.我担心散列本身可能会引入冲突,特别是如果散列的输入与输出大小相同.但哈希会掩盖系统ID和计数器,这可能会泄漏信息.
而不是在安装时生成系统ID,另一个解决方案是拥有一个中央注册表,分发出独特的系统ID,就像DOI所做的那样.然而,这需要更多的协调,但我认为这是真正保证全球统一的唯一方法.
有没有办法让我配置PyCharm来运行shell_plus而不是默认的shell?
我已经尝试将manage命令的文本放在'Starting script'中,但后来我得到了django_manage_shell.run("/ Users/cmason/counsyl/code/website/counsyl/product")import os import sys
if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "settings")
# The new Django 1.4 default manage.py wants "from django..." before
# importing settings, but we usually tinker with sys.path in
# settings_local.py, which is called from settings.py. Importing
# settings.py works but does mean some double importing. Luckily that
# module does very little work.
import settings
# appease pyflakes; don't ever do this in
# non-super-meta-namespace-trickery code
settings
from django.core.management import execute_from_command_line
execute_from_command_line("shellplus") …Run Code Online (Sandbox Code Playgroud) 我正在尝试实现一个与其大小对齐的内存缓冲区,以便我可以使用DMA控制器的模数功能来实现环形缓冲区.我知道我可以用memalign做到这一点,但我想知道它是否可能在堆栈上这样做,因为到目前为止我已经能够避免动态内存.我正在使用GCC 4.4.1,我不关心可移植性(嵌入式系统).
我想做的事情如下:
template<uint16_t num_channels, uint16_t buffer_size>
class sampler {
__attribute__((aligned(buffer_size * num_channels * 2)))
uint16_t buffer[buffer_size][num_channels];
};
Run Code Online (Sandbox Code Playgroud)
但是GCC当然不接受非恒定对齐(并且似乎表明对齐> 8可能无法兑现).
我想我可以使用C++ 0x alignas()来实现这一点,但它似乎在版本4.8之前没有出现在GCC中.
我想一个选项可能是将缓冲区的大小加倍,但这似乎浪费了一大堆空间(我打算尝试将大部分设备内存用于此缓冲区).也许我应该放弃并使用动态内存.在浪费的空间方面,memalign会相对有效吗?
有任何想法吗?