AOP 解决项目业务场景
- 操作日记记录
- 权限校验
- 敏感数据脱敏(API接口设计)
API 调用重试机制
使用 DelayQueue 实现重试机制。例如,接口调用失败或者请求超时后,可以将当前请求对象放入 DelayQueue,通过一个异步线程 take() 取出对象然后继续进行重试。如果还是请求失败,继续放回 DelayQueue。可以设置重试的最大次数以及采用指数退避算法设置对象的 deadline,如 2s、4s、8s、16s ……以此类推。DelayQueue的时间复杂度和Timer基本一致。
- 重试机制可能导致接口响应时长过长
- 重试接口要设计成幂等
- 超时重试、影响整个应用性能
Job 与 实时操作
在平常开发大家都会遇到批量处理的功能,具体实现有 Job 定时去扫描。
不实时操作的原因:
- 异步
- 下一个动作是另外一个系统的功能
job 频率执行太快,会出现空转浪费资源;job 频率执行太慢,可能会出现用户傻等,等待job执行。
因此单纯依赖定时任务,可以在前端添加一个 refresh 按钮,实时同步当前实体的数据。
JDK 9 新增 ifPresentOrElse()
,对我来说简洁了很大部分代码
JDK 9 新增 ifPresentOrElse()
,对我来说简洁了很大部分代码