在梳理了Java内存模型的脉络以后,就讲到线程的基本状态,了解线程存在哪些状态才能对线程安全保障有更清晰的认知。其中JUC中线程安全,有 互斥同步与 非阻塞同步 两种方案,本质就是有锁和无锁的区别,在资源竞争比较大的情况下,无锁的性能要远远高于有锁的;说到了锁,那不得不说一下JVM在锁的方面做出的优化,这也是面试常问synchronized锁升级的细节点。
最近项目中不同微服务之间的LocalDateTime时间交互,格式上出现了差异,一个服务入参返参都是默认的 yyyy-MM-dd'T'HH:mm:ss,一个服务定义了全局时间格式,入参与返参是 yyyy-MM-dd HH:mm:ss,导致服务调用失败。正常情况下,所有服务应该做到格式统一,今天我就从源码上,来分析下全局定义时间格式的几种方式。
由于对 SpringBoot 的版本升级,从 knife4j-spring-boot-starter 3.0.3 版本迭代到 knife4j-openapi2-spring-boot-starter 4.2.0 版本,其中 host 与 basePath 参数不能动态修改的问题,结合源码进行扩展。