真實案例對“引用類型”的思考,你學會了嗎?
在一個風和日麗的早上,我剛坐到工位上,正準備美美的享受早餐時,我的測試小兄弟楊過火急火燎的來找我說:“小米,不好了,運營童鞋反饋,咱們商城小程序金剛區的新店專區,新開的店鋪無法在上面展示,運營童鞋那邊很著急,能不能先看看”。我想了下現有項目組的人力,然后就叫技術大牛“薇姐”看下。
方案一:刷新ElasticSearch
薇姐首先確定數據表中是否存在該店鋪,發現數據庫沒問題,然后就按照新店專區的接口查看了下數據源是 es,懷疑有可能是 es 沒有同步上來,到管理后臺點擊初始化店鋪的 es,結果本來新店專區還有店鋪數據,直接就變成空白了,一條數據也沒有,撲街~
方案二:數據落庫
薇姐這次仔細的分析代碼,發現前人開發的時候,判斷新店的字段只存到 es 中,沒有把該標識存入到店鋪表中,所以才會出現刷新 es 的時候,新店專區數據被清空了(前人埋得坑啊)~
找到問題就好說了,把這個字段落庫,然后給歷史數據新店標識設置個默認值,搞定~
這也給我提了個醒,以后組員在開發功能的時候,一定要先仔細聽聽他是怎么設計的,避免挖坑,論代碼 Review 的重要性!
Java 中的四種引用類型
在討論這個案例的時候,我突然想到這不正是面試題中講的“四種引用類型”中的一種嗎?
在 Java 編程語言中,引用是用來訪問和操作對象的一種機制。強引用、軟引用、弱引用和虛引用是 Java 中的四種引用類型。
- 強引用(Strong Reference):當一個對象被強引用關聯時,垃圾回收器無法回收這個對象。只有當該對象的所有強引用都被釋放時,該對象才能被垃圾回收器回收。
- 軟引用(Soft Reference):當一個對象被軟引用關聯時,它不會被立即回收,只有當 JVM 認為內存不足時才會回收該對象。因此,軟引用通常用于實現高速緩存。
- 弱引用(Weak Reference):當一個對象被弱引用關聯時,它的生命周期更短,只要沒有被強引用關聯,垃圾回收器就會盡快回收它。
- 虛引用(Phantom Reference):虛引用是最弱的一種引用類型,如果一個對象只被虛引用關聯,那么它就像不存在一樣,任何時候都可能被垃圾回收器回收。虛引用主要用于跟蹤對象被垃圾回收器回收的狀態。