皓月白熏 2022-09-05 15:30 采纳率: 80.8%
浏览 45
已结题

今天看见这段代码,人家微微一笑?问我怎么改进?我觉得写的没问题,大家给看看怎么优化??

今天看见这段代码,人家微微一笑?问我怎么改进?我觉得写的没问题,大家给看看怎么优化??

public static void getToken(NCBuilder nb, NCAcctContextBuilder nab, Handler<AsyncResult<Token>> handler) {
        String ncUrl = nb.getNcUrl();
        TokenUID tokenUID = new TokenUID(ncUrl, nab);
        Token token = tokenMap.get(tokenUID);
        if (token == null) {
            createToken(nb, nab, handler);
        } else {
            //给上5秒缓存时间,token的过期时间大于现在5s以上的话,就认为是有效的。
            if (token.getExpireTime() - System.currentTimeMillis() >= 30000) {
                handler.handle(Future.succeededFuture(token));
            } else {
                tokenMap.remove(tokenUID);
                createToken(nb, nab, handler);
            }
        }
    }

逻辑就是如果token不存在,刚创建时或者token到期失效时为null,创建token,
否则先看token是否过去,因为会对token缓存。如果缓存到期,移除token,然后重新获取。

  • 写回答

1条回答 默认 最新

  • 燕少༒江湖 2022-09-05 15:39
    关注
    
    private void test(){
            Token token = tokenMap.get(new TokenUID(nb.getNcUrl(), nab));
            //todo 30000不要写死
            if(Objects.nonNull(token) && token.getExpireTime() - System.currentTimeMillis() >= 30000){
                handler.handle(Future.succeededFuture(token));
                return;
            }
            tokenMap.remove(tokenUID);
            createToken(nb, nab, handler);
        }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 9月14日
  • 已采纳回答 9月6日
  • 创建了问题 9月5日

悬赏问题

  • ¥15 关于大棚监测的pcb板设计
  • ¥20 sim800c模块 at指令及平台
  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用
  • ¥15 C++ yoloV5改写遇到的问题
  • ¥20 win11修改中文用户名路径
  • ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入
  • ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计