如何将某个 String 转换成一个唯一 Long? - V2EX
maninfog

如何将某个 String 转换成一个唯一 Long?

  •  
  •   maninfog Oct 25, 2019 3739 views
    This topic created in 2397 days ago, the information mentioned may be changed or developed.

    是这样的,我正在使用一个第三方的 ORM 框架,它的实体只支持以Long为主键,而我的业务逻辑大部分则需要以String为主键。我想到的一个方案是写一个映射函数来将业务主键的String映射成Long来提供给框架使用。直接使用StringhashCode()方法似乎比较简单,但是感觉碰撞的概率应该很大。有没有其它好的实现方式呢?

    11 replies    2019-10-27 12:01:25 +08:00
    ninion
        1
    ninion  
       Oct 25, 2019   1
    CRC64 ?
    jwk345
        2
    jwk345   div class="badges">   Oct 25, 2019 via iPhone
    再加个字段
    MrZhaoyx
        3
    MrZhaoyx  
       Oct 25, 2019   1
    p2pCoder
        4
    p2pCoder  
       Oct 25, 2019   1
    MurmurHash
    maninfog
        5
    maninfog  
    OP
       Oct 25, 2019
    @jamesxu #2 有点没明白您的意思呢
    YUyu101
        6
    YUyu101  
       Oct 26, 2019
    想不碰撞就不能压缩,那你的 string 长度不能太长,不然不可能不碰撞吧。
    或者你 hash 再加个时间戳,一次性映射并存储,以后直接读 long,不要再转换了。
    msg7086
        7
    msg7086  
       Oct 26, 2019
    不碰撞就只能完全映射,string 到 long 要不碰撞的话只能 8 字节以内,否则必然总有一天会碰。
    love
        8
    love  
       Oct 26, 2019 via Android
    如果字符串只存明文的话可以保存长很多
    jwk345
        9
    jwk345  
       Oct 26, 2019 via iPhone
    @maninfog 新加一个 Long 类型的主键,现在的这个 String 类型字段作为表的一个惟一键
    mutalisk
        10
    mutalisk  
       Oct 27, 2019
    cityhash
    mutalisk
        11
    mutalisk  
       Oct 27, 2019
    楼上老哥说的 murmurhash 也可以
    About     Help     Advertise     Blog     API     FAQ     Solana     2813 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 70ms UTC 14:20 PVG 22:20 LAX 07:20 JFK 10:20
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86