V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
okwork
V2EX  ›  问与答

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

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

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

    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  
       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  
       2018-07-13 11:24:39 +08:00
    四位数年+月份+日期+小时+分钟+秒+毫秒

    订单数一多,绝对会重复,并不是多好的生成方式
    littleylv
        12
    littleylv  
       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  
    OP
       2018-07-13 11:24:53 +08:00
    @zlfera
    @freeznet
    @qiayue

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

    getMonth() + 1 是什么作用?
    qiayue
        15
    qiayue  
       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  
       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   ·   实用小工具   ·   885 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 20:20 · PVG 04:20 · LAX 12:20 · JFK 15:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.