一周工作问题总结(2023.12.18-2023.12.22)

一周工作问题总结

  • 1. 接口调用频率
  • 2. 汉字在数据库中占用字节问题
  • 3. Map在循环中修改自己的key与value
  • 4. Group BY
  • 5.递归同步数据
  • 6.代码移动Idea飘红

1. 接口调用频率

一周工作问题总结(2023.12.18-2023.12.22)_第1张图片

供应商给的接口可以每秒调用5-10次,那么我为了保险每秒调用5次,为了防止过度调用接口,可以在每次递归调用之间使用Thread.sleep()方法来休眠一段时间。每次调用之间的休眠时间设置为200毫秒(即每秒调用5次),以确保在接口的限制范围内。

public void recursiveAPICall() {
    // 递归调用的逻辑代码

    // 每次调用之后休眠200毫秒
    try {
        Thread.sleep(200);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }

    // 继续递归调用
    recursiveAPICall();
}

2. 汉字在数据库中占用字节问题

如下图一个汉字占用1个字节。
一周工作问题总结(2023.12.18-2023.12.22)_第2张图片
一周工作问题总结(2023.12.18-2023.12.22)_第3张图片

MYSQL建表常用字段以及所占用字节大小

字段类型 字节
bigint unsigned 8
varchar(32) 32
varchar(255) 255
int unsigned 4
tinyint unsigned 1
timestamp 4
smallint unsigned 2
text 可变长度文本,占用的字节数取决于实际存储的内容长度
datetime 8

3. Map在循环中修改自己的key与value

见以前写过的一篇文章Map在循环中修改自己的key与value

4. Group BY

这个brush_face表中每个人每天有多条记录,要拿到最新的记录,就需要group by name并且指定获取max(time)时间的。

SELECT name, date, max( time ) AS time 
 FROM
	 brush_face
 WHERE
	 date = '2023-12-21' 
 AND NAME IN ( '小范24914', '北京斯卡小梁翠' ) 
 GROUP BY name;

见文章 http://t.csdnimg.cn/SNtbO
还要注意GROUP BY虽然是分组,但是注意要搭配聚合函数使用

5.递归同步数据

 /**
     * 同步订单
     *
     * @param param GaodeSyncOrderParam
     * @return Long
     */
    private Long syncXXXXXXOrderList(GaodeSyncOrderParam param, Long totalItemNum) {
        // 无法提供数据总数量,所以需要中间变量pageNo
        Integer pageNo = param.getPageNo();

        // 同订单请求参数
        OrderListReq orderListReq = new OrderListReq();
        orderListReq.setPageNo(pageNo);
        orderListReq.set...
        log.info("======>[XXXXXServiceImpl::syncXXXXXXOrderList] 递归同步订单数据异常,post请求参数:{}", JSONObject.toJSONString(orderListReq));
        List<OrderListItem> ItemList = null;
        try {
            ItemList = gaodeClient.orderList(orderListReq);
        } catch (Exception e) {
            log.error("======>[XXXXXServiceImpl::syncXXXXXXOrderList] 同步订单数据异常,递归参数:{},错误:{}", JSONObject.toJSONString(orderListReq), e.getMessage(), e);
            return 0L;
        }

        // 第一页查询不到数据返回
        if (pageNo.equals(1) && (null == ItemList || ItemList.isEmpty())) {
            return 0L;
        }

        // 存储/更新订单数据
        if (!ItemList.isEmpty()) {
            saveOrUpdateOrderData(ItemList, param);
        }

        // 订单总数加1,分页加1
        totalItemNum += ItemList.size();
        pageNo += 1;

        // 每页查询每次查询100条记录
        if (ItemList.size() == param.getPageSize()) {
            param.setPageNo(pageNo);
            // 每秒调用5次,每次休眠200毫秒
            DateUtils.milliSleep(param.getCallApiSleep());
            log.info("======>[XXXXXServiceImpl::syncXXXXXXOrderList] 递归同步订单列表,第{}页,每次同步:{}条,已同步{}条", pageNo, param.getPageSize(), totalItemNum);
            syncXXXXXXOrderList(param, totalItemNum);
        }

        return totalItemNum;
    }

6.代码移动Idea飘红

代码中有些层级错误的,我手动移动之后,代码直接飘红,我重启idea不行,把某个类删除重新写一遍还是不行。通过Reload All from Disk还是不行。
一周工作问题总结(2023.12.18-2023.12.22)_第4张图片

最后我通过Invalidate Caches...清理了无效缓存并重启就好了!
一周工作问题总结(2023.12.18-2023.12.22)_第5张图片
一周工作问题总结(2023.12.18-2023.12.22)_第6张图片

你可能感兴趣的:(解决问题合集,每周总结,java)