Java自定義equals產(chǎn)生的問(wèn)題分析
Java自定義equals注意事項(xiàng)
對(duì)于需要用某業(yè)務(wù)主鍵判斷對(duì)象相等時(shí),通常用 IDE 自動(dòng)生成 equals 方法,選定特點(diǎn)的判斷字段。
但對(duì)于有父類(lèi)的類(lèi)來(lái)說(shuō),默認(rèn)有一句調(diào)用比較坑:
public class Person extends ParentObject{
private String id;
private String name;
private int age;
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
if (!super.equals(o)) return false;
Person person = (Person) o;
return id.equals(person.id);
}
@Override
public int hashCode() {
return Objects.hash(super.hashCode(), id);
}
}
if (!super.equals(o)) return false; 這一句默認(rèn)的代碼,遭遇過(guò)兩次坑。例如這里的 Person 對(duì)象只需要根據(jù) id 相等,就視為同一個(gè)對(duì)象,但是有了這句調(diào)用,執(zhí)行列表的 contains 方法始終返回 false,斷點(diǎn)找到了這個(gè)問(wèn)題。
解決辦法:自定義具有父類(lèi)的類(lèi)的 equals 方法時(shí),需要去掉這行。這個(gè)問(wèn)題一碰到就感覺(jué)很熟悉,想起去年6月也遇到集合操作自定義對(duì)象判斷失敗的問(wèn)題,所以斷點(diǎn)到了 super 調(diào)用返回 false 就知道問(wèn)題所在了。
logback.xml配置maxFileSize單位問(wèn)題
項(xiàng)目中的 logback.xml 配置文件,忘記了從哪里扒來(lái)的,本地測(cè)試時(shí)只關(guān)注控制臺(tái)日志,沒(méi)發(fā)現(xiàn)問(wèn)題。部署測(cè)試機(jī)器后,發(fā)現(xiàn)異常信息沒(méi)有寫(xiě)入到日志文件中,為什么呢?
日志文件生成策略是滾動(dòng)達(dá)到文件最大值后新建文件,配置如下:
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<maxFileSize>50M</maxFileSize>
</triggeringPolicy>
跟蹤過(guò)程,打開(kāi)調(diào)試配置,在 logback.xml 中添加配置:<configuration debug="true">。
啟動(dòng),查看日志插件的調(diào)試信息,異常提示 maxFileSize 屬性設(shè)置報(bào)錯(cuò)了。調(diào)試到 logback-core 源碼中,發(fā)現(xiàn)文件大小的單位使用的是 gb/mb/kb,且不區(qū)分大小寫(xiě)。修正文件大小配置為:
<maxFileSize>50MB</maxFileSize>
為什么以前沒(méi)有碰到過(guò)這個(gè)問(wèn)題呢?因?yàn)橐郧暗娜罩径际菨L動(dòng)按天生成的,這里拷貝過(guò)來(lái)的日志文件生成策略是按文件大小。這個(gè)配置有個(gè)好處,就是不會(huì)生成太多日志文件。
SpringCloud gateway項(xiàng)目引入druid
SpringCloud 的 gateway 項(xiàng)目是基于 Netty 的,與 Servlet 不相容。網(wǎng)關(guān)模塊中需要加入數(shù)據(jù)庫(kù)操作,引入 druid,常規(guī)的數(shù)據(jù)源配置報(bào) Servlet 包相關(guān)的問(wèn)題。
解決辦法是,關(guān)掉 spring.datasource.druid 的 stat-view-servlet 配置:
stat-view-servlet:
enabled: false
web-stat-filter:
enabled: false
Shell編寫(xiě)腳本
Shell 編寫(xiě)腳本時(shí),cd 命令切換到一個(gè)不存在的變量時(shí),默認(rèn)會(huì)到當(dāng)前用戶的 HOME 目錄。
#!/sh
currentDir=$(cd `dirname $0`; pwd)
cd $currrentDir
echo `pwd`
這是常用的獲取當(dāng)前執(zhí)行命令腳本的路徑,第三行切換路徑時(shí),變量拼寫(xiě)錯(cuò)誤,導(dǎo)致切換到腳本目錄總是到了 /root ,這個(gè)低級(jí)錯(cuò)誤,找了半天。
到此這篇關(guān)于Java自定義equals產(chǎn)生的問(wèn)題分析的文章就介紹到這了,更多相關(guān)Java自定義equals內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot對(duì)接小程序微信支付的實(shí)現(xiàn)
本文主要介紹了SpringBoot對(duì)接小程序微信支付的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧<BR>2023-09-09
javaweb中Filter(過(guò)濾器)的常見(jiàn)應(yīng)用
這篇文章主要介紹了javaweb中Filter的常見(jiàn)應(yīng)用,過(guò)濾器的使用方法,感興趣的小伙伴們可以參考一下2015-12-12
idea如何快速查找一個(gè)類(lèi)或類(lèi)中方法名和變量
這篇文章主要介紹了idea如何快速查找一個(gè)類(lèi)或類(lèi)中方法名和變量問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-11-11
SpringBoot整合Mybatis Generator自動(dòng)生成代碼
SpringBoot 整合 Mybatis Generator自動(dòng)生成dao、entity、mapper.xml實(shí)現(xiàn)單表增刪改查。文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-08-08
springboot中websocket簡(jiǎn)單實(shí)現(xiàn)
本文主要介紹了springboot中websocket簡(jiǎn)單實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01
詳解mall整合SpringBoot+MyBatis搭建基本骨架
這篇文章主要介紹了詳解mall整合SpringBoot+MyBatis搭建基本骨架,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08
Spring打包jar包時(shí)jsp頁(yè)面無(wú)法訪問(wèn)問(wèn)題解決
這篇文章主要介紹了Spring打包jar包時(shí)jsp頁(yè)面無(wú)法訪問(wèn)問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-05-05
利用Maven實(shí)現(xiàn)將代碼打包成第三方公共jar包
在項(xiàng)目開(kāi)發(fā)過(guò)程中,我們經(jīng)常需要將一些公共方法提取出來(lái),然后單獨(dú)封裝成一個(gè)第三方公共jar包,采用普通的方式打包后的jar,依賴的工程執(zhí)行編譯時(shí),卻提示找不到對(duì)應(yīng)的依賴包,那么如何將工程打包為可執(zhí)行jar包呢?下面向大家分享三種方法2022-10-10
淺談Java中向上造型向下造型和接口回調(diào)中的問(wèn)題
這篇文章主要介紹了淺談Java中向上造型向下造型和接口回調(diào)中的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-08-08

