唯's Blog

笔者是一个热爱编程的 Java 程序员。

0%

常见的代码设计手段

AOP 解决项目业务场景

  1. 操作日记记录
  2. 权限校验
  3. 敏感数据脱敏(API接口设计)

API 调用重试机制

使用 DelayQueue 实现重试机制。例如,接口调用失败或者请求超时后,可以将当前请求对象放入 DelayQueue,通过一个异步线程 take() 取出对象然后继续进行重试。如果还是请求失败,继续放回 DelayQueue。可以设置重试的最大次数以及采用指数退避算法设置对象的 deadline,如 2s、4s、8s、16s ……以此类推。DelayQueue的时间复杂度和Timer基本一致。

  1. 重试机制可能导致接口响应时长过长
  2. 重试接口要设计成幂等
  3. 超时重试、影响整个应用性能

Job 与 实时操作

在平常开发大家都会遇到批量处理的功能,具体实现有 Job 定时去扫描。

不实时操作的原因:

  1. 异步
  2. 下一个动作是另外一个系统的功能

job 频率执行太快,会出现空转浪费资源;job 频率执行太慢,可能会出现用户傻等,等待job执行。

因此单纯依赖定时任务,可以在前端添加一个 refresh 按钮,实时同步当前实体的数据。

JDK 9 新增 ifPresentOrElse() ,对我来说简洁了很大部分代码

JDK 9 新增 ifPresentOrElse() ,对我来说简洁了很大部分代码