Java SynchronizedSet 线程不安全之坑

一、前言一般而言,想要构造出线程安全的 Set,我们会使用 Collections.synchronizedSet 方法,如下所示。 Set<User> set = Collections.synchronizedSet(new HashSet<>()); 但这并不意味着,你可以安全的使用该集合的任何方法,如果没有仔细的了解过其实现的话,一不小心就会踩进坑中。最近我在...

Parallel Stream 的错误实践

一、前言Java8 Stream 流的出现,极大的简化了业务需求中对集合数据的加工处理操作。虽然好用,但是一旦使用不当,也会带来意想不到的结果,本文记录使用 Parallel Stream 的错误实践。 List<Object> sourceList = ...; List<Object> list = new ArrayList(); sourceList.str...
Java

解决 Git Revert 后再次 Merge 代码丢失问题

一、问题场景我司使用 GitLab 进行代码管理,当我对系统进行 SpringBoot 2.0 的版本升级,分支已经 Merge 到 Master 分支。实际部署中发现依赖的某个二方包的子依赖未做升级,导致某个服务无法掉通。由于二方包的修复需要时间,为了不影响后续其他功能的发布,因此决定对 Master 分支进行 Revert。 等到第二天,当修复了那个二方包问题后,重新提了 Merge 申...