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

相关推荐
缘友一世24 分钟前
解决Spring Boot上传默认限制文件大小和完善超限异常(若依框架)
java·spring boot·后端
FixBug_Nick31 分钟前
Jenkins配置的JDK,Maven和Git
java·git·jdk·jenkins·maven
青春不流名1 小时前
flink iceberg写数据到hdfs,hive同步读取
java·大数据
lzjava20242 小时前
Redis数据结构之List
java·redis
爱的叹息2 小时前
Spring MVC 框架 的核心概念、组件关系及流程的详细说明,并附表格总结
java·spring·mvc
骑牛小道士3 小时前
java基础 迭代Iterable接口以及迭代器Iterator
java
代码吐槽菌4 小时前
基于微信小程序的智慧乡村旅游服务平台【附源码】
java·开发语言·数据库·后端·微信小程序·小程序·毕业设计
界面开发小八哥4 小时前
企业级Java开发工具MyEclipse v2025.1——支持AI编码辅助
java·ide·人工智能·myeclipse
可问 可问春风4 小时前
Java中的ArrayList方法
java
大苏打seven4 小时前
Java学习笔记(多线程):ReentrantLock 源码分析
java·笔记·学习