这个据说是蚂蚁金服推荐的订单生成算法, js 不是很熟,有人用 Python 翻译一下吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
okwork
V2EX    问与答

这个据说是蚂蚁金服推荐的订单生成算法, js 不是很熟,有人用 Python 翻译一下吗?

  •  
  •   okwork 2018-07-13 10:47:37 +08:00 4255 次点击
    这是一个创建于 2654 天前的主题,其中的信息可能已经有所发展或是发生改变。

    订单生成的算法以前用的要升级下,综合考虑简短、纯数字、易识别,唯一性这些情况

    image.png

    39 条回复    2018-07-13 18:20:46 +08:00
    NoMustard
        1
    NoMustard  
       2018-07-13 11:11:53 +08:00
    这不是 go 写的么...这函数就是获取时间变成一个字符串 有什么好翻译的
    GetDateNow 不写的明明白白么
    naix1573
        2
    naix1573  
       2018-07-13 11:12:17 +08:00
    就别 Python 翻译了,我口语给你翻译一下吧
    定义一个字符串 sNow,依次+=年,月份,天,小时,分,秒,毫秒
    把这个值赋给那个 WIDout no
    luoway
        3
    luoway  
       2018-07-13 11:14:37 +08:00
    不懂 js,英文得懂吧。GetDateNow 知道啥意思不
    okwork
        4
    okwork  
    OP
       2018-07-13 11:14:54 +08:00
    @NoMustard @naix1573 汗,我看成是 js 写的,怎么就感觉看着怪怪 =_=||
    okwork
        5
    okwork  
    OP
       2018-07-13 11:16:07 +08:00
    @luoway 我当 js 新的语法糖啦(ε=ε=ε=┏(ロ;)┛
    zlfera
        6
    zlfera  
       2018-07-13 11:17:12 +08:00
    这就是 js
    freeznet
        7
    freeznet  
       2018-07-13 11:18:11 +08:00
    @NoMustard #1 这不是 js 写的么。。。为啥说是 go 嘞?
    qiayue
        8
    qiayue  
    PRO
       2018-07-13 11:19:27 +08:00   3
    都有 document,getElementById 了,怎么就不是 js 了
    CFO
        9
    CFO  
       2018-07-13 11:22:44 +08:00 via Android   1
    这个算法真有意思
    NoMustard
        10
    NoMustard  
       2018-07-13 11:23:05 +08:00
    @zlfera @freeznet @qiayue 看错了..我的我的
    最近用 Go 写爬虫,goquery 也是 getElementById
    qiayue
        11
    qiayue  
    PRO
       2018-07-13 11:24:39 +08:00
    四位数年+月份+日期+小时+分钟+秒+毫秒

    订单数一多,绝对会重复,并不是多好的生成方式
    U7Q5tLAex2FI0o0g
        12
    U7Q5tLAex2FI0o0g  
       2018-07-13 11:24:50 +08:00
    就算不懂 js,随便懂任何一门语言+懂英语的都看的懂什么意思吧。。。
    privatezcoding
        13
    privatezcoding  
       2018-07-13 11:24:53 +08:00
    @qiayue 纠正一下 是 document.getElementById
    okwork
        14
    okwork  
    P
       2018-07-13 11:24:53 +08:00
    @zlfera
    @freeznet
    @qiayue

    楼上说是 go 的,不知道是什么意思

    getMonth() + 1 是什么作用?
    qiayue
        15
    qiayue  
    PRO
       2018-07-13 11:25:49 +08:00   1
    http://www.runoob.com/jsref/jsref-obj-date.html

    好好看手册,能用手册解决的就不要问人,手册里清清楚楚写了为啥要+1
    okwork
        16
    okwork  
    OP
       2018-07-13 11:26:26 +08:00
    @littleylv 主要就是为什么要 getMonth() + 1 不确定什么作用,其他看看也知道的
    privatezcoding
        17
    privatezcoding  
       2018-07-13 11:26:44 +08:00   1
    @okwork Java 里面 getMonth 是获取这个月是今年的第几个月份 从 0 开始的 所以要+1 修正
    我猜这里也是这个意思
    qiayue
        18
    qiayue  
    PRO
       2018-07-13 11:26:50 +08:00
    @privatezcoding 手误, 点打成逗号了
    ZY2071
        19
    ZY2071  
       2018-07-13 11:31:39 +08:00
    老哥,这个只是个算时间的函数而已
    okwork
        20
    okwork  
    OP
       2018-07-13 11:33:20 +08:00
    @ZY2071 是的,想多了,就是一个时间戳能搞定的事情,写了这么多行
    Quarter
        21
    Quarter      2018-07-13 11:37:05 +08:00 via iPhone
    @okwork #4 这个就是 js,我也是醉了,go 的字符串是不支持修改的
    Quarter
        22
    Quarter  
       2018-07-13 11:38:34 +08:00 via iPhone
    另外,这完全不是算法,就是时间,没意义,感觉还是会重复,蚂蚁金服是不可能用这个算法的,楼主是不是被骗了啊
    nihiue
        23
    nihiue  
       2018-07-13 11:44:16 +08:00 via Android
    Date.now().toString(32)就得了,写这么半天
    okwork
        24
    okwork  
    OP
       2018-07-13 11:44:22 +08:00
    @Quarter 哎 没办法,城里人忽悠农村人没写过 go 啊 O(∩_∩)O

    客户传过来的图片,说是那边工程师建议的,我开始用自增加+随机数混淆,因为订单不好识别,所以客户说按这个方案改,具体情况我也不是很清楚
    Quarter
        25
    Quarter  
       2018-07-13 11:50:05 +08:00 via iPhone
    @okwork #24 告诉客户,他的工程师可以开除了
    FanWall
        26
    FanWall  
       2018-07-13 11:52:14 +08:00 via Android
    @okwork #24 提出这个建议的工程师好坏的,建议扣工资
    Mogugugugu
        27
    Mogugugugu  
       2018-07-13 12:32:31 +08:00   1
    chinvo
        28
    chinvo  
       2018-07-13 12:39:50 +08:00 via iPhone
    提建议的这个人不是坏就是蠢

    还阿里用的是算法 = =
    redtea
        29
    redtea  
       2018-07-13 12:40:15 +08:00 via iPhone
    哪有前端生成订单号的?
    rootsir
        30
    rootsir  
       2018-07-13 13:05:49 +08:00
    这是什么订单方式??? 这是反面教材吧
    jevonszmx
        31
    jevonszmx  
       2018-07-13 13:30:18 +08:00
    先不说这个是不是拿来做订单号的,就这函数定义也是有问题的啊,函数是 GetDateNow,结果里面竟然直接 dom 操作了。。。
    cccssss
        32
    cccssss  
       2018-07-13 13:34:54 +08:00
    https://www.zhihu.com/question/19805896/answer/131710504

    生成订单号要安利一发某乎了。
    shinwood
        33
    shinwood  
       2018-07-13 13:37:51 +08:00
    话说这个函数名称不是 GetDateNow 吗?与订单的关系体现在哪里?
    Suclogger
        34
    Suclogger  
       2018-07-13 13:43:47 +08:00
    楼主是来骗金币的,鉴定完毕
    king2014
        35
    king2014  
       2018-07-13 14:53:44 +08:00
    @okwork 因为 js 这个方法月份表示是 0-11 所以要真实的要+1
    king2014
        36
    king2014  
       2018-07-13 14:54:42 +08:00
    其实这个还是无法保证唯一性的.
    auroraccc
        37
    auroraccc  
       2018-07-13 15:20:33 +08:00
    @okwork getMonth 是从 0 开始的, 0-11 月
    GoPython
        38
    GoPython  
       2018-07-13 18:03:39 +08:00
    不会吧,单纯的时间生成订单么? 量这么大,谁能保证没有两个人同一时刻下单?
    竟然没有用户 id 也能保证唯一嘛? 我是不相信的。
    TomatoYuyuko
        39
    TomatoYuyuko  
       2018-07-13 18:20:46 +08:00
    我有一套祖传的算法卖给你要不要,可以通晓时空变幻,10 金币一份(滑稽
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2599 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 09:52 PVG 17:52 LAX 02:52 JFK 05:52
    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