V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ChovyChu
V2EX  ›  Java

有没来比拼 commit 的,重在真实

  •  
  •   ChovyChu · 2021-09-29 22:26:39 +08:00 · 5742 次点击
    这是一个创建于 911 天前的主题,其中的信息可能已经有所发展或是发生改变。

    23 条回复    2021-10-02 10:49:30 +08:00
    chendy
        1
    chendy  
       2021-09-29 22:52:22 +08:00   ❤️ 17
    快进到几位不长心的网友因为将公司核心代码截图发在 v 站丢了工作
    coolcfan
        2
    coolcfan  
       2021-09-29 23:19:52 +08:00
    Thread.sleep(100)........
    yinusxxxx
        3
    yinusxxxx  
       2021-09-29 23:30:15 +08:00
    为什么要比这个。。。。
    ipwx
        4
    ipwx  
       2021-09-29 23:41:18 +08:00   ❤️ 1
    你给的截图有啥可称道的地方么。。。不过是 annual routine 而已
    BIAOXYZ
        5
    BIAOXYZ  
       2021-09-30 02:20:39 +08:00   ❤️ 1
    我以为你要比 commit 数量,哪位热心 V 友补一下地铁墙面那个格子图吧。。。(手动狗头
    msg7086
        6
    msg7086  
       2021-09-30 03:05:40 +08:00 via Android
    我倒是工作的时候写了不少代码,但是发出来要吃官司的还是算了。
    gollwang
        7
    gollwang  
       2021-09-30 09:08:22 +08:00
    这也卷?
    Kasumi20
        8
    Kasumi20  
       2021-09-30 09:48:01 +08:00   ❤️ 1
    好好的代码,被你改得乱七八糟的
    zhuangzhuang1988
        9
    zhuangzhuang1988  
       2021-09-30 10:16:28 +08:00
    是不是傻?
    kastnerorz
        10
    kastnerorz  
       2021-09-30 10:39:15 +08:00   ❤️ 1
    - Guava 的 `Lists.partition()` 可以解决你的这个分片的问题
    - 不太懂的是,已经 `runAsync`了,为什么要 `Thread.sleep()`,循环里只是添加任务而已,并没有执行任务
    - 而且非常不建议在循环里使用 sleep,如果一定要隔一段时间执行一个任务请使用 `ScheduledExecutorService`
    jadec0der
        11
    jadec0der  
       2021-09-30 10:40:53 +08:00
    你符号前后加不加空格都不统一?就这 IntelliJ 不给你加黄线嘛
    l48x4264l46
        12
    l48x4264l46  
       2021-09-30 10:53:02 +08:00
    兄弟,对于你这个代码,冒昧的提些问题
    1 、最好少用反逻辑
    2 、代码没有分块,全都挤在一起
    3 、该加空格的地方没有加空格
    4 、注释写的有点少
    jimliang
        13
    jimliang  
       2021-09-30 11:09:37 +08:00
    你是来添乱的吧
    zhuangyufeng
        14
    zhuangyufeng  
       2021-09-30 11:12:04 +08:00
    你是故意找茬是吧(狗头)
    yidinghe
        15
    yidinghe  
       2021-09-30 11:17:10 +08:00
    不管出于什么原因,你这么改的目的显然是进行调用限流。然而这不是限流的标准做法,标准做法是先将循环内的部分提取出一个方法,然后使用 sentinel 之类的框架来限流。
    Leviathann
        16
    Leviathann  
       2021-09-30 11:18:18 +08:00 via iPhone
    所以就是加了个分块的逻辑?
    感觉这种非业务的东西直接弄个声明式的 api 调一下会比较清晰吧
    ChovyChu
        17
    ChovyChu  
    OP
       2021-09-30 11:40:46 +08:00
    统一回复一下吧,这个是我刚接手的一个项目,最近经常会做一些 review 和看一些老代码,当时就看到这里。

    不知道大家有没看明白这个 commit 到底是在改做什么。

    我当时看到这里就很疑惑,想了半天才发现这里他其实就是希望做一个每批任务处理完成之后做一个 sleep 延迟。就是这么简单一个功能尽然写了一大堆,结果还是错的。

    另外就是我想了一下确实我这图可能没体现出来重点。。
    AoEiuV020
        18
    AoEiuV020  
       2021-09-30 14:44:54 +08:00
    是时间祭出我印象最深的两个极大幅优化了,
    一个是把字符串拆成字符遍历,再把字符转成字符串用正则判断是否中文,而且正则还不预编译,
    ?1
    一个是数据库查个 count 直接查出所有数据再遍历,还在每个循环节调用三次 queryForAll 完整读取 3n 次数据库,
    ?1
    astkaasa
        19
    astkaasa  
       2021-09-30 16:15:56 +08:00
    我一般这么写
    IntStream.range(0, (list.size() + BATCH - 1) / BATCH)
    .mapToObj(i -> list.subList(i * BATCH, Math.min(list.size(), (i + 1) * BATCH))).forEach(batch -> {
    });
    uselessVisitor
        20
    uselessVisitor  
       2021-09-30 21:54:23 +08:00
    分片处理? guava 一个 api 就解决了
    qinwangzeng
        21
    qinwangzeng  
       2021-10-01 00:46:58 +08:00
    谢谢,提醒了我写过的代码要多 review 。
    WispZhan
        22
    WispZhan  
       2021-10-01 15:12:14 +08:00 via Android
    这么长的代码,点都不想点。直接 close pr
    csfreshman
        23
    csfreshman  
       2021-10-02 10:49:30 +08:00
    注释太少,在我司肯定不会 merge,另外公司这种代码尽量不要贴出来,没看出来有啥贴出来的必要。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5456 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 38ms · UTC 06:43 · PVG 14:43 · LAX 23:43 · JFK 02:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.