一周工作问题总结
- 1. 接口调用频率
- 2. 汉字在数据库中占用字节问题
- 3. Map在循环中修改自己的key与value
- 4. Group BY
- 5.递归同步数据
- 6.代码移动Idea飘红
1. 接口调用频率
供应商给的接口可以每秒调用5-10次,那么我为了保险每秒调用5次,为了防止过度调用接口,可以在每次递归调用之间使用Thread.sleep()
方法来休眠一段时间。每次调用之间的休眠时间设置为200毫秒(即每秒调用5次),以确保在接口的限制范围内。
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)时间的。
SELECT name, date, max( time ) AS time FROMbrush_faceWHEREdate = '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) {// 无法提供数据总数量,所以需要中间变量pageNoInteger 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,分页加1totalItemNum += 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...
清理了无效缓存并重启就好了!