一周工作问题总结(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...清理了无效缓存并重启就好了!

相关推荐
Chan16几秒前
【 SpringCloud | 微服务 MQ基础 】
java·spring·spring cloud·微服务·云原生·rabbitmq
LucianaiB3 分钟前
如何做好一份优秀的技术文档:专业指南与最佳实践
android·java·数据库
面朝大海,春不暖,花不开27 分钟前
自定义Spring Boot Starter的全面指南
java·spring boot·后端
得过且过的勇者y27 分钟前
Java安全点safepoint
java
夜晚回家1 小时前
「Java基本语法」代码格式与注释规范
java·开发语言
斯普信云原生组1 小时前
Docker构建自定义的镜像
java·spring cloud·docker
wangjinjin1801 小时前
使用 IntelliJ IDEA 安装通义灵码(TONGYI Lingma)插件,进行后端 Java Spring Boot 项目的用户用例生成及常见问题处理
java·spring boot·intellij-idea
wtg44521 小时前
使用 Rest-Assured 和 TestNG 进行购物车功能的 API 自动化测试
java
白宇横流学长2 小时前
基于SpringBoot实现的大创管理系统设计与实现【源码+文档】
java·spring boot·后端
fat house cat_2 小时前
【redis】线程IO模型
java·redis