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

一周工作问题总结

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

1. 接口调用频率

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

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

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

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

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

如下图一个汉字占用1个字节。

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)时间的。

sql 复制代码
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.递归同步数据

java 复制代码
 /**
     * 同步订单
     *
     * @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还是不行。

最后我通过Invalidate Caches...清理了无效缓存并重启就好了!

相关推荐
全栈开发圈2 分钟前
新书速览|Java网络爬虫精解与实践
java·开发语言·爬虫
WaaTong4 分钟前
《重学Java设计模式》之 单例模式
java·单例模式·设计模式
面试鸭6 分钟前
离谱!买个人信息买到网安公司头上???
java·开发语言·职场和发展
沈询-阿里1 小时前
java-智能识别车牌号_基于spring ai和开源国产大模型_qwen vl
java·开发语言
AaVictory.1 小时前
Android 开发 Java中 list实现 按照时间格式 yyyy-MM-dd HH:mm 顺序
android·java·list
LuckyLay1 小时前
Spring学习笔记_27——@EnableLoadTimeWeaving
java·spring boot·spring
向阳12182 小时前
Dubbo负载均衡
java·运维·负载均衡·dubbo
Gu Gu Study2 小时前
【用Java学习数据结构系列】泛型上界与通配符上界
java·开发语言
WaaTong2 小时前
《重学Java设计模式》之 原型模式
java·设计模式·原型模式