在一个风和日丽的早上,我刚坐到工位上,正准备美美的享受早餐时,我的测试小兄弟杨过火急火燎的来找我说:“小米,不好了,运营童鞋反馈,咱们商城小程序金刚区的新店专区,新开的店铺无法在上面展示,运营童鞋那边很着急,能不能先看看”。我想了下现有项目组的人力,然后就叫技术大牛“薇姐”看下。
方案一:刷新ElasticSearch
薇姐首先确定数据表中是否存在该店铺,发现数据库没问题,然后就按照新店专区的接口查看了下数据源是 es,怀疑有可能是 es 没有同步上来,到管理后台点击初始化店铺的 es,结果本来新店专区还有店铺数据,直接就变成空白了,一条数据也没有,扑街~
方案二:数据落库
薇姐这次仔细的分析代码,发现前人开发的时候,判断新店的字段只存到 es 中,没有把该标识存入到店铺表中,所以才会出现刷新 es 的时候,新店专区数据被清空了(前人埋得坑啊)~
找到问题就好说了,把这个字段落库,然后给历史数据新店标识设置个默认值,搞定~
这也给我提了个醒,以后组员在开发功能的时候,一定要先仔细听听他是怎么设计的,避免挖坑,论代码 Review 的重要性!
Java 中的四种引用类型
在讨论这个案例的时候,我突然想到这不正是面试题中讲的“四种引用类型”中的一种吗?
在 Java 编程语言中,引用是用来访问和操作对象的一种机制。强引用、软引用、弱引用和虚引用是 Java 中的四种引用类型。
- 强引用(Strong Reference):当一个对象被强引用关联时,垃圾回收器无法回收这个对象。只有当该对象的所有强引用都被释放时,该对象才能被垃圾回收器回收。
- 软引用(Soft Reference):当一个对象被软引用关联时,它不会被立即回收,只有当 JVM 认为内存不足时才会回收该对象。因此,软引用通常用于实现高速缓存。
- 弱引用(Weak Reference):当一个对象被弱引用关联时,它的生命周期更短,只要没有被强引用关联,垃圾回收器就会尽快回收它。
- 虚引用(Phantom Reference):虚引用是最弱的一种引用类型,如果一个对象只被虚引用关联,那么它就像不存在一样,任何时候都可能被垃圾回收器回收。虚引用主要用于跟踪对象被垃圾回收器回收的状态。