你用什么模块/库来产生UUID?
Answer 1:
对于像我这样的未来的Google, 从avtobiff二郎的UUID,工作非常简单。
Answer 2:
从http://github.com/travis/erlang-uuid
-module(uuid).
-export([v4/0, to_string/1, get_parts/1]).
-import(random).
v4() ->
v4(random:uniform(math:pow(2, 48)) - 1, random:uniform(math:pow(2, 12)) - 1, random:uniform(math:pow(2, 32)) - 1, random:uniform(math:pow(2, 30)) - 1).
v4(R1, R2, R3, R4) ->
<<R1:48, 4:4, R2:12, 2:2, R3:32, R4: 30>>.
to_string(U) ->
lists:flatten(io_lib:format("~8.16.0b-~4.16.0b-~4.16.0b-~2.16.0b~2.16.0b-~12.16.0b", get_parts(U))).
get_parts(<<TL:32, TM:16, THV:16, CSR:8, CSL:8, N:48>>) ->
[TL, TM, THV, CSR, CSL, N].
Answer 3:
从CouchDB的UUID生成: http://svn.apache.org/viewvc/couchdb/trunk/src/couchdb/couch_uuids.erl
Answer 4:
我建议使用二郎山OSSP的UUID NIF绑定有钢筋支撑https://github.com/yrashk/erlang-ossp-uuid
ossp_uuid:make(v4, text)
Answer 5:
为什么使用round(math:pow(2, 48))
我认为, 1 bsl 48
将更加迅速和代码不会失去了解。
Answer 6:
试试这个: https://github.com/afiskon/erlang-uuid-v4有史以来最简单的实现。
Answer 7:
如果你并不需要遵循RFC 4122 ,你可以使用now/0
呼叫不产生外部依赖的唯一ID,因为元组,由现在称之为产生的是虚拟机里面绝对是独一无二的,独特的大概率beetween节点。
Answer 8:
一个我写的风格和文档的例子 - 基于我从二郎名单上的那种,足以将要均值人收到数不胜数的建议。
图书馆: https://gitlab.com/zxq9/zuuid
文档: http://zxq9.com/projects/zuuid/docs/
PS: 非常非常感谢二郎山-问题抽空sharpshoot我的一切的时候真棒乡亲。 的lib远不如它。
文章来源: erlang: uuid generator